From c1b34f091ff5ad948aef3a8adb5c88c2cf717a27 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 13:37:41 -0500 Subject: [PATCH 01/76] PHP 7.2 updates for by-ref function arguments In PHP 7.2 it's required that only variables are allowed to be passed by ref. This set of changes extracts where we were passing the results of a function by-ref into a variable and then passing that. --- classes/DataWarehouse/Data/TimeseriesDataset.php | 10 ++++++---- classes/ETL/JsonPointer.php | 12 ++++-------- classes/Models/Services/Users.php | 3 ++- tests/integration/lib/Controllers/UserAdminTest.php | 6 ++++-- .../lib/Controllers/UserInterfaceTest.php | 3 ++- tests/integration/lib/Database/ResourceNamesTest.php | 3 ++- tests/integration/lib/Database/SharedJobsTest.php | 3 ++- 7 files changed, 22 insertions(+), 18 deletions(-) diff --git a/classes/DataWarehouse/Data/TimeseriesDataset.php b/classes/DataWarehouse/Data/TimeseriesDataset.php index c9aefb5e6d..230ecdd66e 100644 --- a/classes/DataWarehouse/Data/TimeseriesDataset.php +++ b/classes/DataWarehouse/Data/TimeseriesDataset.php @@ -65,7 +65,8 @@ protected function getSeriesIds($limit, $offset) $statement = $this->agg_query->getRawStatement($limit, $offset); $statement->execute(); - $groupInstance = reset($this->agg_query->getGroupBys()); + $groupBys = $this->agg_query->getGroupBys(); + $groupInstance = reset($groupBys); $groupIdColumn = $groupInstance->getId() . '_id'; $seriesIds = array(); @@ -114,8 +115,8 @@ public function getDatasets($limit, $offset, $summarize) $summaryDataset = null; list($timeGroup, $spaceGroup) = $this->getGroupByClasses(); - - $statObj = reset($this->query->getStats()); + $stats = $this->query->getStats(); + $statObj = reset($stats); $seriesIds = $this->getSeriesIds($limit, $offset); if (!empty($seriesIds)) { @@ -364,7 +365,8 @@ public function export($export_title = 'title') $exportData['headers'][] = $timeGroup->getName(); - $stat = reset($this->query->getStats()); + $stats = $this->query->getStats(); + $stat = reset($stats); $stat_unit = $stat->getUnit(); $seriesName = $stat->getName(); diff --git a/classes/ETL/JsonPointer.php b/classes/ETL/JsonPointer.php index 84d880d562..72054ed4ce 100644 --- a/classes/ETL/JsonPointer.php +++ b/classes/ETL/JsonPointer.php @@ -84,9 +84,8 @@ public static function isValidPointer($pointer, $expectedFirstToken = null) } if ( null !== $expectedFirstToken ) { - $firstToken = array_shift( - array_slice(array_map('urldecode', explode('/', $pointer)), 1) - ); + $tokens = array_slice(array_map('urldecode', explode('/', $pointer)), 1); + $firstToken = array_shift($tokens); return ( $firstToken == $expectedFirstToken ); } return true; @@ -106,11 +105,8 @@ public static function getFirstToken($pointer) if ( ! static::isValidPointer($pointer) ) { return false; } - - return array_shift( - array_slice(array_map('urldecode', explode('/', $pointer)), 1) - ); - + $tokens = array_slice(array_map('urldecode', explode('/', $pointer)), 1); + return array_shift($tokens); } // getFirstToken() /** ----------------------------------------------------------------------------------------- diff --git a/classes/Models/Services/Users.php b/classes/Models/Services/Users.php index 2b8b13343d..6cb3756805 100644 --- a/classes/Models/Services/Users.php +++ b/classes/Models/Services/Users.php @@ -396,7 +396,8 @@ public static function promoteUserToCenterStaff(XDUser $user, $centerId) */ public static function demoteUserFromCenterStaff(XDUser $user, $centerId) { - $currentCenters = array_pop(array_values(Users::getCentersFor($user))); + $centers = array_values(Users::getCentersFor($user)); + $currentCenters = array_pop($centers); // If this user has no more center staff centers then remove the center // staff acl. diff --git a/tests/integration/lib/Controllers/UserAdminTest.php b/tests/integration/lib/Controllers/UserAdminTest.php index 2ce9b1cf77..42d93ed1fc 100644 --- a/tests/integration/lib/Controllers/UserAdminTest.php +++ b/tests/integration/lib/Controllers/UserAdminTest.php @@ -332,7 +332,8 @@ public function testGetMenus(array $user) false ); $validator = new Validator(); - $validator->validate(json_decode(json_encode($actual)), $schemaObject); + $actualDecoded = json_decode(json_encode($actual)); + $validator->validate($actualDecoded, $schemaObject); $errors = array(); foreach ($validator->getErrors() as $err) { $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); @@ -488,7 +489,8 @@ public function testGetDwDescripters($username) false ); $validator = new Validator(); - $validator->validate(json_decode(json_encode($actual)), $schemaObject); + $actualDecoded = json_decode(json_encode($actual)); + $validator->validate($actualDecoded, $schemaObject); $errors = array(); foreach ($validator->getErrors() as $err) { $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); diff --git a/tests/integration/lib/Controllers/UserInterfaceTest.php b/tests/integration/lib/Controllers/UserInterfaceTest.php index 998ec212e0..a7dd015c8f 100644 --- a/tests/integration/lib/Controllers/UserInterfaceTest.php +++ b/tests/integration/lib/Controllers/UserInterfaceTest.php @@ -61,7 +61,8 @@ public function testGetMenus(array $options) false ); $validator = new Validator(); - $validator->validate(json_decode(json_encode($actual)), $schemaObject); + $actualDecoded = json_decode(json_encode($actual)); + $validator->validate($actualDecoded, $schemaObject); $errors = array(); foreach ($validator->getErrors() as $err) { $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); diff --git a/tests/integration/lib/Database/ResourceNamesTest.php b/tests/integration/lib/Database/ResourceNamesTest.php index f9288a5517..162888629f 100644 --- a/tests/integration/lib/Database/ResourceNamesTest.php +++ b/tests/integration/lib/Database/ResourceNamesTest.php @@ -35,7 +35,8 @@ public function testResourcesNamesValues() false ); $validator = new Validator(); - $validator->validate(json_decode(json_encode($actual)), $schemaObject); + $actualDecoded =json_decode(json_encode($actual)); + $validator->validate($actualDecoded, $schemaObject); $errors = array(); foreach ($validator->getErrors() as $err) { $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); diff --git a/tests/integration/lib/Database/SharedJobsTest.php b/tests/integration/lib/Database/SharedJobsTest.php index 136c84a24f..6687623892 100644 --- a/tests/integration/lib/Database/SharedJobsTest.php +++ b/tests/integration/lib/Database/SharedJobsTest.php @@ -35,7 +35,8 @@ public function testResourcesSharedJobsValues() false ); $validator = new Validator(); - $validator->validate(json_decode(json_encode($actual)), $schemaObject); + $actualDecoded = json_decode(json_encode($actual)); + $validator->validate($actualDecoded,$schemaObject); $errors = array(); foreach ($validator->getErrors() as $err) { $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); From 48ef04b4915747163d5972c92fe60faba304e8ab Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 13:38:54 -0500 Subject: [PATCH 02/76] Update count usage PHP 7.2 throws an exception now when `count` is used with something that does not implement `Countable`. The `UserOrganizationTest` changes should have been made previously as the `execute` function is documented as returning an integer. The `Utilities` change was necessitated by `args` sometimes not being a countable. --- classes/ETL/Utilities.php | 2 +- tests/integration/lib/Controllers/UserOrganizationTest.php | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/classes/ETL/Utilities.php b/classes/ETL/Utilities.php index 9fdfb559d7..0628355774 100644 --- a/classes/ETL/Utilities.php +++ b/classes/ETL/Utilities.php @@ -149,7 +149,7 @@ public static function processMacro($string, stdClass $config) $vs = new VariableStore(); - if ( isset($config->args) && count($config->args) > 0 ) { + if ( isset($config->args) ) { $vs->add((array) $config->args); $macro = $vs->substitute($macro); diff --git a/tests/integration/lib/Controllers/UserOrganizationTest.php b/tests/integration/lib/Controllers/UserOrganizationTest.php index 91606a2744..f894987672 100644 --- a/tests/integration/lib/Controllers/UserOrganizationTest.php +++ b/tests/integration/lib/Controllers/UserOrganizationTest.php @@ -200,7 +200,7 @@ private function updatePersonOrganization($personId, $organizationId) $rows = $db->execute($query, $params); - return count($rows) > 0; + return $rows > 0; } /** @@ -222,7 +222,7 @@ public function createTestOrganization($organizationId) $rows = $db->execute($query, $params); - return count($rows) > 0; + return $rows > 0; } /** @@ -241,6 +241,6 @@ public function deleteTestOrganization($organizationId) $rows = $db->execute($query, $params); - return count($rows) > 0; + return $rows > 0; } } From 52fccdcada841316b0c4900957c30a198a8eb2ca Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 13:39:58 -0500 Subject: [PATCH 03/76] MariaDB Datetime related changes - Column.php: There was a problem w/ the way with datetime columns w/ default values were having their column statements constructed. Namely, they were having the default value wrapped in single quotes, which is causes problems in MariaDB 10.3.17. - Table.php: This change was necessitated because MariaDB diverged from MySQL in how nulls are stored in the information schema. - cloud_ingest_resource_specs.json: MariaDB datetime columns have a default format that cannot be changed that was preventing this data from being ingested. This change formats the incoming data appropriately. - staging.json: *See cloud_ingest_resource_specs.json - **/schema-version-history.json: This was something that probably never worked but just hadn't been caught because errors were not thrown. We've removed the `action_datetime` column from these data files and updated their associated tables to have a default value of `CURRENT_TIMESTAMP()`. Which works now because of the changes made to Column.php & Table.php. - usage.schema.json: This change is, like the cloud_ingest_resource_specs.json change, due to the default format for MariaDB datetime columns. --- classes/ETL/DbModel/Column.php | 1 + classes/ETL/DbModel/Table.php | 2 +- configuration/etl/etl.d/cloud_ingest_resource_specs.json | 2 +- configuration/etl/etl.d/staging.json | 8 +++++++- .../etl_data.d/common/hpcdb/schema-version-history.json | 4 ++-- .../common/shredder/schema-version-history.json | 4 ++-- .../etl/etl_data.d/jobs/xdw/schema-version-history.json | 4 ++-- .../etl/etl_data.d/xdb/schema-version-history.json | 4 ++-- configuration/etl/etl_schemas.d/storage/usage.schema.json | 2 +- .../etl_tables.d/common/hpcdb/schema-version-history.json | 3 ++- .../common/shredder/schema-version-history.json | 4 +++- .../etl/etl_tables.d/jobs/xdw/schema-version-history.json | 3 ++- .../etl/etl_tables.d/xdb/schema-version-history.json | 3 ++- 13 files changed, 28 insertions(+), 16 deletions(-) diff --git a/classes/ETL/DbModel/Column.php b/classes/ETL/DbModel/Column.php index ca90ae078a..7d44748bb4 100644 --- a/classes/ETL/DbModel/Column.php +++ b/classes/ETL/DbModel/Column.php @@ -391,6 +391,7 @@ public function getSql($includeSchema = false) ( $this->nullable && "NULL" == $this->default ) || ( "timestamp" == $this->type && is_numeric($this->default) ) || ( "timestamp" == $this->type && in_array(strtolower($this->default), $currentTimestampAliases) ) || + ( "datetime" === $this->type && in_array(strtolower($this->default), $currentTimestampAliases) ) || is_numeric($this->default) || "b'" == substr($this->default, 0, 2) || "x'" == substr(strtolower($this->default), 0, 2) diff --git a/classes/ETL/DbModel/Table.php b/classes/ETL/DbModel/Table.php index e9d731e876..a0dc0d0ab0 100644 --- a/classes/ETL/DbModel/Table.php +++ b/classes/ETL/DbModel/Table.php @@ -316,7 +316,7 @@ public function discover($source) column_name as name, column_type as type, is_nullable as nullable, character_set_name as charset, collation_name as collation, -column_default as " . $endpoint->quoteSystemIdentifier("default") . ", +IF('NULL' = column_default, NULL, column_default) as " . $endpoint->quoteSystemIdentifier("default") . ", IF('' = extra, NULL, extra) as extra, IF('' = column_comment, NULL, column_comment) as " . $endpoint->quoteSystemIdentifier("comment") . " FROM information_schema.columns diff --git a/configuration/etl/etl.d/cloud_ingest_resource_specs.json b/configuration/etl/etl.d/cloud_ingest_resource_specs.json index 40289437c2..5b71b2e6b6 100644 --- a/configuration/etl/etl.d/cloud_ingest_resource_specs.json +++ b/configuration/etl/etl.d/cloud_ingest_resource_specs.json @@ -61,7 +61,7 @@ "type": "external", "name": "jq", "path": "jq", - "arguments": "-c '.hypervisors[].date += .ts | .hypervisors'" + "arguments": "-c '.hypervisors[].date += (.ts | fromdate | strftime(\"%Y-%m-%d %H:%m:%S\")) | .hypervisors'" }] } } diff --git a/configuration/etl/etl.d/staging.json b/configuration/etl/etl.d/staging.json index e3de07968d..657c56d7b6 100644 --- a/configuration/etl/etl.d/staging.json +++ b/configuration/etl/etl.d/staging.json @@ -234,7 +234,13 @@ "physical_usage", "soft_threshold", "hard_threshold" - ] + ], + "filters": [{ + "type": "external", + "name": "jq", + "path": "jq", + "arguments": "-c '[ .[] | (.dt = (.dt | fromdate | strftime(\"%Y-%m-%d %H:%m:%S\"))) ]'" + }] } } } diff --git a/configuration/etl/etl_data.d/common/hpcdb/schema-version-history.json b/configuration/etl/etl_data.d/common/hpcdb/schema-version-history.json index a55a4ab59b..66f27ceb48 100644 --- a/configuration/etl/etl_data.d/common/hpcdb/schema-version-history.json +++ b/configuration/etl/etl_data.d/common/hpcdb/schema-version-history.json @@ -1,4 +1,4 @@ [ - ["database_name", "schema_version", "action_datetime", "action_type", "script_name"], - ["mod_hpcdb", "8.0.0", "NOW()", "created", "N/A"] + ["database_name", "schema_version", "action_type", "script_name"], + ["mod_hpcdb", "8.0.0", "created", "N/A"] ] diff --git a/configuration/etl/etl_data.d/common/shredder/schema-version-history.json b/configuration/etl/etl_data.d/common/shredder/schema-version-history.json index 80b4391c62..bb477a0c99 100644 --- a/configuration/etl/etl_data.d/common/shredder/schema-version-history.json +++ b/configuration/etl/etl_data.d/common/shredder/schema-version-history.json @@ -1,4 +1,4 @@ [ - ["database_name", "schema_version", "action_datetime", "action_type", "script_name"], - ["mod_shredder", "8.0.0", "NOW()", "created", "N/A"] + ["database_name", "schema_version","action_type", "script_name"], + ["mod_shredder", "8.0.0", "created", "N/A"] ] diff --git a/configuration/etl/etl_data.d/jobs/xdw/schema-version-history.json b/configuration/etl/etl_data.d/jobs/xdw/schema-version-history.json index 17d2045408..7477a8d316 100644 --- a/configuration/etl/etl_data.d/jobs/xdw/schema-version-history.json +++ b/configuration/etl/etl_data.d/jobs/xdw/schema-version-history.json @@ -1,4 +1,4 @@ [ - ["database_name", "schema_version", "action_datetime", "action_type", "script_name"], - ["moddb", "8.0.0", "NOW()", "created", "N/A"] + ["database_name", "schema_version", "action_type", "script_name"], + ["moddb", "8.0.0", "created", "N/A"] ] diff --git a/configuration/etl/etl_data.d/xdb/schema-version-history.json b/configuration/etl/etl_data.d/xdb/schema-version-history.json index 17d2045408..7477a8d316 100644 --- a/configuration/etl/etl_data.d/xdb/schema-version-history.json +++ b/configuration/etl/etl_data.d/xdb/schema-version-history.json @@ -1,4 +1,4 @@ [ - ["database_name", "schema_version", "action_datetime", "action_type", "script_name"], - ["moddb", "8.0.0", "NOW()", "created", "N/A"] + ["database_name", "schema_version", "action_type", "script_name"], + ["moddb", "8.0.0", "created", "N/A"] ] diff --git a/configuration/etl/etl_schemas.d/storage/usage.schema.json b/configuration/etl/etl_schemas.d/storage/usage.schema.json index da49f63f70..0d5415b30e 100644 --- a/configuration/etl/etl_schemas.d/storage/usage.schema.json +++ b/configuration/etl/etl_schemas.d/storage/usage.schema.json @@ -26,7 +26,7 @@ }, "dt": { "type": "string", - "format": "date-time", + "pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}", "description": "Date and time usage data was recorded" }, "file_count": { diff --git a/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json b/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json index bc9572fa98..a54bf2a2c1 100644 --- a/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json +++ b/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json @@ -16,7 +16,8 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false + "nullable": false, + "default": "CURRENT_TIMESTAMP()" }, { "name": "action_type", diff --git a/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json b/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json index bc9572fa98..e18bef2649 100644 --- a/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json +++ b/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json @@ -16,7 +16,9 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false + "nullable": false, + "default": "CURRENT_TIMESTAMP()" + }, { "name": "action_type", diff --git a/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json b/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json index 70eb71ce51..d23fa0989e 100644 --- a/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json +++ b/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json @@ -16,7 +16,8 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false + "nullable": false, + "default": "CURRENT_TIMESTAMP()" }, { "name": "action_type", diff --git a/configuration/etl/etl_tables.d/xdb/schema-version-history.json b/configuration/etl/etl_tables.d/xdb/schema-version-history.json index 70eb71ce51..d23fa0989e 100644 --- a/configuration/etl/etl_tables.d/xdb/schema-version-history.json +++ b/configuration/etl/etl_tables.d/xdb/schema-version-history.json @@ -16,7 +16,8 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false + "nullable": false, + "default": "CURRENT_TIMESTAMP()" }, { "name": "action_type", From f4c14e3bc1581b4652c46e0045d56b1b68bc81d7 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 13:44:42 -0500 Subject: [PATCH 04/76] Cloud raw_event table column size update Not sure why this wasn't caught before but the values being inserted into this column included values that were too large for `int`. After speaking with Greg we decided the easiest fix for now would be to update the column type to `bigint`. --- configuration/etl/etl_tables.d/cloud_openstack/raw_event.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configuration/etl/etl_tables.d/cloud_openstack/raw_event.json b/configuration/etl/etl_tables.d/cloud_openstack/raw_event.json index 6f282a7a5a..71b0787526 100644 --- a/configuration/etl/etl_tables.d/cloud_openstack/raw_event.json +++ b/configuration/etl/etl_tables.d/cloud_openstack/raw_event.json @@ -127,7 +127,7 @@ }, { "name": "size", - "type": "int(11)", + "type": "bigint(11)", "nullable": true, "default": null }, From 1c900fb2031e783673a7d972be9ed8cf539a992f Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 13:45:42 -0500 Subject: [PATCH 05/76] Fixing SQL Errors - **/*-aggregation*.json: The sql statements constructed from this configuration files were throwing a division by zero error. To resolve this problem an `IF` statement was added that ensured the `task.wallduration` value was always at least 1. - post_ingest_update.sql: This statement wasn't operating as intended. After some investigation I found that the `INTERVAL 1 SECOND` was not supported and after discussion w/ Greg and some testing, changed it to `- 1` as the column values are already in seconds. --- .../etl/etl_action_defs.d/jobs/hpc-aggregation-day.json | 2 +- .../etl/etl_action_defs.d/jobs/hpc-aggregation.json | 2 +- .../storage/xdw/storagefact.aggregation.json | 6 +++--- .../etl/etl_sql.d/cloud_openstack/post_ingest_update.sql | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation-day.json b/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation-day.json index 504a1ef4dd..af7d356553 100644 --- a/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation-day.json +++ b/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation-day.json @@ -80,7 +80,7 @@ "sum_gpu_time_squared": "COALESCE(SUM( CAST(POW(task.gpu_count * ${wallduration_case_statement}, 2) AS DECIMAL(36,4)) ), 0)", "node_time": "COALESCE(SUM(task.node_count * ${wallduration_case_statement}), 0)", "sum_node_time_squared": "COALESCE(SUM( CAST(POW(task.node_count * ${wallduration_case_statement}, 2) AS DECIMAL(36,4)) ), 0)", - "sum_weighted_expansion_factor": "SUM( ((task.wallduration + task.waitduration) / task.wallduration) * task.node_count * COALESCE(${wallduration_case_statement}, 0))", + "sum_weighted_expansion_factor": "SUM( ((task.wallduration + task.waitduration) / IF((task.wallduration) <= 0, 1, task.wallduration)) * task.node_count * COALESCE(${wallduration_case_statement},0))", "sum_job_weights": "SUM(task.node_count * COALESCE(${wallduration_case_statement}, 0))", "job_id_list": "GROUP_CONCAT(task.job_id)" }, diff --git a/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation.json b/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation.json index 58b1c6a34e..fc68d1390e 100644 --- a/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation.json +++ b/configuration/etl/etl_action_defs.d/jobs/hpc-aggregation.json @@ -80,7 +80,7 @@ "sum_gpu_time_squared": "COALESCE(SUM( CAST(POW(task.gpu_count * ${wallduration_case_statement}, 2) AS DECIMAL(36,4)) ), 0)", "node_time": "COALESCE(SUM(task.node_count * ${wallduration_case_statement}), 0)", "sum_node_time_squared": "COALESCE(SUM( CAST(POW(task.node_count * ${wallduration_case_statement}, 2) AS DECIMAL(36,4)) ), 0)", - "sum_weighted_expansion_factor": "SUM( ((task.wallduration + task.waitduration) / task.wallduration) * task.node_count * COALESCE(${wallduration_case_statement}, 0))", + "sum_weighted_expansion_factor": "SUM( ((task.wallduration + task.waitduration) / IF((task.wallduration) <= 0, 1, task.wallduration)) * task.node_count * COALESCE(${wallduration_case_statement},0))", "sum_job_weights": "SUM(task.node_count * COALESCE(${wallduration_case_statement}, 0))" }, "groupby": [ diff --git a/configuration/etl/etl_action_defs.d/storage/xdw/storagefact.aggregation.json b/configuration/etl/etl_action_defs.d/storage/xdw/storagefact.aggregation.json index 06c0b935ef..c96c6ae6bd 100644 --- a/configuration/etl/etl_action_defs.d/storage/xdw/storagefact.aggregation.json +++ b/configuration/etl/etl_action_defs.d/storage/xdw/storagefact.aggregation.json @@ -31,9 +31,9 @@ "avg_logical_usage": "AVG(sf.logical_usage)", "sum_logical_usage": "SUM(CAST(sf.logical_usage AS DECIMAL(30,0)))", "sum_squared_logical_usage": "SUM(CAST(sf.logical_usage AS DECIMAL(60,0)) * CAST(sf.logical_usage AS DECIMAL(60,0)))", - "avg_physical_usage": "AVG(sf.physical_usage)", - "sum_physical_usage": "SUM(CAST(sf.physical_usage AS DECIMAL(30,0)))", - "sum_squared_physical_usage": "SUM(CAST(sf.physical_usage AS DECIMAL(60,0)) * CAST(sf.physical_usage AS DECIMAL(60,0)))", + "avg_physical_usage": "AVG(COALESCE(sf.physical_usage,0))", + "sum_physical_usage": "SUM(CAST(COALESCE(sf.physical_usage,0) AS DECIMAL(30,0)))", + "sum_squared_physical_usage": "SUM(CAST(COALESCE(sf.physical_usage,0) AS DECIMAL(60,0)) * CAST(COALESCE(sf.physical_usage,0) AS DECIMAL(60,0)))", "avg_soft_threshold": "AVG(sf.soft_threshold)", "sum_soft_threshold": "SUM(CAST(sf.soft_threshold AS DECIMAL(30,0)))", "avg_hard_threshold": "AVG(sf.hard_threshold)", diff --git a/configuration/etl/etl_sql.d/cloud_openstack/post_ingest_update.sql b/configuration/etl/etl_sql.d/cloud_openstack/post_ingest_update.sql index ba681f0dce..102c76ce80 100644 --- a/configuration/etl/etl_sql.d/cloud_openstack/post_ingest_update.sql +++ b/configuration/etl/etl_sql.d/cloud_openstack/post_ingest_update.sql @@ -56,7 +56,7 @@ SELECT instance_type_id, instance_type, resource_id, - IF ( @current_instance_type = instance_type AND @prev_start IS NOT NULL, @prev_start - INTERVAL 1 SECOND, NULL) AS end_time, + IF ( @current_instance_type = instance_type AND @prev_start IS NOT NULL, @prev_start - 1, NULL) AS end_time, @current_instance_type := instance_type AS junk1, @prev_start := start_time AS junk2 FROM ${DESTINATION_SCHEMA}.instance_type From 60c7fa79b361aa9242be15376dbba6dc1c19f8da Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 13:48:47 -0500 Subject: [PATCH 06/76] Updates to saveUser to accomodate MariaDB datetime values The original value of `NOW()` was being interpreted as a literal string value as opposed to being treated as a function call, this was causing user creation and updates to fail due to an incompatible value being provided for the `password_last_updated` column. Replacing this w/ a php call to `date` means that we provide a valid value in the form `Y-m-d H:i:s`. **NOTE: there will be a follow on PR that refactors the `getUpdateQuery` and `getInsertQuery` functions into a single `getQuery` function that greatly simplifies & makes more readable the code responsible for generating the required SQL Statement for creating / updating a user.** --- classes/XDUser.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/XDUser.php b/classes/XDUser.php index e16869f6ee..8336e84489 100644 --- a/classes/XDUser.php +++ b/classes/XDUser.php @@ -977,7 +977,7 @@ public function saveUser() $this->_password = password_hash($this->_password, PASSWORD_DEFAULT); $update_data['password'] = $this->_password; } - $update_data['password_last_updated'] = 'NOW()'; + $update_data['password_last_updated'] = date('Y-m-d H:i:s'); } $update_data['email_address'] = ($this->_email); $update_data['first_name'] = ($this->_firstName); From 243fc3fb528f8fbb396e49997d02a8336587a292 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 13:54:23 -0500 Subject: [PATCH 07/76] Expected Test Updates made to accomodate Centos8 changes All of these changes are due to the versions of software being updated on Centos8 vs. Centos7. - normalized_table_definition.json: Default values are now being returned as single quoted strings now in MariaDB 10.3.17. - UsageExplorerTest.php: w/ PHP 7.2 installed these response header values have changed and needed to be updated. - RegressionTestHelper.php: w/ PHP 7.2 installed, when dealing with exported CSV data we sometimes encounter and expect JSON data instead. For instance, when a user requests data that they do not have access to a JSON object will be returned. Unfortunately we compare this JSON data as strings and not as objects / arrays. This coupled with JSON Pretty Print not including a new line after the opening square bracket of an empty array (example below ): ```json { "property1": "", "property2": [ ] } ``` Versus ```json { "property1": "", "property2": [] } ``` This meant that these tests were failing. I've just added a secondary test if the intitial `$expected === $csvdata` condition fails that tests if $expected / $csvdata are actually json data. --- .../output/normalized_table_definition.json | 2 +- .../integration/lib/Controllers/UsageExplorerTest.php | 4 ++-- tests/integration/lib/Database/SharedJobsTest.php | 2 +- .../lib/TestHarness/RegressionTestHelper.php | 10 ++++++++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json b/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json index f88f656a30..85d1a2280b 100644 --- a/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json +++ b/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json @@ -31,7 +31,7 @@ "charset": "utf8", "collation": "utf8_general_ci", "nullable": false, - "default": "first name", + "default": "'first name'", "extra": null, "comment": null, "hints": null, diff --git a/tests/integration/lib/Controllers/UsageExplorerTest.php b/tests/integration/lib/Controllers/UsageExplorerTest.php index a3aad90c33..ff8109be8d 100644 --- a/tests/integration/lib/Controllers/UsageExplorerTest.php +++ b/tests/integration/lib/Controllers/UsageExplorerTest.php @@ -367,13 +367,13 @@ public function exportDataProvider() $ret[] = array($baseSettings, 'image/png', 'image/png; charset=binary'); $baseSettings['format'] = 'svg'; - $ret[] = array($baseSettings, 'image/svg+xml', 'text/plain; charset=utf-8'); + $ret[] = array($baseSettings, 'image/svg+xml', 'image/svg; charset=utf-8'); $baseSettings['format'] = 'csv'; $ret[] = array($baseSettings, 'application/xls', 'text/plain; charset=us-ascii'); $baseSettings['format'] = 'xml'; - $ret[] = array($baseSettings, 'text/xml', 'application/xml; charset=us-ascii'); + $ret[] = array($baseSettings, 'text/xml;charset=UTF-8', 'text/xml; charset=us-ascii'); return $ret; } diff --git a/tests/integration/lib/Database/SharedJobsTest.php b/tests/integration/lib/Database/SharedJobsTest.php index 6687623892..ce9588832a 100644 --- a/tests/integration/lib/Database/SharedJobsTest.php +++ b/tests/integration/lib/Database/SharedJobsTest.php @@ -36,7 +36,7 @@ public function testResourcesSharedJobsValues() ); $validator = new Validator(); $actualDecoded = json_decode(json_encode($actual)); - $validator->validate($actualDecoded,$schemaObject); + $validator->validate($actualDecoded, $schemaObject); $errors = array(); foreach ($validator->getErrors() as $err) { $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); diff --git a/tests/regression/lib/TestHarness/RegressionTestHelper.php b/tests/regression/lib/TestHarness/RegressionTestHelper.php index 73d2ee4a32..150fae9486 100644 --- a/tests/regression/lib/TestHarness/RegressionTestHelper.php +++ b/tests/regression/lib/TestHarness/RegressionTestHelper.php @@ -380,6 +380,16 @@ public function checkCsvExport($testName, $input, $expectedFile, $userRole) if ($expected === $csvdata) { return true; + } else { + try { + $expectedJson = json_encode(json_decode($expected), JSON_PRETTY_PRINT); + $csvJson = json_encode(json_decode($csvdata), JSON_PRETTY_PRINT); + if (trim($expectedJson) === trim($csvJson)) { + return true; + } + } catch (\Exception $e) { + // go ahead and ignore as this is just for json data and will fail w/ actual csv data. + } } $this->messages[] = sprintf( From 7df9cef2f552330a52d279af19e81f30197ec631 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 14:05:53 -0500 Subject: [PATCH 08/76] Updating XDMoD spec file to Centos8 versions --- open_xdmod/modules/xdmod/xdmod.spec.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/open_xdmod/modules/xdmod/xdmod.spec.in b/open_xdmod/modules/xdmod/xdmod.spec.in index 52410b3c8a..3921ba801f 100644 --- a/open_xdmod/modules/xdmod/xdmod.spec.in +++ b/open_xdmod/modules/xdmod/xdmod.spec.in @@ -12,9 +12,9 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}__PRERELEASE__-%{relea BuildArch: noarch BuildRequires: php-cli Requires: httpd mod_ssl -Requires: mariadb >= 5.5.3 -Requires: php >= 5.4 php-cli php-mysql php-pdo php-gd php-xml php-mbstring -Requires: php-pear-MDB2 php-pear-MDB2-Driver-mysql php-pecl-apcu +Requires: mariadb >= 10.3.17 +Requires: php >= 7.2 php-cli php-mysqlnd php-pdo php-gd php-xml php-mbstring php-zip php-posix +Requires: php-pecl-apcu Requires: libreoffice-writer Requires: chromium-headless Requires: librsvg2-tools From 6a22f2d64d456768ded5a691be99d2a7b8283379 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 21 Jan 2021 14:08:30 -0500 Subject: [PATCH 09/76] Fixing some additional tests These changes were made so that the ETL tests produce the same logging as we expected previously. --- tests/component/lib/ETL/BaseEtlTest.php | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tests/component/lib/ETL/BaseEtlTest.php b/tests/component/lib/ETL/BaseEtlTest.php index d15266e3f0..2eda3b249e 100644 --- a/tests/component/lib/ETL/BaseEtlTest.php +++ b/tests/component/lib/ETL/BaseEtlTest.php @@ -7,9 +7,9 @@ namespace ComponentTests\ETL; use CCR\Log; +use ETL\EtlOverseer; use ETL\EtlOverseerOptions; use ETL\Configuration\EtlConfiguration; -use ETL\aAction; use Psr\Log\LoggerInterface; /** @@ -78,7 +78,14 @@ protected function executeEtlAction( EtlConfiguration $etlConfig, EtlOverseerOptions $overseerOptions ) { - $action = aAction::factory($etlConfig, $actionName, self::$logger); - $action->execute($overseerOptions); + if (!isset(self::$logger)) { + self::$logger = self::createLogger('base-etl-test', Log::DEBUG); + } + + $overseerOptions->setActionNames($actionName); + $overseerOptions->setLogger(self::$logger); + + $overseer = new EtlOverseer($overseerOptions, self::$logger); + $overseer->execute($etlConfig); } } From 6ff838b8d7186c0806637f426be385eaaf547d82 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 22 Jan 2021 09:49:57 -0500 Subject: [PATCH 10/76] Updating chromedriver version to match centos8 Just bumping the version of chromedriver available w/ Centos8 --- tests/ui/package.json | 1 + tests/ui/wdio.conf.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/ui/package.json b/tests/ui/package.json index 55c7c9ae1c..0896b2fa23 100644 --- a/tests/ui/package.json +++ b/tests/ui/package.json @@ -16,6 +16,7 @@ "chai": "4.1.2", "cheerio": "1.0.0-rc.3", "chromedriver": "91.0.0", + "fibers": "^5.0.0", "mocha": "5.2", "require-dir": "1.0", "selenium-standalone": "6.16.0", diff --git a/tests/ui/wdio.conf.js b/tests/ui/wdio.conf.js index 2c249dfa44..f5e8e92b56 100644 --- a/tests/ui/wdio.conf.js +++ b/tests/ui/wdio.conf.js @@ -22,7 +22,7 @@ var HeadlessChrome = { var Chrome = { acceptInsecureCerts: true, browserName: 'chrome', - version: '84.0', + version: '87.0', screenResolution: '2560x1600', chromeOptions: { args: [ From 298fd5aae599f9709df9386f3db7c9978025cde9 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 22 Jan 2021 11:35:31 -0500 Subject: [PATCH 11/76] Removing the use of createLogger's non-existant return value Sooo `self::createLogger` doesn't actually return anything so there's no point in setting `self::$logger = nothing`. --- tests/component/lib/ETL/BaseEtlTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/component/lib/ETL/BaseEtlTest.php b/tests/component/lib/ETL/BaseEtlTest.php index 2eda3b249e..8123542d0f 100644 --- a/tests/component/lib/ETL/BaseEtlTest.php +++ b/tests/component/lib/ETL/BaseEtlTest.php @@ -79,7 +79,7 @@ protected function executeEtlAction( EtlOverseerOptions $overseerOptions ) { if (!isset(self::$logger)) { - self::$logger = self::createLogger('base-etl-test', Log::DEBUG); + self::createLogger('base-etl-test', Log::DEBUG); } $overseerOptions->setActionNames($actionName); From ce25485aa6852f3948f6ccbbb54d6f5bb183490b Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 11:22:33 -0500 Subject: [PATCH 12/76] Updating ETL Column Detection SQL for MariaDB 10.2+ MariaDB 10.2+ started reporting default values as quoted which broke the ETL table creation / modification code. These changes detect if there are quotes included and strips them, thus allowing our code to work again. --- classes/ETL/DbModel/Table.php | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/classes/ETL/DbModel/Table.php b/classes/ETL/DbModel/Table.php index a0dc0d0ab0..7cba248a73 100644 --- a/classes/ETL/DbModel/Table.php +++ b/classes/ETL/DbModel/Table.php @@ -312,17 +312,33 @@ public function discover($source) // SMG: We should do a better job of detecting equivalent columns. For example "int unsigned" is // equivalent to "int(10) unsigned". - $sql = "SELECT -column_name as name, column_type as type, is_nullable as nullable, -character_set_name as charset, -collation_name as collation, -IF('NULL' = column_default, NULL, column_default) as " . $endpoint->quoteSystemIdentifier("default") . ", -IF('' = extra, NULL, extra) as extra, -IF('' = column_comment, NULL, column_comment) as " . $endpoint->quoteSystemIdentifier("comment") . " + // NOTE: An additional `IF` statement was added to the `COLUMN_DEFAULT` clause as MariaDB 10.2+ started + // reporting default values differently than previous MySQL / MariaDB versions. + // Related links: + // - https://jira.mariadb.org/browse/MDEV-15377 + // - https://mariadb.com/kb/en/incompatibilities-and-feature-differences-between-mariadb-102-and-mysql-57/ + // - "Since MariaDB supports expressions in the DEFAULT clause, in MariaDB, the INFORMATION_SCHEMA.COLUMNS + // table contains extra fields, and also quotes the DEFAULT value of a string in the COLUMN_DEFAULT + // field in order to distinguish it from an expression. + $sql = " +SELECT column_name AS name, + column_type AS type, + is_nullable AS nullable, + character_set_name AS charset, + collation_name AS collation, + IF( + INSTR(COLUMN_DEFAULT, '\''), + SUBSTR(column_default, 2, LENGTH(COLUMN_DEFAULT) - 2), + IF(COLUMN_DEFAULT = 'NULL', + NULL, + COLUMN_DEFAULT) + ) as 'default', + IF('' = extra, NULL, extra) AS extra, + IF('' = column_comment, NULL, column_comment) AS 'comment' FROM information_schema.columns WHERE table_schema = :schema -AND table_name = :tablename -ORDER BY ordinal_position ASC"; + AND table_name = :tablename +ORDER BY ordinal_position ASC;"; try { $result = $endpoint->getHandle()->query($sql, $params); From dd82513834a779abf8960c77c1d79b5f47073a2c Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 11:24:55 -0500 Subject: [PATCH 13/76] This should ahve been with the previous commit --- .../etlv2/configuration/output/normalized_table_definition.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json b/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json index 85d1a2280b..f88f656a30 100644 --- a/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json +++ b/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json @@ -31,7 +31,7 @@ "charset": "utf8", "collation": "utf8_general_ci", "nullable": false, - "default": "'first name'", + "default": "first name", "extra": null, "comment": null, "hints": null, From d3d04cb42cc2ce7ed77071bae2e1becaf821fc67 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 11:25:12 -0500 Subject: [PATCH 14/76] Updating Datetime default values to use triggers These changes only worked on MariaDB 10.0+ ( or MySQL 5.6.5 ) as that's when MariaDB allowed `datetime` columns to have default values of `NOW()` or `CURRENT_TIMESTAMP()`. --- .../common/hpcdb/schema-version-history.json | 13 +++++++++++-- .../common/shredder/schema-version-history.json | 13 +++++++++++-- .../jobs/xdw/schema-version-history.json | 14 +++++++++++--- .../etl_tables.d/xdb/schema-version-history.json | 14 +++++++++++--- 4 files changed, 44 insertions(+), 10 deletions(-) diff --git a/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json b/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json index a54bf2a2c1..b4585b1be5 100644 --- a/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json +++ b/configuration/etl/etl_tables.d/common/hpcdb/schema-version-history.json @@ -16,8 +16,7 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false, - "default": "CURRENT_TIMESTAMP()" + "nullable": false }, { "name": "action_type", @@ -39,6 +38,16 @@ "action_datetime" ] } + ], + "triggers": [ + { + "schema": "mod_hpcdb", + "table": "schema_version_history", + "name": "hpcdb_schema_version_history_before_insert", + "time": "BEFORE", + "event": "INSERT", + "body": "SET NEW.action_datetime = NOW();" + } ] } } diff --git a/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json b/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json index e18bef2649..5ba37e20ee 100644 --- a/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json +++ b/configuration/etl/etl_tables.d/common/shredder/schema-version-history.json @@ -16,8 +16,7 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false, - "default": "CURRENT_TIMESTAMP()" + "nullable": false }, { @@ -40,6 +39,16 @@ "action_datetime" ] } + ], + "triggers": [ + { + "schema": "mod_shredder", + "table": "schema_version_history", + "name": "shredder_schema_version_history_before_insert", + "time": "BEFORE", + "event": "INSERT", + "body": "SET NEW.action_datetime = NOW();" + } ] } } diff --git a/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json b/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json index d23fa0989e..0452a7e50d 100644 --- a/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json +++ b/configuration/etl/etl_tables.d/jobs/xdw/schema-version-history.json @@ -16,8 +16,7 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false, - "default": "CURRENT_TIMESTAMP()" + "nullable": false }, { "name": "action_type", @@ -42,6 +41,15 @@ "is_unique": true } ], - "triggers": [] + "triggers": [ + { + "schema": "modw", + "table": "schema_version_history", + "name": "xdw_schema_version_history_before_insert", + "time": "BEFORE", + "event": "INSERT", + "body": "SET NEW.action_datetime = NOW();" + } + ] } } diff --git a/configuration/etl/etl_tables.d/xdb/schema-version-history.json b/configuration/etl/etl_tables.d/xdb/schema-version-history.json index d23fa0989e..0b032c495c 100644 --- a/configuration/etl/etl_tables.d/xdb/schema-version-history.json +++ b/configuration/etl/etl_tables.d/xdb/schema-version-history.json @@ -16,8 +16,7 @@ { "name": "action_datetime", "type": "datetime", - "nullable": false, - "default": "CURRENT_TIMESTAMP()" + "nullable": false }, { "name": "action_type", @@ -42,6 +41,15 @@ "is_unique": true } ], - "triggers": [] + "triggers": [ + { + "schema": "moddb", + "table": "schema_version_history", + "name": "xdb_schema_version_history_before_insert", + "time": "BEFORE", + "event": "INSERT", + "body": "SET NEW.action_datetime = NOW();" + } + ] } } From c238b6354ccb29bc8e773592c5bc59855729920d Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 11:28:36 -0500 Subject: [PATCH 15/76] Reverting this log change as it's not needed --- tests/component/lib/ETL/BaseEtlTest.php | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tests/component/lib/ETL/BaseEtlTest.php b/tests/component/lib/ETL/BaseEtlTest.php index 8123542d0f..d4fda80615 100644 --- a/tests/component/lib/ETL/BaseEtlTest.php +++ b/tests/component/lib/ETL/BaseEtlTest.php @@ -7,6 +7,7 @@ namespace ComponentTests\ETL; use CCR\Log; +use ETL\aAction; use ETL\EtlOverseer; use ETL\EtlOverseerOptions; use ETL\Configuration\EtlConfiguration; @@ -78,14 +79,7 @@ protected function executeEtlAction( EtlConfiguration $etlConfig, EtlOverseerOptions $overseerOptions ) { - if (!isset(self::$logger)) { - self::createLogger('base-etl-test', Log::DEBUG); - } - - $overseerOptions->setActionNames($actionName); - $overseerOptions->setLogger(self::$logger); - - $overseer = new EtlOverseer($overseerOptions, self::$logger); - $overseer->execute($etlConfig); + $action = aAction::factory($etlConfig, $actionName); + $action->execute($overseerOptions); } } From 99e7739ac4b9af36a7b35a920bcd284d1ee104b0 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 11:30:09 -0500 Subject: [PATCH 16/76] Updating XDMoD's spec file to support Centos7&8 These changes allow our RPM to be built for / installed on either Centos7 or 8. --- open_xdmod/modules/xdmod/xdmod.spec.in | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/open_xdmod/modules/xdmod/xdmod.spec.in b/open_xdmod/modules/xdmod/xdmod.spec.in index 3921ba801f..2fa372857f 100644 --- a/open_xdmod/modules/xdmod/xdmod.spec.in +++ b/open_xdmod/modules/xdmod/xdmod.spec.in @@ -12,9 +12,12 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}__PRERELEASE__-%{relea BuildArch: noarch BuildRequires: php-cli Requires: httpd mod_ssl -Requires: mariadb >= 10.3.17 -Requires: php >= 7.2 php-cli php-mysqlnd php-pdo php-gd php-xml php-mbstring php-zip php-posix -Requires: php-pecl-apcu +%{?el8:Requires: mariadb >= 10.3.17} +%{?el8:Requires: php >= 7.2 php-cli php-mysqlnd php-pdo php-gd php-xml php-mbstring php-zip php-posix} +%{?el8:Requires: php-pecl-apcu} +%{?el7:Requires: mariadb >= 5.5.3} +%{?el7:Requires: php >= 5.4 php-cli php-mysql php-pdo php-gd php-xml php-mbstring} +%{?el7:Requires: php-pear-MDB2 php-pear-MDB2-Driver-mysql php-pecl-apcu} Requires: libreoffice-writer Requires: chromium-headless Requires: librsvg2-tools From 05bc7be202186e96acda0333e4154562342e2397 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 11:31:24 -0500 Subject: [PATCH 17/76] Updates to account for PHP7/8 finfo_buffer differences So upon further testing it appears that `finfo_buffer` w/ `FILEINFO_MIME` returns different values depending on whether it's PHP7 or 8. These changes allow our tests to account for these differences. --- .../lib/Controllers/UsageExplorerTest.php | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/tests/integration/lib/Controllers/UsageExplorerTest.php b/tests/integration/lib/Controllers/UsageExplorerTest.php index ff8109be8d..f2995fd5cd 100644 --- a/tests/integration/lib/Controllers/UsageExplorerTest.php +++ b/tests/integration/lib/Controllers/UsageExplorerTest.php @@ -309,12 +309,16 @@ public function testExport($chartConfig, $expectedMimeType, $expectedFinfo) $response = $this->helper->post('/controllers/user_interface.php', null, $chartConfig); $this->assertEquals($response[1]['http_code'], 200); - $this->assertEquals($expectedMimeType, $response[1]['content_type']); - // Check the mime type of the file is correct. - $finfo = finfo_open(FILEINFO_MIME); - $this->assertEquals($expectedFinfo, finfo_buffer($finfo, $response[0])); + $actualFinfo = finfo_buffer(finfo_open(FILEINFO_MIME), $response[0]); + + if (is_array($expectedFinfo)) { + $this->assertTrue(in_array($actualFinfo, $expectedFinfo)); + } else { + $this->assertEquals($expectedFinfo, $actualFinfo); + } + } public function exportDataProvider() @@ -367,13 +371,13 @@ public function exportDataProvider() $ret[] = array($baseSettings, 'image/png', 'image/png; charset=binary'); $baseSettings['format'] = 'svg'; - $ret[] = array($baseSettings, 'image/svg+xml', 'image/svg; charset=utf-8'); + $ret[] = array($baseSettings, 'image/svg+xml', array('image/svg; charset=utf-8', 'text/plain; charset=utf-8')); $baseSettings['format'] = 'csv'; $ret[] = array($baseSettings, 'application/xls', 'text/plain; charset=us-ascii'); $baseSettings['format'] = 'xml'; - $ret[] = array($baseSettings, 'text/xml;charset=UTF-8', 'text/xml; charset=us-ascii'); + $ret[] = array($baseSettings, 'text/xml;charset=UTF-8', array('text/xml; charset=us-ascii', 'application/xml; charset=us-ascii')); return $ret; } From 637d8d39e4c5123c7dcac546f008368493f7da18 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 13:47:47 -0500 Subject: [PATCH 18/76] Updating ContentType to follow finfo The content_type reported by PHP7 for xml is `text/xml` while in PHP8 it's reported as `text/xml;charset=UTF-8`. There are two ways we could handle this, one is with the changes included in this commit. The other is that we can update `ExportBuilder.php::$supported_formats["xml"]["render_as"]` to include `charset=UTF-8`. --- .../integration/lib/Controllers/UsageExplorerTest.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/integration/lib/Controllers/UsageExplorerTest.php b/tests/integration/lib/Controllers/UsageExplorerTest.php index f2995fd5cd..008f166230 100644 --- a/tests/integration/lib/Controllers/UsageExplorerTest.php +++ b/tests/integration/lib/Controllers/UsageExplorerTest.php @@ -309,7 +309,13 @@ public function testExport($chartConfig, $expectedMimeType, $expectedFinfo) $response = $this->helper->post('/controllers/user_interface.php', null, $chartConfig); $this->assertEquals($response[1]['http_code'], 200); - $this->assertEquals($expectedMimeType, $response[1]['content_type']); + + $actualContentType = $response[1]['content_type']; + if (is_array($expectedMimeType)) { + $this->assertTrue(in_array($actualContentType, $expectedMimeType)); + } else { + $this->assertEquals($expectedMimeType, $actualContentType); + } $actualFinfo = finfo_buffer(finfo_open(FILEINFO_MIME), $response[0]); @@ -377,7 +383,7 @@ public function exportDataProvider() $ret[] = array($baseSettings, 'application/xls', 'text/plain; charset=us-ascii'); $baseSettings['format'] = 'xml'; - $ret[] = array($baseSettings, 'text/xml;charset=UTF-8', array('text/xml; charset=us-ascii', 'application/xml; charset=us-ascii')); + $ret[] = array($baseSettings, array('text/xml;charset=UTF-8', 'text/xml'), array('text/xml; charset=us-ascii', 'application/xml; charset=us-ascii')); return $ret; } From c1ff73299ce0a60b4cde2a5ff2bc6e58a41e511b Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 27 Jan 2021 15:27:41 -0500 Subject: [PATCH 19/76] Reducing Integration Test Code Duplication These sections of code were flagged as duplicate by SonarCloud so I've refactored the duplicate code into the shared base class `BaseTest` as a new function `validateJson` to be used in place of the duplicated code. --- tests/integration/lib/BaseTest.php | 19 +++++++++++++++++++ .../lib/Controllers/UserAdminTest.php | 19 +++---------------- .../lib/Controllers/UserInterfaceTest.php | 10 ++-------- .../lib/Database/ResourceNamesTest.php | 10 ++-------- .../lib/Database/SharedJobsTest.php | 10 ++-------- 5 files changed, 28 insertions(+), 40 deletions(-) diff --git a/tests/integration/lib/BaseTest.php b/tests/integration/lib/BaseTest.php index aff9ddc81b..2ad68df6fe 100644 --- a/tests/integration/lib/BaseTest.php +++ b/tests/integration/lib/BaseTest.php @@ -2,6 +2,7 @@ namespace IntegrationTests; +use JsonSchema\Validator; use \TestHarness\Utilities; abstract class BaseTest extends \PHPUnit_Framework_TestCase @@ -17,4 +18,22 @@ public static function getRealms() { return Utilities::getRealmsToTest(); } + + /** + * @param $actual + * @param \stdClass $schemaObject + * @return mixed + */ + protected function validateJson($actual, \stdClass $schemaObject) + { + $validator = new Validator(); + $actualDecoded = json_decode(json_encode($actual)); + $validator->validate($actualDecoded, $schemaObject); + $errors = array(); + foreach ($validator->getErrors() as $err) { + $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); + } + $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); + return $actualDecoded; + } } diff --git a/tests/integration/lib/Controllers/UserAdminTest.php b/tests/integration/lib/Controllers/UserAdminTest.php index 42d93ed1fc..34a213ffa8 100644 --- a/tests/integration/lib/Controllers/UserAdminTest.php +++ b/tests/integration/lib/Controllers/UserAdminTest.php @@ -331,14 +331,8 @@ public function testGetMenus(array $user) $this->getTestFiles()->getFile('schema', 'get-menus.spec', ''), false ); - $validator = new Validator(); - $actualDecoded = json_decode(json_encode($actual)); - $validator->validate($actualDecoded, $schemaObject); - $errors = array(); - foreach ($validator->getErrors() as $err) { - $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); - } - $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); + + $this->validateJson($actual, $schemaObject); # Check expected file $expected = array(); @@ -488,14 +482,7 @@ public function testGetDwDescripters($username) $this->getTestFiles()->getFile('schema', 'dw_descripter.spec', ''), false ); - $validator = new Validator(); - $actualDecoded = json_decode(json_encode($actual)); - $validator->validate($actualDecoded, $schemaObject); - $errors = array(); - foreach ($validator->getErrors() as $err) { - $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); - } - $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); + $this->validateJson($actual, $schemaObject); $this->validateResponse($response); if (!$isPublicUser) { $this->helper->logout(); diff --git a/tests/integration/lib/Controllers/UserInterfaceTest.php b/tests/integration/lib/Controllers/UserInterfaceTest.php index a7dd015c8f..9580be4d5e 100644 --- a/tests/integration/lib/Controllers/UserInterfaceTest.php +++ b/tests/integration/lib/Controllers/UserInterfaceTest.php @@ -60,14 +60,8 @@ public function testGetMenus(array $options) $this->getTestFiles()->getFile('schema', 'get-menus.spec', ''), false ); - $validator = new Validator(); - $actualDecoded = json_decode(json_encode($actual)); - $validator->validate($actualDecoded, $schemaObject); - $errors = array(); - foreach ($validator->getErrors() as $err) { - $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); - } - $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); + + $this->validateJson($actual, $schemaObject); # Check expected file $expected = array(); diff --git a/tests/integration/lib/Database/ResourceNamesTest.php b/tests/integration/lib/Database/ResourceNamesTest.php index 162888629f..3fb8444d10 100644 --- a/tests/integration/lib/Database/ResourceNamesTest.php +++ b/tests/integration/lib/Database/ResourceNamesTest.php @@ -34,14 +34,8 @@ public function testResourcesNamesValues() $this->testFiles->getFile('schema/integration', 'resource_names.spec', ''), false ); - $validator = new Validator(); - $actualDecoded =json_decode(json_encode($actual)); - $validator->validate($actualDecoded, $schemaObject); - $errors = array(); - foreach ($validator->getErrors() as $err) { - $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); - } - $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); + + $this->validateJson($actual, $schemaObject); # Check expected file foreach(self::$XDMOD_REALMS as $realm) { diff --git a/tests/integration/lib/Database/SharedJobsTest.php b/tests/integration/lib/Database/SharedJobsTest.php index ce9588832a..c166e4ee2d 100644 --- a/tests/integration/lib/Database/SharedJobsTest.php +++ b/tests/integration/lib/Database/SharedJobsTest.php @@ -34,14 +34,8 @@ public function testResourcesSharedJobsValues() $this->testFiles->getFile('schema/integration', 'shared_jobs.spec', ''), false ); - $validator = new Validator(); - $actualDecoded = json_decode(json_encode($actual)); - $validator->validate($actualDecoded, $schemaObject); - $errors = array(); - foreach ($validator->getErrors() as $err) { - $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); - } - $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); + + $this->validateJson($actual, $schemaObject); # Check expected file foreach(self::$XDMOD_REALMS as $realm) { From dc4f37df149515b2e52d162dc68464d886871938 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 4 Feb 2021 13:27:39 -0500 Subject: [PATCH 20/76] Update to use ETLOverseer instead of Actions This change was necessitated by the DBModelTest tests / ETL actions failing to create the `test` db as expected. After further research I found that this was due to the action being directory constructed / executed vs. utilizing the EtlOverseer. With this change, actions that specify that a schema should be created if one does not exist will operate as expected. --- tests/component/lib/ETL/BaseEtlTest.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tests/component/lib/ETL/BaseEtlTest.php b/tests/component/lib/ETL/BaseEtlTest.php index d4fda80615..eee66d3a03 100644 --- a/tests/component/lib/ETL/BaseEtlTest.php +++ b/tests/component/lib/ETL/BaseEtlTest.php @@ -79,7 +79,10 @@ protected function executeEtlAction( EtlConfiguration $etlConfig, EtlOverseerOptions $overseerOptions ) { - $action = aAction::factory($etlConfig, $actionName); - $action->execute($overseerOptions); + $overseerOptions->setActionNames($actionName); + $overseerOptions->setLogger(self::$logger); + + $overseer = new EtlOverseer($overseerOptions, self::$logger); + $overseer->execute($etlConfig); } } From b5ecb84447bb3b8c504573145b7b9308e7bfec13 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 4 Feb 2021 13:33:07 -0500 Subject: [PATCH 21/76] Documentation / Code clarity updates Just adding documentation to the newly added `validateJson` function & renaming the `$actual` function argument to `$json` as the name of the function is `validateJson` not `validateActual`. --- tests/integration/lib/BaseTest.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/tests/integration/lib/BaseTest.php b/tests/integration/lib/BaseTest.php index 2ad68df6fe..607f10b3d9 100644 --- a/tests/integration/lib/BaseTest.php +++ b/tests/integration/lib/BaseTest.php @@ -20,20 +20,23 @@ public static function getRealms() } /** - * @param $actual - * @param \stdClass $schemaObject - * @return mixed + * Validate the provided $json w/ provided Json Schema $schemaObject and asserting that there were no errors. If the + * validation is successful then the decoded value is returned. + * + * @param mixed $json the JSON structure to be validated. + * @param \stdClass $schemaObject the JsonSchema object to be used to validate $json. + * @return mixed the decoded, valid json structure. */ - protected function validateJson($actual, \stdClass $schemaObject) + protected function validateJson($json, \stdClass $schemaObject) { $validator = new Validator(); - $actualDecoded = json_decode(json_encode($actual)); + $actualDecoded = json_decode(json_encode($json)); $validator->validate($actualDecoded, $schemaObject); $errors = array(); foreach ($validator->getErrors() as $err) { $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); } - $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); + $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($json, JSON_PRETTY_PRINT)); return $actualDecoded; } } From ce38a6de63933162490dc57ff66759936dd7e197 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 3 Mar 2021 13:16:36 -0500 Subject: [PATCH 22/76] First go at adding centos8 to the CircleCI build Attempting to add Centos8 to our build matrix. --- .circleci/config.yml | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 860dc21dc7..2159f0b6eb 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -3,14 +3,22 @@ # Check https://circleci.com/docs/2.0/language-php/ for more details # version: 2.1 + +executors: + centos7: + docker: + - image: tools-ext-01.ccr.xdmod.org/xdmod-9.5.0:centos7.9-1.0 + centos8: + docker: + - image: tools-ext-01.ccr.xdmod.org/centos8:base jobs: build: parameters: + os: + type: executor install-type: type: string - docker: - # The first image entry here will be used as the image for the parent container. - - image: tools-ext-01.ccr.xdmod.org/xdmod-9.5.0:centos7.9-1.0 + executor: << parameters.os >> environment: COMPOSER_ALLOW_SUPERUSER: 1 XDMOD_REALMS: 'jobs,storage,cloud' @@ -97,4 +105,8 @@ workflows: - build: matrix: parameters: + os: [centos7, centos8] install-type: ["fresh_install", "upgrade"] + exclude: + - os: centos8 + install-type: "upgrade" From 85ed6311595b128c12734d9a7a09e2f8f924a1b8 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 3 Mar 2021 19:29:07 -0500 Subject: [PATCH 23/76] Udpating centos8 docker image --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 2159f0b6eb..53c714afbe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -10,7 +10,7 @@ executors: - image: tools-ext-01.ccr.xdmod.org/xdmod-9.5.0:centos7.9-1.0 centos8: docker: - - image: tools-ext-01.ccr.xdmod.org/centos8:base + - image: tools-ext-01.ccr.xdmod.org/centos8-0.1:base jobs: build: parameters: From 3940b6a820e7ac9f6cdbe950891121266a9b722e Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 4 Mar 2021 10:14:25 -0500 Subject: [PATCH 24/76] Adding OpenSSL Key & Cert Generation --- .circleci/config.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.circleci/config.yml b/.circleci/config.yml index 53c714afbe..691c1850d0 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -26,6 +26,12 @@ jobs: XDMOD_INSTALL_DIR: /xdmod XDMOD_TEST_MODE: << parameters.install-type >> steps: + - run: + name: Generate OpenSSL Key + command: openssl genrsa -rand /proc/cpuinfo:/proc/dma:/proc/filesystems:/proc/interrupts:/proc/ioports:/proc/uptime 2048 > /etc/pki/tls/private/localhost.key + - run: + name: Generate Certificate + command: /usr/bin/openssl req -new -key /etc/pki/tls/private/localhost.key -x509 -sha256 -days 365 -set_serial $RANDOM -extensions v3_req -out /etc/pki/tls/certs/localhost.crt -subj "/C=XX/L=Default City/O=Default Company Ltd" - checkout # We need to update our acct before we can enable docker layer caching. #- setup_remote_docker: From f399440d5ae324406eef328ed3156d203f5cf60d Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 4 Mar 2021 13:41:23 -0500 Subject: [PATCH 25/76] Updating the Expected Output for these regression tests The fonts are subtly different in Centos8 vs Centos7 which accounts for the hashes being different. --- .circleci/config.yml | 19 +- .../xdmod/regression/images/expected.json | 7556 ++++++++--------- 2 files changed, 3794 insertions(+), 3781 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 691c1850d0..135654f2c5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,10 +7,10 @@ version: 2.1 executors: centos7: docker: - - image: tools-ext-01.ccr.xdmod.org/xdmod-9.5.0:centos7.9-1.0 - centos8: + - image: tools-ext-01.ccr.xdmod.org/xdmod-9.0.0:centos7.8-0.1 + centos8: ¢os8-executor docker: - - image: tools-ext-01.ccr.xdmod.org/centos8-0.1:base + - image: tools-ext-01.ccr.xdmod.org/xdmod-9.5.0:centos7.9-1.0 jobs: build: parameters: @@ -88,6 +88,19 @@ jobs: - run: ./tests/integration/runtests.sh --junit-output-dir ~/phpunit - run: ./tests/regression/post_ingest_test.sh --junit-output-dir ~/phpunit - run: ./tests/component/runtests.sh --junit-output-dir ~/phpunit + - when: + condition: + equal: [ *centos8-executor, << parameters.os >> ] + steps: + - run: + name: Update the chromdriver version for Centos8 + command: sed -i 's/84.0.1/88.0.0/' /root/project/tests/ui/package.json + - run: + name: Install new chromdriver + command: | + cd /root/project/tests/ui + npm install + cd /root/project - run: ./tests/ui/runtests.sh --headless --log-junit ~/phpunit - run: name: 'Run SSO Tests' diff --git a/tests/artifacts/xdmod/regression/images/expected.json b/tests/artifacts/xdmod/regression/images/expected.json index 9a3d1cb5dc..fc90bf2fc2 100644 --- a/tests/artifacts/xdmod/regression/images/expected.json +++ b/tests/artifacts/xdmod/regression/images/expected.json @@ -1,3778 +1,3778 @@ -{ - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e92a8d08dbac09a6b461f952870ec83c2c5be513", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "6db160df3d0df1d48cfca160dcafe9c984404556", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "60c37aa4a3e425d5fc4af7325407cae79ddda8ce", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "308f94448060c067f13e2df85e1902cafaeed57c", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "695f98d7155f133b63e733ccc273a3a11c5523d6", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "9d21817759e484b6fb21b084a47749b85e9c67b7", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "d0dbc80e90768d594215d5895702ad51663ffe87", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "42d19dd9817bae9bb5ec93fdaabbaa5b7ef0d03c", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "621e6b01804d204ebb319b29455d283d1a7785d7", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a968f152d54ccb6b4afad5f43ccaec8e6fd7031a", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "e42ddb0774574931191d9ba1a9555b0f678657ff", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "260d6966934c36f6ea19cb5ae5567f381d9684af", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5483d333d6df4bb545ea4ec298960aefd6a22515", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9a46f4c516b393fdc7d6b96548823ea7ff7a5264", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b7298c6a9f95b798a03eeb189e1b882d51a6e827", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b04316bd7b32181f26632dcc7dfae02609f3bc0b", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "39ca724b311497972c75692b813de9134dc3a503", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "e6c7f7a18b3190c6639972b385bd73fbd662ac8a", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "23e38109b4a04a9fcd5d9c558530d227be44a459", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f7a6314fd0c22788e8b48f56e658c596d01145c2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "54b8c9a4e1c72a9bb422e9b33fd64946747f83a2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b5d16b7c9310547d008ac1eddc9e36d51e496589", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "53f47f92744d85567f5f6de95dd01dbfd43ca1b3", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8fca927b1422fd660ca13d6cedfe3e7b9367f403", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "9b1a62d0204205c2237899c3d3e82179e354242c", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1db7835efc4da785ad0e75aacfde4533fc220c18", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d4ca2a7b4c4958994a4a72016030bd675e0383c8", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "5d2f84fdc2ba7d6305a235fd90cf601801a89966", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "dc1bb8fc92bf032156f4b571bbefbf53125ca403", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "111ed2bcdbafe737b94426a654afd3a0a3cc8c0d", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "66066e3565653463c043baeecf55bd462c5609ad", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "687519ec9ee1f5618dd9e89f3d8fc6cfcd070aa7", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "57950809045d204f2f72a903aaed7cc05ade422e", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "bd2c2941603081fefb7678a46856ef924624eae3", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "fb312670cd914e85db4ab85faca7c03c5791f611", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2a4c97bba9e5d8a73b7d15d5954822f4fe2e593f", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5867f5468a2716d37986af1aec44f6949da3a421", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "436c7237e3431764b9d796efe1384357edcd17fb", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cbcabecdb611d56e1541781053dc11ca06b3f3e6", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3eee1d52d4a1650ece3120dcd134c7f502531efb", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e08c93fa09d85e1aecaada86dfcb41eb44ab132", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "ea6d2a1d3466f724f6bc06467ec9a914ce683214", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "abbca34a138f557c424731ae1a61d63addcd5a56", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a44f957fb1146766b45bfc435aed9f062e3928d2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "64421655ef11bbe25e418651c0a3f61fe5d8c706", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3b78ed2c2f9ed9beb3f03b153f32f5e8a92c12ce", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "096647801389f1756264d8bc78377931284bae4c", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1293c69641859da72886a8fcfebc825557594832", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "36cbbc2804844cafd1dabff3251e154793dcd112", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "046d1518d82e3bc05189b70f826c24750ea9ae6d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7a1f28c9bdb3c3aea36c5b9cf8f8b60c88ef8d95", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c1107de4bfda1e2907e19cdbee847572f4a8d139", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ceff9a25ca5d6cb733adca0f9753062a02bcf103", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f6b141f2b66318ca151c99b7ee8b35d6c1eb10a6", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5ed86fa245d476fbd2ddcf5bfdc9ebe4e2534a8e", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "530f09d7817e326a54dcf460acdb7ffb3efa69d5", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "883a60df34ef153d6db39099f6ff864b4f3555c0", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e0f8a4440288b19160fed6a22a4b6a501eb8e4e4", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2ad054a6e467a5923063affcd4b7804b37a444a7", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e4f1504fedc7852c24ceb88c0ff1de0a54f83e27", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "39d0cb5071d1d465f115ff0754753a90ed6915b5", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9ba742342755a9d2c8e871733c7443ee82b51312", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "2569cf3dcbaf32d815bea0c9d8e775ddd2748432", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dadad7ed4989cf3a4e0284d670c114c74176386b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9e6611981973097bfd0d760bd786a91b7568c0e2", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "74eb933846b9216cd079a460a3dfa24b432bf7fc", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "d65e25e072cab20b79ff2b153bbabeb786d34b66", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "79e0673f3e73fb3dac245ce0efa2fc7f4809fadd", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a645143e7356f29bae7f234869200cef38ddc88e", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4c61b0514c87c2cc78097b56a27fd5430ac718bf", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "39ef1d0f6c14dfd1b55aea4e609f9dab5e05996b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "20227792b0faa22e1bed4f0ba0698b787291be4a", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "781b61bb94b7a3702051b6110866efdc247c3dfb", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "dbfb63ce59ef94c128c0f1f5a4fc6faa035cc446", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "a0c9002257badfb29bbe9159ac4336ff9531fd46", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "26244e2ba56aefcd435d1209ee49c3bca278c19b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "cf2356966ad03d5a35b28177231c592ea7550988", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1ab1c45d8b603ba631b39538f2565c8f40378cf6", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "fe5d8872390d3797e8c1c5e844f86067a17ca9f1", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "2f95afd28ccb8e03b5d0deec407c1366e2ff3836", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0581be9414cf4eb48d77cdd32f0bcb4d35797869", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f861938ffc15c363c3f7979b919f5431b1a40aba", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8d2d3ec214966c3e540316baa145a9ed695917b5", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "53e102e46e8d79ea31aae3a9a2eb4c755350a9e0", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c0ccbb7562a8f69775a2850a851e5d4d8404ea3c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "d07591cf1162f7fb676234d84e813798dc712ce5", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "250a8fb83409506181272a6103aff329d94bb157", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0535437960cc8b1ff08eb060cd81cd2d57928cf8", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d345d1e0da3781841242247d887b64989c8b2aae", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a9dbaa127c090f2cb67611a44ca256cb1497ec12", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e06f4cf0bbcff0a3f3c6ec957adb79600cdb609", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "69bde9d73d34888bbccd2bf447b4c8224f36450d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e371d257c1c56662f9cea4535a3702cf89694e40", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b98c9db4e97837c0de1eaac97200d4689e232f26", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6062861ebd77af88ec2fc950db0e8508ddcd8c8c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "966babf23f06514dfedc4b24751a32799b4f2d35", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "354b8c8ae22bdfb877573b266b8cb65d91331434", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "235a99b48ffc81c31bd5a6d4aaf6809e8612dfc5", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5957608f08a18028e764d8f79f492a3e0f7fb634", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "18d527dc9c57d6825065e85ca85a9409545d7ebd", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "909d39b21df66847d49c2b1c224f14fc34144f96", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "384f22eafda582c1f004be5262fea4f77e7634ee", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e10f79e1d1c7ef28d90453c03138443c49f2ffc1", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "88d46247af64b461d8627e3ca7965d51a98a3ebb", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7639e54c64894a4b784491d42b7cd83daefaa64b", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "812052a711b2bd538e3379248df89fb0010510f5", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "3157124e6f9df70718b071ecf9ae1871ba7da80c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "fc5b8619258483caea29d07ae88250872300e72e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "873d4f0e2c50548e44a4e53ba7a52a209c1db387", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "137a51d53b06b70f361c6d6a4bf0a74c801e483c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "77328d83b025ddad482885d298149919f7b318f4", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "129b40cee67c61a2d709169f25733e5573059de9", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bf96ea7fccfea6b616cf90af9183cbe6e48f236d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1bf70681a4880756f72db4a5b356596d6dbd8e1a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f3c52528eaa331bac51c611e31d42d9882afc0ca", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1cb391152b23022dd99fe5d364a3143b8db92d30", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ed0ba9a390636667ec13ddec7b4caa92deff99dd", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "832f175f67f786ea1dd3d2d2ae9352469ebb7a15", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c30b558102f25c2c21915d5b72e407e547fbf634", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "18e86ab3e93d8a61b3dad80377e3de45e62aa4af", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a62ac47bc353c00da91c895e43143783c3397491", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "63ae6f1806509bef4301fd844cc27b96cf52bfc3", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "829eb160507d3222b434927456f2d877c95a4c16", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "19660c9c0e4d6de39b0f16f6f3b5487fcb748fec", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "85d21d7f41155d442787bc0d47652bc61b07993a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "465b3477341b87f06171057373671b9222a7afbb", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ef64cd52bc07f8de65771edbfb3f109c2656f5bf", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "37ee06741f0cbdcdd3a60e7f44d47b01feb286dd", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ff00e4fd6db265f1c45e31248097e3d69dfc05c3", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b6d817f14f5556e7e81c0311289092b591a5aada", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a49baaf1b0a1b44e6003eaa0eea8efe5e6f3e01c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2cfd76d87b82eb203e8404e753eba9be7a7c46d4", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "979ea68f1c6f035702e241b3b88c50eb8a4c3e4a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1497fecb4a7bf64ef8dbfbffb241a32232cb6b4e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e3c09d6db1d325acc33a4178fbaa2a97afb3ec1d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c66410ae48a2073a729e62ba0bcadba59a96151d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "dc674dda2f449370bf3d28d5528c1b7d98dab484", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d746128cb11fc730754f0b3f009344c39406bf68", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "999355bfbab4b59061dba1d8f65e900ecf8acf71", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "09e0d5618e12d0066b73992a4dd5e6ce8ced66f6", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "32a0bf658ba79d52bed304e40a59ab9ba929a15b", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "58bb0036ae232b5cb4b07375cba60ab2d4a15819", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "794b26c21e336d9bc2e306651f02ac7ced93ed9e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "65ea0a6c9ea796af23ff2a906cd80a25d0aaa9dd", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "fb04c7b884b56b60827815abb8e2712ee50b3ac3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "49aec28cd8674bec5d667d4aaa8a959cfc99698f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "431eefd305c4c075fa7c4557ec46e6a0ae41a693", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "feb9527ea326fddd80765a23d30996db47571501", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9117388717a1f9562a08d16f50f2d4083e9ff7b1", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a6e393a6897c0f80254c1ba12980b8db9147cf50", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "91c751085baf8df75428732246e67f7987a7fa6d", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b8906b31267a43278ee863ac5467af75ea33b042", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "2fc23d5b2241b2d5dbfce63fc37d6377f4bd707c", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "dd0a8c4624b512dea7457f6f0b7ab253f9fbea59", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ff81d74dd79004213c4d879b78c3f0e0464c3e43", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a7d0215a2abd393c88d7bbaaa2e15626e04803b6", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e9e433456e1e8ee77646e783220091c36768a3ec", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "347cd4283e17e68999dc865fb8b7b04b0bcc3ac2", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "a9b43949b63570ff5bae32d786321292153c9d59", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "58a64e1974deb7186ac455b81acfdb58f441499a", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "15198fe0f81f2f7028e57fc9d1694e3a755ff462", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "2ed30caa5edd75a48924737e27fcd6675850758d", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "be7ece24a7a36b1042b7998eb2aea238f56a3687", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a6d428bbabf1b72605042592ccd67b2c2f953ddf", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e56795d06d6331904caa4b8a54d3844f6253b3ab", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2afbf8bbf1b31f8493adac0b959c3b7e82384288", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24e10751c781f3eb9c13272f1fdd10fe00b798d3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "944aa9c5c3c64d8be09e3e167386c385501bf579", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8e311185540c0460069c18f9b50a1f420c500934", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "99f2e80a2af1124ff63451f0cbf56f424b530521", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "31773370f7894f577aee5ba928d96f74c4e1fa7f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2f2be248a6e217de8698606038f78925773e8e03", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "31c980e7c249f587d3764d993293d14a88b2d438", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "72e4b6e95ee1b46cec0de160116f570b5a787056", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f0b451a8fb2e8fd8670992de42cec21d9aac6594", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fb1be70b977d146bc67b8426c44ee61a0f890ba2", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ac8b8a4fb037a2c24416a0d3313846e5fd0343b4", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "c213e8aeda715ad74730a3b16f77fd51f03796c2", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "3fdb58b093ff647ad83480810a2c3a9d3953c6b5", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a9d7ba2209d58b86488924d2cb7bfe7929a33d8f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ac25452e164a6b89f204d5290f27353ee7f7f338", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "13d5c976125de71a7ddf5d278a7c762aea9a2f57", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "1d4f931cb3cb2478d22509d0e1ea0f2717080cbf", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "127e79e3173a722cd995d54b513419095a23ed2f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "69aaa4c7f9c3a231d9a13e1296eb2142fed9e259", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7de637dacd0f632961e4543f15ccc9e538f99bd0", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "be348af679bc4f64b54308bb1a97f93685740b09", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9c9b1c5c73086cdf7726fe030842f487657b9151", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7a661950155ef0bdb1b76c78f914967dbfda672a", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5cc1caaa3ddb128a87a91f50eef6972061f5354e", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1e8c8c4f8e48bfc5c3ffc5fcf4f5f265ceb0c96b", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e4afd4b07d3f9f0c96613dc8bb5dcdbd5f40129d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4fb9d04406f8f817baf8616e69ca6ea5faf33b9b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2d3c1a678976dc5ccb8376a5e190dec55d39aba2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "0ab5a77525e7313de9b183de96e0934dbd07a764", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "5fab46888483c4c531cd345147e06fc11761d161", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ac918e4d2f657fcca8f421209846cf6b239c9372", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "590e6697ef8e77a1754a3d45fd1ea9a14d486d8f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "24f69556586579750b69e2da5e3f812f56ee04cd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "afcc54627c6e50b382fb9fb28c2272b03383138b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "58a4727c04bfb2a1f8bdd2b07d28ae20e8801956", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "80caf78a4ce0cf521d83333b7830ff6056107b69", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "4ccc28b38adb9faa0bbae69a49912c6f24dfcb23", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "5635ecb41f20c3415ef7955979fbb7734a7845cd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f1027e7c88b9016cca31dcdc78c007c6f5bebd6d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9fd02fb3b7c9ff35364164f8a7f7ca1c623d83d5", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "2b67b56590bb0654a241c8afbd59f7f840244ce2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9b570252647ce11c5bfe0407046d7f1509e8dc13", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f78de19859710b5175ddb9758a41254086b97006", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "44093e98a8084a74c303ddb718c5c05bd0ae3c35", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "36d23271933268b6041ba7e20711f38342036bf7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f5a4901eabfc2fbd2d995d1a6911aa51a35be908", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4be311b051a075201715c93976e1159e02311a7c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "edaafa1cad1d27eddd7b313145c7a8ac0a6b4fbb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "63f64ef0ea150897a39d2b10214fbacd18888c03", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e643265ac5792f3d7f51cdee12f842198b774f9f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b4588a77a3b84954b96cdc186ef044ff54977a2d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "66224c5116c55adbd7515df13a4889ca954179e4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "92afb47b918f7f1eea56268126c9a65264492a28", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "700fd249852ec7d99879b08b78df188370223609", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b74669afbbcdefc27f710a4dc8033d25bf96c569", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4714e19e12f800e7868a5266cefa28aacdef1444", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "8a66a0684453185876a0fdbf88a428702ef63033", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fb11e494c9e7252f1744dd0dde340059ddf41bf8", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "50f4064d43b0c2f3a3aa2025659cc0e34e1817be", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "90597de25c5805c1c1fa445309f654b5d8508f16", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "790ad93c3fcf8a026de496de992e1c7a43443765", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "0853cdbe484b0794ca807878d41d542f788b1552", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ef6189f081425627f8fbd58ea487c61115d78345", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e0f333f87fa29fd5bf45cdb9360f2b56a1ad471f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d11979152faf483d4d19b6a056f6a298c4a8ae9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dd8bfa38156867c38b33a66b9bee74758fa638e1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "312b219fa3330710664de99ce44b2bf491b10a8a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1eb8741ef9477fdc3d01f36dd908e73ecd190a9f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "76960002348c496acec6825d66ab5bd7e2cb4705", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e32193f719f3a50e382d3e5d97312f5e9711c4e9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f91eda7b6951ed1293b424f1a571d484d8d054ca", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "7b7c72a558ff52d9511dfed68f2bc35055dad21e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "65c627e9d8d81cdd896b8056fe776c9c52cb4fb1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f9cf93d6f0ee068ac6fe113e44015a31ab1b4cf3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "89ffb81b3e185884d1ebaa3cf4364857dc43cb67", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "8329269512ac1c3a2639bb9551817429303719f1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5bf99ecce2043c59c496ae61becc142afd04fa72", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dc17c8039fa9678ae0b8afca4d5ebd83c8fa60e4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e41be52ef13222686e4c52829342ab215af37374", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5eae3ba011ca15d1ee1a56d962c2916c423a4093", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "2d4b68a55a63de25bc0b6796d7e19fd3f3ed685f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a870e707155efa13a6b1d37254c1d9bc89333cb9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e5f417515bfc4c768fb6f11d41d150ac044ce763", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a5a628d19d831d724c29dbbc2e27fd1dc021878d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1f7257c0cf0777d24da4868c730e3afc9147c8cc", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f43248eec0c21ab9c8592d8524c9b09894b83f70", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "117f316579bfcd2a49507cba50d4bbaab0d26960", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b917176282994cf5e46f1d68dfb27903ab600e93", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b0a10a83a08370f0a792d7414455cf38ce19fcbb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "53bfb36ae2e336524c06f7a5496640067c6da9de", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7747ef5cfd64de76a273a8a545706e6d0e421172", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0d55ce188940900cefacccb62eb0e4c485435042", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e9222fd935896764305eea5cd5482d4547836133", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "91b0cadf642cd01d8e5285a27917af7916ffc1e2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c49a286f3d6f4ee737b030eb0c49988d198a1baa", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "fdf8c4ad67d85f418961678b40715f93d86e80da", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ec3ff37ed5198fb6462d9015b00b80b2a5eafa70", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a8428c7f5a978dc9d4015a9f8bff34ac2d298ae2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "be6e54192f1f61879be99146cb07562903f47999", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1cd5daaf37abec5df13da8632263f11cb68b801d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e006ab3386ca01e56ce9148202ef8f00233a0809", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "d18df4ad5f142d431a513823527091439005fe82", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "8222aab3b06ff05d1575e1a687af39cdf347fafb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "56cf2f74ca500fea5954f94ea7cab6cfa146e077", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "711043039dbb0934cbc6e5d6f3be2d960acaaa5d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "57f3ffdf4a4868509a5298cd3038b7f7acaa614e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f9ebeb482ea0a82fddd00a1b931493034e80326b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b951c7f8c9acc0aee21a1f24b62079adc666259a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b1bcfebd6c1aa350e7e02185b5e1a3a524bf9da6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "39db89245d49625a6dd3d6c55c87b49455bcc59f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "838786e16a0cc868bdb69534f0e33740559c0937", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7b5b28e639f145484ec679b243a2d6393e38a8ba", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d4295c60e412ac15ac3d9a81848a42aa55bca35", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8d9d9304bf34a754b2e74892186faf8cbc9d1063", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e5cd3d18a96495df6a80b9b8c000fee3122528de", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cf4203c688cd86c7968d25030874a39c28356fd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "20dea85a2f3e2d846560f22b5e690a6bdec4b460", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f0bfa90a9959f93bd33cc8121c1a9c562cfa8a2b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1d613c75b25b7bd1c4d22b621a5255875b05dda2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9fa4310ac6de31e856c47c31d5ba4da2fa68d05e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24f1773c9c46489a2d51605ebbc3708f8b38c13e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d6887f6ee340b0739ea4894fd2b71b3e9d8b35e2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4e54ec525f41539ff598cb2fe73526d8bf8c3f95", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b7590ce134c01de3b7052495923443dcc8eea842", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d97a65f012eb02278d7eaacaf8c217fd0bd21de4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3423d3036fc5407657ee311059979add5bcb05dc", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b7bf3bf72d03729f3448c88a06657c705ea1993e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "e3b0230347a0371b3eaada3da02567eb51eb752a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "d7fb2629ce12f28a46884b138d1a39e531bb411d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "2b99fa29d43f1e255f77f69421923312e9473d59", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c7459f2f2f109b15f29b58962d74eba062cc6bf6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "73d333ad426a2a653c12f55bcb686172da28c4db", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "5efdb26fecef36dd6da654b8439e0911a9ebea98", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "3146f45967e87658eb8c3541f40f85a0a3fda61b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "dfdddc1b7f929a1359a82e82d337471726eb18fc", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fbdf743d3746d2f65e66dff06bfefa5a1d4ba39b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "758ba52b77b10209df01096bf6ede8a2ebbaf675", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95f66deda7f3173195381e48ae72820e97e9d887", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "751c26044f66e2f5f1ecb81ddbb8b161d4ddbf55", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1d0277ab05274d801b7ab20b9e5205cad4a6646d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5aeb98f6ca7362e85ac5dbe6e7e37c1ff3f54db8", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "41f560c92df5cdbdc64ed3f626216d8e67d3594a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e44dd9b8bcef0e5b5848de8db92b9758445092cb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "de258fdd3820559f76e93ee8841f7e039b9ec1d9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8f1a5610d793c02fc10084499fb8a3807b5405bf", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "97a8abd14b005a2f6b343bf66add034e62a0bdec", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ed768859fb1002cb43479414085eefce2d86713a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cbbf9e72b68415c3dc217e57cccc80c7c5315b36", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b0f74ea9429edb2342d1990d0ecd3a7a1d5c8a03", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "60fa5a95def2fdb5edef750f3b642644b274c398", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1d2998af5cd1710963ff65fe24dcede40ecb764d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "29d4f1a16d962bc18c2cd49ab3ffed5c6b5da0de", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "be386293276dbc853f1652888bef6af5e4af20e9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "c1572fca52ff11ac7af059a184431c1bff60ff31", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "23cf440183c84b501601bd835da712977dbc5d0c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "ad98d6ffb48842498b5e279af73b412abec16f60", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "e17d7ec17463cf209e5741f32d1eefbcdf664178", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "18779aada4f2fcd46e3176891720d40ffd35b022", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "614f5c0f441465bcb5ed466ad97725542331a4d4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b38bce468a2f60878fdc852603cc10908ef37826", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "07a1b569bae04eabbb8c0e79b176f465a6ab2114", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "69dd4b59f1235bdf73db9d09b8246e3f46a5d4d0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ecd784c9ee1e36e3c03262232a8094efa96b14d1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a50749ae3aebb5abf7a01d1295ea68c3c8488f98", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "527328d7d6dd45e2169dd423452e9569502dbd67", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8c3e04f05d61391521c8d2c24901c70b06a1dac8", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8c0afbbedc3401b771fbcdfc4161225cd68c16d6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "140c8545768eb62fe9c811bff4ccbb939b8e7216", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a6939d50eb4483f8ca64509c22c2b6eeccdc5f52", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "eaba6980e5771530cdc96a58fcc1b5eb80e2f387", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c759956e58458d333aeb005dda5b687451deb29d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b74dc7aa22544bf9e92d60b7ddad260a0d46a343", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9772de125033e89f1681f946efda2be9367c2e5f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "11f7df1b4b7fc325ab63c2fe84cc5b21876e5e6e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b20d78c8d752398f05d5104a222303c8b2242003", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "44a073fe5edfbbafbdebbb30ddfeff0cd7766d13", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "850b0d008ecb3083e45e9b83707442331de23add", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9967cf8cb63f482f8b9b7ec25292f1cf7a3a79a8", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c101f9f5d5c35f5b65e723fab8b1d0dab1f56235", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "19d43b7898212386d534eadcb9d794b21d617c53", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "5dca398166d449e563ab43921c8863d5d3403270", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "eb4516f43cdee901fe664e6e17b25bbf785bd62e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "69c914ddb1c159c1ac1cd5f0e6e4481eb2d1f1f4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "d41617f3785c49c14fa144cdfca691c082a2aac3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7bec053ed6f7322e9b3b2527b3301d779cf8b732", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b474cc0202a1c9176a3fb392470c7bc60e513eba", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c0007caf9dc5050bd9b588f65ecbe6f8816c5666", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f58b021179a1f08fb2040181b3360e89117cb3d0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "d2fcbada633a7d2ec24ca629d71aa024d6e93a75", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3ca07bd537e02ceec9c44f42f2ab5d1574313256", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1572d2a6a116ccb0a346d624f0855202476e601f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "86a9dc6f28ab73eba4be9f9e59caca50e488c5dd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "babefd5799ecc2ca0511879f2b797b4122e165d4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "79ac9cde375903e7b33fb0079c5333ea7025df30", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a52f13a69253e317d6f0396c7ff88f20ef60837c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7ebaf1e34f5c09877697d3ad4c9cdb14a1277d83", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "92a7a7a69dde911a297322a2f156fdf8dc1625c4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "de8e4d192570f6ed51b9c01ad9ba3d7ccdb5d697", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bd7c7f1ba10ae786a56dd63b96d9715cd968b40a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "53e56dea873b94010d3186d1874017f32b603f3b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "d616d7015d6900e5b5129c62b2e430d2a8e9148d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4031c8ff537ace2a59f51f93ed5b962493c28df7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c835d89e550c35158df6412b2bb790baaac0605e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "29b4bf7964f92881735083d6e16a6046396bf133", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8122afba23014835c1b05bb0b27959ef6abf86ea", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "23dbec429880a802895485642ac64565d62357c0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3e6d2860785c2e2cb59d4a26f48473cb69930394", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "dd7f814a7617f79bf37cfeb6481bf61fe865bb8a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "2abc51397ac9b34ddeeaf4b7d07f9a4eefac689c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "24784830f953b3b737cbed39530e42a4adc69517", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "99318ff4bbbaf6d39535e27f01bb662401d2dccb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "64db1dac251ec17520d4f28cd56ff87a1cdcc6bf", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5fdf1677df67756d3a7a36e9206004077c9c0d16", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "10429d5d5c6d4179b9ad46e062fd5d40c81392c6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "54696dbc81eeec485d459c88ed85ad1b99d9b422", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b95225956713411fd2d4be98889f6de4083ccd12", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "80aaf2e0aa9bbc0c8d691dd48ff87d6ea10b4bb3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ba54bfb6aacde7b3cc5bdeae7ebd4009da0bb01e", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "eccc087de96074720190d1c050bad21b987f9065", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4588c0d2bc9029bfffaecb9394cb1c0c4ea6ee57", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "1b0809391ab088affdabf54443e634d55092b11c", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3e7fd698602cbe729638a1352e29f8bfa2edd429", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "0905a986bfdc2bd32c09005a464e27377cdc45b2", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "e361aea5209330a0927480535340d4b6d3b6a20d", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "fc2395156b239fd8731f3639bb1cd64a49594714", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ce129f76a15457b03d738a7f05a7063dde9f0d4b", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8d7b8644eee13c9114a0a4ef9180f4d590099de0", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5b2ebd386308cb9ee73720c1138b791612c0c0e5", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "89394fff551f7723b3ee48fd49da6e3e927e98dc", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "112cc8692133c7c7148f3e3b443cdd8bda65fc24", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d4c157424827de46b1a02a9bd856263484a093da", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b9301acb0b3b156d64c4d2babb434f8554c97fd7", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b3a6a6f5f684cfd3061f0607e59885ab62168f24", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9f1ade6be22c22366e3a32d0658080dd3cb36b59", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "89c841cf0ef0310ce786332692d56abf767281ad", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "6543962577c32ec443ef62ba00df31031bbcc131", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "86ff3e90ca778cbc18f248af5f664492af53fd48", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b0ce11e99073c0dac57a8eb35711fd4c2b9f1d29", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6b2c677c09311266c10389d6e3ca8b410adb3142", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a5bb1a9eeb251fae664e294bc1dad300c3c40adb", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7f8857137645ae8eff5d5cac96f1c2c7c50c5fc1", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8e0205685534e228db453ba105aa26cbc67ef024", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b577254d7361016b4cb3b2a23d0c9d4c4ec36b36", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7af818f80c4ea54b6c530e6c998f74652e02d3df", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "46289605d1d1b9e2032325bcd29e7d102a1156ec", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b984ce57dd409b4deeb7b7d0af9374026531b4b6", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7947cd1f24c2cd9e4de0ea726e60c002ae90d14b", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c840df1ceff24231d9be224747861cc54b099d81", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3b6e8e2fcb1b404007d94a6e8b27a23c1cb53a05", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "00ef87d8f47a746dc1610f00bb01172016a909ac", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "3e1550e022b7b4fee6d09c1b2a55abc756afad3a", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "853f462d3197032827214d32fc2bd7fa0a0458fd", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b1c14ab5e1a7de12158bff8e4acb793900e67dbe", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "353da25f0fc84af4db129c5cb2205c571ba0a263", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c393f87def7f92168cf062103e18a6a310ceb411", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "dd144a1ac3b6ec1ddde103d4d9c79a119ce3cd80", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f08aaae6489020ba704b8d794890bfb255bcabfb", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1771b3361349db37f21041ae3ccdbba68990bcd6", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "389224885a3c05282760b5faa684673cdd19ef61", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "71ee3f42d7e61071d318fe711eaaa6b07a44b3f2", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0a80eb61b8526e5274144a28bb7e140342d598b0", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "db134bf2898f48638ff04717ee969e663a276d7e", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "37c49264dc215507279d29d019696b36beb89459", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a173fdc57f3e89366d1784fe1e80e6cde46a3644", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f0d5bcdb0c5648a3bf5e5f604e5b5e246429f668", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "3002776e921b0eb708e5d9ae02718770a62f6114", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b3d774c24b37d9d16b9e9de6012e3dba5790f1e2", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "db420a025e11faea0a62a4ba639cc3a3054b44a0", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3b70d345607fa22b10808b2fcbbf1105dabe4528", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95e594d98e1de6d8aa6e872d9c3e4f6f958e9486", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1264d290a2b63c81efc73460da68e423c2c97bf5", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "fb74e926adc2091802027065079332417567ae5f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a6b79921c544eabf06dbff97ed9e65ae1d3076f7", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8d5699cb6d251d0b640a0ff20c2fcce43506922e", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1c25742e7d7b333877159c960b2c656e7c84e75f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3255bd4d05fd3696bd168fe8a4677d47a63be217", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "19df18ef3cf43a238a0499e6754295ca924359e0", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "765232d5fa3213939dfcc6b62c31f48cdfd5823a", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0cf52e33283c83041d684a7363c68d63cc94df63", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "227acc4d304d6dcb28c98bb2abc27f836cb83968", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7b878947e8f566ca142bfce571c949e5760bf0f2", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4cce42e30abefa59bbba6c448d3c24be7fcfec4a", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "02c47ab332a48ce1d9ea599d4cd7307b50ee7abe", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c017dd4a6fe3cbeb7ddce43191f4f3c28e0b0812", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "2ea8483a90e273c3d881969360ac15fe2af3fb49", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b99f12f43060f5cc6999ddb79f5b451240b05220", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6c6adea3307b4cd12e4723a03922e528400e8b2c", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9abc5456473777a36807c7f317a68fc9ba918d18", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "4083e9beb59cf213fe7c25b0ab86e20fcfbc6034", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "98c8fdb9eb6b08cdf6ad8383b656dddd6dce5670", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0fff9a061532af824605d576850a6d1df19e4699", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "541e8902839682879dfc79b88b77df9e370993bc", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e8f871427173b0d503fc02d91b1e8e1e54d7cf91", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1ef1e57f80835a59f1f52d90be512a0ccab62f48", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "5305f762a9b0fa3efa77bf3dbfd0b8080e2dc1d6", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f8dd155d5dd01db902e627fffedd8a815d83b5ed", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "7daa27974c599a9bf67a0dcc253d6ac2bd948241", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a16051a728fa786128fcae0f512665d3556ad95c", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "2a1584f8ff23bff05a6f76c245d33c6341ad845b", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a4e0b1192d9ad0727716b199df33e1e922c082b1", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "25a93d4484b3188a273ffa06a68d4fd25febbfef", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "51f1763504822750e3e43d322fd87e895e83287b", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "67460d7c6dc8aa1459e2fc7d2619d99f2fc7f374", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f8c628dd785b47e4463e374ede223cc55640762a", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c3ec448c34baa2b0b6dd0e0eb8eb32c7af2fbcce", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "7c291870d8a67df01b2103760d465c68091b2ac5", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c4aa63c497bb3c7f9c8145548285f817eb19b840", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b9dc63876b291f7e71e176643c8160c4b10ad815", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "eba8d70d0dd843411e7e75319b8f5f743916332f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "aa242c4de21c9621a5b7d5e63fede9cf742c691f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "9b29b12753cbdee2ff51dcb6a3c4ebafd0ebaf85", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d8d1e7f5665014d3cbd6c27ebe2f935fd3135952", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "12201c5dd341cd2265ee7198a821efbf6c0e9eea", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4f86aa64ed98d7a73bd3197e48bc39b5282fb533", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "dbd1ab857cc3faed58c8cf909036a82b1376e995", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1b36e95e4e692d216dea0540c02674c54e912af0", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c988d4152ee62c95d6d03bbca7e0cb98c67c252b", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e6031d24bfba70db1612db749f5d12893c36fb2c", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "6e2151b0b1fadded2ffd14b7192160dbb759aebb", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "05ac6d7a236d45bf6f479493682aa0043cb8460f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "98a14dc48878f1df49ddc999057691541557e952", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1ce19c37eb4a912d3b5497f45bbd4334ff34e8f3", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "76cc0f9d79fb257587f2eddcde22ffa441328715", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "c5733d924cd913043282ec3ba48aae3216b8cf00", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2c1f3c0564f07bc6e9b5a77a0cbe9339c0abaf14", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "15ebf35483637f38395a14028bfbbe866f2e41b4", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "2ce80556212ebf3d920c4e81d2d436c1a882ae97", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "52bd306468f1f0d42a5f8e84a62808c4db5876af", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cc76a22544da8e4845723cc9e08dabdef1b665ba", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e6a67174cd202691ac19f08875421dd7f6a54f6f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c8cd5a9c47f6f6d2ebebf1d920ab30e94b761041", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24cedf6101549d81b826b2d8e21754396eaacc8f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "52888ba66749d44f776bbba8b61af3bbc069d0e1", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e0cfe33811cd0c44cade7bdaca873b20478b1712", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "22dfc598a068f3ccc29f7a662a298bc4c8d01cc5", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "41bfd3d1619c08269687be39f0d4b77475826866", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "acd0b9404ec3676ffb16fad3225be54bb2461b7d", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8791605baec68b82d22e3b66bc25962869cae665", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f7ef4450cc54e7b153f0292f9b0079b9b4432c74", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "31fd5b6ee9d518cebe44699fe8eaee84c5c2069f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "a89bd5d35e0a0b41c0ec4cdc1399c128de787144", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "fbe8a31d4750fec8aefc6fc3528ffee383b2f5a8", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "6c97d8d7fd2d4c69bf4ac088b44f264f4df439a3", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "84669a2e381490d2a87324dadcd18f780dc40a52", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dbee88842670a5082ac2be69c27e8f1ac3bc133c", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "06efe14b415a17984289ba1e4ff29324872dce9c", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "503dde5aa4d1fd066c2bdd6c16161ef077c333f9", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "43df1926619979644083da03af0e4aecceaa2354", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6866ceecb04fcadc56a175107615983332bc6076", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9a68afa3e42e591e524b77c6e3429ef88bd43296", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d846df5cc7d39497a721ac4f0b651b6013e477a4", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1c1111cb474d1333dd2d52f0bfa37ab7ccd7ef38", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "09e6f1926c24e43f7c82223aeac3669ee18d431e", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "bc2519a04ef4c9572375c93f9e48ce01c65a6d82", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3f0d8ab99150cfb8c677d86f4b3996699b8c4191", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "baad6123b083b67c73445621e929ef8ffe0e4391", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "fe19882a3f242962ffb74d89954f9fec4cd59073", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "157900700d8697f936664ca10ec015fee0c7c0ff", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7fb6228b4d3f352de1da2408e748b2c6719ac9ef", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4f37c67ebbe5516c3aae066af3c59f36cdbc71fe", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6d26876a784648c073a89005da4c8abc031a227b", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "252e0d0b2ddcfdee8828b6b236cf599010cc584f", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "fb68b27ac1b58294d91da89323fb231a41bed2d9", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "658d8eb30db138cc85476976acff3f40cf77142e", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "eae0cd7881c16194fe892d4d3ae4db13c86759ee", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2df7fe9efbb6219842b342f194588f1d65b22983", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1ddb67e753382da19b44324023cf1f5504a8e067", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "678043fafb05c89b1eeebd9177998e8b347fc21a", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e15131aa619694a09bc374c1d0cf85a0eba702ec", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fc8bc08becfcd66d3ba59401ecdc2eea56bd01dd", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "916c366ad8303a12bbe5e0fba60573b9e024f8f7", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4133861d0f30035f33f41b3703ce2b39c9b5444b", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6bde26592b1180b2afa48079d788cd32676e6ef4", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d9021b460a166e9f37bab2ec7c5da1e795548df9", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "13753ddc176d8a70240ebc8211f8400a98ce00fb", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cbda41a9ced7d4db6070ed441da4e78a25c96a79", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d96984035b952fdd2c84c0b59245463a3fdb9c5f", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "20aa670dc82ba01e109f57dbf4ed51e3fd39dbdd", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3c703bbfd705db7066d83bdcf5c5e68c4bda5798", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "60c1c9ec148e29806930b371255ea515363e97c6", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f24d4f1661f63ce65a437b4ad79167467eae1539", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "95d59ef0d000b2229aea20d7f8a688e3c69be5d9", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "81a4b9e02802c657587126cba41111081233f6c5", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0c45c5d07f4e120c7ced1c4cdb9c9cdfd5957e10", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b758755c9b8e3020f74a442a313c4ece5f435a46", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "17454f59974671f8bcdce38b0caf25d2147e3898", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "511963a50151d9d76bef43ee2f9bc8aa8dfc11b4", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "50610cd458c9af9f1cd4a134e96ddbe984b70e2e", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "329f5bbfe700e9a173f6f9dbcf3f8b73fc4ca0bf", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "54bc1b664f13c269c6783e86893e4202738ce75e", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "84c8f152675921c9610c21bb08f0a430188ed742", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "af4cea7cc2fbe1eb5b9115e06ebad9cb830fb40e", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "2331058cbe7d6cad07b84bb86f266d9085887e59", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "447a58676a9599b37a1e37638f75c5be87d07827", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6dbfc7cfb4b907d3a8a447ca9466b5ab7c442a22", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a27bcf12237aa01277c75668b0370c47cf17b704", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8aef7977ba9b18c2967dec313fb8af74b8251949", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f4e27e82869254b214eabc5c954bc6cce2852c83", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e0a700fd820a4f6b64cc78731dfecd5f20e31ce3", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "83490e187f4dd7dca6af255f40190aadb8dea0e1", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "dfbd4b4eedb0a0cef6acaa6bc8f0fe8910467134", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c92463dde3dbcd09b061f64ade3cafbb6d5e9021", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "baf5685f41161a0f92543c78c334d0a14c4cd114", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cebea162f2ab6b3a8aab272845664453405c270", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "35a81df906cebdc04d46ff4ef7f114aa7d1b8b3c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "05559d3559978cd8ae2c30c786c0474916c5bc5f", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ff17bc2a4de2dba664f9de3202d4b7259fc906ed", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e0c8149e34a0f5e52f0076fbbecfedd2b3a591d1", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "51cf1adba46d1ee3b597c8e5dc26307a9c03e361", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "c2e0f14d960d7be1e558a43337bccf13ee239028", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "884f4832d9c6142ea006ec83cdceb27c97f4c00b", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "650187c7f93258eea235000a43007df747a3e2c0", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "60c6718b5e347610f4fbfb985ee2e1f17eef6381", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "2495b4bc1ab79250473c9669e156201a5eac6f26", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c802a8699b5eec0a05f8aca374f2ca7a09b1330a", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "8ad6d23f042dad987bb3fd2cf4fcd6646e6ac68d", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "6463ae008616ccdd483bc9dc3ff8541baf0b9b89", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "d39fbaa1ebaa57f103c25a74fc77899d9547937f", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "3ccbc6c41731573b93c37e0ba282b71530bfb198", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ecd4af5a7186128ed9779d158ca418b44187a4b5", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b40717381582ef48a4f3e49a8577bb125f395386", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "2495b4bc1ab79250473c9669e156201a5eac6f26", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a112a054c7643646754d67944f6f214630ae90b0", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f0f0479f27eacc27ef15c64f498447d67c17dbd1", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d4c2451028ef6d493006e9e3842ea0a45c90f0a6", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "d39fbaa1ebaa57f103c25a74fc77899d9547937f", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e21ac66c75f3170d210432fdb8d6160b17ea5a14", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "e05b76d6a8b01cbe0b08f2a2b75d69c60351266d", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fddffb8c3330cf9b9ad95a1ddbb805b4a558e21", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bdd0289a567096a7b0066260b980b62694a60921", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f8982be7c749f5c6ee3bb0b5b3f4c25832926744", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "41d41c3d7a683cb8feb4cac123a0883024b07eda", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bb288b96b26b63c450c3aa3cf662e909f3b2d619", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "3d9d243414d135208bedd60b4944a9b6ea7c3053", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "17601bf966708b6ec122b18d46ab535bd7fdcf89", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a19acde60178e1cab20cbb6567354075322a4d26", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "532023dd5d1502c2ede815025e77ed09f9af73a4", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c838bd0f1fc445b5e7e22e58c6e569f2412a0ac2", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "cba171e4532082d9e23b2d0b4f0ce9bdc2937285", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b15c4215a04cd9286f6c06b04dcf4d66b3c212fe", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4f08591758637a18dc58c5f59f281746704fa136", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "6fe24b92e487a070d3c286c7732db51943f8d65a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "acb996419536e2c228ebe18d976eab1e099dcc1a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f484c0a95ac503d1400862897a415db3f9a23c58", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "2b12c7d15d1317f5e0399b1e1d93b5889eec0a0d", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "6401befd7b048e24cf9148de2263a5bd5b05e8c0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "f8a74e9a2a6aa9282217263307e11ef6208bc34b", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "77958587ef0278215420c3a8f527660559f5dfb6", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "02ecc4f5be183af4f97a7e52f9dd7a649c6d4798", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "6fe24b92e487a070d3c286c7732db51943f8d65a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "eef21a0239050e4b7b2bf149def8e81a90f1ed95", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "23fd0b85fb91448a9708d312063f0b801d83d01a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c47327f6d0c14ebaa469db29052058655d79ea8e", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "6401befd7b048e24cf9148de2263a5bd5b05e8c0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "dba771a34ed65e532ef1308a2b7e192b2bd425f6", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "16e69bc415e2c24e1fa0817b12a2a885e2ba737d", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f5a8c02b284666ac8741cff63d925b4c3d3fa3b2", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "dab802b75c55155ba17f9bd84a4e80eef2a8c3b7", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67560009d90efb3cb49b2db68c85d016fed6efa4", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "175fdf2b5a5de66f2559564dabefddc213e7a267", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0fee6d4cad93267c3067c4236baf5417aa59ccf6", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "74af599c5f8cd0915352a922b1041a12593299e3", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b969dad1a32e08d16ab99a7d276bfa9841803b19", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "811182d5cc6a0cc99fa9f9c7e64923edbe982b21", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "eb03dc7aa7778771bc22f97aa5ffe3d6d2d98c9d", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "53941e23b0e782d80669c6e773dd6566b026b97c", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "c9658d967cb9834c5701ea16ddd0fec8553f8916", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "90e118dd7828b790ddf426a015fffd4d610cfe02", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f6da96e0e6fee8f1af18ea9a270c0802daafbb8f", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0c244770604a8953c2fb48e8e29ff1ee876b26ac", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "31bbfefec1b31067c4527392bb3ee6abff26a3f5", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "739b239f1d1cc449a27288f1c6b26113ff1408b0", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "1ffc24a737a4456abb2db1fea6cbd5f41e93a589", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "0914b870229bf9add87a5fa34175fb6a8a425128", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0c41a7ca7beae749098e16551f5447541f5a2c5b", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "251fefefdf565d678cacf3d779ed8586e50979f1", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b0e79c0a8b73047ec362a62f73008fc71f298b39", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0c244770604a8953c2fb48e8e29ff1ee876b26ac", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "6ce042b872872d70b26b534567b39ee52bff390a", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "db889bab0e03a0e96dd937e83f81e79d5d4a9220", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7ecd580cfd3f38336016a38733306cc14742b392", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0914b870229bf9add87a5fa34175fb6a8a425128", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f4e171665880358fae519800e2312ee147530d8a", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "1a6cfc49528c379287bc9a2eb9f1701a49dc1b6e", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "0e330961bfb774a516b8869c93cdca06fb4720f6", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f44b087e487793066cd290083dc971f1d9551ea1", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1a7febefcd287e796ef629cbaee5b93945ab0d1d", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "18aae8de5d165ba83baa7e508cbefbe4b38dbdae", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6704a62692be1acfcbaea924bbdaaf2a560a315c", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "34a31a6fbb530f0874a0b720b31335fc7c17c916", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f58b6653498b6805f4ebaed2f8970259880149e3", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "01a899ee1f8483be50e250cebf29f34c56efde35", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "b18c5f1971e59393ee7e8cd47368707c04b6276c", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "6ca95b0b046d0c7139e1354d54705ea47f9ab7cb", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8e6baf88ba481e1a24779df522da8e13beef7899", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b221531f971e31876f6068f3be7f5066bb40857c", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ab16d49d18ea7871ea9abe0b890c83aafb5fa9e2", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c28fed74c6ec6232e3f226b4d2e41b1dfc84e64f", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ea163deae4c073b20ab6eafa675df6e4885807b5", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "c342dd66f83af650f420bee78d04aa71b33e81ad", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b0c674683d9884c2c867303ff5a5889bd22aa9b7", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2e4525948e7ab34f9abadce063255aec94a0c890", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "76eca17d4ea6ca38949c900049769374e4ab5e66", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "e4fd1598606c4b2f14b8b2ba5a87ebdb0bb9f77a", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "5a526f0b4bd80f35673654f15ca00364e6f03a61", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c28fed74c6ec6232e3f226b4d2e41b1dfc84e64f", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bd978f85732512b1abfea8d228491caa3c6f96db", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "503cf77446736e2f763bc907cb58f960db78c028", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "884f4974095da66abea43ab2ec3ec4268eeba2a1", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2e4525948e7ab34f9abadce063255aec94a0c890", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5bb54c54a59357049c8376cdbc8340e876e1c095", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "88e198efe1b21b1eac88b3bfd8e0b075c2f8dc1b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4f5b38f2d8267265243befe9fb66d7371b270a14", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "1922c52ae7d1490ea95602aa5908c7b8744b1ccd", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "51ea1a6f1bc14e5f8bf5b6d2f58325a58c6ef924", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "246fd39f2a273e56d668bc5eb1fe619dec42191e", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bcf2531608fc90da2ae025d46f4b5e8011a44de0", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "0b355dac5e691ebfc23e806a7b1dc26f66a73d0b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "2032f434bec6c65184f496b271823df20bc83c5b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "17ad4cb3165b386714f672b6d29aa725713513b7", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "445d6b6862f37ac40cdfa85605b663490117da5b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "04b0695c9f2179171fd695c3a7e19c358ce37d23", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8e97d39e11a66ce34384bfa1cdfa9a39f9ae4e25", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "bb83325b4d9fc96ef34589c5cbf5069a1ba960f9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7437a273d3c891d6c5b0380e9be9a571662b6ff4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "6f28c5fec4e822ae6238767fa1c934fbb131ae06", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "13684a49560cf56b1c05ed57cf696338a84b8aa8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "56d0d49aae7eba7300f8b41b17a3a03c301e7f2d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "a0c76570861de35177dc8d62bb06d9ee33356832", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "0bede84ea5965eac07149dcb2c2632e856df4af4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "855d903bfe9e0b96904a5400208df6a8608bf90c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "52deacb07389c5b669fc30ea2f9de275f039d9a4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "bc400a637c89ca1ad8acde02e18574b3748b67cf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "6f28c5fec4e822ae6238767fa1c934fbb131ae06", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9ee54262182f5ab6a20725b0d53377f6e7f0d6bc", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a978bd97e33cb3a09799b0c191e28b1ca1d6bc92", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "62face602711e98f109317297b4a1b32b6e55a1b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0bede84ea5965eac07149dcb2c2632e856df4af4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "0756af3c588b84723f499c92fceb7087b5abca09", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a79e24c7951a6f07a3affa7389061161362aae4a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "de5aad1b72584f1aaa17bcf2204f340db4d57535", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f2c2564841f04f59a0d0bd2e0253ba0839d638aa", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a1fcc445689a15a82c4df9f755d46f50723be61c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "3475070ab0e46455f7874c24c1997e507f558868", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "7876b59facb70fb5ede7f30d6694d99dda8bbf5d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4c6af30c3f53941bb30d4c00c4afffc9407dc937", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ef973c9962e27b9c83cd5bab638f7f6b53a0bc66", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3c9f9d5f892481a5078dc720c3643d8499617ee6", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "5bed7f99681f02d5c35aabfb2bde10a9a8ceeebf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d8ab030dbb1b371502e7fa5c9bf29c11ec0a1a7c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7b1fdc29e3a142be9f55dffa404ec6beab80ea62", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "8b945adcec9754fb37c1c5cba978dbf5ad4118d1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "509ba9d8e0ef8b7aa94ddd5f7d459f15d154fa73", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "941bee32eba774ca22ef0354e61c103788cd8505", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "35ade78fc071965b7d7c5127bdcff1fbdd52b646", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "447938936747b20dc519c5bbd1383f5698892f10", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "59dd6a575221302e2fdb1d2693ac73192c2d932d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "d9ec839c232d500c4c8be7874d50c95136b50d9e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "8b0acbbd56d0e41fef365c3c09c758fc1ef52fca", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "acf18c8fa6575e65890e7dd282668438e5249679", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "0be973c12356f7b1ffa2f0850c44d09151505e18", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "941bee32eba774ca22ef0354e61c103788cd8505", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3e85c0473e105554feacd92d8a79e49233c59e11", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "7af0fc240e1deb301b6e2913b3cbc2ba8b302bc7", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d3f882c1fa17e90fa33f02ed195768df5af4df2e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "d9ec839c232d500c4c8be7874d50c95136b50d9e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f1aec20ef25a2d30a317f5ffef0d219c8bbd95fa", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "977784316e5271a4ef6e080f9e46fa5edce57a44", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "dde415d7ea9c9370e3fc12b6dfb1b28714f9a8b8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a8bc114f19f27cb071fbe5cad8745b56d34dfa07", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "d1b4a50630631700aa3b0d4d0da2d716158a9c58", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "77126a57b2006da45c593f7bc14beb57cf773bad", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b8263d3b1552d3997a849fb7a614685ae08a45ca", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "e22d8f4b08dd9834faf56fb9a96e631499fc16b0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "3b526115e924988a92b55cda557d58864adfc2b2", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bd260c14ad8bc6299fc9502d6a46ae7158c8da52", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "98ce111375b2f0549c841f2a5f8933b8487e3f97", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "8584642fde24480acd27a2affaa7ad2296c830db", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "779564493a0fa5534d18edcc170718c73aba7773", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d1180e2f2ea6c31a7cfe781c4e0130029e10ae6a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "9bcd8f55af9b7adfefa59d2dc70613722e631bbb", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "2034ddcc4d15b73dbbfc1f20c4aa3a9111be1189", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "995bcd6806f661daf35cc3e33352e70123c5cbb1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "281d7287c9fc71b868051eee88778ce74c419b2b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b88fa4e93dd6339be70016f1afb5276d0f35469f", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "18748a23bbedccdb43ad05ee77c3b125041fb5a8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "f2600d396d97f5af889ddcd10ea6fd310db22470", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "3ab4e41b8b448c09977ff5a8b8daf67cbbbc484a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "e6a97a92e19f06cdddc9a0b1c62805ff3eb039b3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "2034ddcc4d15b73dbbfc1f20c4aa3a9111be1189", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a42cc7041342dede32f6ee117ae82a4ba6361dd5", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "400f2a113ce8db0558d9e44bd16eab9412f14dbf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b2c32df5aa5ad5c3b1cc295a108f2e392fe3cba8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "18748a23bbedccdb43ad05ee77c3b125041fb5a8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "2f419d5052264d57fbbfa83afc62eb9a52177de0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "02e2c957d9285541c516ce6f111260f2f9c37e12", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "62448f16f8faabd9939b7a484139c5a730588296", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "7942a6115d345b1551153c150f68be0960efa04a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "5c662b551a7f8064c8ccf02916d5d28f24b0e04d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4c2a5b6c2b029ec017619b9c0cc854b4d916297d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "366b320b1c7f44db4ef53b3a27d52fda834022de", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "405a43ef841055b29f8693a290ce5742dd9c011c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "864234687bed141c8001ed005af1160336e90199", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ad90fe4b68f57ce9671312f37e3781a9f0dc2049", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "7942a6115d345b1551153c150f68be0960efa04a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9a1a44966c9f968c159809f695667b4ab702ebaf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "343bd2376f682139981613fe219f399928f16814", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7050d48c42d2053b313bf463ccf50b5bd5c96922", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e4c23ca7dc4785a71c45ae5001b6669428c9bc2d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b84e6f2080b32721070bc8c9d9d47770f5c977bc", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "bc79f5d87bbe86d7065dbf5f3321a99b17cb3199", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "424af459f1a9e70b4e1b993f5955f217812ba150", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c5f869d681b1e50faaaf1bd17048df4ef7773703", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "7ca8fade42ddb344f5ef84cad6efd563f995bea3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "67c25fc6bee20ede54ef87e77775409a9c5418fc", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "6b8e85f32915c5ecfa38c4271a8c1bc72ed5cec3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0398e21dd0ef2ee3f659ddbf678e003bc7f4d606", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "fbe38462178181409e1693f4bbb8d7b75be19938", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "aea58aa8d4e1445ab86e3ebf62c92a464d96492b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "424af459f1a9e70b4e1b993f5955f217812ba150", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "43c6179fcbf8159979e03d551887fd66856d5628", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "765e4bd9a359875b2a4b8ae10f4eb912115d152e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7f76094b8476fbe51edcba2164bb9194a9c75853", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "6b8e85f32915c5ecfa38c4271a8c1bc72ed5cec3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "df647ddd06ba2546af4b559f3595a86527eda66a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a2fc526cf8fb0802807d608db0b3b0d75188a635", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "79008ae4476e10cd9eb957e03005abcefbac2727", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "86b852c131366f1f872b54bebeb3b8c7425d32b0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a968c0c9300c167b305c23789d28fef77ca9cc11", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "837c46d65f88b6d0713d571066c896094b493580", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6d955df0f1d96bd43f40d5e5bfccde41593bb5e9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4b0949118a55c19bcba32d8591ab6df07058cec0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "5b8c6c4686e06faa5641ee4539e64b905759be6f", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e457d605e0ab3c05fee40cdad546f97c81d7d1ec", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "4ea44c8781147272086cc3cb594ab70a340bc307", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "0636199db87c71bc4db2f51e8678c713a8c6965b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "475a9a4fc3ab3d312f40f64c22b4105983615f37", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "25acf27f7a7a03791907e38bbd4ae01ca3655c9d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "018e308d0839c58b4eb54c1131b4c7a1bee99ba5", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "690ece5a527a5971ff4d5965fbb22b42d378ca4c", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9c4f62151d85f47848b0365a65ed41c2ea7b4aa9", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0eb81247e2a0f216222fe16122ca22fb30fe5a9d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "787172332c7ff80420bef5610dad20d21e7bcd97", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "4a30034e19ae4b4262fc346c610790a518dde926", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "d89ff2e06984de698e9596d2eb93517c37d9b708", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "e3b91af8994467a7287ca906dbed077ecdf8cefe", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "0d02ec411edda2338a0b67e4135b861eb66ec354", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "690ece5a527a5971ff4d5965fbb22b42d378ca4c", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bc36fb221644add0c556ab2f34d5cababf568df7", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "47c33b92a60f0e14981532382199c2757b55963d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "98a734d87e2dfc8b01bcfbccef29675bb07c562d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "4a30034e19ae4b4262fc346c610790a518dde926", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "9ad27e9cf0dd4faeadcd2e33eb4b11a056f3c03f", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4ab557ad42ca685227cb9c3bfca20e797e4f9a15", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7571e48ca6be6a720129d6766b1b344633fc271d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "2cf3458749be9b37bd4d1633abe7bbb325a863fc", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "8d50d42a0063908a59e10ee41e51f59d09731276", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "2e426a9c1a20ee8bf9c1df38d3cf49754f9e48bc", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "67a65dc2585d7b2366ec7d4f704c1786b6a94f5d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "dd914430686e256e3d4a488e2cc7a1be377774b9", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "7be4b535f903539dc4fd2697e09b968d109fba42", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "61c2fded86a53b4be36b073f62db5d0e999697d7", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e03b4c06c01af5e76d580c0a65321a3222d38f27", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431d54b2411b63712163cfb7ddb0619f10f419ec", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "2c186c61c23ea9ce2bfbeb24305c1a0f7c9629be", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4207be1af5a47ce6a43fd1bb67bdcaff203fede3", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "762b2497c5db64a99c8120bbf5e620f5ca36d35f", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "9ac195235fb5b2a5de4b973d121b97b99779e15e", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "2f748ca262c99acf07dd88a51faa50ad17aca622", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "2182a7007af6e18382537a458fee37978143a3c9", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "1e61e6c45c2f92fc2d5e178ceaf041e65b31bc21", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "d8f4778eeb045a5f95b01313fedd24a73e370fd2", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "90360f88ee62ec38ce97c163dfcbff4664e75218", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "89fe668340a85f4a206823dcaa342d213dd202d3", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ae0e052a80b26404ee3e94ab4aff75ef0328f7c7", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "9ac195235fb5b2a5de4b973d121b97b99779e15e", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "eafdfb8b58d441975eb572d596340122f36c23bf", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "815f87b4b4a69b08f5833b79c06a01b020912ad1", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "20b59fdce3601090ffbd6c8f47f931c93fa53105", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "d8f4778eeb045a5f95b01313fedd24a73e370fd2", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7d0ec1c99b0dd20bc268ab136ce2218f068ca8ad", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "90540219e7462c32e59fe59401e05228e9487564", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "b3724e144dfb04c1536ffa4924f95d033a239448", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "35ed46a8dbab17cc7a7996dc1f4e2f9de3603627", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "8908c300eeb5d3730d307bfe6ec453542a300164", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a05d8ee6c0d45353fd1eae0fa28613da674e9088", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "88f1a41c117135ba54dc201453e034ad91bf3fd8", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "39fb5d7dd6b94ac2eb4031123fac0ebfc7946b2c", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "776f1580ed2e55aedcc1cbf646ec0e980c722504", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "91aaa5ba7e48beeb57d191a5daa4426f54c07ce3", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "35ed46a8dbab17cc7a7996dc1f4e2f9de3603627", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "12d1576e02587d4b0fbbcd94dc09e84a354063e7", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "443902193fefa62ed8394e818a9ca4bb4c28f14b", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "e2cd2ce0134f5ff4004e549a583316dfd4327fd3", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "34db247a3db68e5d50dd093cd18184bdd95f13c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "ce5dfb40bf7768ff68927dfd7d956bbe90fc9935", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "eccd3b87e4b51ca79ee66a3f5419c47ebde89977", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "b5a24f46f910196ac22488fe5ca80accd1b0a25a", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ec6d57d7b7acf923af9cb3482c398ad3cdb123bc", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "39a0c1441f4e4e5eb32d629d9069010eaacf44b1", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "f902d0f94e026c29175c1115ca869812a8fb8f8c", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "71f1150c3efb5a6d0a95335139f9aca9a4c5e577", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0c14405d4b2c4760a982f0f7589b43de7e8c68cb", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "182437b139eb89911ec54017f6f85ac25c204b0b", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "5714156da5037b550781250aaa09457d705ee888", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "b5a24f46f910196ac22488fe5ca80accd1b0a25a", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "0aeece30868327fdbddec9121b146c23649ac60d", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "5f7c9cdfa8915b5b5063370c24abfce4f8d7d780", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c12a2b3c7ac346ff086aa1b2ebff394cf971cead", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "71f1150c3efb5a6d0a95335139f9aca9a4c5e577", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e96493f18d48fce9865b31593a81301adf534bd3", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "f7ac0086e5ee18347a32dc322e6c712d729e48a8", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "67c163f0f8536dd301f48473a6fce9cf0aeb1166", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "eae3d18c8df51ef6e8bc2d6bff93c2a13c93c0fb", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "76d8f641fc6da8ae783c4d8db9c230614ec6ce00", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "952ed54f40dbced103365f78f42b40dc272a7c00", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "98cc47b845534e3c402fe460704729fe9825c670", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "d90c8fcef98c97eba2972f7965aabc889c2528c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "69773661c23463843aee07b136a4f2f981a4e9bf", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e0092ab686173cc5c3250d908c5ebb7c69d3194c", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "9835ff480ce7e86064e1feb88d71404112c07ad2", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a021b377c5c7a9db521dab6ae05765f77756436e", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7cd9860a0228cb6f7f96fae7a8e311d0afe00fd5", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "5c8b4021c73f8cfd3893bf54164c14a92f698993", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "fd987185f5168e14e418d1d56f4d62279acb2c58", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0345554b7bd1613c24a3f680af66c40e9757be12", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ed5afe6f1d2929292229d36c663e67e2264967af", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "3bea06fd5c59e2c5e086df2f1a2493eeee808459", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "9a0fea687cd2c299017442bfe25a89d8e0b1f3bb", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "1b67a528fe3c08c2d6591afa90545ff9e3e0d81c", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "29f8e1d85eb06badabda4155803da839100542d7", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "74cf4c0b8ffc38d2838a34693b8338cf8ed722be", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "38a4f895aa9b73d86ec8badaf2d9f781a5c74df3", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0345554b7bd1613c24a3f680af66c40e9757be12", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "60d05ec76922d185a28ba8965ed0311591cb0440", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a4f05e708504639476952f9bd83102c48b8910af", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "563272b7bf1193a4497c4f977e9f168e18720c4d", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "1b67a528fe3c08c2d6591afa90545ff9e3e0d81c", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "c87b2051b9d324e3ff7d18aec458cc7380b6ca0f", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "36f81f5b22285c5bd3c15efdd3fb2538af0d048f", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ca1568c40206f804569670b858887dcf222ecb00", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a935813f645a0865df8659cd1d882cc0719227ec", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ed0a6fd65ec0e872e2aa3498c53220353524eca", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e7c9b9faafe56823a8a62e11b9660da4f1e61b01", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "85408da94c92a8b9814668a82f8e5440c4ece4b8", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "733b6a6261ff3442ee560ef7cc914bd522796ab4", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "32ddb1dfeaeefaf1b0ca92a8b96add25dc882a5e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "5f1c4096c2cda8d8cabae81dc02e8d268c71c220", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "8cc087c7e693d70544013c99c29d0d13e4860f3d", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "91399af11a4a66cf48ca4f6227d3231318931a70", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "640c72012d9dafe5411ae4d394306cdc837db23f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4186e30273384e3cb544acd78462c18af35c3c2d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "640c72012d9dafe5411ae4d394306cdc837db23f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4186e30273384e3cb544acd78462c18af35c3c2d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7424046a433c6efcac0f762ef85dd217356d54a9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "65eb8f861fb61b534c968f685ef42ce162513c38", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7424046a433c6efcac0f762ef85dd217356d54a9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "65eb8f861fb61b534c968f685ef42ce162513c38", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c51daaa0be6ca2a285383a45f0bed566b21173c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a25446bda742bf4d0839f439d077e3b2bcf4177c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c51daaa0be6ca2a285383a45f0bed566b21173c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a25446bda742bf4d0839f439d077e3b2bcf4177c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "52caf4968dcb68a3e79b1ad42d775660b156c130", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f55c5aab9eb7a1dfaea38163d60c6a82565658d4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "52caf4968dcb68a3e79b1ad42d775660b156c130", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f55c5aab9eb7a1dfaea38163d60c6a82565658d4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "10d5276eeb1e7631a11c3db2889db5c6fd9553f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "930dd1b75730017a7babdd2965b6026cae448789", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "10d5276eeb1e7631a11c3db2889db5c6fd9553f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "930dd1b75730017a7babdd2965b6026cae448789", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "11b4b88658e9c1dad0b6dee1fb5cbc46fad83721", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6bdac1511318f822b615fc4df1d0e255d8e964fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "11b4b88658e9c1dad0b6dee1fb5cbc46fad83721", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6bdac1511318f822b615fc4df1d0e255d8e964fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "47eef3186f4bd1a63b57114344c69abb95ba54f2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "56e7e4f3bdd150557596c86de7894ef5c53060eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cdcb574fa446a5dfb6f1eb588c68d0dc61cbff9a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a34a3ec5b1622c0346d88e0dc0724de51187dd54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "907ed1c2bd5ffdfab4bdc2afd78435d76fcdb201", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1b687552213571535afb6c70276c61d24cc8b45f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3475a28c024712a0561c63506bc037c01258ac4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5e239ba8878064af3b3b228bd3d3bd6eef1d3e05", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "343723d19cb98aa0a8932ecbec11921b02d810fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05f4806721d3873bff580ce5404f09ec2ef058d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0aca5d86804ac14d6d10e36a49ca9066bbf71dce", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cd709fd065dfec9bdaa09ccd4a84cc7d4feed1ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ac977b1b1b0aaeba2c5bab0cb6fb4cf0d8abd672", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7ce082eaec80badafd5d1be886525ec43d05e850", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aab6299d75b8295b7467f318f2f781b3bba7de62", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f056388790bed77142de8cb2a3f3cf2698598724", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "121790eb8ce1eed4999855a4b85690124bfa7605", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ca695ab39f4cc688dc28d1601a1486fbaf7db087", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "063826171c46c2deddb0d8e3e06b06d103354304", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3636e7f97df978a7d1ef8d8c8e408ffeeda95031", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3a81152d0fd32d819869e37de24df57fd815c586", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ab264922b827830a51a0cde6279018abaf81c2cd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0f6daacf490d17826ccacb2c4acbd30a16587569", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a61277789c75842cbc8d75832a281eaa92558f07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "904fce740aee1623a452abe28d9716e93851b117", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "425993d538e4e3cddf0b64e9636a52db8cf9a7fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "904fce740aee1623a452abe28d9716e93851b117", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "425993d538e4e3cddf0b64e9636a52db8cf9a7fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1cce6bbf41290efcb832832652a74bc17b8f4d49", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57850b36fa4f6f8c2d178a3188f76a2cb81c943e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1cce6bbf41290efcb832832652a74bc17b8f4d49", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "57850b36fa4f6f8c2d178a3188f76a2cb81c943e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d778700b814fdc14053c8995f6639846ba37d7c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad2ad4fddfa52190aeb4eb298d6e51f3ec0bd655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6d778700b814fdc14053c8995f6639846ba37d7c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ad2ad4fddfa52190aeb4eb298d6e51f3ec0bd655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "060551c20b2b298636e0dd53009d95f74a9908bc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "29ee72a263de817a2ec65a6b3e8c1cfa46852251", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "df2e5fe7d5fdade5461b806adbf641702fcff31c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8bed06893bbf9fb073f7c57eac930d1df013d2b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9409f654c0709e61524fb8978364323d009efcc4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fd621d12ea787489f0a2f6d918a6a80c5acf47dd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "159aef655058a25e135f8e28564fa36ad89c4f5e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9b3fc66713ebdb85fc8e4a490de0b4692a8c3419", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c5fbd1f243e00b4a415242700e538751c2923bf3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9f5ad84de1beb12ad61febaf72bbede48c61ff57", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dddbb11565c91caa16d27b2a9e03ecd85f7510c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f3f6152bf136b0754e704269706aabea408e486e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "244ac3a3d23caed2dd65ad03abf9a8903341bfa1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1722114020c03cbff084b11bef5e604e024c5e3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90b4b8e984b7b36c527b774acd0160fcf0faf3fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "28812ffe2b8e1719f56d5b58f6b1b5aa1e523520", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d8e68f3e2bd12ebbbcd52f5f7416252745cb65d2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8a90f751582979e5d07a661d8aed87d20d0159fa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b99dd94d8172cc55d6f589ad70f2b9fd73d25721", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "153b9a2538748f02de22f6c049e91d4d3f0acfff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf3c98b89d0c66ca38af89458e3ee7ed0f33b78b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7470487a6753b46d6d385c1597b9aa576ced5ad6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0b5d93eaddbf6442453e94f44dba595287ae6c48", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e62f6c2ef2a2ab88946adb90f930acf219b70388", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a4d010fa3c5736aa8bfa49aa55d0251fe0f66853", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3ad7cd5e6d9bc74f545bd764c32fbaefa9791158", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4e8c8a6b90292bbb4b2d38af26f33cc9df13190d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bf0e7d639ec46a842d54f2acf4f8db028d5a4b99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "433dc1b56a59c16b6262369f445b14466ca77b15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "74e5410f554049c8dbf3d5eeaffd3912c921254c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "aeb321af9a0a8015c39d2ce4ac9e3be7cc7f1359", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5ee4fb02fee6447436b5d635036e68f7285b636b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "335d4167602fd2343bb7983a8c49b657977abe0f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3c21e9570418b8aa44bc3c64f2773bd164003614", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b6369a3074f8f10e710e0a578f45b856d68c5223", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6575a4a9f089f740c0395412ec033c7ecbee14fd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2f9234fa9dce623d026e59d3463b74621437a94", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1450d2c00507a3dfed15d811232c2b9d2eb4d9b7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "eec621ac8e1a1141f93188f56a8ba1a44f91b4bf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "40fd9c197f0c8e0e24e6b0b6b5a3a1ad5deef7ba", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "98ab160477a082c20aa7e6230854df290c0fb329", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8b6912d31bcddacf652d7c7159d139d78d8e8c26", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cf40a5cd7f3108890fdd36923900eb34215ef171", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ba308e19dca6db67aad7cefb98e9a9c1611ef4f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7bd809cd7e354d1028ea75c25899290569611d5d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e14d062873754ea141ea6090c5ed464d831a2257", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "62d1854e369b31f5891ae8c473eff669407cf7cb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "21a92a359d4b220563db706d255aed30b2dbfb1f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3ebeebce312c5dad3df85138617d0a3aa3afd3d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bebe712643e213b217c7d697bc2e769e6a5dcce3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2367aeab5e892ff2e5794157aa9896ca1cab6f53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d19572b5ccc636d24b80327a052bbac6904b0ef7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f6aa4d711f8266420efa39ae8430f32e66ec6a49", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa0df622e8a1f7d095e5b004f8d9685d7c7719ec", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50677f9a1deac1dfe186769914fa3ba76933e4dd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0ed0222e11448710c8c1c5cf2723ef46852a0abf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6da6c2c2b48542531579943b11aefae633885d63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3b25ff464a240250442672d213ac0ae44bd8e861", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "65d5b7e24d945d3e06927a3cbe14f43f7deadd02", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7a6c13c90c0062a4590976b1d16c9113316be8e4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8b5fbbe4588517430cf3c6ce54137095084c8882", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7d7d6da3cc92bf24901161e3fa7b40515f1adb42", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aa09c29b3bff975cbba0c963c146f2c6004df416", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0d6c8af412bba154260048411e77ccacd8a6d8a0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7ea4ee183b72bc685ce38c9c880aaedaa46a0e03", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "96ec3f2569bc3af11cbd47b6f1b30e52cb1126b6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b7ae88b5cc9c904264d20e29b785fc7596b6b330", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c01d3066569765176f4a4d6b97490844852a2fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "aa94d5ce1f10e9ba7232ea940a96f4afb0672f65", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "db23af1cbee1dd8e4e7140e76ab1e44e062869e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9204c3dd5d5b0006cd057ef8d234838aa0a70216", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a90febc40373256e9542ecca2b4777cfd651ba01", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bcf1b719f5b4b217e3e8fd9adcf494f41f9d46df", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c8813d57da7841aaea7d473ead319f4e6c2131f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bef04e25796361da24c74cfe7c5dd59f8b64166c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "032f27c6384950fe963218f4d6b0ab928bfb9e00", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1aef863fa92b3c4259d7cd27e84a9a0a6afe108c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "33f33602625bf3402cbed8c2dcaf9b2727749002", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f62a31f04b072632392d5b2beee7bd1cdd9d077", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "040793acc65fa218857f1473ffab1a438b68533c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "288152a9703e0d6b0f5f07f3e1e977629ed5835b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fd6d40174acc20d25a3e44555d779dece3d77481", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "337026cae3dd1ed8b20e79af580476e6a6d30b23", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "63814759059c9d834b4ebb9d872f09f48ed4ce80", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "450a264ac6e4d113c26e69cbef77399108745d6f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86897709a8f5f26dca0afbeed1844b570211d6af", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da8c3b45b587e207058018033f6ca650edbd63fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2d8ce784593fa224e917fb0dd22a1a51d433efe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86073321555a6f991f30ad6c62af057cf46ff999", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f719c58a9d685c88155b76e9c5d657a8ee6f26fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "08eb30e669f5d5f2741b9af798e0d5004adf2c89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "82a5950dd5369b538caf0364b8c3aa95e1a36af5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5d36be783f4d1470d1985a2d94428c4f18111157", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "83aa202fcec76a2c763108e57696edddab78fe15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d6d5f3254d462ac5d2facbe0626d2158d9ded7f1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2588a4fd65167ff334e77d7e0d3ac6ebb3092f64", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a43903dc982493fae12f9addcb21cca4e48d4461", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0e063e049e98ee0a4f6f189ef39a642b0abdd6e4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a3d792ac5449f58635626830c9ba0a8218e8bc0c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "243c0a33207606dcc4e7fde6ea3d580784088b99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de3ee6d6aa875dc5b533ea647ff04180b04e0530", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b7200e538d4e5d9b51f70495a2586e8ddf6ad5c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "faf9dfeae6bfff3567cbcdce851f92e8fde4d1bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1dc58e1561db37fcf9ba38c969ae488edd6f000d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e706b1eaa7034722f233818602a692753fa42255", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "947ff6b9d78d67972f004c74d2cfbed975620a30", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0a63f87a6d01768b4aa98efa8528b598341280d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4e4f4062febf97235319a556f903ee162aad68d8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2f8466ab3be58f77d2f830fff02a558efa23624", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42cf100c1d0b220647e5c43dfe26b8667f2bb577", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc2db7872c003b81352363f1d3a3da6fd7491b8a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c47b7c0bad80e6b6cf54c472a5c2d76942578ecc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2260bbe5f8ff54c754749ec85aec2ed7b7572c6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "263fa669ab2e3b6ca1e46058ce71a61b8e31c728", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c050c0243a0a99c9b8ffa64c90bb8a63e09593be", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578e3fe24dfea24e9f3388ea480e4c7135cc57a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "68368b37d9b96ac55c60f048bad764e758ef4de6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "299b70d368c96223a24b70b6cd0f297ca04bdd77", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e2232008aa62e17030e63ad65c89dc39357410ae", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1dd64174d5ed0fe42985efe5c18b1724c2ebef2d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ecd3b9f14c275b901f35be4fc1709468ba9ccd74", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a56a5212b339b3cb742041cc0220fdd27c7deb1d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d211c009e8415fc70ef3d2edae3e17bbce49ac37", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e5313ca174fb7536fa795ce3711ba6c7a1421196", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "20a504f564a14f6bcae92fb423c79f868f5b4393", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8c666b0e7167a9201953c394ac52a0a92cb55bae", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "df4b74a2d2302f1e07c78ba5629bf17ebd976173", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "76d019be3a1f45ef96155f6b29bf49060b82011e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c34703759563d7422c3cbd4bfd21b29b5326fa45", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6ccac0b043c423a3a18faa82440837fd044200de", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6d387457e78e360e0b46a33b6188f593315b0d89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f5bbb946733d922b09127ece0b0459d815a26de8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e9b820f5911655da9cc2f9f27612ce59ed3d1548", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af14095fbfafdc2a96664a06e4233273977689e3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3584855d93118c25008c85137966d58a1d259774", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "30c51bef897954a18a89d65c2e94f882f8c5a7f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e56a277a7058da6ae3efc0babfb1fb38d70478fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "189da7bad4d68bdccdc27f5f9981e7e34f2218da", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d22b4ddfb11f4b280e859c9514fcca1166b033d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "05f28eac81a0241fd6d0e31a8d334bde87bf5eb1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b6672b1e437a5060f06ac2eda4e19ab776efde99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c7dde48d91dfc4f4d5e6a5f7550386ee337b8f84", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6ebd7781e04b3e9c99cbaf38719084c9c024f6b6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a088ae284fb404f8564db9d1d30a8ee96e11bb85", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8e18cc6f141f8c0f26832f4b3be14ba1424b9aa5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d211c009e8415fc70ef3d2edae3e17bbce49ac37", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dae9c579ebfcf3e0f87705d8fb5fe4ae02a66ad7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b46bcdb30f5734c35718af13aa91b52b46e35253", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "58282740d7404dbb5efb6cc14173b9722756ab21", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "df4b74a2d2302f1e07c78ba5629bf17ebd976173", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d244b84d5360ed198a0d384ea4b9432209c67599", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ddcd48b8a7e40e0bb023231fe6a457a7c9c673af", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "813480f815b244bd4b83f8c3e6aad0a8198bcadb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6d387457e78e360e0b46a33b6188f593315b0d89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dee47bb7e4639743253d23cb62776ee840551e39", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "051955cbf1db8a4259308b1e914d73ddbc9458d6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3717203ddef236118c37884ba9dc261569bad6fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f312ccae4220129ee5ca98b28713f32c774f27a1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "949c0619ab4d756f4cd3e9adfa4344b5a63f9b6d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4aa3edcbc462053e2121a2f7b8130c5ce6bd969a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "733267d690689b0782de199b553cef251ea9404f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1a17227264d04c621dc99aa8e329089486acc88c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4cb04b4511ac42f86f4d226944ac8b4dfceee3bd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aabcbaa9ee47010a537b724d35f65ef60e0a914e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fa1588f19f48ca9f490a7d3ee89d12bcd6e096bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2f5082aa857515a4df792dada3b3e4dbd14be229", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c8d155c80f4bd3b7144fe5d16ca80b526a4e9a9f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8671e41050556014d440c23d3b1c45287ec7003e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2800f9191131e01a9675d158393dbe5a2951bd28", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5d4b6325a3186a1d2a26366e144751304a9c6b44", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8560e5c0fa871d60e926836834d7fa032b1b791c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ef33cdfb7a177f7463babe1ddf0daa675b092b99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "887753f8a530ed211f928e2b73295b28db314dff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b22f2ee7a1880c91f46f2b201791d9557e6c4bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d08ad34e9cbfa11f28ec63eb9fe89c862aa76718", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a774d0bac157b50bf8421d8f286b2908a4321650", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ce0709fda483d08dccf3c590d1300e529c93ed2b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3f946b490183e5209bd40126f64b0e5f841bc3af", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "01f48c4a8a1742fae0941e29321a246efd4c27af", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "381605f1314666e1d14b72df9de8f5cc0977287b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb724b5e4c056adf1c1d2bcec97abc27d720499c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a7e94d4b602814131a9cc78e216d91098d018c12", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "172b3bf1d3b7738c4546ea08c73aefd692790379", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "badf4076e60303c618e24b7d7c99cd7ddbce1cea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "23b8952ef6156a5879f33bf690aada61defb00a0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "366ca054569fe2d67bdafbff3f71ec746151b524", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c4a483994f549cb41caa1cce332952e8ad4f2e91", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5c219c399dd9e61390449e899bf415542b55e367", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8e382a8a46c0b04fedb4406353ca26d0f3127bbd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9285faa0f3f37fb46ae3b747b7b355e3d0548a0d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1ca2779f6f3a02560def756ed873f34caa0b9777", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8a344af9c3f691225cd99f2f191a9c10bcdefcc6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "694cda74d6c38870bafd8aca0fe805f0c0995c8d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b4649c0268480c7517f30db42c548d225f0f9152", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fe86b90d59fc6628f0cd891db13f05c221d7fd76", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e8e71df19fa75a2cb3f68da40404ed911e312570", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4a27fcad4ebd153619c581d3657acf96ad3d154", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9d8345689464a21c3c668cf90bb2d83b612c3d6b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f38b4cde15b8ca655c2251c63e39de24964767d4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1462b92745fb2885a1c8441b93a428a24b72734a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d9e42eaad9d0b00197614106412a17554b66fdd6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c3235cdfcce37ce5f825a74f8aa20002ac9cb49a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "99bb3fb6e58ae3aa0101df8b0974a396891130d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6fde47985cd89483bc0b0deb98e3db9fd86085b1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba319556ded1d32f5a25c1c36d311682bb9de309", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "28f25fc058fdc07c15567e9c83a8f3871d987c47", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c26f86b35bbcb596ea79e89c8c947fccdadbe11", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a421059097797fd3991c2d88eb1cb5891a28c540", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "64a4ed0059530b606f66ddf37eb7066a4e27552f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "da177eb9fbdec2588a65d5158896a3d3e716e4ca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0f73515e6d3491f3922ca1f3440edcafca2c2d25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "46eb83ecf3112fc60554c6ab4716f31234668d62", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03537e61c267824b36130bf5148233dacf491b3b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "14e7d57b2ca909e6f2e708e69156a0fffff226be", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "708414ed9426b17b7c93c2886e5fa811e93efab9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "810d33cb9f35f45a3c439dbb446dc1fffe07fdfb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6182cadfb4b0dd5f5c71df6eaf7017d13897a492", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ef2abf069f7fa3231109966cf0abf51778d8e39b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34d788dc7753b156dbc87dce76839d30c4199b8d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "013c128da1b58fa39f66881dec825d4d83d20a00", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0851796b93f48d28bec7a5139739afda52fc6438", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6431a3a35dc2954ad5ff2e963e4f58ca3adbed5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "13cb4d555f7c05a823b334a1b17c1ff723834d88", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6f33f0f1cd2a237ba8447b52ec1491dd1527412b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "23c93ad2a7c2564932d3a5a0ea77fb2069312807", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a931b88cf24f98de9947eeb535012c00a9351403", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12445551d8096eeb2dd11b9c07d9be36b69c8476", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1b427ac93a46dc98bc43ee2b402f0b61d90c96db", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "91bf537f2c72c98a7d7b31933fd13bfbec92936b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c589ca8b2986c963a305f5b255dc810f9a173632", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0cb4f6d8e1b09206ca5734f0024f0129f5d1b58b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ce1b4924f6bd99f4ef3c2dd0c0b88af88ae261c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0f2d7f32ec5bc2765fabab24a2826ab6843a5959", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a0d5fece1dba7e02b265d55b9571fc3e44104e2d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "20827d5db486fc5830cfc5c8cba3be7618683256", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "38dcffa7431641f9e70563b638cfd3520876ece8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6ac5e2d027aa4181441be3172ef2a9462e778a9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "333de2ef2aa7e128d73be426dbc36653a4273228", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "10758febb0e183dd4fa4b6afb629975c9142ddc5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0c0830fb3b122e0dfb41f6df50fee333bb22cb03", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ceab1ac4e471c6ee2b8dac3a4e25035c4248faba", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6c4bc1230e16e5dc8b80e52b696918c88fc1dfe3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "98a4382fda2a998e4aa9702c7e7ab604487297fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1e5a6c1ea6362c3dcd5fac24c5155da2a2dd6543", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "527b5e24c396dd575a05da367949e0ea2985950a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a1bd66a736994ed5df1a864258dd03a7b57bd5d4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a37d7c77e486e03a02158fbea849f8b9bc8f9f22", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d98be766b7228047eb290a2969bdf2ec22f8fe5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cd472c7f54b1ecc303fe011cabd2beb0c810ca4e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "347027334da87f911ba264940ed9d87a8e3172ef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9b3feac207bfdaa372c4fa11c3a1420224399a5f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d772f9d65f37f1647b12d93ed36b3bbeabb9ac5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ac098ae0fabab996fa8bb791b222a9b411b2072", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b323ba68cf75c9a96281bd66d53086ad8c8b0038", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e98a1861177ab51b753613b0fb448bf560f93d1e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "941f54206698185a7802b48e9dcbc52e0fc2b4ce", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "513540f3a1ea8b2f2d44bde4b1b9442f151e6b55", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c28d5f961b028122c6ca328c2d5d3b3b46e7e864", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1d00433ef2a6dd9e07990700e57885e9f510c118", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "edb0ceed0ea709f6fa2c258a646020288ddcf397", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "95f280d4c396b0f321603a6e2608342e455b77a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9ea189fdfb331293b9c1ae75e2f8a5538ea8508", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84f72fbd5f89b22bd041aa72b8c9f357cbf3d33e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e89f9c20e9a171403c751896712dd89719bc98f3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1aaaba5eaa522eb6dcfbe5400e07c11f826541c0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b742b5f4a5f9149fa676cfa17318b8ab51d20a7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b1174798c50a3751b4d935f4ed5ba0af571d347", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c15bb5db398fb20f208aba1c8ac1133a9d784440", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ba084fb3b86ca70c1aa6610864be79f7382a05b3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c67fcfe16e70ab30af781d3672b8ac2c0e77f28c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "488674ae69f46043d9b51d82f483b1ddf0938ba4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eee0fbe2f8b5563c19ec1b6a30e1b89c5c198e3f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8fb90545f501e23c7bd8c6ce6b6ca6c3608f4ca6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b65349c1b56eadba4e322edb72f7456ea245cd2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d9370e8da387f0bf1f52bcf7408e9c20355f952d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1f79cfa4b951ae8f4f8066f6048068964f25fcf7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "eed66d935688e07b97638aca04298ffe58fea683", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "844dccde55a37b51583bbac530e8a90af0df3080", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "432d130fee28d5172fb172ecd9222bce3a4736e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f58e09a16e9fa58d9502e94efd1741310455458f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "639309006bb4d40f1479e92743cbc4fdff8c39bc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fed38e56adb3b3663c1602f394097f9019080a4c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c644bdb3a64925d9faeffe956fa1b6ad8b98199d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "17b1e42198cdb0d0fc5661a8478c7d24ea0e690c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ff5c73c802a062d66987281b5a958841fc176f24", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4b6cd69b3bcd47a0cba2a8aff03c6a8870898a19", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb20c3940c3da082eeb6d87641742df04376d2b6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ad2b3a7b4a468507a9301005d4c69d43a39c87d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f97587c6a4ef49a3d3e4ca37695237269cef9100", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ad7c3d0774c66eae5654d86276feac14d6286a41", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c8fd47859bd4091aab9a934b76bcd083568f63ac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a94f142c21634c9d84a86d47e64f2133edd3f06", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d758324496ba3d2e6af3d4f2662d884743e13f97", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aad1f20831ad594eba17a8750c757e08bd1e8016", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0d66ac3e45f627390fc6516a427c9f262ac7fa54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6dd491fdec35ca5f2468021308d9b18b0f93906b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93fafef04f89fe8d19fc3ac500b2ac6121af0f3e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41daac5bec04b0dd771ce39186a386e75af1d1e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f8fa086c8cbe02db0f32d2ca6e58be430cba7c66", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "06e05ecc3b95994825ec5e520c59cff2c43dc336", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8114bea9100afc4e1a6dc245a2b7ef7398a8749e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bf72045d8eef0914e374a478a9992c98055c2cfb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c56c19caccb66a83845e9076f0988c06315f7f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3f49dd2d77af38d9dbaf6f0b809fe21ac65e3bc6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4a7c0bdd88e05abec95c51cffde2376214e8a10", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e010bccba2f0c77ec733853bb680226653a0ee04", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d28357d963d1faed00c78e2eae4f60f2b3bd9299", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f5a117db2d458adbb43f0cb2dbeef077dd9412b2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66c0b23efb4521a5bc81ce23f9e24792214a0827", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5817707884c76cc8baf5ee30ea9d7132c0b14168", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec1d4644d2ba89bb45f13b038138840b25d95607", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a1a323cbcc3396ed8ed21a0336b74803e807e069", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8341f8ac66a6dddd00d2594c9488fc2e62a37233", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df9feff14943dcb40f906e0d8b982f249f786fc9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4254aa51b39c7cc60f6cf03c7be4e24f721614c0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b33cdac0f23401e5e91f6a0a7642b38ffbbb498b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "19c7149040b24c699b36491c82e5afa06138c363", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f3d123e942b17a54eaf4d89852e05353b1c5b611", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b6988ad7b450a0a2ddeb1d07ca10a40ca4dd5d99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9621fe571fc4a54864322d0377930b592a19f96c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bbbeffbaabb56ba11a52dcfb9568eded1872fc98", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c1c4897ffc3422e440650cfcf546c0c836fa5b9f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "07634316f081d936235d876be5babf0bbd91e412", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bba67bdc87573b76cc4f90bd531028158b9cf72c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "715fa7980ab96fd91e92efea1ef42c9c5d37fd0a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5ef130ba3732f3cc46bd50e74d6aaba0f6edf59f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d13660d94c9d08e220591c8ad1431f3d609c1262", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7a99081787b7ff1f414b13c54c2a9ef88244e6e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3c476c584e1b01302fdd1950171af130fc6d211d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0c8111438cc50cb321791b54594d5358dd16f35d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7f5725b2373a73e0cadff8758ac5cfe8b99d8fae", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b9bac10f5db298fb64723fc10f376d957c47568", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a39425412491383fcf0e97cadb70528e7900fe62", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "398ca4159653b6e735cf708bdbb56a0f42add0bf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3cae94effaf3c344fdeadd130cf7a5304ac4e3f6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8673717a213dd33c70cb991a4f54328419265eb0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4d5c56725f5ec6664fe8f3996244585a6f4fc618", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "61c0ac1630111120318366dee37c210e65323271", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e2cf440f14866372429e1fb4377aa89b651705f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "29466a1190f359210934fd5e1d4bdfdb112c3864", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0b2e39e444f366d87b6febe93ab601ebd93f10d8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "742540637e6d9f47ee8190ddbb176d3e95e4e70b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "abc0eecf6e530c7e954808cd34421a014aeba8a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dfc4575795a05aa242912a9c63dd357078ffee47", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "be9e383b41ad7f654d042de38a74f97832927856", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0d25bf8aae5fc588aa4bf3a5e7b623932fbd070b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f8a80668993fd37ccd7b9d72ce5b541dfd673037", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "06799d2e203f2b653e4f7c10e5a94478d556bd1e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a459e35737667211c0bc5e666777cc70abc33716", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "552eddd052d1109dc9fe88e2a9674fe738169b9e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ebd11a81ed8f4b0108468cf3bb5176829647d174", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e5ce92bf5a2e48d636ebf49c6252369eb2e3ea1c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2c02bd609009f807ad61cb7247bfaa0daf2a8d98", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "059f0a7dcf8073c9437f6f24eb9f2ad8775456ef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "00528b5e7a18317997c3e8148a6e25b4ea9b11f2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7b4660c6b33caa94cce2d9abfb57f62a429a4778", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f9c05876b62d8caa022b98d3e01bfc0d24dc76df", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c323581da91c365562de600d432e32abf0c757ba", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "61cb3fd3c41102570144b356a8b15639347ac4db", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "723134911110450107ae281b281be4ff01b4917f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1f4af220a06d835c78ccc6b03080bd24e7913974", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b66ea35d51ba6d2ec6a8287d5b8e3847e1a5a7fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "33d6b3aae467166e680425465488dd3313d32e9a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "130e03556ca8f9af1566403d3fb46b70bca52202", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "77eb738c417fd4062eb5fc6e4f9d63b34fd54ad3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57626511e582ef3c28feb153e99da7092eedff9f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "62e4180cbfb8031f6669d9558b43c692d8e41dca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "db7100655337f899a06b132ee97117ccc7e8f7b2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0d44cccbf6ef2adc76715ad283b838c533df43f1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1d38719a85feb05515f89049f2fd6966a9dd23b1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "05a33557437a786bb3c61132cb56c28ab9b53d06", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "896592b38794d33c1e42e50419d7194df651c198", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0529e4d851938aac7019604aa23a026964f2a07b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "888f83abe7b47750c77d675dfb70f0a3b22a7fae", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ee260a6bc799752bfae17d814e8c5d5dd9bba655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6549adce1069638122b8e75a039f3b92ef2d5dea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "33ee283757a977573ade2ce739ca161cad7cfc99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "38e4316c9d74b396d2f9a2b610db5e16c842152d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0605ecdb0d029eaadb69de073c84b3686745e693", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a2c32a04e739e766f97d571fbf96fe98037c48c5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1bd7b6f26ccfdea0fc3d03d9883d0ced27d7794a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05a5e51b927f5f58e54994d58274c879b62d759e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3de246dcd2ee05f4fec9a7e590bd598b9e77b718", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8980d9775581ba5f04241a09331161b176f90129", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6c04fadca09f7947c3bd03b2bc592cc1434f17c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a52fcf4a152ff93640b21db176fbdc32137e568f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be43f28e87dbc787c9ded2f70cb26c48ece2ae8b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1f9b8cf76810ea43baf548233855f18e64f0a301", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1baa6a223c1b10ff9a79ba191076b560c0ee4ef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "777d0c19e9d1c28818567891b9a389ded794cd4d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fe50cde38233ed5fabf1e49fd7ad39dbd10f0c25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5f2f88541d30afbce9899e09bfbb75bd56ef3c7f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "151f3c7f04fd07adeecaf5e5dec195257ba1e9d9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0dbe831b7f4f4440041a07d42b3b626489399f5e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3c9d45021a75dfab32d2f501303b4ee626e1a0a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "561f6b9b3990151c1dbc391a8193d80b0653c663", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "218f9f48693bdf739d7de63d627e045b8e299e58", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c2ac1bcbd5c76520d3b85ef1b309bf7768ba258e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad5edffff0a84a436bd56be3e6607149ec3b4570", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d3f8b4151a55b7386a84dc8131c639f07ef512b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59bd5875c771d6d53129f9abd6c10246c03e7a2b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b6fc06337addaff60972ad7825d4f6ac001b2fc7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e9ce0078cb8dfd40153bafffa038ae6c043752f8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "823cc6dac5a69d8dbcf46eca248f3d033d63a8b1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8d1550a16cccce8ee7002332cc831ff859e305d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57e3de35bea1c6b18c4f1bbf206fb4dd5c1366ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21d429647d610e067ed5317ae06d9bb686da5845", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d1ef6d142adbd7b6e6fd4f3e0cb7a6d183f841a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "73661f89e152cbaed96ce5a3b1230a5f443ed752", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "77ebcdc0c9c9d2dcc07b43b6560d663d7e3ae473", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8e26bc7ff9346d01a5615bd7f50e46e4359c497b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cd99e5b0729b2bad7ad7d54d3fbdf97a55320095", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "066b90aa6c91881047479b5d1417a34cf965f3d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "580b4c689f4977586f4c0dd254ba0e2a37dea523", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9eb6851945dae2d0343bf1a7a73cd42db093437d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4d972d707919504ba971b98b9fef87ab9202acb7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7b1749f93acd8051e6fa2ddc449ac977dbf10c87", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a9fa386c42821a0fd0288b48174f09d7bb851b80", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b4ccf96a4f7023faae5c1bca033b5dda55ff4690", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "17c682447a29e528ea6b715803fac619f81ae43b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "29c7481255ede91a695681b2b3fa5237c9ec0812", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "707f395d20fef1bd81a3fabb92dee1cfa83744ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4158f607019fe653799f14ac9cbc5d3fd431125a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2da6e9ee69ccb1dd1671b0f3bd84a0cfa345d17a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4cb621dfbb91e8382ca3031ce1ea6b24f8148599", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "416ff00af6df9310f393ba034ac734a4ede04bc8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ce2aa97597beaeb30684791f7af27c6e8e0db3f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9417de5e5333499739d2a55029913e5b54171f98", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7da836c62ab322c1ff7409c8a7c936e1b178e50", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f41b133e01bbccec35784a1dd807bf7c65f3375a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9157fb4045a23c5d69afebd617231855d3902042", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5fb59194bdfe96a0ea46921da673bfa631dd7a34", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d6f7835450b8efc8eacb7de08c572cf471509d9d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8b510867fde71e30bcb1bf3cc46404d8b675f664", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34fec610008ff6cd3c2504ee97621d966815950d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e72fd5c79971222125ecd640d1bce9c2f51b9a20", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "aacc0fe1f8bbd29ba8e99d8056a5060fec45a6e7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eae3fff25070bea2d5b036b7c3f0bc14716d69bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2687375c5e06d8186e2a7423803915e07ec679d7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aa50f740025eda51a561308d0b73ded01d70acef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf530be1370c7b23e9914c870ebf92b476f637af", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8fb2aabd54a50d711bbbd00414211828cc274ee8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84bcf527c061161604ce58bfa89e853f5fb24073", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8790067ab35b2cc15dfda5c5df2db0d57ed694bf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "802d5118d30bc81cf5000809a8cb153488af00a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "45ffd18005f7ec400ad47a23e48e2435a218284c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "510ec0ee5ffd6db3f332e01fbdde86a53c2b1588", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0692b5c561a9b972668a275a03a57f894611747f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d69471bc824097ee45c3cff326554f50d5fd4087", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "476162ae523951f56891223249bdf732dcb146e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d54aee33a5cc8760690a27a964cdaff1a3530995", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b616e4ebf19f5851398a8f1a7fe8e9658e811f4d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "43cd0414beb9f343aaac94a0d3f885b4ac2ef87b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "15487001991e39ae6dbce84c531e34a046367428", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a2304ff151295dc18ada0b26c918d5aa819f33be", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a87e383525cd5c4357b759755022d6445ba74b2d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "14daf8dfe06db07a6ef59f54b64c5a647ca71468", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7d329539b5b614666b04ddcaf09f2742cf3fe99f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "02807398ce5d574cee3b3abde8d3b8c505c2b10c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8728279f031c8278873868682e5d254586dad31c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1e22b75a1ebf2caaff06f889a896288256a50c44", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "623ccfd29e16f4feffe33ae256b7186784b9ee25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b2e22598ab9eca3cf5b83acdde1c1a0192d5fdec", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "39441c28f9dff3f1df83f25cd658290923e7f418", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7b4d9b9b9d699cce723edef54f1db9f1893e78ce", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fe19dfd2f039c9b4faf02cb0157a71ee5a76d7dd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a4720fd750be7d22acc6e06f1c68f19719e1242a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "401dbd02e9c9c18c823b3b28b251c51d8cc9b558", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "36a4594ab7da528114382c1e5846fc203625272d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c50bad5e11f9e3c519ec8089ffb7eefca2888eb3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b378fde58f52ed4671fa8e6afbefdedc094264c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0dfaab6837be9aa2e304e9eb17d1c423c7e6a1f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3f1bf217a4181b5a81a6ed3312fa4f76947515f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dfbd904e89c74d35891479f2b2adc8b1d322be3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7c0efdb5b6b7430f0a4e11aeb216844825c38b61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6f3bbed369af858c512429baa0f727af8e7fae6a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d42a065be4a9eb1c9c4397384c04bd6b4d14b9c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86e148b3810575fba6a2628b5f978f7243302b4b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "83bcb66fe1aa795a47cf83823dd1dd12ad09420d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d35c300937604a53b0e7a0c4690e5c801b21ac76", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a8fb65cd241ad834147d56ed85ac67c590e10183", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "64fe13ef1ca02e9702d91f3eb440161e254d09b8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b09748d271b49e988a4bec668282f164d89c3172", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "494a5d1129583deda066625789604743a1ec3047", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "44e628c40e69adb01c7c82b8c1b246ad6458ad5c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4a0d439081c7cb98ed01d7b109d05b38cb65cfdf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "23c98e37e0bff1ae3d00d9196e68ad92f9a704af", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e3e02ce5d8144986bcea93efb56646e5e0913b79", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "765feae0a4348d750a2fec7814afcb3e922e1937", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25af0a3144ab43c5a6a83e76662e854cb5da5b96", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6b2b13d3ef49ec3c7363919db5c3c2196b572c09", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2dda30fcdce58775fa2884148b7d3b8f50eabe70", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0671716007c6e6c6f72b1e59aff5656ba84bab11", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b6707a84369341fe0d7ff038e2e0526a699f0b9d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c7e090dd494a0b08306cdeeb536f796e6c997d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4d7534ec4d47483d9de5ffd85c10864f63c25c0d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ece53fcedc7c1d55ab1ea0af37a1baa92de1956", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ab9f23952c81adbe0a7e3671395ff4d05693cc53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b5b81a1eaf448fec9d2034ae792858ee0b1df384", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2320cd0a449c24aaf2aaf869b6fea47a2ce15ce0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5b479cedcbd414a95e2036fd2ee830879b2e181d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f511062160c9c53ef17ed5d982e96a3902db48a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f6d60c193277ca3627d29bbcf1b9dfd07cacc712", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "90beefd48596b489fa18ddb18e37a1283347d2e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "acba2759d5a0b322ffbeb7ef3e6ba28e5197d4e7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8b21a245fe2a3ca8808762658e72d13eb2ba72d7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d8de14f929f0461d4e599dcde90bdca63ab3ac5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "63c46fb3cd0e3f7db9ef13e2c92675227d70b11b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9cadcfaaa977c82edb4f5e2591d0ed20e28f251f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "07bcec7f617ac3d2a4859b3e7518ab931d7f1307", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a9d27674e4276cb78e4fcd5216e2f7f586c8ba0e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "81fb6a3519c3d518f127c1e9afa209648a7e3539", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0dbc08e2410b9beac6d732c68160c504ade19f23", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ecc72f8692fdd61ad3afca37055d3c6d86d0e525", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "01e90d01efee04627d182fd795a41b32b5529aca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "263f54bc957edb4fe8733cfd12d0b7fffa9a6254", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b0429a841fd44c08c18e0c60712031252f6ef607", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "20650e6eb9185823739a78b466ed2e0baf0a3e5d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "97535d18de5f18edc26eb5f910db2b05fc44f5f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c429b37563c99216f4b172883b49887e5fe12946", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83d1f60ae4ce6e70f07fa577374f7e11cbb4dc43", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3f2f3b7169a74fd7328f3ba313fc849c31749a43", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "941595055dd0c7e56358035c3ee0de242e7e7b97", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "528c633d2dffb25ef2720ce29f20ae7859dd2fe2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "809f3e1db38710e1675f5e3bbdad65f98fa9c613", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fdb0c60f9de44b41e218be38bd4727fd2c12f46b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "db2b87eab7535de34b8ac63916fbedbd67a8dca8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2b23b9613222738331bee26dac11052ad42ef696", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9d0fdd346f9f40dc2f8fee350de0ed195e229f7b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f9e5ba4e7a6e1351c1d137941fb0fce50efe0a75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dce9018d825735d8a66747d8bd061f5c45897384", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6b5eac244ae2c13e456a5774625e18a7d12ae85f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "aa5cf8c1b400642be01a92ed3b20ab956f587e4d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "820a9ba2471b7e8092b9392167b6999d62504144", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ad958598bb8e606f8d14923d28eb548e57a46049", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "016d945a0d28d270124398986d76e2453babff4b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d95308e3b4da900bd9f5c55aac51be3972068b96", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "82f10909372ebd08991130ed516fd95717c868a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4a77862b4f7a689f24aba27a7298184cec23d1ea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d72c7478d18bd9b74e186ebc459b88f8fddf0711", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "077113b9144c1cd784cbcc5a3eb5036d7bed68f8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b6c7f3fde8443bd1c9942ad10d94bd3fce3551ca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "398331c126a4a894fcc8d87be37f345c7b397643", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e5032a6ab14cd65caa298686c7e2cd47933dbd3b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dcac1ca27aff269a01701580ac25593febf2b7d9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9f7fa613e4f6503ebbf818232544bd7afb052414", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d51e10378005209b6e30723f508e19aab82dcb5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f64de78fddb582c5677bf29e695a33711f69b60c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5a1a5d776b4558df67dbcd6ab755dced6da6e622", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "309a02aa5782eb195920ee38160386c3bb411b06", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "88278fe8e7a4cec876705dbc312327104353565c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a792f1a0009bcaa71d86a343853cf5218fff9f6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a2cac9a2ae9f57948eddcfe239cec6d9b9d1b83", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "39e9982efa300edd7c4ae7a887c60d91aae5fb74", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90a12cc4b67f3933981e75c8a84fa154d36c7046", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "67cb0946e7c34a6d884ad6c1cecfb19fdeb5631c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3a62d410d5049f0fc5dd9f0abc7e2256e282019a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c68c6f8a45c2f164d0cea95a88290e04eb75e15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "58912df798f3eeb52ebd99cf79048c7ae4b69381", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "94d694b7f359482446aa418623b3b0fb3244fce9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "690b801376abfdbbea769a3d648ae6348b9ca3c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7a88ab8b55792896109a661eb847dccca6834a79", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "986f23ef6ab9a0be50983b35f8ded3da53fcbca3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d673fa03a533466c0bbd578c986aa2f92a2393db", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ec36c26496819267f369269818784826ffbfd4f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "19def09ea3f7e9d2c0380b955df3091466f7d4e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "eec75bdaf815a44b16e2d85f80a70502c57e57e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05f3b0f95eaf700a27746d6b922b6903e4764e72", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f002ae877a2239400dd30a2ba39eb9805392ea89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "baa3e86f309f5072cae42e64c43aa3bf2a460504", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "70a38bc379409128e9611d306daa480111c6e7c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "951f6aa908ad3a48004c8da640a4e50a23b4f0a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ea8d3845159bac9ccb3c46b21f4e39af681404e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78416ec5108443d8c7ad0e698cddb0fe79c14344", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b68b59195be50366abdace78e8545ca185528090", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c4a863c3de9dd6c54d4fa960289de0a04b5a0788", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c3561d6715fb8d42de77d977ea956bd98547087e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "032ae80ea33b69dba0921e63bb0627e04a1bc1ad", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "21da18af479a6a5d782a6bc02a7d500844c32aa5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d32e8eb6e50157204408b54ccae325f3448ee818", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "91609e1bddeb844fd4245832f220b4facd49969e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "356af4e312f72cd41ec8afaa0eb603eda80c81e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fbe1ca02cb86b1792b8c1ca1527636c8dcc2a129", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "59173db863b39c9336b68202882688e20a01f95a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "76c3f17b15cde8a6289fda2e41ab973df16540d2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ac6aff849a4da5b3d734e3452c7753ad852199cd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c60d921ad5e665cdc93f8c8fbab7a39d74f2e8bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9dba43a4373c696ad0574e1c8a266287e3093e89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ca92dee8f882527fe493b75f56616b53f3f00ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "94969f98e281a1ede6945a90777227d8111714f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9729a47c49130e3436bd08b909cf577aa0a36a5d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "630b1057c6ecf415ac181f825e3bbb259dd225e7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1ed5376d68747b577f35249c4092644a3c266f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a587af2a585825ad133f3cdebef9ca5f1e7773e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7943fe79a9ba3945fe14b8e309a129a51703b2a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "485d1de68d5484f203b57c86b091bf75c3f5e57e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "24bd2fef0180761f8a79f60af0efe9d417aca92c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "adaac0ff4a96091f951a7802e52e5b13aa983cbf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf44af787a8b6b00d41dc383c3cdd4ada6b6a017", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de8adacbff8135c837052edb20eb496bef189d93", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "efebdcb01dedfa5bb25488a1b7d1c686cc544ad7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c7ac69bc75bde60b470fcf5215ca710827ee5c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6f8c9bf9773e78ad51d568627f7030804af95e1f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fe2fb00ca00903048b84c7c0978d462c0168a1d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6da919f62ac9e818b34a42e78a308b9517efb0ee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "59fa4a089e10442dca69fd99228c44ddd06b7203", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ecd2d047e237690d45c6a8dc9a82ceae181e44d6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "00504c82809416e615fbfcf0b3b3116df7b84930", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "544ffffc530f95b78fe92cca140688b0e7e47745", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bec0ab2ecc864cab328e56827169a74fca1826e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5eee64e02f359413866cd658a45e4b480cff967", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c68862b888f201d51a76ff714c82ab5aa62ef357", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "80eb0b44100a9b71de6814c6c36b2ed7afa7dfb2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b7767f1b3627cc95a164582a55541457855630f2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34f8c195da5923a182f7fb1f018e6e11c5a614c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "82def2a7320c0c4463fd8064896942bb7018ec54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "714a63714f815eaa2628417842eb802f393d582e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6c1c6fdb54680f2750e9210c216482f9dbfb4d6d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "961478484fef33bc3a31dbcb9fd675f65f2113d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c59f45f792b717f79b71213046ad055b590d7cee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0da5ac0aba5ba3fb21fcea00f9176f53a3562e3a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7edf1877fffb002c04799495af3636d2052f7b94", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ae66d0f4eec0961ff90b568f847005147fff3929", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b1cc6e3481da2ebaa3f8e121686db610146cd6fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "091990b1cc22f1ece313589de6634ff9bc3b067c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5a769f052aa47f23281c32d9d6cafd407e6a42f6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "83bc96a82df66a2b8e82ae8e79fd4fad58d5c38e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "982677455da896fb1cdf3a5fa41a35fa0ed99666", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "624ca4aa637970415975f98286d2091c95c5024c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a900d6df4dfc18f06757717ff9d152092850fd56", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8c381282e8334dc6c350f58b28d90765a1865c95", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a981027157a922e069895b0c0bd02a06fb897ba6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7a4f4258caea84f05218f6e813e43f4df62e969", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "575d022c46a3fd38bae08b6f30e8fc75143b1430", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "619c743843da32949b24e62c5ada40d99b41d1c8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "db6ee09ee12ae0adb58f0cef2de6346195b10db9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c72a5000931196b90a067656d393a35c00e44a3a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5b265083f6abe5d26ff911f49b06fb1fa2ca94fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c41fd7d166bb525d3f26c32e1c0f9aeeacf582c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6194a6ff3f998602784a31f9d73bec4b2547c2d5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "965762eece3d5447110d5591a880da09f4ec34dc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "44b732fa83aa28fac4b4ddfffb40027ef84ba5ab", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "272cb4ed81028367597900a84b34365501285403", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dd4a77efef78736d6518f7ebd56ef27a10e7bb5f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "10fc9699f5a016e9557ffc4d02c60492ddab8e57", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "09e9cde7763855a86be286cfb4a1c6c76f28330e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0e40116d4f1dc108d39dbb602cd1d0bc0314814d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9139bc24a501b461dff273b04bf08173306b5d8c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3108b04f3cc78dad403865426fed69d63a704b08", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5afc1bdb48d8568484568d01d190de8d6c6b819d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4355857eb1feba9118b306a9192ce2fa4cc6a65f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1e3e6336915bb093293469d0107832d7a62f00b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3183d1be018656da7e709a7ed59310b7f9702d99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "04e8cb72a1a60d7fd49c071aef685c4b3a9809f1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "854a989642ee11ab3ce102ac03c0cdd43dca99eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0fff0fc690284496e94ab223762b0039e2313f51", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9ed518db776392b972bfa6d2951d9bcc67e1723d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4e10fb06cd558aa9f38424194fc9ade862a920de", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "041bf51ffbb8c30bae0402fd8dbfbdfcc72a50ef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "52cf6db1d776a1948019db51f9147916ab737791", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5009271df6d2cf41a29032f9455bcced8a270848", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ae32aa672487ed5db69ddbbf89541b189af39e4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ae34b558f91f6fb7a6477ac6007ef90013033bc7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d826d43a726f878c62ce73b3263cea321d293ad3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a08efa5901d31c8324efeecda22be93b9a20bc7c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "921dc161c5507618643153dfd6eee420bfa05d20", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93ad3232c14fffee09321887f99faba58ffe74e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "09875cfac689d25dfc0223241654f1ead8dd749b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1c1106ac3be07131a02775c3d2bd27b4a56c9ac5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "04dde7b7da2f20463ca11bf4aefffc9ea2e94c14", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d17d098c61bd8e5373881b2f0f87bf0757c3d224", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a0602552676b78061c4ccc1593ab41975cad9c1c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c73d5fdc90fd297f92952f9f55ac83a24b4ae03c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b62467765d69c599973e049a29d99f535119b446", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "00f7a426ef2fbed1c106c3c1786164bc68775ada", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "efc780e6f4faa904da7c9eb773ae4cabefa7157e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3a7cb132f0097c1a79c8e542372562a7a9ca76f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "da20d7e090fd541becfb373fe883116dc87c5d65", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "677e3da437ba20a223c85ae15197534cfe5c41ea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "57fb7bd6b5a3e9c05b429b0f3c406698cd764b3b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fa4c8d56ec3c87d591231171d3d0364db6dc662b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8b0eacb494f8811e13baaa988424cdc91c1222a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a9fb6c27e56a60a42272ffd4058badc0bf53f038", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bee6f11e6c3fee6bfbf6fd8360532a7e0490ce67", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0585defe5df0834b9bf5553394f4bcdc417183f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c8c4c7a351042039acd74e224396af174bfc75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4547c2eaf86a5c2ac06c6899eff91122689e21f9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb809401270db26bf48aae76c6bf210f9ec2520f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c5429c226e44eb40c10f7d3b96bd73f903a975e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e3de8bf7f2d22480fb30b826398d93934a9c72eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a9b37f521385c7d12c7c7700efbe08cba4fc11e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "857653030f3b0571f49a9502a5288b6035bc1175", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9bd1c7dc475b3e0a4447ec07eb152f966a94f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4daa2a0df0399d8df1cf1e9c0079fc7b21d339d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5af81f84992f5c538c8b3219fd67b08060160d9e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "465917556b1a1c1698107e33b9eb334bf44c2d9e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1dbda2bcc55f9297698ebc95da3c98c2c69f31d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ea1a2223af748774cf2c8a839fc125cb279c9e57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a5a78eb8ff17fd052932786880131cb0651b0161", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a7615bea1f16113a76fecb8e7d7669907375527f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5c7efff598495a37dc6107483ee497841df30603", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0d42b8b47c625e2309427220fc109ebae6825148", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ddf5b358d57b880f067335786761421722c07291", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b3620de2948e1b354cea2ddd78acd4d72d1ebe5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a944b3c6cf22750f2547289d71a0382377cd2fdb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c792e55ca7da22f618c2da7a2db714809d97df46", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "35458cfd2122daf5007cb62f5672e6163e39646e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2510e7ba164a75d99dfa54c315577ad6cb58ffde", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "593f4ece533a526a7e33fcc721839acbfdd2e64e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "24a8a4d8ab38a60621e91083290949a01a960cd6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8467c9d4ccf9f263d7991e4390735f922f108aed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3a75d9cf3554e423472c6a045cce1c6adc3cf986", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6a613fd462983e863261233de2978d725b0002ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "136b2bdd085913c38b22cceca0417de20b750257", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ca70b32698d506c6e9ebe71931a55369f4e62c58", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7e7a1ab2a514dca906ae648c4245e21f547e517d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f434bf8dcec9de52ddaa33cbb85dc69e19128983", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7670b923cddc5847c86b25d00e69988c2dcd9a68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "faf2d1c3b8ee68e7dc99f7ef2276a2a0d2f25064", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a55610dac8a46c3178a404d60f43526d4e2e0456", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cc1d21389ee205cb6872dd195189a412287ad1a4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f74454e40d96caf2eea1e07feabf51e2c9cebbe5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cc1d21389ee205cb6872dd195189a412287ad1a4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f74454e40d96caf2eea1e07feabf51e2c9cebbe5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "af4b00a8539a8defad20c189da1d28bbf8de6bf8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3380b5836a57656eff8da630d92849c1cad05acd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "af4b00a8539a8defad20c189da1d28bbf8de6bf8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3380b5836a57656eff8da630d92849c1cad05acd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cf12edc1098284b57c83f96e7d404da8d1eb5f01", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "88e9a058ff004ebb28a759974f6dc2c47c903433", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cf12edc1098284b57c83f96e7d404da8d1eb5f01", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "88e9a058ff004ebb28a759974f6dc2c47c903433", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "dbc6bfbb87a402f11a121c73bd103f8680d58292", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1b03e06943eb32f7a5d68a2f89325f0f76d90f3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dbc6bfbb87a402f11a121c73bd103f8680d58292", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f1b03e06943eb32f7a5d68a2f89325f0f76d90f3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d319e2350eca1946093a7ceee91aaa56706efa9b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "32fb811fa6f1c3119cc3b3af28b6d853439ed517", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d319e2350eca1946093a7ceee91aaa56706efa9b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "32fb811fa6f1c3119cc3b3af28b6d853439ed517", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "803ef1934160717434c33a5af173d7a38d0f1c58", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a60c7eb979999b60a4aca996a70ef88a304fa8f3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "803ef1934160717434c33a5af173d7a38d0f1c58", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a60c7eb979999b60a4aca996a70ef88a304fa8f3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e7b7174922bc210fadb2273d01a8152ee344295f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "635add9a0f143278592cc6603fe8318dcc630834", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f49258669ae6e2c566791f47baebc0f3e8eafd83", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3d3efa07eea2d3390f403efc86abd520cf845b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "89cb615e42585ee449192183f177918591d71b2a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e83962132dddeb64c71d6dff806fd29c6748405c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a94f01b6852e4d3967b1316c5e1d949117483ac4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "48de84c5c62a0f584611f7418a0cdcc598a4bc3e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "17e0180373a3d06f7005602ecec5966f602171ff", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "18e06e4807d53fe61c9a44476c8b77a6a6b3a9b2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "09207b086131e289abc87997a8173e8e827be8d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea197f76c0ff57309bb4e9447bf2e50d5c744134", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a62867616418195d0cff4db469101908b7689b0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fa60a4216f544c353f0347943442ac19d3513e4b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b45d27aebcdc663c155f94f08820f35e5d1e0b6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e416678d0ea32bd5a72d9eceb657fbd1aadfd5c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a62968faf191afae41d18a37eadd888cdbbfc2a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "903f997c631cb093a5310f5f0f1e1fb39a33325c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "77e4def5a76d5c594e26ce52f8815eeac9800c9d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e521a87e2378b549d96adbdd1e60fe79a5cfe12c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7cedce6b430233938072c11a127aa4aaefebfa7e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b422c8244970d2221abf8da3da12eb55249d979e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51e0badc7e09cbb0e7c5c35ded7a00b0e598f446", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "734985f741961be120a8e97befa28c435ac79bd2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ede52ef1020b858c321cea763b95a8b9244363b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42edc04c31d25db517a4d5054471629656bd17bd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0ede52ef1020b858c321cea763b95a8b9244363b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42edc04c31d25db517a4d5054471629656bd17bd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cce8c65e7c448f535fe9446792ebea89c1f705ab", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "845761c7c01509dda53bab46d40f48ee4f0c9467", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cce8c65e7c448f535fe9446792ebea89c1f705ab", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "845761c7c01509dda53bab46d40f48ee4f0c9467", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "babbed565870ec53a629960a778512036443afeb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7e09d663662670a0996c58522aa6024403931012", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "babbed565870ec53a629960a778512036443afeb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7e09d663662670a0996c58522aa6024403931012", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f32c1633ffdf50c9fe3210d68967ca895b725133", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d68f2cd3eafcc9bf789a757bae1ea5a8c8aaaca3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f5707837ba230484b812969d98a854f4fbaea2f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6a12437da0ad175e90d5c7b715aa71b982584a5b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3294f4b9307beb3bf6e934216f864ca4fbfe3bac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "62d5de00dfff475094657a4cfcfa1e3134134926", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fdba3cdf9f8384712ff604514a7529444cad9853", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7d6340e1ea2f53039f84f6ec9e622ec2e713af54", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "14a4ba49bba0332ebf76576403e650b0381df7a4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "567dfc278f66005456c40e26b25b08478276d056", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "faa35b4ea45f8373e6452f5029b35091f5820803", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5d506eb5fb21f77360d8938faa246ab6e123d10f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "27601d1f128df528184b2b718a65e99f2c4b071c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "56dd2a6926cf5dd757e9be2a383476623569feb1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3b1439861b4ca2e47c0869278850ca6894148bdf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "573eb13a1139adccd4378b94d35e35db89cef573", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b634721b0ddcd5f747a78e39fa93cc19dab99315", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bbd0cc308a31e98be2a747f21572ea7142a25943", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "800ccb7c0344d8ca2ddb6129bf3933f7c93d8502", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d02a7d7d2a50d84ae6ab8dfe1396c80856333778", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da4bd9236861a8aa8e3109894ce1409e3732bd65", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d06bbfe4e3a20fc6a61c4719b6fbbe7000716c9b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8539821fd0d3047081ec281425d6766b260ac86a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f2da5e6a12943ed6f414db47c24bc7462b875a26", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4f3cecb95b623768f420b38af76248289ac0bf21", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "56010722bf864c6527aa4969d05e22259e86df0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f23152f154cd9a88f11c626668c796bfcab19ba4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bdcc8215343bf016d9dca1b3b972abd2015500fe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e6ccc50c518b2ac916cbed05d8646f5d3edd559b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f3d6a2f68eed0ffc53498430a5d83665b1723c3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4b464951a7ed85e368bfea2ed8d8cbd76e5237b8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9c4bee7e84e1e0640a8986ed3318a9fb88971876", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ffada51f00990a78463be84b1aa8888ebfee6cd7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "75caf00b83456dab7cf0710d9aa6405480813d6d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bbfeef2414b68ba59eb25e789146ec4da931fc2f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e975de9d7d3174bf983644134cbc6fd4f0a6aeb0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb8a882b6aaf1492582153efce7be646994ba2ed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b812b6968ecaff0b6f19ac7947a1ffa90c30ca5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d90c696739cf09723a97634e102f035fcbc4eef2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de689f23303e1d9d5cfc984d36d54f48be614b4a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2a3ee0e27336ec4f4db416d401cbfb933107ada", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e63802c740f000634dbf175364deb8fefb08bf2b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6a21745bc4a1e5b1d5e64a175ee4ccaadf82c66c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e76bf064ae5bf6cce891cd488e9a2553495056b6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "36d26a12ccedc90e2115b5b96ca874cb3622850e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7b6fdb66fca9cc77be21d1b06ede0f41fee7cfda", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e4eac8b238dd133ca6c61b6c06119ffbf78efe34", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1805538f6980582ee66f532f2a3f1b3b3cf05abd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "329cfbcfe22e9588058f14bd1307080386e8e5d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5c65af0af45b9d185a694d757add4989e7caef30", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3948ba1fabdb73728d48944a4494d9bfe695f7e9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ad6699c592159db602ad21cd97512eda05674234", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "543ef196782a95272f7251c0d92b5650c56c46a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "de69fe7adb08d1dbe2a00e2c6986299e8e69f2dd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6effe9128ab83b4c0f722e156147e44363935347", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3a5258393deecdb7fde929cd5dcdb6704ffc9d58", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ad1f5cd4ec0f09a472901ffcd4eb22a828e98b0d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8441bfaf72849b6e09ff281796f145848ecbd12f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4d0dd35a4dd97f8435307690a6227f292642fac4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b74f50c503d7260ae3f02a094db89055dc602908", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fcd9edeb76e1002363acc6f14bb147f179ec307d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ce9fb8871889882ad737dce3feacd32a26dad4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "92b53ec4128a5e913c84d7a022c79b9964a06922", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "517ff3bee6d8da1d54b64553efc8955f6104d0c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ec8ef1d9c79b2a3f028427edc26a2aa72fbd2989", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "16f0c1e50726951a4804dff86d2c61ad3d6d0fed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5879b76781a71f53a94a4b46639131b2c206bce1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3faba478ac72327ffb475ae32c4a66cda979f13b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66a8892e05bc6f32baf87b3d0b998ad5cad2ec27", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "668c03caa8f9ceea2343f3b091258b3386b5aa37", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fae1d48dd9686fcd7e3cfea529ae104eb59b32ef", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2f428c46aba489fa1e651edb69d7298448ff12e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e4428ecb6ad2c7df3345567125d671dc93c825a1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "152c45f9c76454c6db3b323bcac4b855b4988bd0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "99f0b577bd077893f265027937ed0efbca0614ea", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2cecaa715f5b94979a3c35d13e7698df1c7ce8eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "72c94eac5dd2cd23837b47430da59fcba0980519", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "16b60e419fc5d9c830d9597ed016f3f58180602a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3dc750d878623764e86bd0ddfd05880cb12ef5f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cbac54cdf28b01d9fa3b4beb2ad7873047c2012", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6c35af074ff3ea926a12f319738a7263f1c72393", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f17d95132704e61c36e2dd6f5f0216f0858d3e6c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "27e60e42bfff2de4712315dd324e0509360dc5fb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "66705f0017e39ef3519aaf2fac92b8e62454310d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "af1931e15b21727efd043a8e3cbb07f3ab2b9b25", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bec0b83a2ecc577786c0d340c981c7f6f31437d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b77fc548cf2c3cf531c70e59ed9f5c92dc920a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b25edcb155407ac3af0e1ac5c0e3f896a26171ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "90b01700a464289426b5d7dcb301959e0f50f408", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d1a0c2d8904c1626123f96e555303a84d7a0d638", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8d3b2435509c7f4ce78b9f27556d0330147a72b2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "966d7070bd08d8e0969092a5149ddf95c174923f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1082dfed29855abc490d191086e84ca80f3d146d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80f96aca094b78e5ed084b2a8835a3e25b496763", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9a0f3f1f6f8cd0873eb807641453827e9910f0d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4af5bc4e8f3af26fa48e201f0c4b326dbb8d7a4a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "06c08f8e7260163bc977c78f5f022d3953d9645d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c382b138397ee096f57ccb34a9c3a1dd35ede729", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9f772c26f9962879f99a1e0503e8f44c49130085", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5e2a780a44c70dea88a28cff17b918e2872425f6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d858108bd69c28ed7679a49245114a97d9754a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b417f19c4a5e5e843ff4c78507d7558242af35b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a2a1549bd657ea813f3bb8dd2c1cf6371f27ed0e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "78fa816a407868842897f8efb04ecf33a3b2be3a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9f38399d679575e510cbed10e4636f3501c08364", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "84da2d1ad0282a1b9b8b1fbad4835dc51c69e371", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "be41e19c601c72de7312d9c5a3fb237b8c94917e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c40dd2acdead8bbb45fec590563fb7f200349091", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8f0d401020045753f68b1c7c9443d6c7a676e981", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ae554178fcc91fcf490e457311733103c27171c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "91bcfd73b62db74c02ee63993d1c7bc2743780b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "69a7c5664ef9d353e9ffe6217bb598a515214ed6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de850f62915964defd2ff859d5ab2d2c7bc55593", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "06beaa252985664db4c8e22189cc146c57b3cf0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c641800a375ae4565ce03384d6bc055eba2ad450", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8fa2ac22940ecfa2f443c0f6311034aac60d15e7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "75515cdffb0711b129f0ed247d37eb8ba3f17f00", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1a6d1a5e134ddd4e2ac0ab06244d0d76c4a71bfd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "de65b8076c2019bee4e221c02b8c8c00f6bc0b0d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d57c5c74a9353b22faea99b0c39cc36df451706e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "74dcd70b573184d4fc2138c2734bff881ddc6610", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9f772c26f9962879f99a1e0503e8f44c49130085", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3c54df720d2caa8dd1dbfaa3fba2bc46d0a0e4f4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "10ff0e196e5d6db4af3658cea9f2ad16714d392f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fc1f91e42def9fc7ce2bbc6663bf48ea38d82413", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a2a1549bd657ea813f3bb8dd2c1cf6371f27ed0e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e04efc268b3c7f195a586a3b39525c6244dad1b9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf36ecbc55a489120bcf2316032a93ff19580d21", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "19a4d66c80372e52c1963b153eca0bae5259e9fe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "be41e19c601c72de7312d9c5a3fb237b8c94917e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e6668d667e0931b3d596f22bf65d17b2cb14a8c6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f938d45499162c23109a229d3e60aa787b76a2a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4707497debb51d9b809144c742a7887a8429f280", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ef1d686da5b62be6c063a08d88361d89080131d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4841742e6fc30f7cee3f190b44bb8954605699ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d00155e9ef8ae883fb2a6b570191835ee005c250", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1ded15ca2713f3d3c92f6222b58803d4bc5bbef6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bb9422d1ae8da0506c2199e814ad32e7d0041502", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "afde24be8244dbdadd04e0b0cfd68cab2dc8713c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ffc417f9e6db88f3990f4696a91fa77a43cbb0d1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "86698cf5875d00a4383ab27891216c0ebe605245", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b7c9c2725ed196548342daeaf18d9af3160c8879", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "77538241b431d3550d0693038fbb4acf650eedad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d160b1929380e26b228ca90dca2222edee47c03e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "421ab64d73d7f13c782e2fefd7d1bf01b271859b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d543cdb978805df43a6999bcf1f073577db63dbe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5924bd45d0b523ff6649990d9245162a51bf2ed3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "516d577536a590641f99760539cfa581a0b808ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f52d9593e7f718034c7f4a29270ca1640c476023", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acb7fdf6190312d3d90f5c3769e912c750c5503e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e22ded992b58268a691a1292188b26f1dc6f6744", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a0cd1cd63a162781dbc7e574337861785724b72b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "85f8401d3443782ebe564c345bfd31dbfc67e0a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "12f31d8f3d0b4ff3d4393c9ddcd082235fb46fd2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b48352db4f6ab9ccae0c649f23e2e12bc455433", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "515f65542c93d0445832138e5775bb8e502df7e7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0e6522dc2c10ded30ee36422222595771c1b552b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1a975044c2cec9efe560ab473783252939777357", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad3fc8d3404076bea19f3178e22ccd7272ecc5f2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d98ab3dc513bd4d2309f49a4abf54b2b00a4f203", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3d5c929396104aa77f941c27a5f606c71e891782", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3cffafa93457f4b297e8d20d7b0bb1c494c3a0a9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6e8f46ec5fabff674d83d231fdefa802d0db6077", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7e4d494d5e4b45b4c154cd7208f961129b9dd5f2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "844defc67f46b7a68d9b05c8b54e44c541ca462a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4b167ddeb14b5c75f43f992db4a7368b71acd0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79e402f57123bcc1f3fd951b5738af31c3b6f703", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e7f32fc7fd711aaac90fb3efa0712870f2366bcf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "535e280fbb9e3b4fdb1e8109f40bde60ff4b21e4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86b11be52dedecafcd1a3b9fc4a9508722aa6f2f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c4d602af7de59d9ba2ab2926656aa439a52115e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cb57dede3d812ca28a5df15223f79f78a973768f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c592bdc8552330ad00636196efdfc382ff56ebe8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "64545e0854d2f9e1981608221285f9bcdd0186d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc6685c5b2cea6d3df7c54b96661ae51cc079bf4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7e94242620fa5da09360e5aa0ffd325b285ac306", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "99a4a62aa664c485f53e1cd816ba03b4e87b9da4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3dc333dbf1f9f739558a56dbebd2e1ca734bf1e3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f68f3836023c972d9b44f9367da7a1edc565bbd1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "68d84bafc2823d2ebaf90126d78764cfa6af4c31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "25595c779d05014a50c9a9638c4a8eb8b1d5fc57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80c943fc9672d6a8d6fc32b1877dff2e4f3a04ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4e0742cb5c3d78d6d4d1110cfc5ff4b21a1f05e3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7b70835a5b076b29410d3084d275364ecef31443", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a66a50a3e19dad74dd1a7544cbef1f454d1ec7d1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "15d804da5394124c6bf65ef758a8bf3f3c52afcf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b36e02253896df74bd3eb9d38bd1ea348c5c004d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "97227b97c534ea878c6a162a3885ac930e87c737", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "126813b2b4f534ad10fd075dc73c73cdc8f260a7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "925304207d5361c4f2abc2b58f3d89bdd3fa2194", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c42c674be8150722f0955f320750f2420e0a0071", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01ccd69dc126d63f748f16cf3c002a0ff9217dd6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1a90a055f821e26a1c23107618e029a6368fb35e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c41ae4e0edd13732748bbb80e8fbf92b32ffc65d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "000a6020f1adb4a1059471f834bcf4628ca09c2d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "553c9b59f83175de25ed40ead8c15d6eea11bb6f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c9ebe12df3038eebb69e24b9de61a6aefbd046c3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9814795ab6d68e3cc043e1ab2a85b50ea1c9a3b4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d0f6df9a5dd176bf23f844c2395d342bc7e8ed92", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dfe528e175c91819758ac0366e5f3404f71ca8a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c9f56cf246979236081481a0ba6a243d69a4d853", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a55109fcfeac615e1d081dbd674f7475180790b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "455505870298dc8738a31ed773b6ef16718f20e6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3127cb787e644558799cd12ca0e0329c65e9604d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3f4a7e0d6212e89bbf0edce72cd0ed461c6cc8b4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c90dceb5fc67f86b5500ec1071915a3ad21fc33d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e8ebc8e50908b8a76fabf7db1ff449dfede22773", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fd1b9b4537840b0771b840b7c4e98c8eaabc5b98", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7af8e5f08f78e72d87fbec15b2d06383c504f423", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3501774f430d64eb4f37134194890d500d24cdf9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f6cd8de5c35d5bae54f8119a85d80c76f87bf8c0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c2c2f1bde6624255e5c27b20c5b961aa8c57d64f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "919b7d9489915941ff371252841044119fe6fc92", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "301f8888332e827dd8316246750231556e4f04b1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "acacd0fe256097228aba9c523d762f470a29b989", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8382fad50800f38a93898ddccf9ba199f27320ba", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b03aa64cc0f25ad6be5359fea9dd0ccf0f506faa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7df7949784f53bae09ff521ab6e4252185571376", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "17218dd0a9dd1833bca1703f70783da86df6e9b1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ebe9c1dcbe031154b934bbb2ca90411397866312", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "84a4d39806220a0ff1c31e7ca610bab5d3d69b6e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "150f6682c7ccec59840f1eda9153335dcfda3831", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2a5edd280f9fb52c0839618fcf6c9da564860b92", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "29d36c151c8c001de40f279c7eb7e48ec392f100", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fd6a512e129fa6ce6829b89cc01a2c9543f32c65", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23d7cc9c9a7296ac4aabaea41aa44aae3f00854d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "80827f114daa36a41cbb098e3291d194a0b5341d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3616d14d656d8bf312583926686bff617be44556", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d40e1ccaf04b38fcc39bb3c5ea353ee956da2e7b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e57a3c4c733d8087f2e87fef2ee9aafa96fadfcf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a28312f4fef919d6532f1bc215b5ee7629ac5e59", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "825681e7ae230ecc1fedf6f7e1a9a0c48b89a2b0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "77cb873e1828700f0e699745b6aef7522db620ea", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c503c9554f974abbaf136887c96b4e059d5534e5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e8a8ba54fb773651cb84409442a6c833142759d0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c71f72891a04968baae46ed7aeeac6505fda9984", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8476678449e9698182f6b20780d46ea2cdd0f7f8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3b1f752ef7894507f067641d0b70add1122dae4e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "860ad92c941fce85147b7de5a3e0d9eca0a106b9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0e1a1289db3e04607be4dc4d099c4d7343355f37", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "31435aa6c1bea46e56c5132cd922fdfa8a5415c1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f4e1ddbbbfba95f78c3373939d76ce06f3058e7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ddbf80ab3bb7815437088534f2e9248d43a697ff", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1f61b6ac33266b3e3f395cab38e58ec907c9d559", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2a07d5fef4b00f6a8854ae9a38f25cfc39e6f66", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "720d66fac5c30f948f2b5956769d51bc61d3220a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fb20769614408f398823046c30277c244f3a83a7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4684785aeab45f8c487324acaee758b651eeb4e5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "148c9b1b8f37524f28d67778da09c80f388678ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "26e70d5fa515ac1f6bc6d30323b349e9abad3850", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "822fddf9c26e7ba207b42c1230e591ea5ddd8170", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "897854f7dc9ba4427ba9d4874cba763827d210fd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a79cc3cf32988801551ad8f5317d8f777cfc5a66", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "26bbb06f4774c5ed870b79d732f45b8af8720c9a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c55de678d9a00565236cac9d36e97220235998e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9b849a082ccee33b9963eb11e32c07da1b5d4f0f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d5fa570f2802dbd9dbaebef060d1525a9a67a852", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3ed7fb74d905da2524b4b761e43d795826aa98e1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e2ccb8adf9f548fdff46f24ba637aa79a9f189b0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6160e38fed66ec000a238761add3a830e0825664", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dcff14155900814dc4dff5df7a5ce3bb8290f2ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2cc09fe483bb23873095865f0c8c24fa85a28361", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "574dab6e9f1363a9c69fb4cd1ca840efaa00532a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45d9b5121939e14de880fa33f742c0b1cdf5ac85", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e0554cd6c36486077a362e54722a6d62d609d36b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b43387c54f0d1797a76fbdff9b070419e5f5041", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "989868232ce71455cf3847e7e50c6e340b25c2d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0bc0b370c29b866f8c0823925190826688fbefbb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bac7e7750b99de710066fed1a3bfd8a30fe39248", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b29f1bed959a8ab7048d7e012222283dd3c77343", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "add7c5f290ebb2aa3a447c805d7a2c1065f5415e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "53eb122eaf7834113f32e14cc756c3bf4be6cf84", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c87ec16153a6b00b0a58f34a76420e89f21de739", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7ebf1b4f8673631e8327c16f07aa4398ff951a45", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9f9f7632c999dc606dcd128537f6d6a7efb35692", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5886c2d6bbe32dc9ef4282cd18585f894c79cb24", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5e00344ad89becbd3f9967889f3e4509a064e985", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e6ad45a98a5c22b197fb81392a4e6cb39f8e5b53", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "376f6acf52b2c031cd2c0654646b219041df6c2b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a40ed603a160ef4402bd8cb82fedaecf3f362a9b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4475856716142f2d22d7bd5756c0adc563fdffd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e29d1e7ecfdaceca922541e1c5baae8b7942221d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91fe818ed7cad94107c1f0d9aa924f6531bba05c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c8948f4573a13b01e37e53fe74b2590c730118ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "508b23dbe4302e6b6dabc8e32dd6ffaca474421e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "af5aa43fcdb38fcaed7a7ede0b028608537fdd60", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "834edcc26914f1b99fd787252e1aa3064683f0c1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a79fbbb453e09c6120ded1539738a654290f1116", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a7d77d03569ecf2ed7a8db97a609840900d80e63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4905d12ade7635303572f41e8a4d6ef047f85718", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a7d77d03569ecf2ed7a8db97a609840900d80e63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4905d12ade7635303572f41e8a4d6ef047f85718", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a001ec66ecc6d8effc6c889e4e23c20ea82d1f25", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4c8b6910ce3897b0f953387ea463385790d6a45c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a001ec66ecc6d8effc6c889e4e23c20ea82d1f25", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4c8b6910ce3897b0f953387ea463385790d6a45c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5d45c97f55c0f9021a92cc5bea21977914cb95a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ef0d2bb0c4e1fd62f8dd0117e80536fa56f01bc6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5d45c97f55c0f9021a92cc5bea21977914cb95a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef0d2bb0c4e1fd62f8dd0117e80536fa56f01bc6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b54d3dadce48d1dafb63199ebe10ec5d1cb5b4dd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1d488d204fd3b0e6afa74fae2bb16a389c237e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b54d3dadce48d1dafb63199ebe10ec5d1cb5b4dd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f1d488d204fd3b0e6afa74fae2bb16a389c237e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f3dacff589660b539496a453e3a6a50e4ccedb2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7bbaf0717a008fa20504102ea16c36c48562b35e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f3dacff589660b539496a453e3a6a50e4ccedb2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7bbaf0717a008fa20504102ea16c36c48562b35e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ecdf8baadd4421eab79b9ce0ba563913620a205b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6e837c72d39680a4a8b30861ff605fe00c7459d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ecdf8baadd4421eab79b9ce0ba563913620a205b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6e837c72d39680a4a8b30861ff605fe00c7459d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5f90dfe34190b54a35cbac3c647f881f60473f5c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4a6f72e31b98730a5655a822cc7f7eaac26c7f09", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "13b22c9c76e9fa12028a9295a963194e3dd28612", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6d663302fd2efe720d1940eab98be2b304ba3149", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b523919576c345a57a8a073ca5fe8d548e92108f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "84bb7732940ee18ea18975a3da1a36e44cbc198c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "196ddf4b92b4b94c120147213b547ceb2ae80515", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef15f94651dca2b167d438f75e8c106390b51bf0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b815cf706054e03764144098922985a5e16494ea", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0af1ffb6659539d2397c6594490723284337618a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "275daf67a2afeb0d32752b2f97a6e8b294116633", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "680ebb02f956c48cd89025134eb3bfbcd63def65", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "73851b53d69acd274802cf519e16bbb81d0b231b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "43cc69d61dbbc481ba240e8e8c12520b093a7bb6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6027d3ff3f759fe95c8c1684614d9ad3d8a5c708", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "316db7b586cdf185d249442c6b73bf689622731f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d6313520b860aa3e22043ea2d807aa39251e5faa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2ba200b5cebf99d012c9a24339df6614975272a4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "812a72b4f858ed797d5ce550714c4a8b6e4fa9c3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e2d832a26f8537f5dacd6e2e6a60f4392b2bd793", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "68c80ebf0cd48b3942df8fd25e5ca0531e271e45", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9b70c28484d1a9d615e093fc40cffbd0f84a9f60", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e47e960e71096300fc9e62a9d064206e8f71374", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8136caf0e82ccc0cd461bc1a0e62e01ea3271c07", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "52a7a2a15da4fe0a81bcb4fa8ca706e47e3fb2bc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "675c5b18719c9a1d1c25d23fa7faa96dfa0c59ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "52a7a2a15da4fe0a81bcb4fa8ca706e47e3fb2bc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "675c5b18719c9a1d1c25d23fa7faa96dfa0c59ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fee15eec3c328338e25faeb33313fcdc46a2566c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6a64240f7f5fa447f048e3d4a15a62f629cc166a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fee15eec3c328338e25faeb33313fcdc46a2566c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6a64240f7f5fa447f048e3d4a15a62f629cc166a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a477089f4b7b973b765818e63256eb077b902c0e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e1eccb1427571ad32b19f985db3de85e1b0f8ae5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a477089f4b7b973b765818e63256eb077b902c0e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e1eccb1427571ad32b19f985db3de85e1b0f8ae5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c2bc64f7a5d6f17ee70a7d18b28ddceab93340e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2b8b283fdac824f02fca9d272d44e6e9ce5fc027", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "878b25bb3fe5834e940898d68a20b52b24dfe367", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ff0c9e3488d72e642d250a9450c78ca2529dcc65", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a099a794a87bdbede451d3c79c6c2c67c587d0d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3ad0cbdaf86fdfdecc529f0fd73e2ba7deaccfc0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "01b3e0b2c172625d09de613491694121b5820dd7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a65bc819eeb37fd31bd95bebe22f15ba8797edd3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7384a09ea3e3ea8725dce9f467862e6225ca28d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0307c5fbd337ea905773a0e42626e6f865c3b4ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fdadb4539ea5ddfb9c3055daf9033cd518dcb88f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "18ee9e20311754ad2d2f2d1fe4f518a604676f27", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4da6357ee7e7cba849811a8e49338751b8c08d51", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d233503fa9bdc624db8ac78a5efd6bdd490ecdb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f3fb23137b601787ba90bb4340c992f75d5916c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "183ce17ca2167b4058461f6ff87e1a6e1723ae80", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34e798afabff67d7b50861cf23fea9c2749ff1a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "303ac209d43b323783a4f8e1aff1f505feece122", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "41a21d5d5edf44aa121d98d277c855ed0916b5a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9618d13d5ffd649adf8b6a0d8c7e6acc7ebc6580", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0e14eb2ab450d0c4320495114dec682b5c10ab8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "48cc97fc0478408194418b817d0d7bc245c08beb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "662bbc334da25d6a225f20289c5f4568f00a9ee3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dcc673cd3142cba535b145ead407bba352bf9e88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c67c1275ab19c0ce2828a6b348fca42a259dd910", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e9abfb1672d1ef4b03b00394ae2badee2f8762ed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2033e3d3989d057eb2b58736a1e16dcb51160e3d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "177134621ea4ff7e6e706ce594a9146c36a498fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ba0c3b8133721880e388f99b3b3fa61c7a26c126", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "20c560c216c79b2cacfc4ac84b2f62cc1e2e5e7c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0b8684a947a5d05bef944a01dcf1083be2cee16f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "17a7ad392d28c51af6a31280b0dc715fa394fec8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a326d81668429b29db0239b1e57cbab25d41f070", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "64375ba842c80efddba640f047410712c011525a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3c83e5d7c4751f61a889e0b927f4851b821fe6c6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7698307be96a4d47d4377831b23ce256067eee0f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26bf32a84b1979a169cc7fc66e8940ad146444c5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3dda56d1b9cd1692d421b8aebc84bbc41f11fc97", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cb8d14d918ea44495fe2155c853d13b11d12f3d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a6a7ae2416da1bb3facd94c868f737cd153f6ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "112facfac6a8aff33ceb29ef1545066f70366e0d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ff24c7be808b1d7e208073ef164745438133aaff", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4121d9068b5f0314d66fcced8c4f4f18b7e199ac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f634f8fd997a50a58ce6d9957f6910ed8ed9d726", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "092f4a9762bad1b57f09c7a76a3fe5ad46a03311", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1ae7a4116cead68a97c9e8d53951c81701dc7cc0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84f813f780d587b2bc1ae99c69f443fdeec0a47d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a09a57d177c4405ad477232d93f08491a7fb550", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3ebac5467ed83b05aa1096783828c40b80a97cdc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6c5b8e1a0c30c7fc2768e545430e7b85cb091b48", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d31a4489eae9722af6f21f53ff79fc6dbbb432a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5cd54e3e5a3e8a9fe730c07df7414fc221716bf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0ecce964b2dc976d15b703d87f4e9346aa794bec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "562879dc07a3f579f6da620e01c39f1a51fc91d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2295e22c5fd9b1bed361e63f54af8017d7f0c3b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2710b5156564560c01d39e906d1d80752f4e814d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "04a2b9141fac3948437ba883036b115d2a3a797f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b8515012531bab4be5e698de6c98af5ef2337a09", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "05b2ae7cb4231dfcad7497533df8880d254f4906", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "193c823488f240012c53e1d2d71922b476fdef4c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "524a44d29176ca04601c69b5f4ab92b2d6f62d4c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "179f968979e19dfb26dc8c5f9b9dfe76c9aab147", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8627af091b66ee79ea99708c7ce13b3ce1dda754", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cb19e1de7f7c6f2c934ac3d07f375f3e63ab351e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6cf3a068f10857440cb42e2e2a6293ac2dfd361f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "98c51694c90f3a1c684acdaa1efe73d06a9591a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d402bb4add5204854f5a885872ed4a8788406ec3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95fa1f4dc427c1e5808e526a0730099efad3c53a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c92a2f0370a2a7d26da41c8ef1df85bbb39de0e1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7790cc01c470943243f51d77406456e2206a3857", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d237e9dd8316c09a1d3f2f00e25c104f1316ac37", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bfd87160ab2d3e88274f7c0a258a2ed6d88ef12b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2d4d1b2817e1fe663c5c95f392b3ae7407ebae7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3fda56fc3f3c2cd7a694ee89ca00298d6bad840a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3703148b2b00529620f8cb02a9ba433aab1538ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "16d2c3be07dc7c4a34207692aeecbdacf4fbb7f4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c274b1d44bbc23db88c1029c47cc7be6d0612500", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a34e186bf702e37093f7fb03f699fa61e1499c82", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8e5291c46aa6016899777f84ba4c63e5146ea1cd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "285fe59892c4ba2717dd5f0b16c20706a96af4ed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e8eaa4e05397f3977a95a5b2dd910e9a4919fffb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7867d9e62ab0babaf9286d12278a83565bd52e44", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "868b95fcc4f64151f86c050bfe2ff91bfe986245", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6324ab9cf8c1bc8c0bc51d140e8d3b101a8d4ff5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd85f266321966af88dbce51a9b86b4779cb865e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "48c152b9fc9d6a972eb496faecf6ce39d8e2a9fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd792758c3884d5480ccfcacea1df30f89e55ed4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6216d94520e80cb744e6762d42ac72a9effae516", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0ebb7db181b54cb0d41e4985031093b87d9c2443", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa56a9f31929d2b2cace1047d0f4c4a11840b23d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "54563fa30aeaed04aa788d59a3d3f4eb24c1b005", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "825e949aedfd346a3a749d20fda073ee4c3e7037", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ead04f50ab723ed51d547d1235c678579e957de", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5f83f28538c5f0a20169886d733f10f36b17cd24", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "280cb145eefa0714305b06a8a3b723b4809c4f88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e223d6b6301d06e893fba7fdfae89d6e4fd70d84", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26754f0ab7e7e527138d9b45042f825b259241c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80c3aebcf623dc7a18de22b6a9a684894de9e95a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "61bbb758175bbb79a9aeff5bb480e3f48a869ac1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de829e8d2558b547f865809cc24d337692de2450", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83b786173d4366b7a4770d993ed1f6b1f03d9d54", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8beda0200f1c3e9fbb2d487ff3c90274cd28b35a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "14d37d6c5e696b396563bd8d22ece0bd6b0103c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2684a9df213b1a45083a11d55ae18f4897b85a70", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb7aec956d08ecd416ced996bc45ca57265edeae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6c44aeae9c89197c61045fc0bb277836c4c5c365", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a65cdc7ba2b644e17e09f0d63781c3d9d5e25703", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5657f01fc29106ea60fc166bc3b000b219dd8914", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fba6c4cac42a740f0aa2c837ba94e43aa2fb074f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "981087eb1114d5a759c4b0a880b396af25b82e99", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "94e94ab6bd2fa036273ba57e7542353205adae91", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "604280b647d738c29eeb1eb7e23d469c684d9692", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "56be0954a64ea5f3ec28f304987c67546f5213a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d813780e59ebc7e7ea9284e4344727f619167456", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e545b08b224344500d89abb6d49408ef3d2d3e7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5fda4b9132f19fb9010a1bc5f97175fa9d39014", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c787baf986d9a2a0fd62c89c0107d4f913f3dc44", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad87872e3252025352fb98f15c972c152f5ed837", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "80f4578dc4b1039b6329ed8cd3253dd1807167a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4441a8598017dca1c23117d4c8b99c00b60b371", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b6a861be12e18e56f9e2e1c7842fe5d65a6bb330", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bcbf181f186dcdd02fa141eb7040de2243a4661f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0d83766c3e278c3ee99d30da3319531922d9b738", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90b4cdedaf751de5234e0befddd00f342a3bf6fe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5c01c739d2ed5969c23f806d9bd61a715b78d957", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a48634679a701fbc184efb2852bef0b784990a34", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bc0b5695d0eef3e1a518a80995eb53f082f71fbe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b96856979796d204314a6a302a7d3a7596b0dc24", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bb82a3c8955639c135d8b5e63eb1e5e9650daf1b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "46854a689bb6c1ca7eb5a7d6a5c1458f5da8e9a1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7d436cac43df2b707accc7e6b14dfb6ece87402c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9872a4a19ee5e1976d892abd9ef22d632373a9d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4388060e7ed9112ff71a6b58c184bf4d7fd8bd58", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "37a65d8c229e9fef58d8e81906b5f183883364b9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5e90573d361eb2bb4d4a8cf21c5b5f51469c71c1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f5fa5c07aa1fbef1678821b46c7445daa3268720", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "14d22c3e0727bf08c7e113c5d1c07fa124e7c839", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e469e39a7ef8432ccc2e6b9a6fa5a04454053041", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0cc05c9374a91056b92f3c3b06e86a53ac7ef27e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7d54ad17ba52ab0982679fe246cc71232b02908d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2d1e45a93ba021354e3db02b0962e32d6885ab63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bfe4ce3ba62ca9b83ce2beb929c484d302bb21bf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "150650c94195be4d255c719cb48c14e2349d68a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "452d51c8672819d6d8e4b515fced1ce5de36471e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "516709befc073c7a99a0c44ec8535ff8b01735eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "73f1f265d936f335de9ca93faa2b52c39b4e793e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4972ed8997c99d7be3928d044e6ba4235d8dcf5a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d10211bf53b2e2770efc5dcfb8e41d05e1eee2af", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed0d06e306062591c7cf8c62742202923db6f2fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "954bb9423fd1ba0c2796b69f450373b5958c4fdf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50a5562b25fcd1b7e3aa9b7b1955357fd7cab645", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3ca1a0b1f181fd03a40a9519c2fb59a95a7a8e03", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3463d310dea350b0555471d5c509b177cda684ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "91d71a09e0a7fc72d239c9d2e24b0966aa6cb15e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4bcd3128a05ec79015d436984218805e579365f2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "55137a140f2c7a656f8a03d7c953a46ae743cc63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c225945b1f351ebb13ecc060babf21f8e02a1c9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cc325db13492b61cdb7c1ae0c5e155acce0a724c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "916389ac4aed5f3864833cf8a18ba5cf69bcb119", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7dc6019054d992122ceae4f3663c807149cc112e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a926720c91bc9ab057114ce5945db84c26beaa42", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5cca4bfa753a946c24600de93fc49d1610e6eff2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bebcc1eb994db75b2f7d984519632ac708ca1b1b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "36a449d14f6d8659f48e00c9735b408e375bfbf8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3bac4ae64223f8df6560bb013745c0e7c917bbbd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "67de0f420ebb856080ed7340164a5780f82120ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "78661bffa62b8ace211cd1cee033debe6bcab54a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "06a2046b8029840429c842f8d9f78cc5e5c06fcd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2f6b5a5beb66fd3d42e62bb68010e0b1fc4aa685", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "43d1e8dc64afb28306dee2b2447da0cee4cbea16", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "221cd3c18f916f753f7a6f1488268a1bb3a36d90", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "93dfe008b3ef0618fa0dcb86548f971d7266ee4f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c986d5d59177571e97c64c97fd042a57fda22b8a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d6c47e0f69987a0ff583df294fbc3e684b2ed140", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c32dc4dc8b58eb78dce0b1ee3fac2df5b0f2dc4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "277b1e8ce796898e1d802b08a2c031bb6006d386", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dd11fa33b8102dccd5bf74f258027e8fca48bd3e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1dae0480aefce425aaa70d28aef7341ecec73419", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0d23368d98a6a5a2aba8222684d6c8f678bec800", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "750e420c9907ed387cb450b3e8dd487598c38aef", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aab12667ffdae64e376cce3192a5047c741d00c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d56c054bd516b618a1c9ea5bfa3d0750cec2ce9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a08b1040acd3a12e70a2274b012f8c4f74913f7d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1dcc22b1116daf6dfa9799995ddafa665fa2e07a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34864317dbbcd682c06aeadcf54a03941a17c772", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a91964f3b47d2fa49e4d40b13ea78313389aac14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f7ada4f272d97e988996d1a1531770cb9c31e860", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "addf3637a6f8137dcd8629c451f52d386814feda", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d8e6465844941211530633a696b85b4cb25aa588", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7bed72563da75f07ca5c47c2c0be951acdff9386", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0eb612f37fd3b75759bee17bde9f088bdc9426c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6c6f093df04bb7973429ce9924d0e6d2b39f1a3d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "14b6350a2376da9230607b537906188c0073a82b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2ebed8a72e303447a3267c5d2e363a37cea19212", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a1b5ccaba8b5adfd927621d7f698eb24a538def1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "25148ae2c4e2e437c68ca0cc9225a06d9091d1dc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "878ab5b10171ce02444769c044d89fb5bce982ca", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ca356e7aa807afe8795c72d04704fc26764d1b9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "460c86a55343436e2207cdcc707a9e53563b6ed1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "188408705f4992db07a2f18524b0c0facb8bbd65", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58ad5749b35355c08b401a6006d526ffef2e11cc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "088a9420f9725f88ed96f19c571197aa549d7297", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c7798f23f688e0f9e826c8e04660b4b905c41d39", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "253476be168e68ced2a4b7d72debb505e88b0d4a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d1bce2e4f220f17c8cdb7f5d8352be0f4d0d564", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71b7f8095dea5c9e86081460e0cfdb0bfc9f553d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58b001025e4991cbeb646363043694140b24a784", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3295163385dd939b49ef626c7c921ad1e76dfe88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b02ff5aa69b8b09079031efc44b89bcf018e194e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5690f8eaf4db52984179082cd754c43b17ba1ac2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3cf4921291e1ac0926f7043994ac7edde1f10488", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c4fcc34a6cc8c070ffa3308804429c2f5e728b6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f844f680ffdfc6f7a1a17a85cbb6fcfa4dc35d65", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5ed260e569239e092be82ae13939882c68476ce0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12f2487b5b0a85a7f9323b3a307486712e5c2b7c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a9bc835314529b4fa6824d83cfeec78caeb00c9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bc972e4405b65b472983c6a674955d5509fa8d20", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e91c72b71dff9741c8489de802c8cbee711500d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "99b7135bbd323cb7a28fe3b0eaa76705142b4241", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "916fe4cf001aafdaec7c69ad7fc045d894fb576d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "664cc6844206af2f78ccfec256d5e50e7cd3a12d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3f5f41f87e99bb6bc26e91dbbd35bd5b7e776c9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cd1ee43d04a589ee68d519390b5c4e285ebc8716", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9b48b5fb531bcb764969089b8364522f8da215d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1c3f821c9f887c8332a1b07cb80eafa91bd57635", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4a3b151e423d4c4542ca575f2fb7af5af724e04c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cbaee0fce9f05ab0e5e43bc89fb74e6bef3fb8f6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e2634bffddf1e6e85474ddfb2fdc0370d49c646b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b19a12e3d579a2e95fbb33f41ed9821ad1acb3f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "365383642a6a6f4aaaa5f9700b881f575e2234de", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f8a75aed7793602a3401bdd2eba3223048553961", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b9b68e81d4950a5c32ef36b3893e58f0ef474ba5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4f094790806c116104e66031932ee042101b4ab9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "38aa5cf7c148ea5d2b0f0e25988818cc3d2ef5f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "870663f61c2a40c051add0aadd7e064b81e4ce87", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e418f8ecad7fdec01557b320a791e1dce3dd9ded", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d5f2091baa89e516bb4d5094f0ea4810c070c137", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "81330f102716d5ad9a394192779b4fe19d19db3a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "60e162939ddeae7454dc81acdd48911ca7e0104c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67af2d209e9f9f1235a3ea1e7997b8f8cef5bf7b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4e626dd98586bd8d53c508c388da0dbad0ad268e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "15cbfdc1560f1e59c1cf21824391278fa8ed29eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0d3069c18b93ea02577d4ee44f77e819e93b96a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c759ba823de5eee5141f161a0523b5a2d1c3c33a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cbaac4f11e0a703c5d012446d811dbb02046afe7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aa96787449bfc2dbf1d64b7dde714ac0f20a0809", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "eafb6d0bb8c8803bb2784b40555a40028aa4331c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d2545ddd6fd8b9ba29f01ff036d7c6558e7c71e8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "01df7663a76f84d95e6e7d16ab4cfa6482566280", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1116f57e7643b154a540f093a0bb9ad10e7f849a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4dd03d87b8c8b8816ca70b372d303aef32ddd0de", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dae2eea152ff1c1eea2ef4ff483a3563380ff373", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e25b961c6bc3aa0730b7c281ed4f89fbf8b2db96", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d09bc257e71e06a0c8dc007ad9b17a51f32f1601", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "156a219ebbdb360e0e4598364c6478bd6309553b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9969fb3b0389dbee102b3783dbb3b74193ee8b31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "65a0d0bdb2bb592e2e577ef8fffe62e0222d50e3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ce17bb58731795abc4060cba9c8ff61d396cd259", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ebad82db6f8c83346a4aba8a6388b149770d2613", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "30df56d9d0a180925e1dbfc6882e42f6d83db2f6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ab606d748208c774a27a4da27daf76e7e8be81f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "91a3e0ddefff947a5609ff6741fd7953fd6641d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d6932f12f319b233bafc5de860bdd14793ca10ac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "43a1772da9e6ab5bd96dab06bed6973ab674efb5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c76964f0b56e0779c41df079fa187d2d4f5e37d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f586fc3fb9590ff249d5562326f801d4b52c2437", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d0240ef606116d86ca293e6580a1ef7a547c3f54", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1e5ad41f382f2cffb494c900c9a2f5595a9ec3b5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a63b295507f7b9d11e7a2ac21b1b8b5a82519fd8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6beb87aa903f790550a8f6684fa93b2ca8345b1a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3e038e6d4068594e6f393ad6cd7c5be65f9c4840", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d808266a4921dab1c1738e8b6ff2d9fee7e7706c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "92a58eb0fc053277000c36607ea5014daf1f1e5e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a5504bb24a580d1a3d6a2d8ed273e436ffd8c41c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dbfbe4363f17f219d95a3a24df458c86c56ccf8c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "056c86473a32a9c9b3eedfed62342771387fe186", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "373ac705bf5bf3731a8f629e8ce97fb89d2f3c99", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "964f9f63a61d003bbd153a4e5eb44767d77691a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0636a07c2afaaea2a75518622868c95b82f3df7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "45117cfafbf1246455102041190cec2edf1ec267", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de82749a33a7239b0516a001131488d733ab6206", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "62e26872d491c51200dcfd10488d8a8034bf176c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2a651383fd5106a149caf67ed618b1474b70404f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c6b61a28890f8cf39b7206d92f297f27918095d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "339099f36f39ccb091b9d145c887687586f309aa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fae1318edc938f7e9e6aef368a2bdf2a2c02e395", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b36eeca07874824503ddc028af9a9f6d88055c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b0d2347da62f5e4fc064a850a354da0099d6d31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fe1aa623ed4e06043f6084a737b0a659f57aa394", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4e8a934f28b562a4f3473b12b357de4563ef7c6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f4aaa6942ba786b8185e8aa85e05d800234ef181", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0effd9e958f11d226de84e1e0365b9a6cfd78a8f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8121fb8e38dc319d65da14537b177c69120e155a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "29b033f1b29d52bd8ab8a172531ff46249398588", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91b1ec2d78d4772b038b1a9aff8366001d9f4858", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8309bcac2a6596e6cded24373f5a977e8e3f1836", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebb62c264b9f2013e1c2c32de58fcdf6eb789696", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c2d44ae234bd89546ce2d79c06bd589420edaf19", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "db2b2e276651b08b7d92f7cc370b9477c9a85b2e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f649b311e3b0ec677b79304d97c033a1f03d5a0d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4e3d419e713cd912e26083be6610d2b39c67aacd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "436e661fe845fdb63d9ea991cd1056fe8e08f484", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0068850ba78a7b8915994e9ec1556a373079501b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e402b29e657d81ca5c96216ba7692eaeec30de27", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "85b6455e2c5a5e56e79ac7132a62ea6d463f9bc8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acfbb37fd82727b4b5c0ece0b51d16d6dcfa5a0d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50d18ceb935abc0e73629ed9c8c7344013957510", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "844ae5271a6a1c7e5c2c2083732c58a4d6f54bed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7a865e5d1809cbc2d5420b6c4e57eb790c60d68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25c084636ddc2f1bc8b6931c06efdc36dbe73f15", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4d17dc943fe735c1cb72d7f88ba697f782b706a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "56d8d24888fe44b9adf06b542802ffa011cf9a09", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a27ee64484c8415b9dfee213da9e3a2864212e94", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a9f99ca566a6fea3dd3a349acb1c6165b87f8b42", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "930075cd5e934daca382605ef8fdbb71518d1b96", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7d78f09ca7dfa52d9e3e08d36a636015991d366f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "386916bc97722d298d5c308a76757a91edd3a5fa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "598c9a09654ff67e3c6d932380ce2a103860ec59", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "662c02cd0251a5dd1cfefac60b25ef2a9267653a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b1b06a66b9cdfb788d1fb66e56bdf24234e36d9e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da93ef74ee6f78cdd63a4b79038483260a42982e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b376e692ae6bc8d75183fc48a74a37fb68fcb6df", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c7d7d553516026f188b1d504cae9291ee68505f5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c25e36fc2d070b8d7299156c5c5ad584ec722a4c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a3c7da28a568f626a865eb314eddca6927629d73", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6e44c4347b4e4be0b853464e13565bc4763d5339", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cad842f6d19d75ffb3a6858cd79ceea090b5aef7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "229afc66b0894d30324e06a257a4367440708e93", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c337f4b6795874142f8e34225bd17ca9f4d92d92", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4cfd699f000883161a03302616b2fb46accf1916", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "05e687660d02043759f089a2d5af30be0109efef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c7fe5be2d985c483d29dd949de80ba289136cf2c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50321022471322fa130bd3513847c2112b86de97", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "346f55c4a5d5bc1b8e709dd76f6d9e7e2bc48e14", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fee2accbbc8100ed12ba9afd4949f9dfc888fe33", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e1b4149fbcb35d5cb53e210c51f3b25713b62e7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f245ef559275831089840c5a17ad1587df6701dd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4aa107aa2aa4485db8c666291b27b8737cd6c714", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "46d53e9e3bf2a75b7de5ba3d25b8041559b0e469", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "57ae9266116cdf1973e4d83d35ffdcf64e051c68", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8a9ac651f69d1735bca915f24aa8f9ff92181f32", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5ce489799de8494353578b711bba8ce8f43f692a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "815bd2010b02643abd66f5e7a1fc0a98a7c7c338", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "22ab015b839f2198ac94a5be4183ecae677b7add", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2d5e0846205373292f1bd625f5a545bff35ae69b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b34271851eff063e1dc4e59c241eb25dec86b07b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7b6b28b532036b18be565e597cd36c4b26b137da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3dd2076e8aed5cdf1758c9c06977d3bf572c9ae", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "34678ebd0f309c29326990d3e99727b79f993695", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3796f22c5c99f9928aa220550dac7721968dc4fe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f30f56412cdf808c747d725a145d0492f221d29b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb91fe0fd1b88b76ac25c6e25044cfa0848f86bb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "934cd5ae8addf67a065c23a4d892cd4a6897367e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b3fdf72e2b1db5727a232b8050201187b5334646", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "92e7e16a7d4c6a60d5a19dfd0ea8ca9ee42dd39c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6e5bc937ef7c90daa275fa39d769531c6866ae3c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "46ca3c9c9ff7305cea7bd01a5aa618cd370a95e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e52733416b07115319be2c695e7f3e7aea04ccd7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33f44aa42397495247b67e9d4adef2a0f88963a2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "81009411a97db2f12305803e6e61ca545352f500", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a1aaa3c43f0fbdfa21a5b0942c4944c1ebb09529", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "81918e4531eb22ec4fe03a1fdddb150c8f309771", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10f52b14a3f6860ec3d842b9246b52a8849f0d66", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e7a02e8dfcf92039d8289879ddc4ecc2540144e1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "31c9c57620fbfe5277aa2ec62111e80d17741cdf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a9c049efcee952c2b2d7e18f4056a5b023a493a1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4b928d509c6294f1da3fae0f2602cb580f4aaebc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4911c99a289dac8db6e3c964feb6106a67c4c6b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a916181161e6e5dc46072b7b9c4e0d5e9c9f8ee7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "22d1ca09c07a2f9f64c0273494a0b707157d1395", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79d7a4a2ff69579c35c4057d0645d42e3ec401cb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2462461d73c72c1fa66e9b2291ba5638cacc70d6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0034cb5fe86017b41cfeb88980abade1bb26c71f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "048fcc6b144605b59d8dd6eee00a9251b630105e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f7448c778731201ed513ed77ddcda635cad3d66b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bfcc6afe54b17eed6436278c6ab0a66345e3c571", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4f4352f686b4a825be8fb8c60d885d2721b659e1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "293843153fb81b3b1779a78fb9b6a29177627a5a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6a557950bafce4b812dcf5b6e74877f6119518de", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4ea0a2013b13d2841b68887a19e0ea04a6d16c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1df51717b9f361a8df67b8da5d687004037f7373", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c62914234596ec86b020febfbfa16618113e764a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7c0fee0541f6d8a7ceca0d34a2b85087079289ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a614323d414609ef0d52b2c46d545c856eb4051", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "222773f3201ceb83d6956292bb3e13fe41334988", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b7b4ca763dca8d5cdecaab0308ad98d4fd53ad0f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7e32cc3bd835562578dbad07869f31738970d2b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cee09f281b5bdcaf48ee54ad76671be4afdcfdf7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4c359438a95325210036dae7e71d670fccf02d52", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3545e605c47e6a972140db5bd104419cd08a31c3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "111ccbcba3dac683cbb7e54e8bb33928f51f8b61", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7d526f8da019ac1e31b566c23e64cbd7f9436a99", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "76cf767cf3625532879c780024e60eef2ba11d06", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "39a2e321af4e58297231e02eb455840eba030d53", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3ebf20762385a79df1ce8ffa02cb4948e1ebdfb9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e556f1414a5260c11b83bad3980692d5486c2555", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b4e2a503e7e628418880d79c086ff9105319bdae", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "924c146fde93c468df123dc2cf8dbb2f411a3eef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "889a137e5832765b20d5ce818d3e7ce695b483d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98bc0946ad8e64c2b5046d74b5c09716aa75366a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cafce887a5f972db5c912f17ffec8ba1137ab88e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "052fddac0191ab52b8b3255d5afac3f54f5de9f5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d5b8261a14c45249e2b048bb21a84c091493959", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "12629472bb42c0a0496515d5d14c903b2bbc4d35", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "45a4692d8deb7f890032799ff98410ad69797ebe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3a53112d9b6db17e0f7ffee62d53e16025866da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12de68555ace53e66a79b1d13be462cf87bc7ef4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d95217e700cebcc54464de7722498dc8b74e85e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7ce1547650e8edd094875d8093ae182aa7bb9062", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5a0a7c00ab29a616e000cef16ef0edf663c0b030", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2a1d013884a1d9e319fbf25f702169ec11eecea7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cf967d2ba36fc3345d1b4957de3cd8cbe840f444", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5b14bc17b875b598c697ede02a5c01ce8916599b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "dec1f5f355ced46682cfa663029ac159954d3a66", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "58d94662c3744856619a6f25a55465e8d459c732", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8ee784f417a86dfcbd604eb5737a31f1c5991a4e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "54bdd20fd901e99ecc5c9e055ef6e4a7ec0ecf7e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b6c798ba450192ba6807e225636f0a5857974532", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "984392ebcd86ddfb3edee2215bb227c2df724b7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "194010f962680f16acd6988ec9624aad83496cb7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "562a5abfde4adae362a1a5e4a515e05a72634047", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "35b90b71c47b460fc84c4dc63f454130b4e0d3c1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "65d97be89b4cf0152c323c6b68a3953ff686ad3d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4495b7803f9fe5241e6978ae9b87ed82b53f3030", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "25b0a6897bca904f51f39b47d7d17073f99d1f30", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "629b42e2e3a76586b596bcbd920e22b43c101dd9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26ba68f3faf006a4ed0295e9f9893d8f75094ac9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5dbfe601ac1723074c6c8d0fb91dd31ea60a517b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a65374329de456e555a43392a40aa485b92cb0c2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2342c2991dbef24fab87deecb399f611a2e1e7fd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3453170dc0cca551d28e8e3ee0327d8cc3398886", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5c78db66ec8174d4534b7b286380aba929e9ebd2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "63dcb40b70bd31166824422a613eab260678dafa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4abe1771c82d44ba4983a6f15c4b913ddec86e6a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5a4bbd2d859fcd6a19d8e7bd6258e18ccbe8be5d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "deeefa8ea0b67e019afaaabbd137a8cc657b8282", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b4e164a5912ca78607c51f6fca39efd2723fbcdc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ae9fb743c4205b9aafbe57fdf6fad814d27e12ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7702288bf7ca1a8c1127b7f0db761c57f3eb6006", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "45fbd10ef28ee3e592e1be566c79a1393276b27e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d3d5b03312a9baeab47901c4c516d93dcd2ccc68", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "45ee61bf5fabdd373ee5b15b81e5ac6a0086aa77", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fc25a7e98b00793938ed588e2b00311ded906e62", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7e5a7034f6f4037503339372bf93d0b78c1b1dbf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a2bad9d096b4e8064a0629b43a2848da19b85e05", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "742d78b4c69727bc5c1dd3b4978bae76356c8c7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7de0097fb7eb99478d39fa31d2e7fd38ec98099e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "27ff1c4f98d443561d621f7422404d15dff9c1b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8d74353e0aeb84dd2600e4d27ff67cc20471c186", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b64955943179b8ab1c94f010c77ad4fbffcdd40c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "92301b64511dc0d0ce3ac2142b29b281e6d9c8e0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4871f7088dd6219dbe35705b781c7352f53e44d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e83c54b08327254516539f03f075d6803cce540b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "047ce54952a355e2109fd2ce9ed1f50b4baee5a7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "14db17d098da6d6687aa532cc6da3f50cc638421", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b076e1a6daa60a7ac7bc1c604db0eafbcae5c49c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "53fabf3b36cc29c50a07b3318ccd41ea2f691d80", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d1009ceb627bca04c78608de9b9931fd03762c4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "009ff2fa85b7fcd9cceaae6b05ee66103f76ea25", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a521900c1c0be331368df4c36fd2870a3ad99320", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "79cccbadc9bfa456d8bd6cd1ea83346b4e0d5036", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "99f0787f997c895c1a5b40d7fe2b0f10f9951524", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4192146dd00b2c3194e8912d90d73a0c97993120", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "535072a0738132800febf683977158dc80a5326c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93b294bab577ae120c8792338d348bc65b80717b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "54122f8108b8ec0cb63652cb1c7f579cf22bca07", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4efa88823bce976225f6a2734dabde87e407c405", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c742aa4237ee940f6d40a539275f921e43c93117", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f89a980ce4c32d1a171d3b29c01f86ef45dccc1f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9b72700a9f3e7decb0cf12dd351ab4f1248975fa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f344b2ec896ddf100a1c7367b6570825d14fbe5b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "96e16da7f75972996e1810ccf3679f1399d04a34", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e1bccbaffcf74a2c07f4d59c456ddf6de453b739", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "331d593886d69c1281b0f1c8a050b98c3e984a96", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "093a618a85ab2c324dd580297cfa1a29f8d82974", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "44e6cd67172dce6ad9a50c2c7eca3f4504b9aa47", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "188f1df87400640bc99f7853fd8c7ac60fa0cbe4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7c2e8d9f11401478fad16b21a9643b23cdb2819", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "02d3e25eb0ba6842c38ec0fc6fbfdfce26e6a357", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a457977bd101dc4e2fa95097bfda117dfb61c3a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "97ecac43375d043a28e2ab7dd9ba039450e90b56", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c26fa079c838f0610eabbad4f26f11c96712186f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1e22a603c2ae79987aad8f238008c4acc93b6342", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08149167013107b507e1053011131e376723d787", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3be7e822ec6b9dfc448d728f5b927a5265d334d9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "82fce91a0d557642800ea6156b022fa1e0f7227d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5dc42ad9c3572f6be57dfaa0d647f03b6b907f6c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2e239278c814fffcf5d6da16d3f0b58d0ab581fe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fab50814ff870d9be57f5c3f5b2cd069c555037a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "929e3972156eb22625257444f1c317bafef84995", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dba91e0066cc29b9123ab7c1e297a3a95c08ea0e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0dbcd968c4ac43a52e36fe0b5c3c14a79c85e00f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3db072ce7fbfaf879a07b798feed672a5dbfbba6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e74650d64b3783e22e5602b0b6575634f3bd0be5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "711ca4efff0120fc14ebaf5fc2643dec8abc00d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3489c478c89a34a2fe858506e0b2449725374702", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a04f3477743c3b38a2198135fd06761f14e646ff", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ca9622dc42c1481287ef19c6e279a9447d7f61b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f317389ba5780ed79a7b975363d36a4541279097", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "096ac8af03c30cf8eca32b07068fe57eb210814f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ee61c9246364007b363e4a8a79ec82a4d949a57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b175769fbc3677acc79a1033076812d950cf4aa5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "400d7485900e61a826f3cb6248441040f74aa1a7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38f76bc973167ce751602d408343f9715f9aa578", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "683a77571aa6c014949b2f6bcdc2e29870383679", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e8e725f9466ccf90d9903023b5fee3837344e38a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "347810af48e061e4c994424447db2c438282ec38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2840d2d2c6fd5e5b97b8216b7d80d5c913de23b5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5b9c44cfa01d837d48cf69e4af4d69d8e4c0dfaa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e9d09c0e8f44f2fc26e96492d5ac982693e1c0d5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb0cb342cf84f4f53932b1a659b2ea756df0fc1a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "06466b71b5cfc01c50c0fcd365fcc4cde5056d84", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bb847dff72e58f3fc34ad07db165ebc66ef5eb45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "160da953807ee0c17e61470bb813487cc360d80b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "432b626dc5560ceb60c7cf71c4a4ad4ceb02153f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "edd2c8200414af37a116872a6c1c5d12699d61b2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e0bb37a22e4ac045efebe1be4aaa7ca11e6aeabc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "642d8393b2cd36345f16b3bb0584f5ddb81c765b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aac7cb72dcbec64510ef4de145187993c8477c6e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "26c27d496cbf0acce8fa99b48116d07a8af81548", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "848c69ee383e470e7d6682d1414d7769d923980f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8d1763c37679c46ec58902e96bcf2abaf53b5a21", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "578ae7d8399c5a7e5ef017002c86f9c81ad741eb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "50743823bab0af28237a0a1a30d5348f2b5e3966", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9689aca2e3ad1eaf09b152a50fdc6f01d878c325", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c8797d0e172beccd696ec974ed2a5f9d53504a66", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca074fc1d0cdc7c60a3371fe55ac05fefca3ad1c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "601d3527b3eb230a8998c6c0699147cb8e7d87a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "787b9f46c0e4ba6a49b0235b742b5febd4b8dcaa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "30a7d6ff010edd4636a4f3e93cbffb2e2f5f1c48", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8c550748a00551d1eb9ff8804f031b60595250de", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "389081a0c31c1a4c56e4a1d4aedb81a8d6675bcc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "09aa5fb04132152fd2c431bcfb46696c2d62de39", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8995d086b2d0c877266dcb9de09d7501cd115396", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "96de9e0cb2005ce08faeea276c75759180cc2f39", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7ca2504f705f2de7bf8c5e7e8a295f776940ad7b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "122f13f2a16aaec0e698721055eb6724d510e3fd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f9d15de6b28820474b0edfb3dadf858dc159a4d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "999d50790b7a797d6fcd813ca911f9efffcdad27", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e12208965f5b9e5cd2b248a09bd2594335ce5aec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92d73d6550a0d6fe59c6248a3b93aedb8aed8662", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ae04c3bc1e27d83a5feb5ac1067dac9cbb1ad9d9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "581b8e2d844f1d0ff9d92ae487437fc4f95c69fb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b8d2ca67e49324936de4be1b295086003cea04f3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f8b9fc0f17b553ec3dd3db0f80f5f951724f5ccd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6652572902cf00a15becc6c297ce64223d1cd44d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3952b037083048e264bf92407aca76760e96a79", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "99c244264f96635fe415edcf97d0d6af0c1b1195", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d11527439c9be05c0c15d021fa000e98ef7f2d45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cd8a40fbe1f2f9e8b93187dbf9fa384369dff9b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a35af6306604545c8f568149794b42f1daa648b5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e986dd500af5e594df30eb08a7898b2b8268e19b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "266f11e5a06dd390ad77070ef1551cdec54aa396", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e84ab1c39d2f6b3becf3adb024e25a397840a52f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4855de3ff2077836ff26c4432b72fc5bf1fb5025", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5eb54e049617a5a625900f444ced2f863cf10676", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ab1c0c7a63cb0c6bcfab0c928dac043012f18256", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c6bfa0658b87018671f78fb0649b32556e85e58", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c27030810138ffeb920d2318faedaf72d8d9826a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fe459c152aaf45030dc739e51eeb72edadf608fe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "81695152984949b95cf9d9d02b5827eca36e74b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "33b8a315e1df0e247a0527508d534caf36589cf5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5c06b435dfd76ab5cb0510b55d57084b3d0ffb34", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1349df3fbcf6025dfd67871384fe752f1ea99a0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3ea8323ca5d465b222c73d4679c9cddbe715d8aa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ab9e7d48f1d8276f47086f50c03f40f6c051e514", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3dc3e1fb8aa4fa06408747de35462c1eace94b1b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ba1bcf35eb4e750564172822cd08414c262eb2be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99b107469bfb59f360a332c1f4bf49fcfe97b0b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e3edbc0052cc0ce266b195690901c3da125545b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ac0ebe545b87b14ad482900f55ac14af8f24f5db", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c613e4e2cfe45bdf8556b054f226d78a95f5d98", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9fb9f1ba81ae9eeb7e69424bf3c6a91193f55c94", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41b7885e06fad9447bac193c3176e3e696d73e71", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "98fb61ab66089a958c1aa158a33aae96749a89bb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "84ff00adef1d65d868be933f6b53babeb6570efc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8dbd6cd54aee1eea10f36b25ca1ba2e852584768", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c81c4c9b7265d93759f8f194012bf9bc9343e5cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c9e8d0c4ca892e4d4e3f24138a3f99a5d9b87b5f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "77fab96dd67b5279025c0a83b100bb5195c932ac", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b1d36e4e4f388689ab532aa73bb003ca47ddcad9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b695d480ed1feb17b218e9403bfb241fa0a3a42c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "814c9ff4885de03524020473a9c4fb98f6ebc33d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3b7f18e768323e5cfae658197ef08b7277142344", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "57f8bf69634354873b916511c65d0a681a74411d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "268ce49512b3d80dd62a28a7064de8c84b63decb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5340c4b694d545539b9fc2b5d0e9a4289c84c92c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5975415643f8a0a554118404399b965fee615627", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d49b0ab542e88a8ddc48de1b73a3ae660a3f521b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66daedb453068a5b897c07831691a2ae83d3f5d6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1114aa2fbf87925afd57dbebaab9eff9ab0ba48b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7d9b22873ea607a9725a5283406e80a71d96dfd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3e3c8eb6f2d0b0ae7d0a2b989a5aa2226f13c8be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1b52cf53f7c3b08aadcc56425d9efb8ad408dd4d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5ee602d7963c94172d0dd2e744332b9bfa0bd823", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95dc2b8eb7866ad153ae35cae4486aab2148d307", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c29fc857eb18377f0efa60bc84a706befe846c40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "49ad8b375ed60c867b8b3361c35e489798271a5b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48a2b6cf78144175ba5f6963349111a1a2cea541", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9827a915be1f9f4a3e0ae61126ac7c1a34b190c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "639b5c66758e0e414d13643ab36beb0e7f0c3bec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "34b773822a9b60a4bdfab19d61928f0b95e36fa0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1e4afeb004a638a1f03a7e5541382de0927aaefd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "91ecca12ca997be47f9c5045ddb247ae1d37bd29", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8744388bc8fe0e3e529fe5e8dc20080dd8a6d63f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4ba9b5ae85b69c995d9ca555069435bfbb436044", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "30ad69d53fdb7625e0eb04ef439dadcc521cd9b1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "86737e04401bfe490e1f5888d8770228249cd131", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebbc7802f4a126e88011dffaefe42ad4c18e8984", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f09364467caaed2b2d543d734df39566afb2c732", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7866455f24efa748b2c529d40f8c700823de2591", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "730df3c307277dc41ae0ef76fdd0bed337b70d44", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "658c5a771a2562a9053615e5de3e05c4ddecd812", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5137bf9c54f90e61abcf1e05dff6e3ab80a57ca4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "710d6dd325c148c39b084919d312f5e2ca4dba89", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5fea72da094173f0aa0e9424338afcc11292a964", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bcd135c6255332fa2235dccf6ef3fb1a7b2ee617", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "07a5849bcdc1425b3a535a5d2dd87ed1e4cbaf12", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d301018346b9bfb3256682ed27853d7ce84f0ffd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ccab0c2c7c1c2f3860960d384c75e0a33e8f9649", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2bc03212f6bd5b2b3c7beef5654abd68c4a6109a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "56b7a45f7cc72458a74899aaa287d17928ec8373", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ecbedb9e15d608f4a92cc1d5239cbefdc10337cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d2563efd1cfc97eff4009c14b9f0686d2c0ca6b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7332aceb321e6d1de66d8e2bc42325526011b7c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c22fc3a2b8c414e4f13073ec0f059e8bf17221d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9e895bea440a1ee91f653ec0e046c6a93bb7575c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c3c81e2c3f077e577fa6237a99716db0fefbe292", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "54618ee720fcb0c48cb9410ca810ce45cf74f86a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "669ce524926a1b97c8cf5833a5bbf66e04b618a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50e1df85b7d4617eb5a7845da5b9fdec48444a07", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c69d94e866f13e1cb1483b9ce4e1f51a41199209", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "516b1c8f4c95af92c6fe6a5f32dc537d47c24a06", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6fceea955b2987f4586383b5cf47356c63cec5e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "940a660601d88c11b185cf80715cf65a2a3a9c16", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "92113542a8244db6dd1c45e0758fa5dbcab60b07", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ec6354256eb7f1f1321118c985c3b58a263e386d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "698f0a2625f613fe3ebdb63249013f2fe0c5d781", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bada4aaf704a35e4e41a7cf0cf20ce1258dcf87c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d6f2d36a5089f924d517916c601f448e072e6669", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dd0f5b960e96decedb52116b0992722b4c24a38f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ed241786f91800b2e58922a39a7ea5822eba3272", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c6e969bf2fbc0a08a35d1e3f1c33467e3bdc6a19", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "61e81c1f65262af976ef568fdd530f5787b28b02", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6a8eeada50e18a19eb1fb466ee409c08807290a3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86fce1db032cfd11a21869dc0a08b92101541823", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "aa5ecf24afc290fe3de5d5fd7dfb00844db65fa5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "69ebadcdef84b97aae730fdb97eea3527cdb419a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "33ecae52f495c29d5c22bb67d28911235b547a0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b625983a9d32ea75569b16b7e336205f024596f0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "85f73a63e7450cda1fe9fae2d0ec102ce3ca8560", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9913d97c5f52d5fe89961cde3e0db21beaf35d15", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "89a48de57c4a7d9822246477af9c2ef1126dcefb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "097a820ada4cace05ddec4cd6adc42ff430bdc85", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3beb6f3dcb58febdfcc35747d0d4761bf4997c98", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c11b42f9bba4917d1bf117cacaa7ff4865552ea4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6263f8ba0e6c27bea260c63f23319bd1d2b2403b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9967f0c30bd477ca7ed9a8d9ebf74a3522e2a90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bbd611065bdbf3af5b564d8782f7932b2f83519f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e73fd00c1bc2c7e86225e4e5d75a2ecc6dd47423", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6c785153ef1a3d6116c0b6ecea51e18b4f32ca28", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a077a58b3b5cd490a0e71ceda6e2f268c6a9a400", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8fc1fcda3e6bba38ac1823a88dc1c0277e9bd949", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05fbbe98a200b3e9d920f8493f1b0b4907fa1f61", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4766aab359266d4ce890b86e105b3c01aa974847", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "26807056b3d0b073f277f4657ad7d558b0a3ea20", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8a87fd3ba3463d020cde67d364f35b9814921773", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "898e7a340c2a1b3e94844476768e8d40f6467d47", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f84300151caa004e62ded6345088d2f240700bbb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23ec21d97482b3ae01f9464cc2849da8fd63541a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8f5d11ea9506dbb619f42700f1cea044a5fe0844", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "739809721db3f8d721b83972bf0810d481ffb49d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2304322193785bf5a4d12839600ec75ffedd88e7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b327d30c3ba74108a3ad2de2b7304b33d664700", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1ebcd8e282581d7e7a5ac0228161db9be0027bef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "23dcf00c684d5ad8b5b9950ff7eea8197d722f51", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d5f6e634998ecf9f2320b510d809a11992d0ef86", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0bfc3e612562b46ef28f497ae701a48e23eec938", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a08698e9833ef5ba79aa201d9abd148a50e6738", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1c57c77fa844608545ff92ad294c1fc6e6efb09c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "74259e4d745595f28c0f0b597b4cc8a4f249ddec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3642210fafc5155fb82262b51d22144d0fb71b83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "021f1409eb11331dd19a5dd50ebe09cff037c305", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "557578a1765ea0600fdec24f88623c89a3bbf2a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3e2ea59121d526fe6e74498beb7fd0f4c6aaf7ae", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9ce25c33af67981fa1b73cc550304d85e8e6c3d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9173e74c71c4cd75846adf917295ee471866cc10", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d6091919a4d4bfa2d9df95d5c31ad09e9272596", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dd2fe75289f229ebe43988eaa4b023cb675364cb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b3b26a08787056cdbf952ac033107c32f46f27d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ba80476740bb385471fd1aaf9063b602c8bf564f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef73f824bc2acac5346023c3e5da2ceb9aec1dfb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0c18c47925414a0c1cea5c1f792bf3fc61e1b36f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "178abe81958c48575fd6662b9f6ab1eabea12300", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2ee8d35552d6de58ee2c41b22ca0b51cdff4908", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d9726d3b6069ea839a42e091179df00b4ab7ab38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "97dde0d08320da404f9da491809d66a4f414e94d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "75d70bb13c3d35d79e566d60d78d46695f499970", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24a48f0811a0d0a9b5be7980ac5fbf77da74dd11", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a0d43a304a13c7d64f741bda456757b7320cdbfd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6e52aebd7eff2a1501bc2ebde6860cc0b6f7496a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2301ec679fb02a03d82805498a8f185ae6e57ed2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7a42d1032cee202adfbf3785c80e4f7d68f12c1a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "32cab020be5f309d373c08db0becdf7e3b409db2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebc335cf94f5a63e24bfaded6c341975dc99c370", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bc34e2455041e57d47599e7895343251920db967", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3546820d7cab7b9d85f8b9b158e7cf9a1077da68", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5dac6e9e0d635b9816aa68e15e5508028c2b10e5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8edc9b40c295d877e59cc3ee2c951f6ba407dac9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e5b7c04df5ca56f7446bb32e56b79b0bfe0b165f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fffa0afe3a90f46b35fcdd7f964c6ea36db1f86d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "270502e5201871be1cce3ccfe95d88fd3757ce86", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7b20d8cc42be2f4b57b6af12846c87573627648f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "45bfaee839e1171fc684588bd7c39bc91aaa6fc9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fed56276ab2f027ba6e3d48529896c65f86f9cfc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "01284f5ba116d6b60ec2c4309bc82bf8fe80d117", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5f199726fd48274b767cbc17f6f98564c9c8c789", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aa03815b77d7afe5cb9cabd7f9b2238ff14db45c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "187ce36b05f6291b93aa0c91ae0778ea5ea5b44e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b5de76153e8fd609896f2550785c7f7e396c6512", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "90b240ec6c81d1312a998360a0ebd81527b2c68a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f012316b5832fa35dc6b5a80cd59e7917a9ab663", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be296ec74f8d6be0978a00fdb54bbbad531fbc1a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "622cc78cb33c930c87ddde1376b1b10fde5baa51", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6eaca67c4d70b1c4c10880b1e824c37bce045149", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7b50de80d18376ce5d835b9e124ee3921c88ace3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a3fe62e86d848aac38192bcfb358bfbbe312c874", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ed6e1274c37688fec4cd1881a2d02ac2324fe3a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e9da44847474e0711fa5ad5ea99203045a35d186", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9a95d4affbfa8bd7a6d2b4f8a22edcc73d66b55a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5b0493273a5e3cda5ac83a890a21f13668463ecc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "826964b5d86c0738ac8000646d86a4ccb4fbee82", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "52a982a558ac2ab8a5741fc1eef5a1db276a0fa4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7c7266d655a93eca7e9fb171a2ba920324030a05", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "81c8e8e36784d0c3352f9d5e80f586cad93d6e83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d10d8c42c54f43831e149b048c10b8a9795b43a2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9412bebcd00962601ee6757ffd1ac635688f21c9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ffdbb68264f24760047a947ad0ddd2901811cd89", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2958697f253940c54fecd90c31228130eb2f7395", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c784f588cda606064647cda8a6f2e568a4e8a1fd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1a09c3268eced661bcaaab4ca57385140be2ca39", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4d3e30284672f276f6413527b05243e487ebd19e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "834becfbaa95273f897ec2e961c1915ac39aaaf2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5737ff1338f5032eb8250db05868d519896fba6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d1410d83b97a7e368758097377b5d9fdd887d294", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "219880f88ad5c2756e43e71eb672ecb16f1c865e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "511c89851b88390644fa9fcea718de3db4871fed", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2db9c4cbed6e79ac2d3e44a91c28f5f367950c3a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "05b880f52004abea3d0205e6edeb4e7c149742d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fdc1901bdf51e7bf793c6aacdda70966a1e5a074", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fe3e7879a5edf34a72927f81cf4fd436d033b781", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0f2e4c3a3f84bcd2b4b728640cea44d2695c50dc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bc58d672472ef42e1a42039d6b2b7115459bffdb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e1233f96753cef4d39312316d8601880d0f52117", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c1a6c18d592b10945e776159ea0a5f799739f180", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b17ecde4e67f446eced06dc08e1c29744497d632", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "276084e1dac530458cb3e82fe041f0cc487ff44a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7448a22821ffb1d6163c25e44c28c3b013e8569c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d9456ed4d0552ffc702b075b722e8a36b712e0e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e2055e9310593780d02b3b4786ff77d408c214ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "658cfcfac3ab281300fa2cbf0a08a898e74ae362", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90654c2034b59b43ba30f359b510b6761d760d10", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6dea553601b89ac8b88499e661c2e256338923fc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf701290b3fffe4ad1f9f6e16a2522d77c15d004", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d663faf8028c9d4fa87203040dbd5496bda8a4a3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7984a4f415eadd9da8ad636b6bf734774d3928dd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2bc32415710bc6b15f7a507a552421e69cf5bf6e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "daea957a3da23afcc835330a9c71617b8421b2bf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f3f833b7adfab33f46cdea2d89aa35a686e3a49", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a8cef5c34e5b5dba5f0b81ea9a39df735867e59d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7805b2d1dc9fc9f064bdd007f4f1b10ed92cc10a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fb2ed60450967af1f0b897845b7594b64fd9be98", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ebc467fe1f38d73b997f5e8e37980aa7bc2d2da4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "54cf2c6fee984f75df347ce7204e808b491c0997", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9397921505501504ac6a10d29d0c10559df5d5d9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c9e009e61c0d86020ec6b7e8cb6a213e40e4d1ed", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a52575390cb8392c5ca5a1f9beed45cdca460a7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7608328bde4eb21004ab73888b6b07a8e5c276e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1f9761f8d48853e90964dc10e776f1a806eac18c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1f3173c37d668745011e401a12135bfa87bb83b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7686ca58031b8dd1cd2f890c0645735f9f4d122c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c9b813020a8980d7a57314611f1f7506d1759266", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e19b5eca553c6c76caf56b03079473186138f4c2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e427a7744458d3db9835bf24be17c441fbc1d9b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fc6206ffe2914639bad3ad5bcd891039b496cb83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "33808b9393735b2ed2e16be22f80308a35fca168", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c9d331ef153d8cbad59af41d8c7333f34f30cc13", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "499e1ffe6941268a78bb1da4278f4aa92eab5007", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8c4e6d711c6e6e54c74cace9f0578b4d49e798f7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "617eb3e62f7fc5678eb50b48db12844ee1356ea0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a00a707ecea052f7077970efb69c90e838cd7391", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fae0ba1cb0e12ae5da73f2a04a457e5350019631", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "948a9a079cd74b77de343a96f0ddc65e7dcba95b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9ed11cc40fd010e47438fbae3435adb5fdb04467", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "093a978dfee379d7a03d034439704605d5490dbc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d1dc50a569479af9381879f8782db7c58b7cb80c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2e3fb8090bb8ef3ff0acf803e6384aacd5dea64a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "898adf7b1fba887ae4b68746ee13e9e86e0126d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5014cf06e95acf6e0f39c9a19290d2ef9db9c1ab", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1bd9cc5bcb8da376042242bdd9f5241c9b5406d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db1dc381403a981a74535471935f7a92effae6db", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5198c482f3da45445874d2d3828413cd37b87f74", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "82d18b9d07b7d4b2faab7576ad2591d5333739c8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bc9b6e8908f30df0adcf9e861e3c43a6275a5310", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "96a51dc7acefc7ef57f4afc014a0facec9d03859", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bc9592829f1bc96204cb765d170e6a73635bad9e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1b957f54ab3fcd193884056d82f0479928581f77", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08a3d1f0919a04c4f7e7dc5265623b9c789d6d90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "90489bb0c6826af868c8fb4892287e0341e7ef4f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b325080f3af6aa5ededaaad516986bab5f5baa7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53c0e3c1b66a1ea2fb6e5a79f7cdd90bf8126e14", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "33364a662ccff3e3402f658e5d65df2855a64ff4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "53bdfdd60f5e2a379a6a18576b6b2a379810f334", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b69c108024f482c7828f54f6e8997f7be745dce2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d7e88babb54e8d28f820157df7fd63de6e4a5a47", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4866cd8c68f6c8215f42662e2310a6840c70b81e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "23bed18bc268ad9b03f30334ff744492a1ed6214", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2cfe43d98e0a1ef196749c3764b2801dca0ff0fa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7a7c1a81d07ed53ee4bc3f964ea2cc2124c31fa8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "358ae7eb2a388de910e3cc1c5072c8d2858de107", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d12c47a6253bef75d56129b0c15873ab5dc44406", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "81e129f245068784ec75ace04e430030894bdad5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03496678d88e07a2a25b443add4b654f48715c57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a0f55fbec1481cdb2fafc32171f66947a3dff1bb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "22b0cb407e89296f4f5d69bb3c428f3c6bd21dc9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4b42efc59d4315cb616367d8f509964b6b03278", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d96250ef6112aa01ec3cb3653a2f0dcfc0078132", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fc81fe425c32b7fed12a2bf2768a330f78127a45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6bb7915b1cec8e30d5242057bc0cf7f0372923a7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "316b5c8ed1c80ea9587707775ca2d3136281d8b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "966ba374e0a4c7dc1e1fcbaf6b7c2f745cc1100e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b3186c032d8581fb0d59e98a59ef9ffdf5a84225", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6f0b150e52b83f77ee096095e4b4ce41e79768bd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4c904b717fa96d97590ed4e35e2e5206f11e2c04", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a260631100d9bb19d0f307deedf7ca4ed27a8ba8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7b431292d2a561dc12216c8a4dac2eb7a4ea6482", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f2d0a05230f8038348e55b4457737769605fd7ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e0b7b15b30348b3e0bf331adabea85a06d41f1ab", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "01c3d75d89c1e51f8b8010d5f520c954866acdd6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3f856a2f9086d02f83c71c444fe41f6dc5b6f3a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "01d4cb0290d0177a2e78d32340316d9cfff922a4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bc020f4b9d10410ed4b5366cc71befb97e4a46aa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f69b7e1d73b9c902a198d20c0cb0f7be273ba8fd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3cdcd32a841fd4b15c7b63621c8dec14439f6829", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c55f5f8bfd44b1a37c7cf6f41d5d7e18fc724da2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4fc5b323c777a8685ab810dab5643581f7fc2b67", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4bff7894f9406bd90bff365285bf2d0c0a1fbee3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6abc1348c4429d35783352473293e2eb0a8651b6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "42eb20687e688e4d44ba48d197f46b98346e972d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "155f284d71d5c5ccc6aa4a94e2b38363a6112882", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c1ffd9a9a3c5c942c9cbc7bf02a9595454ba9ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "627b1825d2e675e7b9f898c1d95ceb786e6e3363", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "608806b751eaeed2da3c4a23cabeed9f533392e8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da22a8a9a4ddc217bc40ab516d1768446bbbbce3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c599538f42aa47f8493d3ab8189c4358e8ec014", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "809c428f74aedb573dfde1f98f633341dfb7714a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "102d55df9aa1bea3489044a00758f61a350df8b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "11477e506250c9b5b387dec4c5cdebed75967670", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6749283ce4f62ebe4384e2cfc18c7fdab18319e4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c521080e315deee09d60098b3a604536182463d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0270fba97790183a1aae3f29cf2c9bb8f32d3894", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "363b7dd627f2599861496a8e278e44b0362d9116", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8e020dd46e010cf5b1cd0c20b9e0aadb45f1ffaa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "df42cc3f276cbf68174bb507974119d4a5d16190", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8b531089863590fd445aa31275129999f7ad24e4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c055a84e58a48a8e9633cdc1062d432545f3c22", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6836d9ad67f70040fab68a1b4d14a118d29ddc17", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "abc17fefbc1bc7a87e75650a24e4e9f38a0970d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0b4a9bbe6185f2149b629e63e709cd6f6c3ab1e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fe362ed90f846ed33a7b2291124809f6e461f4af", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4518665a088241782333465d85fe080b8a742cad", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "66ed3ea3c0ddec9a4ff2e30ff28e9ba060adf7a7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ed66378907b8a7b61f0145e7a0329d4e92c058a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61c23fc2d58b5366cc18cae247750bb331090d84", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "249555f65df16de41066ac04d9b1802149e1cb4e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7042e42efc126cc33363077537f796de616555b6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "958c528ab60806546ff09c039121cba0171b2ec3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b647bb88454125e1ae1b4f5a951193db56d7a91", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d5bfe1a1580f3e3c9e4ce8bc85ba6ce8936a038", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "55703d8c98976b5853e5107f0bafc16bdbd3193a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "616a0c7483f7c4a67e15306d7cce7c61ecfff597", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b7ad1f4cef68ee4e4186215d7b0f399dceef7ec9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "76589474874d417b4f25cd22ac7a815869578250", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8eb6e5454eb4914257ab2f85d57f40d83595b6d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c398fbd96e20ecf443956ffb08761c09b649bfb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "257375abb969986d4e5f75d13875983e99c7438e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1843a9c9ada6a0e1a6313471e141c798fee40000", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "03b6d18f9df33440c9191bcaa4c01c8a699f12ba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d5132a5252ba933c7b3123f029894f82f18626e1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3a3e14fd1e11cf7fde1b73e0aba410259fe6fae0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e5d634e157494356c0235de0fe7c6e82fba16752", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "faaa6ef8b474567a843235d8dc5bfbfe33632dfd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b7df3620eba5bc7d58cd9b4aff568ebbda0d20ca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "26c63e16e142bbb14b5b47222267eaeba84c519a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "603705e4dbeb4cb0ee1c7ecee4d2c0f493389018", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "36cae355470c0ed4283a2c55630663d5c9eba0ab", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "278cb23c1fbf471034dccf8e86d31545b6b878c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ef5a9c811ccee29fd79166984d0739af1b005360", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "76791a528781ddf4d000101bbaa93d38788bafca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8c64b48e66c0e33beef12119d9d22b7dfc53ead", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4412db926e5340ccac310ebfd3fd832e4136517e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6ef5e3e4fa0586711870cf3afed747e0826118ba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8b71976a9f7015de4bd31ca37ba1b8ce8b5c46d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "684fc3e14bbc26fd3e48bcf83dd8a199add0571d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1e624db59bc856c3db8af0b1232d0dfad9dd77a2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "44c812bca70f5293b3ed40fe773fffd385b8997d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e46b02b1007ee3f27f8282dd5983b5159efe1bd1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aba2b2164ef25c6ae1b78f61015cd3000e8d1e73", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9e025b1911ee39592efa87f7bec478015abdc64b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "91c85fdf807b27fb737100359a849a9959f417db", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4abe7abdef436015c00f6ec741928e63911e68af", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea49565ee337030151da6aa43106b6fd9c2c5d9f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c04550c6dd7790d0264ad52293d240ae052eced", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f498f1a1f0230f805e57b4f763ae8076698620c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6105f8c13dad3984acc1d8fc838b7e03a396b964", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c4f543f87158c5099b5d5e8d86ba5ff4abf09ac0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "03d345f7947f86d6f7e2d81b777d2e410f95d4e9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f096eaa95b5c7ebc67bb68db436691478b92a25e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "31b012766a38cec9fcf0125c51a32ad0f673e819", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f0aad761e93567566a156878c12b865452165d43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7d919099bfd9fd3bbe17e90c76ede1169ddfc1e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4d2b56cecb398b1453f7e174b65f741472d44a8b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5a52aaa74b6a231b1edea5c007ace5aa81d9adb2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f1b5048d645bf9e5b9abfe01b977a6cb21a1601c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d0caf5ed883de70bfc792ae53d12b76010518a2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e762180e4af7e589cd62a3a77a720c74b9a8c933", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2daff911b7a0e467ada092d2e47b76940d567734", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "050773887cdbfb21c38fc0e964328bfb22e901eb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8884c4572ccf5e1b4d1f97fbe80f5ac0b9b7d69d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "599e60e91221d43ac1165d6f0679a3d4d2568da0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "00952a31350c006fc66447c1d0c1feb094a07e90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "de5988e006ed163150bc5558a0b890c759e7ebb2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d9060a0634fa38499c594fcdbb925db6459bfe41", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8dfd3ce04bc61ad383771ca169e0e77fb7bf08a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1c3a8fe53bec26563cbe967f0640f8e5db6795d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "61f9510d7b977e9cd4df900518b71d45db8d1c03", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1f7fa71865fe6d1d917af60e9b2a1e941d4cd8c9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e60f6bf1eff277656d41fd26a48e20b03f43f45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6c807c3cafc60ecfece1ad7cee132d891a91442c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "56b573df0b26fe4e834c494ef87a680260c31f97", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ad8273822849dd9473c08a5afaefac6e3bd5f5cb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f3540d1e1590520daf90cd2defc0cf3054b0c7d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "11029b69303d370b172ee50484daf26aca413ec3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "84b5545da9545085c12f55db223ec0e40f8eac63", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "91690097640eff695ea2604acacf6505cfbd97d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f0ba9f42d2d0e8251718ed873766fd26588f9b1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c7b50d19dd9ebc28f09f034d44549b58a470d2a4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "866e1907f0e13f27215bd2e2dde2e54a979d5b95", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f627ec6f053fea22588c69f347d946b9a1b01427", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "297ac2d87df3bcdceb871862580a74eb534011bc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be9191039a72c54e1cf3563033569e3b2f530a7d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "126697b7ca474b1935690eadcf39dcd0b2ac5d40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "26c40a88186e0bfcc56e0b41aa5e38cde3ccba15", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dd5d5cfe5e84875c7f0651c09eb98859d95d8c4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "78baed114253c5e3c9e728117f4379ab77d20320", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "709785e07d2c7f958bedfed44840d2597a914ac3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6e7658a0770f01081974461494aec41768b24a98", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5408c7d98a69486dfa7af5ee90005e0f56bac6f2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f3b3d8d1f3532f4bff824de35e848fa556a1ae42", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1845053ad032cd38e8c8103d62b990e3ac2291e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f489d2cd0dbc414270ab81c7cf502425b8aab6b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af9bdb1ee5a34ebe091ea308c270c1f7e2ce63b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ab64e63b94bda80b9b35668c192291ddcc15b036", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bf923520c0c9ef895e409e5521e1cf8d698f7e04", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b008bb23f5b9c7df27946ff8c2989b2c054536ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aebe5d900a1e56833eb7505a6acf78bf2d3a9ecb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5cc6035c090bc2b863787d8d558d2d9ec171fc3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eeb1f4bc6ad0ab184b5bb72ff7fdb9bfc0d36349", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5437494af89b7430b9b209fec527722af10af9dc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b9c8e95b668139fc6b2a481afd0c7d17623a1988", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "068e6eecb3419e7213e9b3a691c287607dea5aad", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "904c1f8b5382ca6bebec4d85d44f4faf6562ad26", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "be89451a26c6994970097daba401c4b6dcfa5d5a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9bf34bfc6dcbd7b1019e7962bdaa47fd04520e43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2177e137f207cb3d4f43e8eb96126300b7d4f52f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6ada1b3b9dd790cf0227202d1306673bb3d07ec8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "096983fae7a9909a5d1e290bdc3c75b83a238b9a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2cddc0faa749188fe1ff6729bf45faae8059b0a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d5708736bbcec9aff6a727b522406691338f9e87", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b8f9633e64c6af22ec0205f8ad0e4918dae2d53", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6a7e3893fc850ca916641021c095498c50b376b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "640669ec95653cc4ebdff8b54a4939f1803ece57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4b3506c6f8277a104147f2d7a9ee99c90a55f15", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f50450ef4c1cecae264f79d45f0acb6622607060", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7b43d3bea0e65f29ea87b56612e2b4fd7ff9e49", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "04884e7a681a5e74d3e94ee0ea7af0f2de341bf2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d426ebea4cc229bd42c147767670b966e84b4b76", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "73f762a58bb4940265a18945755d0d9a52c6fc43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e2c7ffb14942032cb638c95741d1be598315543c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acad450df9a8fd2f74b6c263bd2609d9ebfd5323", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dffa12bb7afbf5c818a5cf02bc5767362b105889", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4f4d720ab9c222d045139b358f4bfb6cfb5b9822", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "327485eb6950bc330bcd56a3254b2857911f4bcb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d166be075691ece9b966e4c188b754d49b83b8b5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "353331af6117bc65b8d0ef70e0acd057b216d12e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "94107c297720c575a6bae6cf75d572522634b659", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "66d00e79c322170d9d4e75ab232dee49455e5003", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5aebd1bb399534f6d2d3bf9dd1dd814129d78f1c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7aab80de81c9a6191dfc799a7ff3809736127a60", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ad398987b167d2837b028c9b4cd1e3b0cc2330bd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0ea4b08d1ba7bd1cd258b270485ef8319b3e433c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f84357b227785973b2e231c009b8f1e68d776424", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7e6adf19a0aa26ffce5c82dbc514a4597737756d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cbacca48fad2bdbc867ef1ba1489fcf39c3a421", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fe13370c68165e0c1867277c921bcde0a55806d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c92b2c448844498ae5a082acb95ed3adbc751ce9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fac02106c923f9ae603abda3bd8717ba2e4411d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8bfc074d40f936d6737995f8712de976d9a21582", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7662aa116cbbba0b5009d850779c99c3bd3d9d3a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "debadbefd66b41344e25838b7dd463c9809f5e0a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6db21074fb824116d9ba26eb120004aaded05fac", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8dc9af12dcc5aefedcb3825fc4c51d5c89845e43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "aa25716fef38d5b151e40fe515487a969fca0b42", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "32b9c4b8c549255bc4a01ac0c9b1b1618df94c6e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc7a2660e497f2928a07d88689f11dfade174bed", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fb4c85f7a1fe8c85555a9f272e214e9611189dfd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "42d8e7fe6bfdfca6b4483a00f9011577c7348e2a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bea814ec809a62afb9964f5977ee41ee5851c80e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2c3b0df75fe33a18767c83bba62d6e8833b61bc6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4b48e44f0a65f7357701575d09130bf74886ea59", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "249d78486d4a59401a16a7ec0f68b61495bd7f41", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "caea101fc9d0009625845eda7dc0c5a58510d587", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f01d65b9d330554fc34528e8379167b7175ae59a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2352104439e83e4a53165cc47d8b8472bfde8216", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a7cb24b37522e32e821dba562a90562d63448083", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "44bc9a0699c41c7c9c2d66c8a24bce45f4ce6310", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c1c672eb80b40fc0dfd145bc8213b8062b8b7c3a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "47bb6a4f2c084fb7b2e2b6a2a19d0d1babcb20c9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "210bad1564c349df47e6df76303041762da3c7c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "20781294a888d5ce84618d9ab6b92f7da97cac3d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a328cac52ccf322843d56594820cfb2a3ddda41", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "57be8b2d8feae8115cc89580dda9418ee75c3683", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c831e4a49aeb36729dd07e6e71f2eacbefaea568", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "437871afeb05bd4ea87b58e3e20a011393c3b976", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e31e543e35d495024bc9a971dc019cbb87d8517a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "79ba298e1304ce734db67c777353fd533f967752", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "019ef151355a37ca916208c6ad269866935c0b5d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa9010ae0ec32912a46856485fbef4f2d3fe50c0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "37f758788c90cb52eb006a73a8a50d34453feb0f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "69077e6aef65c89cbf63a6f74f2cf35a189db9a2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7b91a011146f400e8302ac6526fdd1f8b6079d45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "26b043543f912621489b147e1e53fa932eac2372", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fdbdcc47141c052be520560da887a70a2f5120e3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3918d01443db2d73e16f516a87193d659cdc7b9a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ca0fe4645feb600a2fb8bba337aed850d72551a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c67cddd9435ccfeeecefe8a465d165bfbf18bb5b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "efc3c3a6145136a00ab9a31c42cd876ec28f5ae0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4f97d4d7b77ef9120dd195d35fae56b7fedd6622", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "637a6ad19c95807bd7171da23ef9d7381b16a784", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ace741deaa1a2a9fe8fb0b6ddef09b42ce3249bf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e731bfd7240819acb70eec9e1ec5fb53791f2d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4a44af2814c831420bfd715d1baa92040fd025ce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37845c54043b38186fd0c508b9f373062952b025", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0012ad3a73ffe58a6623858853f8aa1c6306293d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f5bfd3fa053d6528d74a5e3447d2dd513335c050", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "46820285766c12e82b9f03a6360a92e9686e5e7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e39d06b179d2974deb4a5ac01f5aebac0c5982b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71d2d489c58c3b96a46eeeb576a7b4c1e0c98cff", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10a07534507002213cf07915c9aa3912f86e7b61", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c1d68fa0896df7cd72e274fe1e780ac93d1aeca3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7e007394b7765dff9a956b2e7a76ae842c072432", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "02687e5ff4305a0d67524753628ac88d40829ac4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d71dc7e61565e4e45ca2f50933001cd27125ce69", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "70750cbec2d5f4e06bd20d47ec16ea925bdd2260", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c8520ca8d5e867e658993640b2c061805af589ab", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b5d0a089a7d620a7f4819da11b1447f075a2f1bf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d70571b13751b93a4d86a99f6adfcc006d64fff5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "25bba9c1f4fd92a739053a9cba7a5582e925891b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "678f362a78065a5c3c9775d84e63247b302a8785", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "57b6e102b67dc2831aad97d5aa8aa8922d191faa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e971522f687defa4c1872a890e2000480a688fd4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1bf91fa4290419c83ec846b1981278e73f52c237", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "20626568bc96636d69933996f3591585cb82307c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "56e1a08930b3467f060a2627b38086427bee20d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53276ed4aeaaad94e78a15595380d10c06713035", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3e78b552335b522cdf79ade327f04d46b6f8b1a1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c37c51ce4cd1731fcecb65a6ece70a46ccb505c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bd5731771dc14d2ecf274e21832fc965aa29e54b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "52d7de6018666a0d52d090ebb68f01047c77e90f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "89471fcc0dea9656d262d28f896ddfd07b122ba0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ffbf99f070155ee44fedd8dc4357a28d8ff8bbd5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d1b1ba16d27405f006e93747b0ff1de835ace984", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ffbf99f070155ee44fedd8dc4357a28d8ff8bbd5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d1b1ba16d27405f006e93747b0ff1de835ace984", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "83e400dc597a81ff17245629eb01c697cf855a39", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "02a6427b2a5707ae77a78faefb8fe081b813653b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "83e400dc597a81ff17245629eb01c697cf855a39", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "02a6427b2a5707ae77a78faefb8fe081b813653b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1f3105904502ba74e8e86aad0be53ad3d126f14b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "82f1371f1f7b6628a06c68e769c6e8d232e82f59", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1f3105904502ba74e8e86aad0be53ad3d126f14b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "82f1371f1f7b6628a06c68e769c6e8d232e82f59", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "82be4d2e9534f3c84ef46cc9856e6ff5a84fdf2a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eb66b2c76fdf320272ca528cf55bebef2d8c5de1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "82be4d2e9534f3c84ef46cc9856e6ff5a84fdf2a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "eb66b2c76fdf320272ca528cf55bebef2d8c5de1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "6cf17a1e6afb4cc4e5f51ece5caa65777f146062", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "77256ffdddc98d3dc02a088f54213e05ae736300", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6cf17a1e6afb4cc4e5f51ece5caa65777f146062", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "77256ffdddc98d3dc02a088f54213e05ae736300", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1ea06b00eed891f1f0bf917659aae0720f1ad432", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "36c2cf3a907d33dd5df7fa251470aaef3174ba44", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1ea06b00eed891f1f0bf917659aae0720f1ad432", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "36c2cf3a907d33dd5df7fa251470aaef3174ba44", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "156717ba858b5ca93e2cf4501a317dcc129b44f9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "156717ba858b5ca93e2cf4501a317dcc129b44f9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "801459a5223c42a4ff7d1c13c3acf153a022919c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f8d5ffa9405fabdf1d0a232eaa1e86b2c35873b3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "438b984cfda454326af0fcfa1c4867e4c32ed8d2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "438b984cfda454326af0fcfa1c4867e4c32ed8d2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5239e2d2fce65bcbf8c9a6ff5e48e9620750b828", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "adef6086d5c4e6a2a850038a9b4c006831ad12d7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "a014e279f06cf88c9cdd0351a35d8fd44cb9573a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "110448e5e6a3d878c4f4fd1d25debb494aaa12c5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6167bc3b335cef8649a19301e352e201703d2ea3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aa2a610a39d6c846a46341e82f897cd2054df71f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2706557cee681400483b3c79c41d8deeac30b905", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2706557cee681400483b3c79c41d8deeac30b905", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "61cd661f6fc0fa6510b0e0bf4acbe87646dc71d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "61cd661f6fc0fa6510b0e0bf4acbe87646dc71d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2708ebc39e1ceeaed002b888e2fe3e616a08f465", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2708ebc39e1ceeaed002b888e2fe3e616a08f465", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "221931222bea2c770ef5d3e62391ed5c5b0590bd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "0c99dc7fbe849ed78094b30805c95a62b610a468", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c188b86dceeb60462fbcfd2c163ec2e75fe833d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "86c09230c408c03842b92e9d09b12540a1453102", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "05f240c41d3385424fcd185ed5c5101c88023950", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05f240c41d3385424fcd185ed5c5101c88023950", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a5906fc3e66d0b03edc2f86cfbad28cc1e5ffb91", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5906fc3e66d0b03edc2f86cfbad28cc1e5ffb91", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "156717ba858b5ca93e2cf4501a317dcc129b44f9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "2e7584b6e9d1186ab1f56bf16f2235696b3d3334", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "156717ba858b5ca93e2cf4501a317dcc129b44f9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "11e2fa6d67ccae5e868c398188160d6f7ffb7b6a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd6139d17af91f22e7d564e45f98c91a443b509e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aeb5ac9863b7a426ef1a873fde743481691ab2d2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7603321ce42d82b1c3394cc79814a282d9916e51", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ca7b9dec043445ab28bc5ae0fcc2dc33c5768d4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a8baf9c3a92154e6d7122cc1621901af58e1095", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "091ac89ed20b9c2c24df25cb96bd9d5f69a352b7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d2cf5726ff06c9ae16cf5526d5c6b430f08e0eb8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "627e93009c2be2071d2d4f33a09aab6a313caaba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb98b2b60b2320b4a56460a3088f2274853446dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fc8586eadb9c2a9d2b2a2a9921b5f3a5c8b84bf4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4680ded5751229652852e6866e152d94253c6de7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c76d386c68ea3389fcbb0dc75b3ef6d7b34fe14e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d0ad90be41bcd288bf4a9263df25d8e77d578cdf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ddcdd238591108401ed123c45216f83f26f6fea6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cdc936f1db53c66771db6b0e2a2b7da32236662", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5490bf5ef30a1b843c49b84ea10b1afb95104374", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8934181ac5fe29d478f7bc87248b57ff70521554", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "18c44662815062668acdebbf04c638c6d63b29db", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6c551d428fb4ffc5f8af2f16ed44137cd604e506", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0d02cdccf1a4b490aa9daf897459ab1794326a6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0c7ba1cc2253f8775cd1652b3ec48c739d974cf5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ad4b6b6e08c828a9924299dbf13838dc5c6bc4c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9ac5072059796b5f41898e488de9c5f6c8b9183d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "32412fa862b49d51d516a4cb2605353f9434d8c4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bc8ef7720d76f6276e6fa5c8220e3847062e17cd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fc8e652dc9188fbdeb832ada6b41e0469c6cd7e4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "71692e0fd31870eabad9ceb9eae6623065e52ad2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "4732d4cf571c056bb6dd889a3eb0e15d87646802", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "2ee92b67edddf17f46fb4cd3a349f4f4e3cdbf71", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "80e9974693c2bd03ec355feb1422b6446e4f43f0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6c72f6b7ef3bc391eb3d417141da581166886a66", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "56bd425928fec0453de208423561a2d537159201", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2cfdfe631b7ac407880df9b78b02d669ad555b1f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "72b05b83ed2e2ec4dc0ad90c82c9ed88055726ff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "11f6f251e0861836e784db4f19fbf54464e180ac", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e7b200c10cc26ef79027a604c9a9feb3530a38e5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6707849556413d70419312b3342dc0774a2b150a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e7b200c10cc26ef79027a604c9a9feb3530a38e5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6707849556413d70419312b3342dc0774a2b150a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "4786f0d15413125cfd971409e2cddc3d9f81b4f5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "43e85664151af9c0971fc6fb73b19b61401ce495", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "4786f0d15413125cfd971409e2cddc3d9f81b4f5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "43e85664151af9c0971fc6fb73b19b61401ce495", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b89005faba72318269e042e145833333c777f481", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b2c6ebdf11e20d7cb58137f5072631e5014576bb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b89005faba72318269e042e145833333c777f481", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2c6ebdf11e20d7cb58137f5072631e5014576bb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "9816280a4ed2218edaa2f7cf89fd08bba99d2db1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "9816280a4ed2218edaa2f7cf89fd08bba99d2db1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "dc362dc7e70e9c4bda30f4e3c0f845ec147eeae6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "536aae93909ce2bbd1fbaabc66678169d83fcf6f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1acba752bd8d1cf55bf0671f024461a3f801c524", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "994dbaec7417365b6d3f5a563b329f9b380c4a88", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "edf5eb9ebde439d5e9de6f9be2bb0272777a786e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "c98896783c8fcd7d315f32d0be91d5652edf504b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0bb6813bb889120bb1b52e81f746e50fbbff81b3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f760d3275c027dc6dd97e8574de7c223003bb2c8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7183d38177ec9978b09fede4fd86e2939294e1a3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e305a180f2c8277dbc4942dcac30d50046f24619", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4cb1255c0507764064c63d58452cde9752f86632", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "362f9a3e31bcd82a15e0f6a8b03c01b9f8f43af5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "49405382b3cf0fd4ad3528e40d22cde73f0ae226", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5be0c489c29dcd97bfcee760d6e83253c32c6d55", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90054aa01323d169bf0d3c6647b24dd17760efea", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "07e68a6704d68fd3cad1a5a9dbf88ada1a1ec62c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ebfe2c0c254aa1f48f823323d5bd0e91bfb166d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "ac81c97681c4fcf35d7a34911f5f210f22bc3162", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "2028beddb5528fc8a5b70956816e3801f7c9a185", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b186bb396118eae6d101391efef16bcfb266c064", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c69fa33680934b4b23892cece706c2ca881adb6c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ff276763c3c226307885d74d9e50afa88405ab01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dbf5c29ff85b3c33b6d8ac6e8bb190d7b04f7a02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2e7079e86699c049f9dcfc748e870f9a362800a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "9816280a4ed2218edaa2f7cf89fd08bba99d2db1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "52c3092b1f5eb54cf9977b31a30f2ed1eae64adf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "9816280a4ed2218edaa2f7cf89fd08bba99d2db1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "310948201a99c1693ff2305b5069cf358d1be32d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66309e96dda4857182d7f1f4c780eb4ce01e1666", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6eea4ed6ee25911393803c327665731f0b3364fd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cd7927b09361e15a6211dc457f0915e23b0f2382", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "701c25515ac58353c44da0cf1797d0018ae20426", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6c4458e301f881929c548672cb744ad8731dd49e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "08222f019ffe810c7eae7b3ee7be44b3cf4eb4d1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "97225e42f0c290d30ef7b755f62bab1084695dfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "360ae91306bf2f6069fc955ba247e0237a3d0aba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "408f63ea79d874ae4fd57b7c5b2772e1c27af93f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b94e8275f157f72ee63dc934e2cc676240c8262", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f2041443c5c584621ea6fcb6f825d19a0b80633d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "59a791c795afe4cd4199522ed1b9cbcd32ca7b8e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "89e4ad4bfd1718b0d78e682120e3cf24bd26dd4a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "59a791c795afe4cd4199522ed1b9cbcd32ca7b8e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "89e4ad4bfd1718b0d78e682120e3cf24bd26dd4a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35b63a47034c281676a5d3ff5668d7c9231fdf14", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "de463dba3af55a9aec1ea05d15704796ebbd0f52", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0a2ba6376084cf1deb6817f08106ab3c2367ad09", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c3f866b000deac71b0bf636481f4cca21a74b8b1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "6c732f1b69d3b3a1cf711cfd64feea43bef42f08", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "acfc487f8751093675a7848d0e13436484dcd992", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "72ec2284a5a7d7a31a4c96c1160df6b0d2305bd0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4882b7a1bb734bf4aba91716560a006b3f6f1f93", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0e376dcbb5390d7293d7bd3e2ebf38bc272fac58", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b808bac761403635d7cb85322fb9d877fb8cb088", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4bd8e4cba8eaf73d51117f28ec0cf9b1bea35e84", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3f48ffee7d5f7e133fd33a63065937a61cde17ba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "360ae76897ca8a072467309c00bdcf63ceceb7d6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e36b74f94188c69f3c3d3e01e3c5a12569e41e36", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d8a6e8df8716f9d25cb490d13faf2b59c544f6d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ad91d5acaf548325c9b52a89264968f20a0d7be7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d265a639bb791baf1bac6ed3c3e851ebb2fed95d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "642fde1405d8be917678a6ef4736503089669ea3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6f3af341fb4b448a03b82b1d943df800ecacb0b8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "dac0e3ebb7b2004a1ed444ef228d44c79d5ba74a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9a2df3198ce5e9e6de4b21eb5cc57ad88b21d4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9bc19fc502b1b816003dd2d1224e52e92d0a623e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "35f1b5759f19230333560056f2cd26c515e34ed3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ebd1f5c251b24298cbf4d7a97428e7d54b1194a3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7d48f786879469fe7d56b89068e420f52918549b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7e99c8991a2d29244aa0776b42d159a00306f48b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6f96f845b67f86bb035bc04335f08e6f7e259e55", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "14d80e1afefafcd9aac1f5f21acc9d4642931659", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "763a53b09a2b20fc368b0514574b1f06d3713bdb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "823796ef07b4fe641e72ca5d70f0ff8e6b0b9594", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "1646116beea7072fb669b688fe80821ffa372daa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "735d0a1d3043209ea5eeadc726fede45af5790ad", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3173190d23e7c55780fa24304f92bae91d12065f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86ba931787a38b689366d7db18b5d923c76c6742", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8dcaace1c432d45d3380f532db6bab90288fe408", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c72cc195e0f97745de993312b6b72b05a5e8a21e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6b99d3a14513d58a31fade6c25eaba7fc81d0cd8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c6b2d6904523af5a01a949036e2f7e8a7ceccb80", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "266a102edf0fdc0fb5ecdd303cc2400cc78d1e10", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c31269f313655cbc8dc63ac68b5b471e7bc60489", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "50cd4114f9697b425728ab3082b6749155e5e8af", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "06c3e81112015f5319a295d24cc2c55226e26b98", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "1e63529e8c20de845706540c7cf2686fc5d72556", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "51d783716a55acabe25093bbf4583bc04b9edb78", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "14f297ace96f373d63d84d3407fea355a8877325", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25db5049d55250c5447c47f93e4de1a4a700261c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "76321eef07ddc99292b08ec1497399196382438c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "62f287462a69e29d9b77ddfb016f1b578f39412a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "76b1f93bbf03974c9f789695e2c9a916c6df30c5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "76b1f93bbf03974c9f789695e2c9a916c6df30c5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "94bea43fe59543d46db3ffc1bd2f8a4f86ea8704", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f446d2bf45460774a8e3de03a9a2ea6765091eb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c69f34e5e590c9c7eba12641ebaa67a88a5b55e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "619f7321d5f41e4c9186f2fdf910918197a9600e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "eac033046ae3dc06274ae0dd47397f9dcd7d73cf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "92bf522a79023ab607cf8f80b58c1932082aafd0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "53aa00d675834017148c226ed22cf9819bfa31df", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "a8bffff1d2a9850adae0def2372c25e237dea5e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6156c1b4fd36eb549f26ab954502c11eff7746ca", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ea2e6c28fb9a3a66735b80c1ca857e9d2e141546", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5a5c69efdcb61a21cf799634db828190fd6d3c9b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6dcff2694dbfc77543eae16afd133a332e8cf94e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fc54c43e3674b1618b62e18ee91152f5b928ef7e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f950c5082739fa8524781aaba892ef0b8c83dbe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "06eb88dafe27aea170a8360ac7b23b52d77eca5a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6d0274e3a5b4405259a74e2cdc9a0a84a0c76330", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "09cb02b43ba1cff696810aa7a622eaa4ebd65e3f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8b5ed0f8d29024720a192b6a4067c6816164c2a7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "4727b778d01f6943504fcb54214a7363a6b61a9a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "9ff1db24b1d55eaf6be48fc8b534b0fdd3aa4997", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0c506dd4647ad46e833d4268f323314abc9a729a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9f555087824ed0fb230d5b14baa76d940bfb0722", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8369476452923e51f6b3640c8198d9d7056294ad", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "68e17917eea96eccbf600f7d148434074fec0320", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "76b1f93bbf03974c9f789695e2c9a916c6df30c5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "eeaee5b922199e98ac7d877ab14edbc2a3c1944b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "76b1f93bbf03974c9f789695e2c9a916c6df30c5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9927addc5e51bf771637f03d4d8cc5a346b4f44c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9c2d88436c2349b4be253a600a1f50401fb185a7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d97c0caefd07f05369bc61d6648a4c683e522ab8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d645b00a8e0fe288faeac65e813f622a7b1f322b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0761b768581d1247129d16deb43de396355732a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fce70d53c9d06fae4679cffa2083656924ae7924", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "1db02704d0ea6371c14a2247252cb7218a7acd6f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "040400cb8e65ce528d42e3d201fb022d9645e2b1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3aab581158846fdf8a01dc4b1604535e1897ec1d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dc46119ece681d4e5bdc84082f3aff5a33d30cd8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c10b9abfc1ac56909831ce7e74d74c17577bfa82", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a628628c70fe3ca9ca226b61c98d1c1100af39b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d99924c0cd4b5c1c538ecf300dd6f88d77d82f1b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f0535b3efa5e18dffdf3fbcee3994abfee6daf2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7c9b327fc533a33f266b76b19d9ccdb796dc74b7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5f64762e5561c8a9e93c9da9b514e98e7484b4e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3712124602836ece0a9e835d9463fd0405e1407b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b9c7a85046ff2ecf897572634eec9b3805d517ec", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "473bf676401ad11d945c509bd0c253b4d60584b9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1f0998e05109765a63a23962caf7b82d571298cc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5acc191439850bc4e4835ddd90ea5c4cef175dcb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "47faaeb14152e60a950e9302d86112aa5b57a109", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "36d3a0dc41556fec7a946fe7ca52b2ba17d1bac1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ae83fea09067ec9e18e771c37a5124b97d9f616", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0627f62d112cfe03f5bc5a9fea137e76da83bfe2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b9dc3821d7e474045164b0fbbd1424c150771fc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9e5881a38fb21b644986fffc4a67cbf9b0698622", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "10cc5fc94c2cd2db14d306925d24f9895a377443", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "4255dd28fbb9566b635cac7170b44d0e47647c18", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "ff77b89f6345a8954495c4290dd66db11d7fc4f1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "a3daf2eaa6990c2d5912d5cfe23422478a84c71f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0fbef5e81cd16db61b8202f50e3043421947df14", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "72922b82804d27d002a21244866bdc63a70fce0d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e2757c7dee24aa699c55962975a003b3927259b3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "afca6419401de08ec8b85922477ba0978da0215d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "654d7db49d8077f080997307a54fe40f7b01c956", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7db57b9eb5e6ab4d9f6f30b3ae5f6e8430fdc3dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a75b5ab64c33da921461311c4647c3bbb2352a30", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8bcedef6194970e8cbb017de67058895a4aea78", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "045b16599d916ed86651f9cbb7d25bae512c86d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "99639865d65c204f34fd712cb7d3f1b99d11bb42", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e26742256371eab228635b6b6270f5f62e567987", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "885918f70231a93b1b71d873b0184511a95eaeaf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1585fe59283074d565e46691d487adc593f3a77d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "af6916ad3ce0b1546cf940a7889dbb87e0a3ee4d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3f0a46b7f9a2e815a13cbe3e03d1a854f2070096", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d2f26bf4653c7c090f87b1285e640dc1f0de7d37", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8bc3567461ded2e0fe2ef8220f150a205f729a95", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5127feef999e3b5e21a15a24a17955b002d5dd78", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c59c8ea31b0e1bc9db56ae61876d6fcbee48bb4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1d8a0d8005f7bdca1f5466ab0c5fd8bb357eed38", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "053aa5e60fd338d5155de08fda721880c6ee2743", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "2c83021ab58716a81288ee66a015f38340a96328", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "474c9d2df461dd96ed5f78234d8cd04ff464ada1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "9b33d49e8bb87cd01e1ff25453d7e96378713615", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b69c054ab0ef02c6ba23a675b73959666a9a734c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d30037f28d719d690b06ca89e1fc9bdb78082283", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9270b3b736930256652202e4f5e00e87e2235cf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9205e11a73a9d72417e319ef1e3fae01ee210c7e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a04f2bbb4f238e131c401a6a5b6570283984acda", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7618baac1a78a1b55b3927969d30e2de6cfd6d98", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ac7b363a87ef0a5280e529a9dd26fb282e94fe89", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7618baac1a78a1b55b3927969d30e2de6cfd6d98", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ac7b363a87ef0a5280e529a9dd26fb282e94fe89", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e8c9c46eb5f7136874db18da64e1c30162f30b0e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "359192fcd9e13d7009a0f1bd182dc0c88e60143b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "e8c9c46eb5f7136874db18da64e1c30162f30b0e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "359192fcd9e13d7009a0f1bd182dc0c88e60143b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ee1f16facf26f94adda0d69f676b208782652ca9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9bdb4dfc79f8ec925726481d41a5b878dfd5623b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ee1f16facf26f94adda0d69f676b208782652ca9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9bdb4dfc79f8ec925726481d41a5b878dfd5623b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "8ac994f427e9a2337debac2ba4f8acff403b55a9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "8ac994f427e9a2337debac2ba4f8acff403b55a9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0e5ae741e43d8e8502763dd9c296ade713e7a689", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "76db9cb3b90f6482a49792b06605707b93eb49b2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a9d630285f0990906d31d7f5da7e2d77721467f9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "34f2983ad4e6a59d61e9a83466a7eb28d74d0a28", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "7c20417d3cf8c4337dd594f528402f4c76ea90f9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "04204427761d0d12033faf078e1cd9b98f449437", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "614c90e04e32fc6afd2432f200eb7ee4cf4a3dc6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "3df864db58ef8e01156f2e00eee0b6b9d2a9c595", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "593c7dd70ec233aa1522ce43fef3f7b4fca67146", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "76c29aca7ba59ab185ecb4919970fa42654ed0c9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d87f57981f16118a53e7df345aa4a247a8b29650", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a46fa05ed26865f60ff0c99f988da0b701985c56", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "288862f9bb08578399181c5dc92db0b300a765fe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c2f3e1e452aa113f42fcc55d7ff1882107049a8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bd9aeaabd2afe105416b4bc99ba6adc7dca17146", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0e9b25960fdc28b13c40c662a6b92969f49aff00", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3700a1902beb9e89bf65e322fcc75fbddc449799", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8cd3d1075c3d017fe9722dedc542cb77296f0337", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "b4401640e995eafcaf6185c689f2fdeeb4156ee7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "280159245e3f313b07ded0826ce3b3e927ec2b32", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "decdc23794bb07515e0ef46fdc664a8243ed4c06", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b08abda403eed20385d6b45cde4bb7a95567deef", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2b5010ef776d3bba87ade5f9cef02f4fb0cb098", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "15ea1b017d41c2cb9736496a4f84ac980eb1edeb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "8ac994f427e9a2337debac2ba4f8acff403b55a9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "1715166bbb6f680b05a7627f040ec7e2c6b67bff", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "8ac994f427e9a2337debac2ba4f8acff403b55a9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "40a70d296217b741d30ac18b9e9ea2845de0d405", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6030e8c318ecba9d1c6f0ad3427d200cf9df1147", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e072653171e0db6790a69f6d874d039303688227", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daf4923ab01224a8e283627782bb4cca539c2863", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3177dd4b86b426d4625f9c87020a4a8ee373885b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e8f23291cd4fff12d22ec443db3067fdcce360ba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "94613696fce40fa0b3deee8aacc8a6d757a0725a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4fb1c4f38b69cb19f8ea35274977b0083b05b9d6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ba798e65d7904578c84d648a7248480088d4d2e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "093afed531bc180351f3373d1a6f745b2003881a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "216e34d5d831eb16c303585cdf6951b105c36c11", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c835d2cd1b181524c6cd429187fc2b6d9884a48a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "deebeb8cc0533302ca48a3ffac8200f37bfaecd1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "39f83d46d15f94960b08200f8d6b7acfbe611040", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d77ae13eb3da2fd33955f1e980b2618440cf0d97", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cc21e686adee03fb8e38820d1be346b614645e3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ed3004d98509f77987da266a6c66247f12b0f0b2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "0097bc26cc780da13eecdb2a4e2e5e6aec593145", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "b624db88004355fc40da04a2de16d0492fac8917", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "c6997259966330a6558d05d59be7611c149e841c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7adc61fce405582e52ad70383c9aebe785890150", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a26bd24b77cd16fc7bd7dabfa35796b8ece33eb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33da08feae68f95451f1009def1ca516dc4d4835", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d5746b1d04e1075dc330bf93b7ef4bb35035344", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "60b5505110646c1bfe7a53e0d2c47e27c449f5c4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d99145c70aee0418c26120580b4ef70fd39ae9f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "caccc802083a7e965022e8a3ffbe187c3c293875", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "44104895b363699de2ba4328c52b74f86cf3dd71", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e936b6931f20ad58461b3baa93dee2a6078a0513", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "3b2552806acbbadf4db944b280e6db9c8c1e4e06", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c1c260a17c08fdd2f29446f406a339e6154c510f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b286e3ff478c822b6617a73d63cc35936581588f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cdbfcfe152487305ae195a897df4c3c64305d890", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8d45dccc0318595afa007d15a97e8fc73eadbf5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "364a3737702907843ad0a0e7a78dbff445b66b9c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e464bcf3cfa9904bce229c31b7e8407d7a4c9ac0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d" -} +{ + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "57ea2b45f0800549366e393578bc563ced54e482", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "59a5c2f2ef0e9ea6cbb0f3ed79989be1a48ed902", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "535ad0a1b6ad6424f0c387aec893f337cb155922", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2927fb6b1ac59575cb81a7a6cc15d82ddddcc213", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e1b5a70cc2d45326321ee394bdbcdaf4dddd229", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8c042378d66bf5e2cc75e9e048667df2e1527bea", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3dfacaa40acd7e115d8cec2539d85a882a2faf45", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "608a34d5b090b3a7e5427fc2cae2712ee03a89ef", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "83eada08183b7c12c657416a51184faca17e8da6", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e4b88843f108a188e40edff932dca0eb247e2374", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2ebf8c8c7965793f11dcd77c3456943e7cf42910", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ea891809d81dfb5603688c89089ec8fc7fbbf224", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5483d333d6df4bb545ea4ec298960aefd6a22515", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9a46f4c516b393fdc7d6b96548823ea7ff7a5264", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b7298c6a9f95b798a03eeb189e1b882d51a6e827", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b04316bd7b32181f26632dcc7dfae02609f3bc0b", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "39ca724b311497972c75692b813de9134dc3a503", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "e6c7f7a18b3190c6639972b385bd73fbd662ac8a", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "23e38109b4a04a9fcd5d9c558530d227be44a459", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f7a6314fd0c22788e8b48f56e658c596d01145c2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "54b8c9a4e1c72a9bb422e9b33fd64946747f83a2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b5d16b7c9310547d008ac1eddc9e36d51e496589", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "53f47f92744d85567f5f6de95dd01dbfd43ca1b3", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8fca927b1422fd660ca13d6cedfe3e7b9367f403", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "18f1eeb9c25fd76d9d21636c27602dbab6d87df5", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "21c36de0517cc6ddaa14300aa8badc6ac2010592", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17fd64e1caf61c1a09aed41eefabc5ff8bd971ac", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "33e2d456cb6b1f2f18f9560d8e81331e79c2f26f", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "18a27aabb717bf0a417ccbb352f6269a407a4433", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "70a99146e8049590d47a8ef655fa467b40cbe1b8", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f0a5fedaafb3d6dfe0568e4c3a3dbc00b10a5915", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0cc6765922a9e537698ea11ce227580ac670467f", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1d416380d59546a9d02f9a1fe1421e292a52b8b2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "05f3cb522a6a1b1888b1c9866eff9b2f8d0aad3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b2fa9e1bef386c1518bd21fb78d63fd740a62fe7", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7272118fb1a06f23dc29d78f647f544a3a34cfa8", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5867f5468a2716d37986af1aec44f6949da3a421", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "436c7237e3431764b9d796efe1384357edcd17fb", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cbcabecdb611d56e1541781053dc11ca06b3f3e6", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3eee1d52d4a1650ece3120dcd134c7f502531efb", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e08c93fa09d85e1aecaada86dfcb41eb44ab132", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "ea6d2a1d3466f724f6bc06467ec9a914ce683214", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "abbca34a138f557c424731ae1a61d63addcd5a56", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a44f957fb1146766b45bfc435aed9f062e3928d2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "64421655ef11bbe25e418651c0a3f61fe5d8c706", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3b78ed2c2f9ed9beb3f03b153f32f5e8a92c12ce", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "096647801389f1756264d8bc78377931284bae4c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1293c69641859da72886a8fcfebc825557594832", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "50b1cc28d0f3a46c0925f46b2eceaaac8fdb0bcd", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "430b06630ae55489534fd84bf4df31eaa4fefe29", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "36b7946c2bcc0eb248d077e8b6738e8182f268e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "36ca62314e7cc3f8b550916f861418f0af228707", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7fbb9df6c4b1d2c14dc09422a6baed0b5ca0b1d3", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cdbb56f35de7504a85acc881f95aa16c60da50b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b549e96d62ea594892ed6c5436655754e3c8d954", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "888786cf3a09ef051a51d4731f7af5f6ff0e3b51", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7dc579fce58f9b1281a6efb47dd89e3c43a4b04b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "8f32eeffb8b53809fe56e60ff16a9144ec13271c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ddf1d070f28b20a7e294c1d4846ea7eee071b95d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b2e0bca49ab8b9fae5d4077b5ce006512a14c64b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b1d22edd6d29df091232126ef64f9ef7c433a847", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0f2a73b5013b846469ebf922e76f5dc26fc1f2a2", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d61e92afd98d27279efab281f74a227e3eb2d25", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "39fbace779ef4dfe3a24807f04e3c97d47bcfcf6", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2c0401d3b38f3cc841b66b2804835a34930b8680", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "74eb933846b9216cd079a460a3dfa24b432bf7fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "74528ce9c06b963334cea153c5e9db030066125c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e36e105501442404b56e71611c5a80b9f4a57a2c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "29c4876840d0e92208c7f733ace3a5d26e76fa12", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2dbc7a6f5a1af73abe25995c9a12a48499daff7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f4ff0836ed3aee1412199ddbf4d98c6ad38a444b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "20227792b0faa22e1bed4f0ba0698b787291be4a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "03477cdbd5cc2fe842c244a8ef46196dc155da40", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1927ea2d550713e7ba8c464540de2f9c1585aef5", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d30c426027f9633f21021ff99727eb38dd735559", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b0b3b19907ea8e8f2fea32e2e4ef799b37c0c70d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "70bb704d4f2353f10a6bf7afaaf1e94caf09c08a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c629c3fca2789230d1fa066dbe7bfd8749133202", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "90dbadf90c5704b0ffce0f1bf6056cc0b9a7aaf7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e7b656f74f6902fa0c3b1d15c4709704e5dd8a00", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "43f0de931135c5af6bb67f1d18fc6921a03dd09d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0faf0dee8d110da9e98f5199dfbe89c467bb2fef", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "961039f332dabb61c2c7b66f0c56c3fbb08047a8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9ad720c2338173629f76310430cedb3bae8d4e78", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ebb791e1ce38e15704137f75fab2b53b29bcb482", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fef73797af7b1239f0aa00d52eff0c2ec8790c0f", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "95170cc93e781912a0d2b1957973a541f6dab74a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0535437960cc8b1ff08eb060cd81cd2d57928cf8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d345d1e0da3781841242247d887b64989c8b2aae", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a9dbaa127c090f2cb67611a44ca256cb1497ec12", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c1610cdc743e5d30a39c690106b2a9a8a3be1289", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ff5a69d90505a5d42505c55f4b3323beb871a58c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4a86d0d8c2e53bdbb75e3632efe74d6d79a007b8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b98c9db4e97837c0de1eaac97200d4689e232f26", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6062861ebd77af88ec2fc950db0e8508ddcd8c8c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "966babf23f06514dfedc4b24751a32799b4f2d35", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4f9fdcb1be0ed9183ec13155cf8daabb73bc9a46", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e7fe2b4678941a2092239f5586672857b39c9e7e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "01b49edce49e492e2c9d46b61b03e9d8ee550019", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e9c714d5f2ba4ebb203d8245ab033a32afd264bf", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9bcf879e82ddcf050430ab62e32c86f92ecfb4c4", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5658835f1f9f8e6ad4addd4cd6ffc7bbae9b4fcc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3f408ce9a702c0792e10d1e4715d95f37593c13c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e0580f9c4d6fb3e14ed34053d7da25dd85878ebd", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d3d1ae935c50b54c858a0b6be0bc566fd50291c1", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0a9d57d514dcc325fb479545812e22159abcccf9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b34104a26159d4895ed3054dede2b7bf72f0887d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d2b7d807c0c50911b0eaba2ce31cc65b64309ea6", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9cb8db453ad3521268919e7734673da1e72e25b", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "860f3fcd60d6773e6fe3001a5a02ce68d265072a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5a98a81a53b139b8dd29e2cd9e047592eaec9b95", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "129b40cee67c61a2d709169f25733e5573059de9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bf96ea7fccfea6b616cf90af9183cbe6e48f236d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1bf70681a4880756f72db4a5b356596d6dbd8e1a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c0b447d923a75f3a5b17d02c2b936fdc6f07d121", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "09a601c78cc07280b92fed9b3ce275dee4c051a9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "292b7f595675c9b2202badbdfc41b11e42479d9c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "832f175f67f786ea1dd3d2d2ae9352469ebb7a15", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c30b558102f25c2c21915d5b72e407e547fbf634", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "18e86ab3e93d8a61b3dad80377e3de45e62aa4af", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "cd6b0f2098daa66589a74c7092bebe214ba1cf92", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "ccecb290470dabc947d136090b07383396f4ac3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f7b26da71ced9d8a90fdad88eaede591be581817", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52e2747457d0966d8c2c8ad6cf68be37b60d49bc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7ae3e734baa9560540421e604b037698bb2e4b5c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "024d964bc0aace504baeb00148c428c67fd50313", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a6ef1a520000f9cb78dff670d42203f62081ce4e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "db5455f31adde419a4b5a48b36fccd87d1486d0d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1a08f3c9a3b09d2ee96aacf4958b98a2f14074e5", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "bcae6c775f75de8a64eb89537ecc9dc3c494b880", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "3e6a3d03dc142272a944e25f6fd4c47d5bc0f667", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b35e7b15b94c8d9076232741fd872f9cd1e434fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f9da99240bef4a807f06d8ad1e7c66462a79f64b", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fdaf87638ed33cc1108d37238035817ed9bb41d7", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d362ad00fa387420bcdb3f7e088beef0fb6daf3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c66410ae48a2073a729e62ba0bcadba59a96151d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "dc674dda2f449370bf3d28d5528c1b7d98dab484", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d746128cb11fc730754f0b3f009344c39406bf68", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ce37b540eeb5fe8804eab42cdbbcfdd089402850", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4eccb3e142e82a0ee52139843807458a81f28b02", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e405081094c863bc5d02823e7ca82d021356f39a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "58bb0036ae232b5cb4b07375cba60ab2d4a15819", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "794b26c21e336d9bc2e306651f02ac7ced93ed9e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "65ea0a6c9ea796af23ff2a906cd80a25d0aaa9dd", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a7650855f7af4f26ccbe520858958ccea15f277d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "eb72318c099b9058111f31b646723779033f8159", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "4049890e81422504030954e686a1524d1c04725f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "398f19c230fe17ffc4714eaba6d6a379224d688c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bd14d7c5a7051a99ed6a32a2fd62b8fb7843d0ef", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0f11ca6b54172db0caeba830c30f92d95ba73250", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bbab6f2364d64156ff5e855ddbae0813744c2ab7", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "acfae08dccadc16ddf8d995adf3d1b24c8a17aa3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a1ecbdc651d549ba22fab2c71cf2f5d745fd6fa5", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f44fce4545ba0525a5511b8bb52027046ac120fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ccfef3d54307858444310ae9609e8ad9576eccaa", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4aab15b1359f52a5987c4f7aa3a31d80aa86d586", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "1b424f24f990c688a6bfe2864f6623c5a6aa1cde", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f285128a4b44c86bad4b265474b75d4ad6759945", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "efab62ec84449ab8b0b37d1ddc9f0bb0f86c82e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "58a64e1974deb7186ac455b81acfdb58f441499a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "15198fe0f81f2f7028e57fc9d1694e3a755ff462", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "2ed30caa5edd75a48924737e27fcd6675850758d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e4f790a1e7c55f936fb5ae5c9b0ed46cb79278f2", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "099e80b05f6a430e2a57a79f106f25729999a458", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8590f2fd9c13c54dcb75aaa4e883cef206dd45e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2afbf8bbf1b31f8493adac0b959c3b7e82384288", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24e10751c781f3eb9c13272f1fdd10fe00b798d3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "944aa9c5c3c64d8be09e3e167386c385501bf579", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "301aa475ffd2a359b384e7c8019bb12eb709c8f3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd8f9e6691441752971e1440d9185d8ddf4797a8", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "962aec26f428a66ca746c2cf2b707df0922c8dd6", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "d8b4e6c2b3dd6a88fbefd005de25dfc99859222f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ccf55934dc02cbab58d60c490f72f7f1eecd7710", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a06d9137468d13be52f9c2ee88ac2134e20064e3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5dad88b9805cce5c9a5ca0a17ddb8d9a9b7d9423", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4a88675c1a92019eaadc69231c1d3e2227bbb32c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bba458ce0d86a5bb3011b388484dae8a65b1243e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "abd94b2bb4ea8a5ad15a00ba8749c4353fa0f08c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b0222adac2d0063531492033ff41cedf81c469dc", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7884fde1d460016bb03ce6d84d9aaf9ec59e8279", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3cb83eb4a131cc2759db5295309ceeb5e6d8a074", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2adb1367b00cdb8d17cd9d57b40a56560bc11a99", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "8302401d1d0fa6b35d79b0f03076bd51f0b6d03b", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "127e79e3173a722cd995d54b513419095a23ed2f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "69aaa4c7f9c3a231d9a13e1296eb2142fed9e259", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7de637dacd0f632961e4543f15ccc9e538f99bd0", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a282bb9bec8de7a3ac8ea223a3696a5380c71d2e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "419ac886a65fb3f9e5c13b35cb2fc499e89377a7", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b292991859338887faa3706058443fdbd32d5d1a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5cc1caaa3ddb128a87a91f50eef6972061f5354e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1e8c8c4f8e48bfc5c3ffc5fcf4f5f265ceb0c96b", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e4afd4b07d3f9f0c96613dc8bb5dcdbd5f40129d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c4ac8f1d419d157f83b4fcd7d5a199bcf46e77af", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd99f8e1af3188d0343044ceb96944ae05fecf2b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e1e99eba4ab7d0b47665effa72fa73a6505983b7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4a97ed7ea6c3103aaa4ac47f579024d4828d0fa5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "80f99e4ae6a36655a53a8dad288415539f928cc0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0259798f682a6db09ce9f43a00effda1879de914", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fe2ac8cde46acd052811caffc996ddfd90dfa8e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d304755bd482a8c27ad62c7a0f2a191aa9b78bb4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e4c048310816474fd12b44888dfc540d88e7b031", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "038895ef673abbdc7ea2361d1b07dfb29a23126a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c777c03fb12d62f3dc1a006c4f66b7ea7012e8e1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2c55e028a61d9778e56eb389f4ef292bfc6de251", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ffa1778bbd07fd7be7afefed61ab9d5007a3249c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e90539eb82f598e48f454d6edc62babb3f091fab", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "78b3c5ad6d1e38d3a9493372c98997bd03be8041", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9b570252647ce11c5bfe0407046d7f1509e8dc13", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f78de19859710b5175ddb9758a41254086b97006", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "44093e98a8084a74c303ddb718c5c05bd0ae3c35", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ea81f7d68b521bb0fe213b9ad267e3d074c89d13", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fcc4d66ae287fe3b3b0bd8177529002da5fbc748", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "98e35f87a99cd5b33477ecd757d79ecd1d2230c4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "edaafa1cad1d27eddd7b313145c7a8ac0a6b4fbb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "63f64ef0ea150897a39d2b10214fbacd18888c03", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e643265ac5792f3d7f51cdee12f842198b774f9f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "89f6324ab8dc8bd11df551ed4dd5731fe9d07a64", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e57474896c6e0be370b2f4645950442d4d14a715", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3d557acffa627a49f4d1fc2242659fd4d1f85503", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1ecbceec1c6e3a8f0ce6ad3d27f91ebf40021276", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "206dfb66f5110ebd1cc301f4b6cf2c716ab63c7b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f9a96140779d659c469c377a02008842a77b47c6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "29b48b5d62f4d0db2ff141a35b45f20370a24c0a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "34f14517fe3d5bcbd010da9b6c4088d867534310", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ec28b76e80dba94a2a1bddeb17d2d919143bacc2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d85a9cc97712a0a6013ad9a6c468e1c2a6bcf74f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "621c28acb5acfb840d5b15fe3a376778269d958d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "76ea607c09cd6ca6e91375b9ec6afb3df29f7879", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5c9706e217e5f95ce08bc1a1cefcf257f1b92c40", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "6554623d984ff4f3536af5a93bbf339be7e251f2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "10e8cecdbe4aedc96633fa95c85c8261fedbaec4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dd8bfa38156867c38b33a66b9bee74758fa638e1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "312b219fa3330710664de99ce44b2bf491b10a8a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1eb8741ef9477fdc3d01f36dd908e73ecd190a9f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3005db0032ad55d6f1b59b38724ca070ab2e82bc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3c439735ea0a02f6e8fa89f5d9d9db9c4ab7a5d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "86d12a8290d6254ad5b79bedf9584598ab5bf703", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "7b7c72a558ff52d9511dfed68f2bc35055dad21e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "65c627e9d8d81cdd896b8056fe776c9c52cb4fb1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f9cf93d6f0ee068ac6fe113e44015a31ab1b4cf3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "debe21ba7af574906ef8684f913040fa5f5af12f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "5cc1cc3e15f780acf592252a8048eb77420cc749", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "520aed56b41d6a18f2d08bbdb8542b0bf74d336d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "30f9d4f49b85ae83929222dbf76f1a46bb0e12fd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "119de37307da6c72bd4820533ad3ace7ae708b97", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "de7895fa131e1640c9ebfd9129d4f0bc96485df0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dfa100a124d44e9fe0cf346fdedfd1824dcf8676", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ffff4e259ce9df973f25fdf6a478ab94b3d99097", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3de730ed0c7db986f668cfac012547430ea0c95", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "44a646eca14d0daee70e479228a8610fb5f4e3b4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f685bb31c9af585f6af60f1f00d517011e10a425", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1fb355e91abff098ef6c5b53a78c550c37094e05", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0656ffa3d45c334643bf0500012971cf44017a91", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1321f359e0733a9a0d3d1f9a420be164bd6d62b7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d5d6bdfa6e6886f952ac51922d764d87430bbbfb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "53bfb36ae2e336524c06f7a5496640067c6da9de", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7747ef5cfd64de76a273a8a545706e6d0e421172", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0d55ce188940900cefacccb62eb0e4c485435042", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "661592c93dfdb328c8cf6e257271d64ae4213f71", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "052bdada9c29fafe9073fae58b06129ae401f1c2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d076ceb088a8c86598f5de6b2fd60d5064ecfc5a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "fdf8c4ad67d85f418961678b40715f93d86e80da", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ec3ff37ed5198fb6462d9015b00b80b2a5eafa70", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a8428c7f5a978dc9d4015a9f8bff34ac2d298ae2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "40d794a0df3a8276fcfe14b721413050620a8421", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "bcf7e555c33b286ff0a63092b792f20556c7953f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "047e2acaa985ff01340d2a31cd22824af655a875", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b00afab23f4c6d3539feb087a9836d6ca0dff564", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1defa8927294c15dc9afa3a515c2f8ae54055dee", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d71c3f0e5b3af307cf9d21b6fce4fb3697345838", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a05359224d6618828d1dd73f223da76575f5a3fc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "7b72b7c3dc100000ae349bbcdc2a65a4848cead9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a2de88fac1bcb6610d948c4beffaef893c71ae84", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "126077185d0cd8f1c9bb6f63878d31ae077dda06", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8ad943422594a0038d63aa55ff13000b9c876382", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f3264598d9e0c91b72de9475b19c1c59344e2ca2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "6d80c5c1f1fa3fc3279f66ded577d3562089e166", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2cde57ab6b3f3d65e32a439a21053deaa1f10837", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "19ece94291d7b3544a80ba90bb64ac51c12ed974", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8d9d9304bf34a754b2e74892186faf8cbc9d1063", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e5cd3d18a96495df6a80b9b8c000fee3122528de", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cf4203c688cd86c7968d25030874a39c28356fd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bd0f80624119f3eeb20db24deed59a84779fdbe3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "c29e9d4e7ce05ddc357b09abcc3b6be8f0ed0dc8", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "797df0afdd69f0bc7d10529ae4fbbcff318af607", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9fa4310ac6de31e856c47c31d5ba4da2fa68d05e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24f1773c9c46489a2d51605ebbc3708f8b38c13e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d6887f6ee340b0739ea4894fd2b71b3e9d8b35e2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e6d27115ecf07dde265fc2a2d282cf2b1a48db96", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a8a7361d9d7557ed3c86a1fcbc442e041882591e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17a4e745f46f32d8551efa9d6867078ade588159", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dbc2f136f452602a193a62c0eb6932a1e7b77387", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1aa4f244340bacd6fcf09ecd5842f999bec98dda", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c61db6e13d09f4dadf48b874c3b326623f147cc0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c18378a62811d3cb95d32bffa2c85119ca4d6c48", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9af204c3e5ada5fab29019f265f66199529c2fe5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d92675de7bca54b0185acec693dd6bd837e031e2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "04fe8d33c89dc796092edb9f569c8a2de08f838c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "71bf8ea72093d0512f2f3afc46c453aee31edfc1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d769382d172405517908bd5d1fc6ae1c61ab7bf7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ee0e680b040c42b40e539c142761f2dbbc4440d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "35187ed660f8e1488187a7ce55414b26dfa3248a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7f31813bdf11e19637ceeefa216292698c405b4d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95f66deda7f3173195381e48ae72820e97e9d887", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "751c26044f66e2f5f1ecb81ddbb8b161d4ddbf55", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1d0277ab05274d801b7ab20b9e5205cad4a6646d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "97313a72f873d6b8e5a00af0e198d8bf97baa0d2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "99841f88d608256763805c9119a804a41f8afe07", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a4863eefadef8c596c845ffb5cc60ea5fc7dc7a6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "de258fdd3820559f76e93ee8841f7e039b9ec1d9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8f1a5610d793c02fc10084499fb8a3807b5405bf", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "97a8abd14b005a2f6b343bf66add034e62a0bdec", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "db4c7d03918c0afe786396416f4610569aec2df2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "09a096a32e8b5c257f19c03cb817d5166fd006d1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "559ce3db2598994fda022550ed137feea22edc9c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c1e4129552c830e9a03b42beffeec0a08420a9ca", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b3332b20339d246ef5cb3f107a8dd57a288661bd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5a1a88f4110c12ed0885b8b90ba053ecb02b67a0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4f2513c54de89b04b070a74e8f5775ebb83f7c54", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b1ada4e018c08c991b822628f330bf4c81d68f64", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6e9f53f373993b50d4917f1bc6a262ddedf22972", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2c3b4768d00500a8a3c876956617d1329591f5a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6e76ab3bb6e4e13db97f95015d4cffa1e557daac", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d4adb7174c322152c932e6b962092f77aaca5db4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9567dbe15aa1710cb40ff2f5fab10eb9c111a62", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "653ca3c89f8159e3e41d39b4f2f4cbe629e430ba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9a6212de07083e561a4cb9eb943576e0b800b144", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "69dd4b59f1235bdf73db9d09b8246e3f46a5d4d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ecd784c9ee1e36e3c03262232a8094efa96b14d1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a50749ae3aebb5abf7a01d1295ea68c3c8488f98", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ef55737414c49d0517370d1905aeb6f469351b08", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dd36c46c64e535104fd33feadeed8306e7a4f47e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f0ca3015a22c23be6ce5b52107b7c2e1cc73fc48", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "140c8545768eb62fe9c811bff4ccbb939b8e7216", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a6939d50eb4483f8ca64509c22c2b6eeccdc5f52", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "eaba6980e5771530cdc96a58fcc1b5eb80e2f387", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d27da6c1a8e8ec85ffd743fb1412a30af5f372e9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4bb251cc62073eaa93207c66e8723400be7b88aa", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "20e703fdd8cba63978795b82d4df1ecde65dce5c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e14171e776c7e63771de4c28de515465aeaa864c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ac1aef15e13cfc4ea49e1cd7176b65fe9fce5fa2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7701743adb8410f60340488a231ee06036e88e32", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6b4075bb4075e329fb0a72b93c5a652f75f3a72a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca05b8c14d3e32327b566d79603d372e2d90de0c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7db069095dfec4f16294878696b1934e8eaa7a54", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3da98f720c3570f4bb186aedc377489b1162f250", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1fc07f1e9b096d0a661e11a965c4e148cd11b1e0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "08e9b78fa03ceee74dc7be70d52eadcd037d75d6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b9e08b9cc57e2dedc61900190503f49006005411", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b102606a9f2df2fcec988f6455dd07c9274e8a26", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f1b068af9d7d24ac1051e164bba50113eee26995", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b474cc0202a1c9176a3fb392470c7bc60e513eba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c0007caf9dc5050bd9b588f65ecbe6f8816c5666", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f58b021179a1f08fb2040181b3360e89117cb3d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bae421c9c0866eee2820a28a9800a81834a27261", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a065fdeb4ec4296d455a0c2efdfed367b5e19300", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5b23691db3dd6474b6dd14ebdd7c22f06c475a12", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "86a9dc6f28ab73eba4be9f9e59caca50e488c5dd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "babefd5799ecc2ca0511879f2b797b4122e165d4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "79ac9cde375903e7b33fb0079c5333ea7025df30", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b189b8bede8d5f9c7ca8db2a9fe4ba51fcfec7c7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "76d773e216276fbc5a900a572f9c3c6449bfea9b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "af0665686d3695f1fe2d5223ec7f81fd5aac1c71", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "745b239cebdf241ac169b53fd5060fd71344d68d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c5b0bbbe1e013954a5e42d9a14e3a8727f74e736", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "cf017a345d819c6997768512e5a1bc283def137d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f93f9b30382faf57254a09f3adb2b8dcbdf62055", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b6ff0ea1e9b608705f7d73b8f10a44c67c2be48a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c4ac1b013f9a7d6f9bfeb6f685636e9a11691a34", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "232111b3aab3756dd207d5915c7b1be62cf0f658", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7491ed771fbf151c3e12b5d0cbc57b0576d75088", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "aed75bd00627d1c2b4a836741c8c3e84b6fe10ef", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "85e6c00564f063e7bf8d1fdd59a276413ed3430e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "85594c329a03c5f39045630b32a438885265ff05", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c28f7d31047da053236021cb71858adf397a960d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "24784830f953b3b737cbed39530e42a4adc69517", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "99318ff4bbbaf6d39535e27f01bb662401d2dccb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "64db1dac251ec17520d4f28cd56ff87a1cdcc6bf", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ac4a5497fd2285ab80df8f88ad739d6ad6d7faa7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0ffd59db16a300785cd41022e450fa433bdf2173", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0e11aaa2941689ec67fd5d1d43d0e46b5b6df11c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b95225956713411fd2d4be98889f6de4083ccd12", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "80aaf2e0aa9bbc0c8d691dd48ff87d6ea10b4bb3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ba54bfb6aacde7b3cc5bdeae7ebd4009da0bb01e", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "776c63cf38cc05b617b0b471a8a4fa8707662734", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7f8739633f3ec0b99fef194f793852dd4188d365", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7ff51d665d99d94f7c3c484432a79a4f2d209a10", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8386ec476a5569e58d158e81051e1bdd352b7280", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b4fe60e2d74d4a524607c74a6943cc1dd982c680", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b54aa63c72b8d6fcd5a339b89acf635674c11438", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "38371cdb7693d29d3ff2af17e946e453251b1e70", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dc25250bc27decd229b169b1c012964056d042d3", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "35309f3f61d6c0864d9cf2141f79b2bcb4908438", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d0d48a47884a2f7a3e6ed7a6a6662c9d8b98f6b2", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "15def4c04d881a5147a69ee50fce48ba1af11dd7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "954bbe0adfa460bee809f71844be12e690d68f48", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b5d74ce13fdaabdf4bd7c5cbd4964560d36c4716", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a86c47171735543be43333a5efa6eea3d8f6dba5", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "343e98d3fa4d8c89e87c75e3893a14f3f8217a47", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9f1ade6be22c22366e3a32d0658080dd3cb36b59", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "89c841cf0ef0310ce786332692d56abf767281ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "6543962577c32ec443ef62ba00df31031bbcc131", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4c9d782ffd027105733afdf931b338e5fad99860", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "264a8007b746db82eb32c0d961ce280ee30b1215", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "93015f6b3fbf105d31933cb4ec439d7ad76a10da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a5bb1a9eeb251fae664e294bc1dad300c3c40adb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7f8857137645ae8eff5d5cac96f1c2c7c50c5fc1", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8e0205685534e228db453ba105aa26cbc67ef024", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "27e53460573be2f71665649f9d9146a1f87d5228", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e22c7c9253e125cdfed3b700c1507bb796c671da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b67ac669a909328f2d21930b8cbd950db761b7f4", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a0808720f08ba941d95fd2a378718d645041c457", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f3bc8533341435a39651331cc1802c55afca01e7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24900accf9c53a67d52634a72d1feaf43501f200", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "02921479aa4867b425004235c829d965d2c97516", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f4022c5f5f9929dc4b3a83bb476a544f4e0e0abb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3ea75cd4b7506445a45d4ea59668e4a318d2fcc", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "174b388bf627f4494cb0916e68041602501c0ecc", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b3817c3374e14eb0dafa87aa8369de24da90b615", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2ccaa8fa4e74fd89c828f8ab779cb0babad8a71b", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8cddca52359e0c47bf7c65f5956eea06d7d78316", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a1fd29dc4d741eab051f3b88ff0a252b1c058251", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c1f38b86a6211d63b75dc1cbaae0e91e098bf128", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1771b3361349db37f21041ae3ccdbba68990bcd6", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "389224885a3c05282760b5faa684673cdd19ef61", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "71ee3f42d7e61071d318fe711eaaa6b07a44b3f2", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "511fef4511a076f73f7ecb8e76cc8cf75ecaadcb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1c3bb7661dc6f600d21a9e08e294f5751ff46073", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8cc0d3fd0d2ddfb453b0b6e74cbf13b12e62f34d", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a173fdc57f3e89366d1784fe1e80e6cde46a3644", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f0d5bcdb0c5648a3bf5e5f604e5b5e246429f668", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "3002776e921b0eb708e5d9ae02718770a62f6114", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "39d94f462c614fa27ecad1664a78426abd55bb59", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0c876db2ce447b4fb32ad01b645cfd5f2c49337c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e4ce46d39fb302ccf3048b9ce2206bd24125716a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c033dc4598dde235cbb648d54587af26b60f91d5", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b112622c7a71c272b9782b2db4d19a228ce383a4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0690567a63140343ab18269e9003d958f79d3ba0", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fc1f484695bb9a9f844abf16bb222b970a2c1c8", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8d41a8899e6f738837837062df3a76f35054fdc3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0d724e6fd1ca883057f00270a9da32cfe06dcb18", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a53be95d05465e1cd0d52c33742749143648db9b", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c9051c0418743dc9f445a9c5e1cda835344a6085", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f17f8e6941f28e602e5e9696f2a14e360914286e", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28f6f570993c56ca29275be17f2c97e82a4efc68", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "c2e0c9e7fa3793f2b71224e4aee32b22fb8d74ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "dc9500690c5cd3b32ac31a0957ec31a5669eccc8", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4783f41c015b50b8f6ece463c3bf86347c9f3bd4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bb922194c62500eece890af777897793b742724a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c017dd4a6fe3cbeb7ddce43191f4f3c28e0b0812", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4ff7391eaf727956010653fecdfdd484c72312ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "af5d34c083a93d2d2f6bbe03045929f91f9b4c17", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c2db6692ef05b732b2d4f29ef4d58c0c9d06d6b9", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "6af62fb3c2f7e618e8bb12b71055ab9ff02cec8f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2a8a73e7f2ec7f1436871c54329993308b43037a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "98c8fdb9eb6b08cdf6ad8383b656dddd6dce5670", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28cff8ea9488cad522667b526f6b902265b109c3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "3d4a6259279cfa5fa6bb8dafd3491c622149721d", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c22bad9d13271755bff445f62f4886c75b55496c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52a486f827d91279574ea070e2a28f39d75d196f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "4a0155afaccf7224914164545460b1caebdb66fe", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5219331872bf1c037dca508722a33c990272af48", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4d09124f40fe3330493938a216cf627e89dba26b", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "bce865972c2f2505bee68cdd23e0274e74f6a984", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e3e5399599c2190fad2f959ccdbc96d8a5113c49", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0553b15e3e6971fd76ae78afb1542c36df4844a3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "38d5b4bf10affb110cdbab2078e5a376cf5b5193", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a1024832d330aab7cab6008b8929f3e32eb42540", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8ca47e8c97b71e0b7e871a2426e8df98fea8b293", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e3c87d18930120e41de3fed2ac53719d32b9a70d", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9546cbd4daf1319b06cf91f9b7943977a8fd867f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a7f3c4886ca66422066b988afd775866e17505b6", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "54adbe9a6f8874268b8b389a66c54f926a39a23f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b9dc63876b291f7e71e176643c8160c4b10ad815", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0004d0bb2fc578158e72f9635b56e347569e8258", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3e5a36f822d3f6da97d20af6f0c8dd82bfeba270", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "602f151028cf7a42b595d2cce2f0d51aa226b4b7", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "37203d6d06d912ca43d6df489e083c60ef9188cf", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "68fab2202ff3ddc4d23049e25e1757f229d27564", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4f86aa64ed98d7a73bd3197e48bc39b5282fb533", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c5a3b35556bc838db6b848e0cb5194b92c225628", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e2339662a95300260ed39d2ba05b1c58d860d89e", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "15659f6fb463b9e8412032980741e0fdbddfc7c9", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0aee932afe2d41bd25cb595c17609fb89a4f6f20", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "0286d6042ce744ca02efd5f2c653e924e02e3ec5", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8ddb4aa93d06115fe3555a0ddb2d22093b6fe528", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "06fb7cedf0c029e6753f96f40504085ff7dbc40d", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ae22bafc5a6de062c4ccc8c3a30cf651f0879192", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "abc54b9d34db0747b49058ac9ac159d058e42e9f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f3f37b999ab3ac8292b9fd4a028c82a0c5a1aa26", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a189258639a0fd8df4d164e603c8ad7992fd94ff", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8c6ca75d83af0b7cf3128638daf6b5b14115c10f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "76e2c6cc34de7638c77c0be163592329940a954a", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0e7d4c5d023b753cc177b9b1d59bd5b48be86211", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7304eb5cee9784fd343137a30635ee3d503bb097", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e6a67174cd202691ac19f08875421dd7f6a54f6f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c8cd5a9c47f6f6d2ebebf1d920ab30e94b761041", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24cedf6101549d81b826b2d8e21754396eaacc8f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "012bc0ae1cf1aa4525682c9469ea9d681b28e3c0", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca386251af37a49c402deb3d82a5d4b7b76b0a62", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "987c687714a79a8da68531c66fe5a8d16d16360e", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "41bfd3d1619c08269687be39f0d4b77475826866", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "acd0b9404ec3676ffb16fad3225be54bb2461b7d", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8791605baec68b82d22e3b66bc25962869cae665", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3c5b17458071778ac6b6b05f17c538ea9d486b68", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f0a6e821cf48678449a90c657c8d104c96a50edd", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d7825238083654ba7ccae115b60a231a448cf608", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "fb995f3dc40948e7d736ce1a228d6f8cbad7c1c5", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "839f825d0c4329160761246e9bbcd79e42f36f40", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "338ffb18b25ffd670f26384eea23c0fd7fff9814", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "19c72e446691abd0704c282fa87eb92142d91434", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "44f44dd8299b926707f0f8cb074dd49526d28779", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "cf2d4dbe0183d78f58e71691c474dcea2e016f20", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "88a75c23c31ab059298799d14a4a8e56aff53179", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7ca0f2521ff5aa897beaa3355a710d892d040da9", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8284e3c1fcc4748031084464e380fd0be3bb3e8c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "56ebac2dd0ea78d9730e65fb5894867da683417a", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cf4d24760b3811b7b19d74334bace397466323c4", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9866ea8bf8a9108d75949eca6d1411b93bc9f42b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "bc2519a04ef4c9572375c93f9e48ce01c65a6d82", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3f0d8ab99150cfb8c677d86f4b3996699b8c4191", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "baad6123b083b67c73445621e929ef8ffe0e4391", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c27622880eb0ed9d2177e42a8c7e4afce22bf732", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "2551d04d94936f9cc67153a51b92bb224734f675", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "2f2df97533397effeb2e3cb5a04039a47b05360c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4f37c67ebbe5516c3aae066af3c59f36cdbc71fe", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6d26876a784648c073a89005da4c8abc031a227b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "252e0d0b2ddcfdee8828b6b236cf599010cc584f", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5922a45602859ece99a6d70c28b32e6cfe044077", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a435ca92ce08d20bdac5c80956f6657f770ae71c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3af64e4a2279ab2828b69d86ba8046e3900efe50", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dfd1eb200c8d371e545f9eebb274013395a2f19c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "30cc636ce063fed364f5e7eea12256e4b3f3107b", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8043c23d7c1802d14601ca3a6642c65975e4f2f9", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e27edb43f0bbe06d2a3b0a11e75b310a940f9c7c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "46d4bf5278e86612f4b93dbb662d54075e27e09c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "db6b22dbed33100535df6f6c22bee968ce9cd8df", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2949ce5ea8a520f203b3b941438205528e8df793", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b4e0d9f83e780ea747242ad719145ab34a16cb1c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7a28f6a5a63f6e8e7edce73d0a0165182b5432c6", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e30c5c71964a8bc4664451c0ab62cdfb03465ddc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b0648393db6659af674026b5d9b5b0c640069c37", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e6ec0ed73149444b840a2315a6199f50f1e815d8", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "20aa670dc82ba01e109f57dbf4ed51e3fd39dbdd", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3c703bbfd705db7066d83bdcf5c5e68c4bda5798", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "60c1c9ec148e29806930b371255ea515363e97c6", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e7fca60d770a94a567cd2de71f49a3a1795af33", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d2b94ade19d989b2ffd3ce51e3e8a830e501d2cd", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bfcf371aa34f6eda4ec95344aa47875dcae225b1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0c45c5d07f4e120c7ced1c4cdb9c9cdfd5957e10", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b758755c9b8e3020f74a442a313c4ece5f435a46", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "17454f59974671f8bcdce38b0caf25d2147e3898", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ccfdb07646435d9b43d291914a4b3bc568dc459", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7c59c23603a8b9a009ca94fb1f1225190661b3af", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "63b4f88c2405cf433f45cf013026b70ec46a798c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4640241bda32cacf122bd468e70132f9ab4c98fc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "209b6a596af8731c31a57543699038c247225cdc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f689367296fd72e3bca10ab94a86f5aedc1f2912", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b49fcb91f6f57ab031d0e914458c1c1fa741a675", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "29a7f20adeedc35b015e37e3643d1441015a1923", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1bdec72eebd57a21c5840174f182470851596689", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "23ae1c1adb7e71490ac7d1fe3993c8a2b566edbc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2e8de1bd8cb77087dda0377c95226fe2094d3e1e", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b5443b299097c0ccc1810e6f0db7390505bde2a0", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3a3eb5a38b95667a0f2b5cd59b3599a9ca7ae6ed", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "189ace8d04b8b7801978cc49b1530ee423302056", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "128918c3fd96fcf4d1a9cef4c9f13c4a035dbad3", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c92463dde3dbcd09b061f64ade3cafbb6d5e9021", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "baf5685f41161a0f92543c78c334d0a14c4cd114", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cebea162f2ab6b3a8aab272845664453405c270", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "de9f2ca92a9cc93e96fb8022193ab9fb02d6c532", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "cfe9bf722a4611313658b9477f1e7ad2662c7dc8", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e9712da83e6df4f5637997654e0b3b848bb5f257", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e0c8149e34a0f5e52f0076fbbecfedd2b3a591d1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "51cf1adba46d1ee3b597c8e5dc26307a9c03e361", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "c2e0f14d960d7be1e558a43337bccf13ee239028", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "3e3cda1693a67e476721db647e6c360d0074c00f", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0908c35795eb643f950e5b6199b80de74b51a2cf", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "51e8c95a6bf172605e3f878ad3f182edf46e5b0a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9c8c03c113bbe773fcd41c5d2a40326d82f8668e", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ceb26d8a607ea95001f05015b5347caa028b160", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "460b894b06851b88b6b691b5f0b9e29f050a906e", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1d36a77fbb01f461ea0ab8459e400011bc776bb2", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "09fba755565fdf3cb7226bb94686aec716f857db", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "536b15041e5432102fb024b84e813d9602c320a5", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bdb33861d3b25bb5f3da6dd18f7cbb4010e57803", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "dbf0929131b87b3f2b21654002a87f4123daf142", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "aff6c4429dfc7e8b11e30599785f2e06142ce0b3", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e21ac66c75f3170d210432fdb8d6160b17ea5a14", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "e05b76d6a8b01cbe0b08f2a2b75d69c60351266d", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fddffb8c3330cf9b9ad95a1ddbb805b4a558e21", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bdd0289a567096a7b0066260b980b62694a60921", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f8982be7c749f5c6ee3bb0b5b3f4c25832926744", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "41d41c3d7a683cb8feb4cac123a0883024b07eda", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bb288b96b26b63c450c3aa3cf662e909f3b2d619", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "3d9d243414d135208bedd60b4944a9b6ea7c3053", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "17601bf966708b6ec122b18d46ab535bd7fdcf89", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a19acde60178e1cab20cbb6567354075322a4d26", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "532023dd5d1502c2ede815025e77ed09f9af73a4", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c838bd0f1fc445b5e7e22e58c6e569f2412a0ac2", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "593c239ca19ef8c635daeacd21ca37d91597888a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "160552e3c51da477662fc1fb0f18c4b67c9736cd", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "a443516584755ca0b9f4847c893b19c8ccca3cb6", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "161280c670110924a328a5c8cb947e30832e56d9", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1c2e5419003ab1e134af7979773dd213f27a69c0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "bced9aab681423935618aa0d8de9e3bc083885a0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "44f46bbb262632b89b5cf3289c5e589e09a3e4b0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "c10f8b57d8d521a4928c1f38fe421d48840ce47b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b13773d32c0dae1a6d77f0ab9ee56c483abfccb5", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9407aab9ebcc334ace09e859279e953fe2acdd4b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bd4d80b6963266f5ffcba8b0c7623016207beb88", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "116d5d1b497db04ff5a7e2e452ef022aa7b546f4", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8674a126e57aa9d1547882fd2baace8742bdf28a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "16e69bc415e2c24e1fa0817b12a2a885e2ba737d", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f5a8c02b284666ac8741cff63d925b4c3d3fa3b2", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bbb6e1c68380e8445070672c7ac3db6e1e1460c0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67560009d90efb3cb49b2db68c85d016fed6efa4", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "175fdf2b5a5de66f2559564dabefddc213e7a267", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0fee6d4cad93267c3067c4236baf5417aa59ccf6", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "74af599c5f8cd0915352a922b1041a12593299e3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b969dad1a32e08d16ab99a7d276bfa9841803b19", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "811182d5cc6a0cc99fa9f9c7e64923edbe982b21", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "eb03dc7aa7778771bc22f97aa5ffe3d6d2d98c9d", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "53941e23b0e782d80669c6e773dd6566b026b97c", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6e06d3964a19644e0d89ca3ea50635ce1a747bdf", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "de41cb7a9ec3b97c5952d5e197980b753d87efa3", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f1dc35e679eb0c7d7ea0aa55100eb34a5c153545", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "d2c82c4af4acba1ad7ec1863d5acbc728a419168", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e8f7c8a7d06e59692d68caf2b73c11d1fb00c95", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "9e67d2e9cfac06077402e6784440381cd2217b7a", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ff78fedc03fdf6b31cb0054fa4d5e6ab2b73b739", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "59de6d8d7d14871f2d6fe2c17eb0b89811117283", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f175f3ac67ae028d30695a57774a0465716bd829", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "011fec5402cd2d34acb208a12ee46b6db44e91b7", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "26a926e40e6201aceef00cb6c3638ea4b57e1f6d", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3f435007087726731fd144c7395e5912cde77ac4", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f4e171665880358fae519800e2312ee147530d8a", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "1a6cfc49528c379287bc9a2eb9f1701a49dc1b6e", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "0e330961bfb774a516b8869c93cdca06fb4720f6", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f44b087e487793066cd290083dc971f1d9551ea1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1a7febefcd287e796ef629cbaee5b93945ab0d1d", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "18aae8de5d165ba83baa7e508cbefbe4b38dbdae", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6704a62692be1acfcbaea924bbdaaf2a560a315c", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "34a31a6fbb530f0874a0b720b31335fc7c17c916", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f58b6653498b6805f4ebaed2f8970259880149e3", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "01a899ee1f8483be50e250cebf29f34c56efde35", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "b18c5f1971e59393ee7e8cd47368707c04b6276c", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "6ca95b0b046d0c7139e1354d54705ea47f9ab7cb", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "27117b635e234a5d0a69737cad7438415e6d17b4", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b97716488f91fb40941138fd00ca1905c583707d", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "292070c0a71e706f803903bfd1f291c8e7b8be61", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c753a69964bff3e1bf4de6819155a16d0547d98e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "66ede86f8fcfd7946fd5041c112d7c17b9f1133d", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "7e3a92a2287f6d7588b99e54ab5e1fbe75f2ae49", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "df95baa35dcdc19e2c76a723ef774b2a084b4795", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "bd53c618a9b37207ad9af1a4dfc5abd36bbc7338", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "1d437e7808412e699486301afa0ddcc016a1bbd9", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "129ce0fedc09cad23d9c57cd1e5f8f7a40ff586c", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a5d09d84d3663360c1ac7303f4fd32cb2e2bc8c7", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3838c3526366ee924ed464f7f2638ee55c3f4e26", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5bb54c54a59357049c8376cdbc8340e876e1c095", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "88e198efe1b21b1eac88b3bfd8e0b075c2f8dc1b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4f5b38f2d8267265243befe9fb66d7371b270a14", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "1922c52ae7d1490ea95602aa5908c7b8744b1ccd", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "51ea1a6f1bc14e5f8bf5b6d2f58325a58c6ef924", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "246fd39f2a273e56d668bc5eb1fe619dec42191e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bcf2531608fc90da2ae025d46f4b5e8011a44de0", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "0b355dac5e691ebfc23e806a7b1dc26f66a73d0b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "2032f434bec6c65184f496b271823df20bc83c5b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "17ad4cb3165b386714f672b6d29aa725713513b7", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "445d6b6862f37ac40cdfa85605b663490117da5b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "04b0695c9f2179171fd695c3a7e19c358ce37d23", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "89443aabac584d817b931a01d8f7a4c8eae9c960", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d63c9f4dbb36e749874963b58927626f9523f3e3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "412990068838fa505415b3cf756ae4c9b4dba3c3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "095413cf35e3cbdbbfeeee1b7e4903f8ef82ac0d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "17e39dbc3fb3e86b0e437b79dafaae1fdd9826fe", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "fa21dda73bcd12764a7deb0571e066559f05ede8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0cb17090a562cd4ed642ac6ddaf8dde509c51a2d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "11af70552db87b8650d02081eeffffeffb16ac9a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "c6026a0319f15f23f36ea28c24a4ac90d620f8fd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "eeac8c3fe4f47f17c873aa90a3d12137d40d6601", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "fcd9fbb20863b6d589343363557eed99fc3a6389", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431f87309dea4c5b07f35bdff86489ecf60adc97", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "0756af3c588b84723f499c92fceb7087b5abca09", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a79e24c7951a6f07a3affa7389061161362aae4a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "de5aad1b72584f1aaa17bcf2204f340db4d57535", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f2c2564841f04f59a0d0bd2e0253ba0839d638aa", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a1fcc445689a15a82c4df9f755d46f50723be61c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "3475070ab0e46455f7874c24c1997e507f558868", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "7876b59facb70fb5ede7f30d6694d99dda8bbf5d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4c6af30c3f53941bb30d4c00c4afffc9407dc937", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ef973c9962e27b9c83cd5bab638f7f6b53a0bc66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3c9f9d5f892481a5078dc720c3643d8499617ee6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "5bed7f99681f02d5c35aabfb2bde10a9a8ceeebf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d8ab030dbb1b371502e7fa5c9bf29c11ec0a1a7c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "cadf7e4b87bbb7fb6a8d87772ff8d1ec5e8166e4", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "205a6774d0e649b7b525d8bb93044a2efc6f07ed", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7aeb06e3d0001522de265c5a6648da2d5f62f4d1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9fc86543de41d30286c74feb2db534e9769a3b12", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e7cbb85858e0f2ed5ee4e608a98a519f2feb753", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "804b9cd9e4f9edd62ac83cba1fc7e17d4805253a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "d6a09564f465d690fa00eb040a7e68f056e2cd22", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "f304f31244573a74a4c6389a23b2e57e26a48934", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "43fcb143a3249e75afe6e82409ebbdb4a070cdf5", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3ff3820aaa8bd5cf2c3a37698762c3eec23a97e3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e6de007e90c72f4fb2b616994b3fff8ebc509068", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "af71b7e508a49fab5b4826f5e4ff3dbfdf9ff1ed", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "a6add7665c88aacf7c06f151c1b168bf8909c26a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "8011709ad7c111546751815ddd559b47141f8c94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "746217259b1c2a6238dc46c6990c75e9d0d8a65c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ecbe74554f6ea5105fd86c0c48bd2396d434ece5", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67b004657708850275760962e2fee30bec2cb382", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "168d22b5c537bb38bc8f3c9da1db9afff2a4c016", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ea1f79d2354d62288816c9d77a5c866e95a37aa1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "9888bb6f3365acbc92870ef7d25eeb6f5e7cabb0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b3b9ffa7126bbf4f961285bf9a503e594706e7dd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "655a1f09363621917bc07a598ef061044a60ba97", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e1874eb530e2d0a1ee146abafd5858e20465cfbc", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78e453812f1c5550854410ec6a64aed71219d562", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8991a85e19dfee788b36cde87180bdab5aa46c68", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "7401974128c6c71675ea02d8e43b13b82a481cf1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "16215730a73c1414f62660af4fbdfd13e8d46a63", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "8e8af219e392931e68ad43275480eaea16b3a8e8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "6687cc619ddd5b2be7706c58695c209ca201521c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e90902c0e6e7d0b03fe72774bd87b2d907f82c8d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "746d6363edd580ef4e764424ef20f18ecebc0294", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff04e6bfb5443ae6052bc6a4531546e1bde1db47", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "011fe50b37f1b10f11b107505776ff5feed21cf8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "212aa84378b52de758b5f98c4166e5d21059b0c8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "447c9147b9b3cf494287cab0ad1f475cdbe7ccdf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "37d884da9c8e83dd3976667a7013c1b7e9583a14", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "2f419d5052264d57fbbfa83afc62eb9a52177de0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "02e2c957d9285541c516ce6f111260f2f9c37e12", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "62448f16f8faabd9939b7a484139c5a730588296", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "5c662b551a7f8064c8ccf02916d5d28f24b0e04d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4c2a5b6c2b029ec017619b9c0cc854b4d916297d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "366b320b1c7f44db4ef53b3a27d52fda834022de", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "405a43ef841055b29f8693a290ce5742dd9c011c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "864234687bed141c8001ed005af1160336e90199", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ad90fe4b68f57ce9671312f37e3781a9f0dc2049", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9a1a44966c9f968c159809f695667b4ab702ebaf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "343bd2376f682139981613fe219f399928f16814", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7050d48c42d2053b313bf463ccf50b5bd5c96922", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "893f37d035a3a11d6b846be4e4daed6408bb7d3b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0db95d1c595e20bf83fc8ce656bef3836996304f", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ce3003484955dd40d5846bef857c2ec8f9b9588c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "de6d2e37dd1d110457233afc11f916d0a23e7b3a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "b03dfb3dbd72b33d5ae23a2ff131342a3e8b2ae4", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "770badea789590456594b9ea3548da6a53e6eaf6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "f38f12324f5c0ccc56255ffd975615a38e25e7ce", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "fdb718cf5c7b3b2baa8ee1cc51c53170747d7b43", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "6e4e8a5d41bc831196920555cb6236fe32995df9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "295efb8619612e07cea2fa436b4bddba3def3628", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "ac2444661daa6598914be406c2d33fd8da564886", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "2ecb1cb4832c9f6334db545e4cee1c0259bde3c6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "df647ddd06ba2546af4b559f3595a86527eda66a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a2fc526cf8fb0802807d608db0b3b0d75188a635", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "79008ae4476e10cd9eb957e03005abcefbac2727", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "86b852c131366f1f872b54bebeb3b8c7425d32b0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a968c0c9300c167b305c23789d28fef77ca9cc11", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "837c46d65f88b6d0713d571066c896094b493580", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6d955df0f1d96bd43f40d5e5bfccde41593bb5e9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4b0949118a55c19bcba32d8591ab6df07058cec0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "5b8c6c4686e06faa5641ee4539e64b905759be6f", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e457d605e0ab3c05fee40cdad546f97c81d7d1ec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "4ea44c8781147272086cc3cb594ab70a340bc307", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "0636199db87c71bc4db2f51e8678c713a8c6965b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7165d89210d63aab27378870e13a9e43736ff900", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d893218fa8f95a026f96e5a4339a15082b2399a1", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4844eb45840530901c344e8ca76e1e42b9386620", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b186ad8a50094f3e5e8603e123b6d6c5690c2638", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "201c0f357ab994c70f10bc104a6663a45658a701", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b780721874c760500a5f2bbcffd83b258f2cdaea", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b1c8b115d851fb3d46c5e275541e3d4d5824bddb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "5c048015696363ffbd4ea93432315b3634a7a8fb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "34690f020e8c90f69a008fa62ac88581fed450f2", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a690fc25b5faa49042ffa7e6a12d72194958903e", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "44747e4b3f875f50a8f58c45cf3a96f9f5480a83", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "09c72f56a283080e537365af847c019f116def39", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "9ad27e9cf0dd4faeadcd2e33eb4b11a056f3c03f", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4ab557ad42ca685227cb9c3bfca20e797e4f9a15", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7571e48ca6be6a720129d6766b1b344633fc271d", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "2cf3458749be9b37bd4d1633abe7bbb325a863fc", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "8d50d42a0063908a59e10ee41e51f59d09731276", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "2e426a9c1a20ee8bf9c1df38d3cf49754f9e48bc", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "67a65dc2585d7b2366ec7d4f704c1786b6a94f5d", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "dd914430686e256e3d4a488e2cc7a1be377774b9", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "7be4b535f903539dc4fd2697e09b968d109fba42", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "61c2fded86a53b4be36b073f62db5d0e999697d7", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e03b4c06c01af5e76d580c0a65321a3222d38f27", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431d54b2411b63712163cfb7ddb0619f10f419ec", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "45114a361ba9dd05a32fc7a2887c0f6fcdedc80d", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "ad51e19c7cde5f7a799aac9fa529c085e9b1e8ab", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fd7e403a0cc54ee7342349002bf7ff3b6acfdad", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a245edef0529144b86989cbc5c756bfd88e12b29", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f2d8d15cf5889504fa8e6ed2e613fff8e487ab4b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "75603c1f207cd9964a83246f58415d2655bc7fc8", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "4203de969e074aa324ee3429040b16c076a14be3", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "21858ddf722a49a8e844d264e8ee7c4298c72933", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "8e8de6a28520b0563739e9176efcddd5443035b6", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "fd33d0a458ace666bfe52dc5a0bc98609652df26", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e47824676561787f4062187c206b003fc9808dee", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "1a9358d1f3b75755b49dd72eab32a6ef7a4416c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e86be08b33f71e5a93fd000a17af3e95a308bdb7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d080ade5facd69276b87c0ea3837bc8f16206b97", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7ce00156bde91d76e8a71576266ff42371bab089", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "17e31c6cbdfc735b58f2b8a4141c3d669dd2d8ee", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "d7b4385e9e28d169f5e9f1e3c8f8b3ee0150bcca", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "5892628027b7c39761c0f92ade9f18577458fe40", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "3246ec2d0624121a4f0828386ea64dd3e531b671", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "12fb50b2ad1993cba9e88669d3f60aeb3f9866f7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "cb2277b2f2a7fedc2c53924a0dceceb3e1ae7fb9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "75807ba7749d18ac826d1214b17e05ed2868cb3d", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "62df967c0106d621ce1fa078e31547b824b32952", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78db51827d372e07c0bd9f356a7367e290bb7ef2", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6325e6d9820d68583d733eaf32606fabd7f309f3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "9b249632a7106fa2bc52858fdfd63f8f29f80939", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "44a4bd99f3fc16d2a83c9689abcb84dcb65b3c59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "619432e927130e09241d9976bbb572e81c061647", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0c65ab7092a98b407cdfcc268eb0d6ec7eee0da6", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "17976f8258001c50ce6a3eb3bf8ce561b84c909a", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1ff1fb5ee21673e24330b2c5c3a1e40db495199b", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff6471e7d267dd05a77f6e5c0cfb533496b15fb3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "00f55b3542b083cc698e114be9a4818a10ae6559", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "15fc68348a03b55ffb37b65a2f2def0b9cb15e77", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f74468bdfe6e2c588574c382aeda5002633b54be", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b27ce5a4101df2c57859626c8219c8acfa727947", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e96493f18d48fce9865b31593a81301adf534bd3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "f7ac0086e5ee18347a32dc322e6c712d729e48a8", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "67c163f0f8536dd301f48473a6fce9cf0aeb1166", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "eae3d18c8df51ef6e8bc2d6bff93c2a13c93c0fb", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "76d8f641fc6da8ae783c4d8db9c230614ec6ce00", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "952ed54f40dbced103365f78f42b40dc272a7c00", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "98cc47b845534e3c402fe460704729fe9825c670", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "d90c8fcef98c97eba2972f7965aabc889c2528c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "69773661c23463843aee07b136a4f2f981a4e9bf", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e0092ab686173cc5c3250d908c5ebb7c69d3194c", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "9835ff480ce7e86064e1feb88d71404112c07ad2", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a021b377c5c7a9db521dab6ae05765f77756436e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "04ec9140627d053712e2afc40ee161da3c418a12", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "515c205194cf807e9bb74a1336f641c09e0ba485", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "e8682df3de2c35ba6c9bf1912e8f65a831ff3f57", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b5970640edefa58962ef4392ecb9e7aa0651e37b", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0d11bd89ef700ff108c284e2c47c3574dd516775", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "f42065f1ed4dc8f4b065999ff8a6fb470eb92c44", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "99f9f12cbf0ab877b5983b94d067e71a732b136c", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "01bb780f92ad4a2765c8f15cf397d793b56a7156", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "93175c3517c809a74cebdb7ddba5c11279129803", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "d0db5535751bf727f3615d3eacace9a64fbd3ea3", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bb94d56bdf9cb259159b703525b1f7cc537dcd62", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b790b4be3f75e677861f56d9976d2b623127d37e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "c87b2051b9d324e3ff7d18aec458cc7380b6ca0f", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "36f81f5b22285c5bd3c15efdd3fb2538af0d048f", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ca1568c40206f804569670b858887dcf222ecb00", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a935813f645a0865df8659cd1d882cc0719227ec", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ed0a6fd65ec0e872e2aa3498c53220353524eca", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e7c9b9faafe56823a8a62e11b9660da4f1e61b01", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "85408da94c92a8b9814668a82f8e5440c4ece4b8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "733b6a6261ff3442ee560ef7cc914bd522796ab4", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "32ddb1dfeaeefaf1b0ca92a8b96add25dc882a5e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "5f1c4096c2cda8d8cabae81dc02e8d268c71c220", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "8cc087c7e693d70544013c99c29d0d13e4860f3d", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "91399af11a4a66cf48ca4f6227d3231318931a70", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da402b696398404aab0e60497fafb02ec0f22a5d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f1dd806cdc1ecfdae0c004e27e1baa9910be694", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c06bc88502ad01830a783418981e6c015d73b82d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d7694b177dd6e2796a24cd175296f29676eedd6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f92e3f09143c92d32e7fed764d6f88658a3398a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0e5d8b1666fa07e63f15ea35f259cc9f8fef511a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7656d6f849a98861a7adc1fb4502020890c94e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b14c58745bcda2c0b06cdfb3b37cb956ee4b9fb2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "000598aadadce88a69bbba553afe3c51fcf9259c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d17593f8fc443ddd9b50f3a47fbee3721f9cf958", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6a70dd3ade3832a0ef9908a26286bec5f066edcb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226b41f939caea8c27ae192486343f0bc06ad002", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a353d896fee513b9d51f125607d529b8be3074", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "acdf6ba47764e2308de67dc9a5bbaa853d0eea24", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6976d10aa3d64f078a93e1df491f3f8eec2f3237", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "faf7edb93d09a794ceab111272b3c3f671e4017d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ce12a2a034880557e39d5c36adda9439927074f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e65c1d23e16e3c4049957ce9a7d7a84f37331d5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e16667a88b974bd20d9ace67b45242635d61dd4d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "32c453ffbdd6e72785111d51d7f603ae91612af2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4cdeb771777033f95cd261e46f31b64196617c16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec5f8a3622145ed863e7c86587921d9bc1ad2d45", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "014b9ea913d76bfc2b8dd8f0c59b1acfa49257c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ab6524fccf38a658751dfd0ab0c9e1d803a9fa2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b40a43f431d6175d7f65ef2a8340ad90f623782f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5fcd14974bd381c4a1773150cc2797bfa85c0bce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ac6f1ccaa4e4ceaaef4e9b95d6fd21c204b4e5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3b528ff35d3f4a544106ba7f2c8bb1602ca6c567", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e7586b795bd2ef00545131fd148b36912c8d2df4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c3415ec73d6e6b6b65eec3b805277146de7469a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93930366454c53eb3ea66dc6d42221d23073a97f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2ba13ca7b591dc861cf3cb3e3b4e559d1d6cbe87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d45c1237d13089bd29f1765e0b5a66d4aff4184", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec8826e17fd13f4b434abd399138f04b705b1d71", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6042943e7d8a9c4eb25bb8e00571a9c0ffe9b529", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "115beaff180f51a45d5dbe965fbfaad76ce25fb7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "244ac3a3d23caed2dd65ad03abf9a8903341bfa1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1722114020c03cbff084b11bef5e604e024c5e3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90b4b8e984b7b36c527b774acd0160fcf0faf3fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "28812ffe2b8e1719f56d5b58f6b1b5aa1e523520", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d8e68f3e2bd12ebbbcd52f5f7416252745cb65d2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8a90f751582979e5d07a661d8aed87d20d0159fa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b99dd94d8172cc55d6f589ad70f2b9fd73d25721", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "153b9a2538748f02de22f6c049e91d4d3f0acfff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf3c98b89d0c66ca38af89458e3ee7ed0f33b78b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7470487a6753b46d6d385c1597b9aa576ced5ad6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0b5d93eaddbf6442453e94f44dba595287ae6c48", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e62f6c2ef2a2ab88946adb90f930acf219b70388", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "545c43e3c2d84f99388f6c636d2fb23031d2a99e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b2203bc0e834ce60a859aecaf1e6ac3334261a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "49fa3c567496fc7d52601584af20357fb23df106", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8287807f923093e0aa11c14985592cbf3d341c59", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0e1c2d27ddc1ceeeb8545579f871a4845d279707", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "985d064326a10040fab5a5d0bd131fd4339c8c53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f037885f4bbf14f8f05995038d069360642606a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0298199d16fbf1fb599b8e928a693642a80452f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "661939633a265825948e34f763b98d3916b8dcac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d90c8ec191fc8e4d2e58dd883d551f5849e20eeb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "00a4cc1f9b713b68bfe747d6e8922d7d6fb2ebd7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4e388e956d1707b3e6246878d251a841e4792246", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f63aedaa3281e170b0fb7e2b438f8cdbd6044f1a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "69e3188f47203ec65fa21404fc72b3c6b2734805", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "015ca6ff87307b6e11b825ebaf53663b8a63cc54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90e9093d85e58b39a4347c5e4c91ca5e94dab3d5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1189483bb8b9504b097e84a842fbd19054e6dee1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1e884af089dbd61d747541162d6d787098e3a623", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5788332a60e16fe324d51ad19ae59300d7471956", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5ee3f6098016504dfbcd42d3522f61a0a56f2f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "33b3d45ca935595945d623272c7df9d03de227b0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "12d4f1347d2b80f6168db6bce83ebc7c0da5b18f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2cd6b42458bbede1fb6122fbff48c920d3b6ce89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24fc35873621b88063320273a6431f488048bf16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a567fa225bf7580925298c7b730384e0c307ef1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a9a42201ca7dd80548ada42fd7443e3bcdc1a980", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "129ad21a6de0dc824e9291f3b7441714ef9e3462", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0f75610337a4aa1a47f5cf5abcc9598c29f2fbf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "97f31a6e31b8c0e7910d7e05ace2f71a9e433945", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "20d7d6f43afce762d666c267f0def248cc7d001b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d7707c8133f49ba01cf7311e5362b1dac5802bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9861cee5ccb21ff5a52db6751ef6f715149158a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fc00dd9c45fbd54341375f13ad4f83fb50e34f0e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c270cec8cea9a41a9f032c9f33a193ad8c62b3d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c94cd2dcb2226e4bc1f9a4a649fb452e4221ca0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "545b2ebbe10e4eb5b6a80292cae59e8f1855b5e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8a45dc4cc8fab52c2e828c6bbfd18fa7a1972855", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "558aa93b827505d2123b0304551c8807c06c2afd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a107ceb57205d0430aed53af4e8f942ae9347283", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "01deaad39bc527b65b7284190aa6fa6c47bee615", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d695d1836c503e5975cc078c0cd901b8fc15bdd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "787a2a8249591b8e24e331f25374af023813fbd5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5935e991fb9380e397d1d6c549ed771d2b5fc5c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d682f03db622689b62cc330cafe529b56a73c1ac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b497690ca05cb983483fe6b6f076d0e615275938", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24a821167928c4e30f2807c89a67ead5575ad7c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0010c1b309e26b6eca51ea57d4e304518720ca8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "238569fd8f94d82545b3820e0f2698dd263fb27c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f105dfd879d752f8a8980c345420a3886ea6521", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c8965e334a9d3dc4bcb8c671c0f4f43f1c4f9ee5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c9200dec87d17eafb64c20b11ac7e7dcd35bf9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c48612be556dd0107f385799e79910d225247fe8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37d7c4e0c07788bc7fd3f8a0b452f89462645a9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eac6fabdb1203e9e50f40d3a049a154cb2c8663c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ac79a69c905dcd0a12900fc611ce83cf25f9a5d4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89834d6d6fe0e4889528bdb9157449adc3935105", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c74c2b78a174820b6198f9fe6faea7398952de0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3506d79b517b6ced51ea2d54393d89d97b4edff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6dcf9d9df37c30895fea35695ec26040b8b0e572", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "974f2b61a11c5f2cc92dd76077e7c50c33195b46", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "450a264ac6e4d113c26e69cbef77399108745d6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86897709a8f5f26dca0afbeed1844b570211d6af", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da8c3b45b587e207058018033f6ca650edbd63fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2d8ce784593fa224e917fb0dd22a1a51d433efe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86073321555a6f991f30ad6c62af057cf46ff999", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f719c58a9d685c88155b76e9c5d657a8ee6f26fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "08eb30e669f5d5f2741b9af798e0d5004adf2c89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "82a5950dd5369b538caf0364b8c3aa95e1a36af5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5d36be783f4d1470d1985a2d94428c4f18111157", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "83aa202fcec76a2c763108e57696edddab78fe15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d6d5f3254d462ac5d2facbe0626d2158d9ded7f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2588a4fd65167ff334e77d7e0d3ac6ebb3092f64", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ada29f7844ac4c5fe4700d55687d73efdc2a22fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e60c6ed4a26afaa471218a95a354ca70ba7eff6b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ec4720b4b39cd3b37679ce3d6a3a743637a95f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9ad320cc967f66bbde44e4a5d6d95242ac804df0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "139d55252318abadaa35d968e5740f5eb6392100", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e75b06bc5279a5832f797e0cb490037b0afb3f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8729c06f25d63c642b0675b935fdd30c0499c882", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cb39d638134e2f829e8ba2352bb850c64b267e72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "852035a6df0dec42eff52d5a16f194545fcc63c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "221f2f566ad57a5607336d4f71831b96d4b9447d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "893788f27ebc6cddf55e81d58dfe7799757a1897", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9d70ad2dd261c8ca8e1e70f337ea6e9a5fb973b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2f8466ab3be58f77d2f830fff02a558efa23624", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42cf100c1d0b220647e5c43dfe26b8667f2bb577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc2db7872c003b81352363f1d3a3da6fd7491b8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c47b7c0bad80e6b6cf54c472a5c2d76942578ecc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2260bbe5f8ff54c754749ec85aec2ed7b7572c6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "263fa669ab2e3b6ca1e46058ce71a61b8e31c728", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c050c0243a0a99c9b8ffa64c90bb8a63e09593be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578e3fe24dfea24e9f3388ea480e4c7135cc57a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "68368b37d9b96ac55c60f048bad764e758ef4de6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "299b70d368c96223a24b70b6cd0f297ca04bdd77", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e2232008aa62e17030e63ad65c89dc39357410ae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1dd64174d5ed0fe42985efe5c18b1724c2ebef2d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "671cc1f50fa3362452d8d087b385d27622880437", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "06c9a9082916be971eb8ca31667952ad41400ec1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f42b1e829915be924a36f27b5c0544d8ceb790f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c0f8c66978eaff2ee82099faf625ebc509bc67f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "623021d88345ef7c929c011f41005a65b166a9de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4b10c25792d8510cb808d131fb82bd07b031f4fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "626309b2d8d6740f20982a4b4695175c3a10d0a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2033421b1f4d42cc8e43cb72267dba142d1268a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ad135abba16c91f0b5b9c2e92c1d8cc2f9c5a3c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3c96afaa4d1b84b164061b7d4904f4d4077306fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "44bd6ce9b9b0e11c34714caa4173cf2ecbf3bfb2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2e3359e5b20fa7c79ada98d0733d55bb46ba9089", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d771e682c2eac1a406766ee1c684099e9b6c253", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9b7f0fc05c26b6150df093b86337081ecf71b42b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f4e0e2695c863d82fe1000c1d9b96cd3fe77e0f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4e6c4a54fa09927a8b1675c08346914ab7075096", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "30cad0d16dc0a7e9774c202ba3b328c77d834bb1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c85212f90619ed1cb589f01a7613bf4a55888be5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "275fa48ef152b18e055819ac727108d0f93435f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af08f83bdc51edd41a7e23c29985b5737846687e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "55b599df156b2d792583c315643164a7b52bde0f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b6bc91e983a96f1a35c42a4ece7af52cd9357b80", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dfdb22aab883bb47d671cf8be67944551e529083", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31f9fb56793eac6a09ba538a6671e249cbf70dd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "449868e6d26ac66d9fd1cc89440250883c485ee8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1194f582916faf9e5ec2aaf67796263651e1afd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b42a2b9f9241dd70fa5c8dfe899c97424aa89b9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37aaa65942494cf23d89d37561fc97f34f5ffb63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9122057f884d61568de43abf193d4fd5ff30a0e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ecdfb7ec28bc6c34dc076d807b13d26636e33d73", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8e55bb9f805fc466a1176111c95f12c602b5bf87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fe46f702399327f8be767b0213ffd786e3f1d189", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "87e3933852a552062c736a64594280423ef9293d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a1db27e3a7ae74a522b59bd23be02a15daa2c075", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c51703f1002f04b8110cd92e74d685294c052cee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90c215a36ea2413295f78c5d69cf42b9de6dd08d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bcce0adc3b6732d709eaa102e7f5aed5f1d3fec8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c987d7e61f32a9eec5c680d134c19fd03a064a3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "653a43bbdae444b7e820a05190247cb576461fd3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f28b2970875b7bb3583bec517a7cf9fe28cc825b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c4779ee8c8e44ddc6be19e768668e9a4400c8e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "744aa92dffb0b1621b4aa29cbaaa6cd8ff6ca318", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "783f5e00b48762877068feae225f239daafe0d6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e28ce86c493057882114a5e107f8694e74605a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dff315df45564111915d4904d6557ccd8baadb2f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98ebc5304af8f424118d879c18a8ca364fd34954", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d3d0548f26010091e90a456d9493847759fc82c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "15cea54d1a0e6ded4ad6392fe98a1f897f898577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfe1f262eb9aef6b6e8933185e0e72c3d3548643", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "801da2540be5a73edec9f92e5f925048567b3efa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cef44837e66cba0d456bbac950222fbe4ff18009", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3dd1a5c8b82a34cb86a001e6569bfd8613c145b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a0a215a16d456eca6a6a5abaaa675a0237e1a25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e430365226a687562541221ec1d2e80779063143", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "180cc3d2675b070d871e90c57943d288255d7c78", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ae2825dd373dbf04f1b46eab3751d2394d49f96", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "79781b9c21fcc6b8c4c1777dc74ef260c1963062", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "25906a255b984fe09668fbfc6280fe255b6b3d46", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a14cf62a3051e82be261734312c1a81ba49ffa0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ccd4b21fa0d484aa12e95ae556b2302b67deb65", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1dd5e9d5b15efeee55d748b731041ab3fd5687e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a90fdee0fd6832f1b142d18a7d13bb3d50be1d9f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8e382a8a46c0b04fedb4406353ca26d0f3127bbd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9285faa0f3f37fb46ae3b747b7b355e3d0548a0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1ca2779f6f3a02560def756ed873f34caa0b9777", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8a344af9c3f691225cd99f2f191a9c10bcdefcc6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb8a1c58b55da25b1437bda085809801de11acb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "91417592b10e262a487373abaa5a782f6bbe657e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6bee539f1db61e2510bfdba27a656a8122783028", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cb7cd7d0f7f6597891a52905b05c5fc2038c752", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed5911ba4128f0c32c377d99ae468233d8636d6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "002bad6065109663f6162ccbe5b21d4bc099b1e0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12605a6629b96d701f04780fa1cd20ace90ffe07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f3d2ab3aede5d0e34c704b9907c6cd39203c2411", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a6fc683a304ff7070e411e00a397f6374da57238", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61f6df1f195f28985da1458a905885bf7c37ffc4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "70c67327c3ce98cea818ceed412a8d4f2041cc69", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e83db220e19a0cbcfe42cbbff7671c28183309b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "63f0ef32f0543124a03ef9b7f819767cebaccf67", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2ec773fa8d5d55c8c9af21f38949863512e55e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8716b9e4c25df81c4d8793b80a932567b4c1610c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "795db4818e4e9bcbf5458c90d7ffed334c194469", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d66a3cda3d3de32040138a51f7bdf9bbba2df7a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1821dadb987df353f96e864624bc59d1642d807a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d271bf951de2c7652a917644e4b3da9a75a3b7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a335080606136d07d67b0d9d0f87e779b6843387", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03537e61c267824b36130bf5148233dacf491b3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "14e7d57b2ca909e6f2e708e69156a0fffff226be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "708414ed9426b17b7c93c2886e5fa811e93efab9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "810d33cb9f35f45a3c439dbb446dc1fffe07fdfb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8739f42c60db148a3c5158ce4b2c5d0e52815e31", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7ff34c3aa5b9910c31d941b7b65091b1ef3270fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90d16315c21d6f689d845f8c69602006e3bef175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c381c76dcb019e7a52235e21dd6074decfc8de1e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "771cb73a2d42b8c231ac8ece1445637c1368c32f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e5fbabf4eb1be579a94f6b74c9ddcaa3e2aaebcd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1ac0f62b701b104e228f49b3e8eb9f3c049cf63e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c2535b7e964d90a8156d680fc14de0df2d517ab", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f65ed2da90dcb9e89a78227ddce7031987976ef0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb860094387709092737b45d242d3d1b204d6db4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4f194a9b38a6a3b2edd16c225f2912eb8e696508", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fac4bd420d54fb6e384d8ebccaf82b5152568353", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f983520b8f3c32b4fa67950ce5c65524061697b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dc999de36bd2da8184a2b43b4e605f5433a7800b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f40d9e2310326811125d7270a6f34d43d8cbc132", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1e7a75d061aca0b7f9fba55a8f02e22649813e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0fde5b5c4046bb132ddcf5fb5d4467f729262e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6b75f49cced9982ef08326601d4b01123b7b3531", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f8fdb53daf0f03c6a91a91a36a34dbf6abede2b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "162747760b6ddf807b5ccc80f46866e16e7b0c6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a887d378ec600f05b1a884f8bda0e3aaa619addb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f785be9131b0b80754075eeefb987d08af8dba9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1262def1f35561aabc2500456123ad18328ad16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38ec5104ea0a87a0ceaad5ab9a463a6d5baf6c10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "696b1cd5ebd35626a67e46765d26ffff3080fc0a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "778285e920a71891fffbdfa6096e6d59543e7fa0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3f0bfef48e59ce9ce063a241d47a4926dd86996b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "eeef56381ae39e4fdbf51a204200deb128913a6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb384d15bf03f3e84fd7aa800734393a8e9e9845", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41fff2993b2c7400c093dad8f7bdfe784b9e1c7f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d56193df9d6d58d2435f03974cea4af7958cae0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6230ac00224734bb0bc481662d3f5338d38ffd9a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8621faedaa151827037d369aca52ec4e1c9e7732", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "50bf9abe6629eb309303c826fcde4ba916d19302", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ce26db0d01746795360fc6dab70b1c3a3cb0103f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8b9f6001210a10f0dfe588e78d1777e7764715bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ee10be7217383f841958f54d62b80c5a7d2d3904", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4d802e11d3539acd9764569d28c7b6e52792bcf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "286929bff2c386645578c1fd5dd0b296e0ce10d7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1488d60dbf401adc78053423eade4a2e66c720b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8895de3b92b7ae353061ebf5ae41f186f3224bfb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fb801dd26f6dccc173efe46c5d429e1b075bf5b3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "65326d9563a342c8fb7b4716c782d15fb9945cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "85e7529cb6458720547425afc845e198b62f450c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ad9e5ea8cf4f5a856ef369abb3d04d9d627d4ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "52ec81bbcd2a5692737c2d92466a41c08bbeb6a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8c60d068f401a1a9c8c0cf591a145dbdfd7ca088", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d451d364e4e699a9ff6b20b28397758db9868b9e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "69fb919964bcd1bf0397eb9690b0aeea4e957c13", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e96b3c86e9eb21bd5bd628bee3aaaf5795c56bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89eb63d9c20e54ff561b8ccb60b28a20eae11ff3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "60b0af8578bf3d1cf50294e561d1e5e835231523", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2a3c3df4b5cb7847347d2c11bd69eb4b2340d52d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "69c03964d8a0ca044194f03d6aa5c16464472262", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cda8e1d26d0809c33423f5826cfa8618354b8ee2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0f8bd061962900f88f42c449b6366cd127fad2f2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e08c9e0d13263f000982b9b08e7d07cf7bf67cef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b85efeb731f6910e5cf19a19c2bf6c64d8778e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2060735bccaa37429c5b514a8d210eadefe26b16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e3ffa3164fdedfd49d4c00cc0660ea740f1b30f3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "981a39bfb056cc0515227634c2313a306f8b2f0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a11c96be22de3dd8c9800ede81c168aacab68b07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f6595d6df876bf300cf8af983b09e6446591db8d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8be3a7ada000f18c6cfe03a61469b8aedf531635", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e50e13e3b6abcedb95a07c24ed4bb4dd2ec2b296", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d46bb7c0458391c5a4e59d1e751428f57946d881", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ae02c66d52f87a20dec6260f73f2df0b20041b30", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "af7b1533144e347c424c83fa1d4adb3c2910b083", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ff5c73c802a062d66987281b5a958841fc176f24", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4b6cd69b3bcd47a0cba2a8aff03c6a8870898a19", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb20c3940c3da082eeb6d87641742df04376d2b6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ad2b3a7b4a468507a9301005d4c69d43a39c87d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cd6ad36228c90222b0c72eded8d262d316fbde7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "665a08c1ce448dd5867014b69e3aabaa8d235a1b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8849a73db58cb60d7f804b3676a2e8d6cf8f416c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90d99df21d501f331059819f8502b5a3a42d143c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "75b087b92ae3da2a9be69f36327cec8044e5ed77", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ea888734c9576d234a4fc1e60a65337809b07802", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "68cef029eac29c817601c98589ebe99f155c8484", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8af419a1d845ea3ba9887f4f4f4b19dc1ff84e54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a1d6eb8ca2e8f4834cbb2485ffc7a2a699c08a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a4d7d251efea2e4945ada6681481e2e630cd1364", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cd63cd068941e8a1fc014f3990259b9bb9af5cf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9417d6015dfde551d84ac55f79a8f158b78d1b08", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "271b24eed28e238628757d6876c01f088f1c95c4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68a1165b2716ccdad75f7715516577ca45878293", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "665ce9f2d6f595dfa85d0227669e95bed6ebea6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb5f11f85c4dea46bcb7fe5d0bac0016f4d0e581", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c78c9efd02ee2c361da1d6445f89bc5bdea18e3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "654e7bd00ac990cd5fa3a26b4dfbfb17e8b5b46f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c55d2b1996c3cccb3ea44af513f580c88224f1aa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1d85291d1f98613db67e0f7d0ea4970ccae5580a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66c0b23efb4521a5bc81ce23f9e24792214a0827", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5817707884c76cc8baf5ee30ea9d7132c0b14168", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec1d4644d2ba89bb45f13b038138840b25d95607", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a1a323cbcc3396ed8ed21a0336b74803e807e069", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "74a5d71454af0944f52b18545ace30863dacc652", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "258f4b98a8d0110aaa77543ead46e3569cc26165", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "df4e9955008c856915bdd8542af5c32fd41345f8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8999e3fc920cbe7a31189f5aa710bbd448f865ec", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a788c9de279ffe804d95a3caa46b78f5348230f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f6695f9ffde388e489f14d1319e9d78cb1603d87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "44fa565242b4a12e46335f726c31b720639f59e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "be66dc48ef9801a322d75ec9f07fee36a7758997", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2be52bfd5c773f46bd8c77f1d904c3171764a121", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "067a575d45c4ae0e12d14d9ab760d708938aa81a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff93a0c6120700813c7f888f325d249194de1168", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5c77b88ea49d8690cd31a3d347e581fbd1ee98c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2b5de7325569f6e0ca86170a0032e91a759ca079", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1cc3f936446963e1c74f7f30c7b90520aa130a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "48c6d3a29ec688190c7052da0aeb96510c8a4617", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3d09725a8d344b4e67d773a567e3d6fbbc4edb9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "618ef626d7572238f8ed06d72f8d43181c85d2c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "384c733aa68f990f2e1ae7e3534269a5e12adf86", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "470377cc9205e9f36cedebe920970408925227ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6997d00d05bed4216306734660b83ed2d4be2820", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c51b5cb8c79478460aa4edce4c6969f1427a0cf6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72c67fe0fb007b09b299c59114bc39e8a0f949f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "08d19166251aaa890ffdbdf33da49fdc0175cbf0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "791f37ba128bf2ef0b76c3121ca1ea18709ddc61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c5069cf512240002ec20ec65c4ac348c646247a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "626dcdca47d201aa2d1c53ec48beebc6562fc5f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "35584fe866f023282507652c96b06c3e07afddbc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9243bb0a66ad8f7e65b7c2291cdcc603855b706", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e559ef09f68daa17d027320716bedfe527332b88", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "314527d3dc84ad3a7bc4c1b80fa87624fd5acbb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "403393741ed6090b390e709f7a88d6ee50e975e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6e735fd53b8b5c53af00d2f2328eee5a44c1ec3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "96ad35ebe73732847b7129364f434e075a5263e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d786621fc09fc6c95bbb67358f2cc5f00bbb00a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2f04880b037c8f08346bbdd4726f765d9b430964", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bada64eae1aa760a8e359301709fe2c5c66d4d67", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1726cb285de968bd84a2451279f3bd9331d82bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eac05354c4c4b5773f9dc6114613e4e1605432a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "906a9a100b7775670f757186dda787e215c85484", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08110291cd9a5a905498b41a1b9d274712372144", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "368b2ba415c7e413a6d1a8543807791953011d3c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e7233d459d9c1bff8b3a5da9a7bff2da542fd54f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfa31748f3c71cd01a851cccec447f4c8bc9b656", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c269f8965a513c8997cf15f7553fbeec0a01271", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ac4f866c623012737e08401bdf0505e29b7fea2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "82fcfbc2074b0d6e20740d0da6d00426c2487276", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "74b5ed9eac40bc037742c260905b8518870184c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226496fa513d0549f0265c346300d727c9065423", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8f6422dcfe1f653dc8621aa6c6556d91d2b01af3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9442be83932d16ebd8e7b9dec5ee8bb029f4db15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "81f63c92ee044fc78c4fbbc42940539c789aa5c6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1ab33b7c1d696cde2688ca585448be20217b80a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61115aeb86ef147fb35ff05f0566d07d34636701", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "52c6733b524ac2059aad511ed0acd1b493974cb4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2f91d42c7e91d78005940b09175b3fa3620d1ad5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf70e427da46f20ddf2543a45387abbb9c9fa355", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1e75a20e6ba2b205fb41302aaa531cc54f109f2c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d69b2c365e00bcfb2e573c7406143993a3f3bc16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "88b8c28d5702420432d4cf4da5c6e130eb666504", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b79bb11cfbe68baf5579dd1ba9293cde06512594", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0529e4d851938aac7019604aa23a026964f2a07b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "888f83abe7b47750c77d675dfb70f0a3b22a7fae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ee260a6bc799752bfae17d814e8c5d5dd9bba655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6549adce1069638122b8e75a039f3b92ef2d5dea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "33ee283757a977573ade2ce739ca161cad7cfc99", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "38e4316c9d74b396d2f9a2b610db5e16c842152d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0605ecdb0d029eaadb69de073c84b3686745e693", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a2c32a04e739e766f97d571fbf96fe98037c48c5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1bd7b6f26ccfdea0fc3d03d9883d0ced27d7794a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05a5e51b927f5f58e54994d58274c879b62d759e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3de246dcd2ee05f4fec9a7e590bd598b9e77b718", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8980d9775581ba5f04241a09331161b176f90129", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7a79176a310d5e7871ffca2646fe48bc501e18e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "415f27ba54f917656a60aac5bbecbc2e3a8ead10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0490f0b00cfd1e782e5cefbeae563af9703dc846", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3169ba29239a9ba3de4b38944a89fb2b984555f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d1c1ee773ddb28906064252ea38268a8a46440f3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c040552a848a51e723af2688b141b3e883ab3b57", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e821506d449e3bae34d29f7974b2377ba1dc612b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6cc96919c45da1d8cc78ce3bee99e1f6d4f38bde", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93312dd48bf01fd59fb85ecba9d4330c67d55389", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a7cd1a13c312bdeb24d6d862454bd0ed17d8825", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c9631175a4c993432a11adb09727f31b13bd522c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1777b4f70afadb86654fdbaa7969df554f1489ae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "218f9f48693bdf739d7de63d627e045b8e299e58", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c2ac1bcbd5c76520d3b85ef1b309bf7768ba258e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad5edffff0a84a436bd56be3e6607149ec3b4570", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d3f8b4151a55b7386a84dc8131c639f07ef512b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59bd5875c771d6d53129f9abd6c10246c03e7a2b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b6fc06337addaff60972ad7825d4f6ac001b2fc7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e9ce0078cb8dfd40153bafffa038ae6c043752f8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "823cc6dac5a69d8dbcf46eca248f3d033d63a8b1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8d1550a16cccce8ee7002332cc831ff859e305d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57e3de35bea1c6b18c4f1bbf206fb4dd5c1366ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21d429647d610e067ed5317ae06d9bb686da5845", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d1ef6d142adbd7b6e6fd4f3e0cb7a6d183f841a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "43d6f71c5297693d02dbaf6b9691c2f1baddd54b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "28b5f7be39ce2bb223db02e45d38a9e1482d8136", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a72372849c06f879600becd21d08f82cf296033", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "826c50614d985568a9dccc871111f4f59a6f7f4e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5cf409bde29e5d94508df1823677ac1660d0709a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "68daf74d6dd9b5422676c97fd7261ffa78005561", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8ad88f44117f5d733cebf572c05ef8514105b29d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8e2116badb158c89d239231f215da6ab70a5fd66", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b70fa90b61cbc4a70dc4ce30d8086f53dc1bfa8f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e4d77e90d3cdcf721cbc3268d657037f046a0b97", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf90ca5f7df12db9164e57042b6090edb060a4bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "446887fab80f4b41a234a5d567b197a7c13b208b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "30497b01eaa5530c5dc3857b8f56def3b7fdf9bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23f27f87c0f9a7b46e8ca09ec3d17c33afbcd95f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cc5469d7f75e4a0b3f8a7fea32e27352c8ab802e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5ce214c83edee964b220c73418d14db67627493", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ffa06d91bee53d83651d865e7fbb0637995f5e3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "573f14befb65a1984f37390a053590163b3014a4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9c38484d03c7a022cfe1a4ff211b4a387c67e2e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b30d1ddf0725a027c3df3e3e29c5a60d20476af3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb95de384d61ee7d59c94b58b3ddaf5c089f9383", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b4681e9c24a04d457506680e875ae1989887fc3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3582effa12ee29f7710fb652fff8813507230197", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7bc0b16186ce376c0af103014611d935fa6609ef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8743a3adf403ab60b1e97a6aeccb12505a835438", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "caa7277cb0d68062dc0640de29a54b6fcebebc4a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5b371813fefa59ec2368d252d38686fd1c8ef72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1f6b38b2ce2f1a665992f946a4221c5ce375d71", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "040725b9db58602a2a09f00c68c972dd7a3b060a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58ad233a99b68c67d2c0af3aa9b8b24c4670b2fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93d748ada56ade7f81036e51314afa525fe56d07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "45def2c88747193a42f9e70fda3f2a2de4e024e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58487672dabdbde10a50c7add725a441e69f8532", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e54bab17744ebd81a0655c8f26d3872140563ea8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ea1c98a5d10bd1fd8318a1df4547ca5f067bc642", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef6e1b797a28202de3dfdc28116d6edb79acd782", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5873be38fca2636ffb96c037c6b2e212bda6f09f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8b49a6d623fc7fd8e6044a34bfcf1dc6e743ed84", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be60265b00c3e9731b5a78b4311679223d9d8e54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a94fb7cdd9615decffa716d93902c939945d40f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d48ffad6f002dcd00a6898536f8fa8596ad2dad", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "742a9cce05112f55d63bec4fe6c97d3d13d192e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3197302ed741354e6e878027b1223063f25a8e4f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "504625f6dcc0ebb10b760fafd576ea602bb52ddb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2e5d71efbbe223931e4de020343edac5cd82cbd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c3f031bf798e16a82554edf7190a2e582a39f6ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f7d4bda0d5d1f5c957e1a617fbb7209e4266545c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ec9779a499ea78912abd5c18eeb4b79a94efa98", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4dbba118a13040d40778c1b8b2f82e383e8f2cc8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b549fdf117dde2e6e52443ca8a88703c68ef11d6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2a9ce89f8b96c4448725bf58dd7ec80c30df2cb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ce160d29dac1a3b6f907546fef67073bfe5ed80a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7ca82a813ba2bd7b07755b56f0fc771184f14626", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bbf803e5b154c61a4df8ab80302b9e6e764c83cb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0d8138ba01c952aa3a3d076ae0ff1256e278a8a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51d323af79238e9330515852f28cccbcd0409d59", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8def42ed8f2bff8be19e85f3f85330ce2eae995f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4957c4ed9d7e92f196dc0112cfaefdaf29094b25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca3ecee591bcc8b54011e695a52bbb6b635c476a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7afcd99093820ddd14ea186229a53d78d28bb3c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "36a4594ab7da528114382c1e5846fc203625272d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c50bad5e11f9e3c519ec8089ffb7eefca2888eb3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b378fde58f52ed4671fa8e6afbefdedc094264c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0dfaab6837be9aa2e304e9eb17d1c423c7e6a1f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3f1bf217a4181b5a81a6ed3312fa4f76947515f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dfbd904e89c74d35891479f2b2adc8b1d322be3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7c0efdb5b6b7430f0a4e11aeb216844825c38b61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6f3bbed369af858c512429baa0f727af8e7fae6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d42a065be4a9eb1c9c4397384c04bd6b4d14b9c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86e148b3810575fba6a2628b5f978f7243302b4b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "83bcb66fe1aa795a47cf83823dd1dd12ad09420d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d35c300937604a53b0e7a0c4690e5c801b21ac76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c68b1f949028778a9ad7e736af9a3ce42ac9931", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ef110feef67165c1bd06671fa27240af9282b914", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d1b9ce064bcc93527045d3dde12c9a87f3e0b89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "81b5163925bb27f810e72f96573a02724861e7d8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83fb05d9cd787bb4a48d9c7e8c997870444ac711", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9126543e077b0cc68b7b8a4118351b7326978163", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "88d05998eb578595598a2ae6bbaeb82a97cfd40f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf629cc5cea47af305260d957d782c96740fb594", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6e1a0288e21ab3a4f77ecbf80622a346ba93512", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9204a9d21d74a6535ca8df2deb65de7adefeb20d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff70288cb126ba5faad934538d1644ca84b05274", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "63c4e6524b575a31ee4b30eb3e6bc645c67a3f01", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0671716007c6e6c6f72b1e59aff5656ba84bab11", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b6707a84369341fe0d7ff038e2e0526a699f0b9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c7e090dd494a0b08306cdeeb536f796e6c997d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4d7534ec4d47483d9de5ffd85c10864f63c25c0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ece53fcedc7c1d55ab1ea0af37a1baa92de1956", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ab9f23952c81adbe0a7e3671395ff4d05693cc53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b5b81a1eaf448fec9d2034ae792858ee0b1df384", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2320cd0a449c24aaf2aaf869b6fea47a2ce15ce0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5b479cedcbd414a95e2036fd2ee830879b2e181d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f511062160c9c53ef17ed5d982e96a3902db48a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f6d60c193277ca3627d29bbcf1b9dfd07cacc712", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "90beefd48596b489fa18ddb18e37a1283347d2e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c7c9c03f0e63ca934232d7ebdb5bb96c90dc2d7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e6cb06d37671feb41ce778836494a67ffb000928", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9f973be4eb309d100284c7dc8b222b8f3d54ff6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5eaa6186b72793c0a284c2ed8fa1d635acaa55c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8b86078ee7f9734ceedd9838017c7205d1a8535a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "260cc4740885f42ce7bf818a06f43dcedcc2fb75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "637ba9cc3d38a5333dbd3418e5e938deb7d826c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "565e4750c4e9553d17202c73bd7b1ab76469a4a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "753e5b14f3501f1aec871989525eeea42fbf8161", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cdc3f4263bc3887ffdc8ee49e761f585e9307ad9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d9f7483161e4462d676904292eeeefdc35daa593", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4b017305f56c9b73da72b3677f6e080659308f05", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0db9550f15a9dd43c3da40ba2994ae6edd0fe744", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e28f08d63fed07c482278f725c87efd571016c8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "27ef81f43c8a214ce3454be7fefba241437b0f66", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fd72398e76decfb1456d91249903560dc82f5f75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "02feedea2c3ceaa775f4589d65714cef2c7a0228", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8bc485e2a18e9798221ca95cd38c1e611d3e2bea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93e5be18bc94f22a206c69bc48e0dbcb08ff34ca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9f6bb7f0f4acade7671472d6b17eb7c378a0c72c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1fb1e39f69ad43f7675eb63a74cc7b2a7f1ee295", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61561de93c26d87b04928df3e41a2b8e853879fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "340b23484440fcdea4f66c8f789d5104911a7537", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2d1a38519440e1f40341cfe368437a8d17e74055", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1fce36a62ce56a400430cfe1e4fb85f7a6ef4ae8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0c0ffb0dc38ac0e03a60ccb977bcf63b604f5eca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c0231aa7f9c2722c82839f5e1ceabfe73fa590c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "111d09d2edf6298892c3310b5f5a64d41fe10492", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99e70c659d458c1e7ba0bdfb4579cb1aebac8baa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "46f3f69be78d9c22a194c4ecaf73a2ee1713ee8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3706d55b1c829dd57ce07cf33466328aeaa5bd75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "81f16d939fa45fd34474ea87c3c2d7c5fe315208", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ad67908249e06b746b3045531a1932296c22accb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24294257cd31b4afdecfa37a28b3edae18f7c434", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e00363db5658bf4d415e3ccca8070aada10ea601", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cae8d35da8fe69ffe1bd27a007d465858c08e15c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92eaadf85af725cd466c7f5ede58e63d6e19b4b0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dea49591f96221ee95ac4fd4e363694f5e67fe05", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "568acbf509e76647b5fad2f1ca671285d9de49e7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cef76d2b3dccb2a0e88ab5b1f877da2f36489e76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9aa5abbd2632495fdfaf4b31da3f05f6e3e9c501", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8da7dbd0d5b32d35602de86f5034c4f5691a73a7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f56f48ffeceb05995ad2fc4643c1ec1dda40a2bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f99ee09b3f23daacb6d78617833130d33a292a0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0607e6ba0dd269376c633de5f286196d25da5657", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23917328d13e0cf4ac81ebbce82a180aa94ee577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86c7f78c3ecd56e6dcf687bd6de7b7d6dfe8b88f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b8fdb1addda8356073c7ace033ac91616a46a741", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ea7a77c816ed32e272aec25d26478e3869323b3d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4cb16c150ff8ebe2a61c8989526eb81eda60dd15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b62d60278975b9611af931746f390ecf3ee6541", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0f9956cffda7931a0bfd602cf88db113bbfb75ba", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c2afb38e53c49d17e757d5686b0722a1c8d9c565", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cae0a7d00f52d2b63111a55cdb54feb6522e02bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "11302230a77638802c7a882b2dc8ef932fe4d040", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c4295e02a747130bdd50bc26aba68134a2b090dc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ef6939c382c401fa22ad784dd686ad3075ca866d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7b89aa4a91be70cbcbecf99e306f8776d119e786", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "95f40d8a017b8bd303c68c68b8cbcce59a363c25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5c1f5772d6dc5675d1a96a364a1026efba098e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ec36c26496819267f369269818784826ffbfd4f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "19def09ea3f7e9d2c0380b955df3091466f7d4e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "eec75bdaf815a44b16e2d85f80a70502c57e57e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05f3b0f95eaf700a27746d6b922b6903e4764e72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f002ae877a2239400dd30a2ba39eb9805392ea89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "baa3e86f309f5072cae42e64c43aa3bf2a460504", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "70a38bc379409128e9611d306daa480111c6e7c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "951f6aa908ad3a48004c8da640a4e50a23b4f0a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ea8d3845159bac9ccb3c46b21f4e39af681404e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78416ec5108443d8c7ad0e698cddb0fe79c14344", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b68b59195be50366abdace78e8545ca185528090", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c4a863c3de9dd6c54d4fa960289de0a04b5a0788", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7d6e96a029a51fc91ea390d69597406ba0bb654", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "08065baa6c8353a1bbe9b5637b113376fb028175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a926f6fe12c257a5bcc4acefd2c65df7a7c6f65a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e779b297ccc67da5c6dbc357554e0c82784e53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b84be30e59082b2f6f14beff08265ed6192be341", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "47f028e4dfadb34ae0e354baaf96ae1ff22e11d2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "389f83f956daa896c7284514d6f48ae5ef63070d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "03b578a9d3e81549c93b40a54a87008441531757", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "79c728194fb886d9fe6ac1bbf41a36fde14797f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f1d6dae9ee906d704950e76cc30a71ab4fd9c339", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e6670e9dbea66f1a6cad1798452884fabfc6d518", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f71fd01a5bf99d478bd45e53c32b7f86cb17b983", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ca92dee8f882527fe493b75f56616b53f3f00ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "94969f98e281a1ede6945a90777227d8111714f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9729a47c49130e3436bd08b909cf577aa0a36a5d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "630b1057c6ecf415ac181f825e3bbb259dd225e7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1ed5376d68747b577f35249c4092644a3c266f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a587af2a585825ad133f3cdebef9ca5f1e7773e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7943fe79a9ba3945fe14b8e309a129a51703b2a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "485d1de68d5484f203b57c86b091bf75c3f5e57e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "24bd2fef0180761f8a79f60af0efe9d417aca92c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "adaac0ff4a96091f951a7802e52e5b13aa983cbf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf44af787a8b6b00d41dc383c3cdd4ada6b6a017", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de8adacbff8135c837052edb20eb496bef189d93", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a9637c25a32f31de9eaae75520f79774f82f3912", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f60ec6122d20df15bad22bbc194633c1217efb5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f8cf9520930e5f1e36dd635061998b6d3bf14e20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ddaedf9640d2e5112c99bf73deac63de8cc0636e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b5212dab075ea17a1de95383850a243b2ef0384a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "49e393f0a1e4bf55b3e71a7130701319311b2cf4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03b50102a61a2082b414d6a1c645dbbc3ce3aaf0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6ade0abab4581222ecbfcdd122c7f7e271f73c5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bcd4760a2fc9b2fd982693806f4744b2850ecbbc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fa2d9603a69d78b81324ca69a5f0437e88c803de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b87296ba079d82a726a57e07c147f2854b8a8e53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "484454949dbd2da10c7aa1b939705e9e3e579875", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5309362e7aabb1370c0ab65e62bfa5befc520e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53d78447c87397107b3bef4b4eadf8e129640e82", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b27ade7bbdfa4ab9f4d004b876ba95e89722fcc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be661314d339dfa57774c042c83e4b6f576ce9fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "569c74739d332cf1471e7023985f244834addae6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bb90a6f4d2810bc4c74ca3b44ee356c559e4cbd6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "da8b132f7cbfe7b64ffc8e03622165b79c7f2d53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cb01cf977ecaef6ef24287272b61acc368cf7f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a95db4f9446c6537cc155071d8d411f6f3f52389", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78bce35ac9bb1638cc5fafd788988014c94e49e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a742c270a52ee5a24b5b2e1c8686cd5bac63520", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9796440fbbe35d5c8c7be9f77bbabf505fcd0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "000c9c393b13e367f1258768d68ccf17c146f2c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "32de5572c19ac4f2334aa603e9d0943559c252be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "210025bb7090f30d3e67a351a5d15694c267c530", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c0ec6d19d7602ce55a617ebe23bdb138a396d3ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e2615b14c3574d2bd99c37069f97dc048ef34ae9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8817bfe50679a02cf97e16f28871251ea8d804e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "75dcee8f4093b667378ba3a5adfe0fd8beecad64", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e71f08293d89897ae9daf3dd2acec20f90cdb311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1567bc26eb7eeb81422bd8977b007556f2f15a58", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "390345f5b960987f14e2dba425690ffadcc43e45", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b578a569d2c8a9f5cdf95dadcc26eab32de580", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7ccb19a9c6c5876357897ad3a09c0c83789f7f5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5be47fb20fbe12b5b7ecad649d16f247d0b576bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "aa76a51c525e359fbd8a10494b9a6d658afb9144", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d58038b788ec8ddfe01e9555822cf3776832357c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "087fd988a63d9c0f8977a2d2d72c72dd3c8b89fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "372e60e98d03b618f726d2a076184e24e2f68ea1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58e282d204f2c969fd5269803cde6c0e473e7d7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1b4ec3057e53f83926298d75059726fd53903dea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eab4ce0b390731ed919f23786c05d1687aeb9a1a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "34fd2bb31739160f7c237d83d41f7b05e59a0fac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8a74be149b12bc22aa904c10f46fc931450e04ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9e033bafd61cbdaca25bd24148ba590ce6d50f63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "31ec4ec0708f055b35132110b0c3053a243eef7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7f9c894b10017a19d202cc5aab1be0691c46596", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5442a68eaa06a4a0acedb69d523b96d5d1e94768", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ada0e9c3154d354b4f906df2e40921aa4aefb58c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02e6f6a24325ef5f48b2a6e04e8ed6e9d78299b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "79fbcf039ce2c7af780b9ad56b78d94c50f6c514", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f42c28ef60dc155e178500278c9bed43df0722c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "02c836ab4c99463cfd52751989526b925cd57710", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fab43c37d96b418bdbb49ddbb3608494732a6c98", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1aadeb19c27d55a085f74edbc8b0d6c33ae79820", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "63252e9faa1c7b6e46326a997b96b0042e287213", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1452b623e37ee4e119f95f331470b4ccf1927bb6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "468a6cb58e00e35d8c9e342d553f64a7efb4e515", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5009271df6d2cf41a29032f9455bcced8a270848", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ae32aa672487ed5db69ddbbf89541b189af39e4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ae34b558f91f6fb7a6477ac6007ef90013033bc7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d826d43a726f878c62ce73b3263cea321d293ad3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a08efa5901d31c8324efeecda22be93b9a20bc7c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "921dc161c5507618643153dfd6eee420bfa05d20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93ad3232c14fffee09321887f99faba58ffe74e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "09875cfac689d25dfc0223241654f1ead8dd749b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1c1106ac3be07131a02775c3d2bd27b4a56c9ac5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "04dde7b7da2f20463ca11bf4aefffc9ea2e94c14", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d17d098c61bd8e5373881b2f0f87bf0757c3d224", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a0602552676b78061c4ccc1593ab41975cad9c1c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1ca07c4984afe4942ce67565ad067ed1fe3c10e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71efb0c48d7c815e8f06bcefe9283e7e339dc5ce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24d94bf770d2130cfb28f4426e775b0360d835e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "531300cf6b622927c9b83eaedebf3e7ca18c1db5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "955832d977751f948c74921e1e0afcf23f5f485c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f3b67051dc269c8d23cf298c1cd75be07c14e4a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03cb2fc9d0608d385dc695151ae06c532954a882", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f0c91b3f71f1176b47712a420aae6e2ab720450b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f5430cb8f736ffd330a7218049d0c73a0b825df3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3edf7d2e77a34388b0417de6737c4c14e6319149", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2c47b37f133748004a05d636c962a3fd8ea80aa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de35f88f1b00ded17e0edd89d14aa0e8fc260daa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0585defe5df0834b9bf5553394f4bcdc417183f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c8c4c7a351042039acd74e224396af174bfc75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4547c2eaf86a5c2ac06c6899eff91122689e21f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb809401270db26bf48aae76c6bf210f9ec2520f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c5429c226e44eb40c10f7d3b96bd73f903a975e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e3de8bf7f2d22480fb30b826398d93934a9c72eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a9b37f521385c7d12c7c7700efbe08cba4fc11e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "857653030f3b0571f49a9502a5288b6035bc1175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9bd1c7dc475b3e0a4447ec07eb152f966a94f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4daa2a0df0399d8df1cf1e9c0079fc7b21d339d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5af81f84992f5c538c8b3219fd67b08060160d9e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "465917556b1a1c1698107e33b9eb334bf44c2d9e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aa95b2fd9d6c4b8399ebea34513d5787df269582", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d392dbe2ff0f5a0fe8d4e285c626cdb51cf5b78", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24b1af28703cdf0dd973a99fbbfccba7cc058580", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "69bc74c25cfb6c4d25e217995558172dd2becda3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2dbaf301b5898a6f0e9fa218929b24e232dbacad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa6fffee6555f0b34dbf7369c5122cd2ab06c193", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7638170ec1a79e4ae1ef7cc6a788ca39aa4ac32a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "655b4e541dfb56a9b07382d4fd7db832562ff624", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3021402c85c7b14e9d857811fe24baaf8d5bf271", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a38db2c7db027264c607ca79f8942244ab3b853c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51015da9e0b60581677ce64fe88ba2e41f0b39fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dc1ef5ff25ed63bc170b7023434a70b89e161432", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "94cfa47652b62ff07f8d7cd00b332835662c5e70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b2a742e880986517ebb9d87f0ecd82d4fd379d85", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4a916ec1b51f5e83fdc3ddbd2426e43528e20e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f058e1dc1946166f6632deb5561ace172bb3ce3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59efeee37bbb918e7b0b83da74d5f2cc28bc8412", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b8084c4f78e648f9471839c3686718596565f3a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7a6b96521fc242415da6a43082afe549d2af6b13", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9c8d4730504d52d568ab3b3f2a24a0d017b1adb2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf63271e808a803a26892314e95d5963958db710", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a85bcd00cb0917ed52b02bc464b87e008056d773", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9ccf1fd3bb118044efc8c45a679b1cc4fd39ee4b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d5046149fc4e54eb044cccab177bdf816a907cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "83300291c01e1b9dda57795bc44d8a8dda572686", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "88fa824b503a767c4713211702a49bf783ebeb28", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "698ecaa5f765be89f6b0e5eb6b9e6837e730a8cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "068e5bb17743305b3fa2beceb43c0525c4368144", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "84976084c3532cb8fb3916fc2820f19e19a48b5f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "23703f66496f120efd6d6ab90128db2b12892280", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ff46aceabfbd95c85b3e316efe49608a8cdb6339", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef5435497bcacb087492146115f7be440a7fcef0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "413c18f7ce1ed94c3f3f4bb955e7a88ee493a653", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8342f33d0906f95076529cc9064b515437d97e8c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "de8c664b42bd2004a58582ca32972819a1b5cb80", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a62bd5dc4adf3d36a32401dfac50597e63fd5ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a62867616418195d0cff4db469101908b7689b0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fa60a4216f544c353f0347943442ac19d3513e4b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b45d27aebcdc663c155f94f08820f35e5d1e0b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e416678d0ea32bd5a72d9eceb657fbd1aadfd5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a62968faf191afae41d18a37eadd888cdbbfc2a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "903f997c631cb093a5310f5f0f1e1fb39a33325c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "77e4def5a76d5c594e26ce52f8815eeac9800c9d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e521a87e2378b549d96adbdd1e60fe79a5cfe12c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7cedce6b430233938072c11a127aa4aaefebfa7e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b422c8244970d2221abf8da3da12eb55249d979e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51e0badc7e09cbb0e7c5c35ded7a00b0e598f446", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "734985f741961be120a8e97befa28c435ac79bd2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0baa31dd065df00d72ec7189caa8cc9ace1474aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "45eb8776a24c95a14686e7818191c5ead8b61acd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3a2153ff010970fd3f8b3c9db4a36218c25a784b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "672c26c7f0043e699068a11ce44c3e9d4999df22", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8affcabf80b69662e4595598bd96c90a9decc31a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9dea0aff4769116bdb006009911a25942c98489e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bdcdd99149c6282255300e6a301ca3e86c91b7ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9006c53d3ced07e21b4efb0d1f0107dcbff417b8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f89476cf96a0dbef98a65d305777ea70a5b01d41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df5feee0a75505892a0db0ec3ac68ab5067acf20", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d4dc1ba5d3804532df7800446229812733f24338", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "08d87002621fffa9da36bfa5d607f8f6f2966053", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3982ef8b29d1dd05442a9b1b176ece1baea35aea", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8074c20b348a92daa7ffab6ce4bc0a669bfafaac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "554cfde3dfedf6907232552a39db0e46754252ab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daaec162a1ef2873a03575fd7f3a95bd53ffc5d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "45aca95271f218ef4af32a0db7c6028c70d16c29", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e10924935449eb206ee3da76b28629ae898eed0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "119f72a083cbea8eb8dbc66ab931f0f98a6b3891", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b345d3d0e24c4ea651041101735da36345c1ca31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "728fc89371ef40bc197c67fe8fcb9ddedf6cdf95", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a6422919be8d565675f9df89d38285590cce6e77", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4aa1d04672e1f26dd082d1137addc6502fd4a84d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c13ee1afe1caf411a72133a937e3492dbc103e45", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "142cd13a5da5759a852a494334ec868a9c3d0358", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e21acc0d8700a4814513d9e7cf291bbaae7120f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f408e1cd9f88641824317676450edf08f091a330", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435571f8406d18d7fd7349345a1f45a8bdafdfee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c26aa6588c0fa980538ce62bf443fb7898b9a905", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ba61fadb1a110e7dcbd3d13c6cad11ca168b8c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d92390a2f1f31a799bb7f11bfaca897dc98d6bb9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cfbf100e3d3433ab6b8430c0d7c726d78ee172cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4c4753cd8bc0417f3d563cb0b57db97047c4de02", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "837b6022083ddddaafd3ace7b203c317378acc68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92c4d224330671f679a9132e3254708d9f897029", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7be22941e0f7dad3a520e031d4e7d38b290788d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2df6c212053ed53569deffca7de9e3d6fa4a64", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f89d7507d5a2246af3eaf39a0fbe6dc2d34cb15f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9df0b97c20c18b9e9004ab8f0b442eb3fd90c20e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e8eaf265de5ecf7fd72999717856348a21b613", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f790dcb221d6553738f75926805e67251f9284a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cc8209d6ad5233b859fbd74296960da9d29cf93e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "390198d073a933fe603e09548fd45252c93756c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "20c507272a72e015c7c4e5aabac309c99af5ce2a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "67b7f07728b5391840a35192661aedc636f4a809", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "601d8de00acb6b7f10affb9329989f7acdcf71ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c96b7847f57f3d4605e9e0ac69b93af21eb3d9b0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eafeb9e74bd210cf9e7ef448a83bbe46481e9aac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35fe64db5c23f9dca7ac43264d219eef5787bc2c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "549d620a9d2718c96f6a01d9707ab520be207048", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "907c81298d1bee675c2cd761588ed8b88a11908c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb61fe8cb5448da8c375a2c40e886633ef4fe094", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f79632ab843bb232369e2bd3818e96a50aa27cd7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9c48dfffb9b5342bd71cd1a3c2ea30189349f5b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12ec3fe6f41a37f94723d79702c0d055b632fefb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ffbbe075e7beccd5fc3511cd34546028bf717248", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a73599b90d8229ec35f80b72108d1bcdd127f8b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aadc1f48733224eae4844d8365fe5229f059e273", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5f91ca0411a855ec09e32b298284c6d54ea7348c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1bf2d34da49592dc4fd22483a77b67ccceb6f0a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fcd9edeb76e1002363acc6f14bb147f179ec307d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ce9fb8871889882ad737dce3feacd32a26dad4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "92b53ec4128a5e913c84d7a022c79b9964a06922", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "517ff3bee6d8da1d54b64553efc8955f6104d0c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ec8ef1d9c79b2a3f028427edc26a2aa72fbd2989", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "16f0c1e50726951a4804dff86d2c61ad3d6d0fed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5879b76781a71f53a94a4b46639131b2c206bce1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3faba478ac72327ffb475ae32c4a66cda979f13b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66a8892e05bc6f32baf87b3d0b998ad5cad2ec27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "668c03caa8f9ceea2343f3b091258b3386b5aa37", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fae1d48dd9686fcd7e3cfea529ae104eb59b32ef", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2f428c46aba489fa1e651edb69d7298448ff12e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a7474baeea5aa69c85db2ec03a97d138e29426", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "523de103001c68abeaf14760b1040cbe7676b893", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3375792cba17008b80069d44c8c23d8b63211520", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "326f6e8b75c1754f30d68e0634cfa6fc00786eec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "53272602d489c937b9d770f31ea8f954aa5ef7d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "40b212e9eee0b1491df2643ebfd844afa7dbd7ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "15faaf3beec07a4c25633e8e2cfee1bcc7abc4ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "66212ce71da8b7ad24399dc46ca3b7c0560f1765", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f437d6ddf3b3e93c34c35efba5f8c80739a58ed0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e84461ccbb7afd96846e841803f8a24c62f2156", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "657c52476bcfccd94f00434a1f0c654c6e5b0396", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b541cd44fb0b2ccc57590b8021ca13f3425d916c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "af1931e15b21727efd043a8e3cbb07f3ab2b9b25", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bec0b83a2ecc577786c0d340c981c7f6f31437d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b77fc548cf2c3cf531c70e59ed9f5c92dc920a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b25edcb155407ac3af0e1ac5c0e3f896a26171ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "90b01700a464289426b5d7dcb301959e0f50f408", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d1a0c2d8904c1626123f96e555303a84d7a0d638", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8d3b2435509c7f4ce78b9f27556d0330147a72b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "966d7070bd08d8e0969092a5149ddf95c174923f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1082dfed29855abc490d191086e84ca80f3d146d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80f96aca094b78e5ed084b2a8835a3e25b496763", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9a0f3f1f6f8cd0873eb807641453827e9910f0d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4af5bc4e8f3af26fa48e201f0c4b326dbb8d7a4a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8da6b7c3ca4d90157511beec31ec865014b48e19", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5f82bbb4593514ca2e2cbdac22812692b697f19c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de294c8658cb89ed6b592da4143f0f95a93af01d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37284c4de55e2e880de08b467955145db5deab31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b6be0c17e709f3fbbf6e4c5f8cdc4da7caa00c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dccb8734a5f4893910eaef517a69977191b0c2fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1a558e8beb4a1498b3ee96d85b84954489916a11", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ceaaad8ddedb88d1fca93e02b43fcfceb96bd8dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ed7caf5b7562fa3295870fde0687532a13054d5b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6e9495261e622fb0e66d21f885616bd36a5ab51a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "403d0713def93d0f88cfec03256968327c9f0b1e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e82113b355ef8eb29e782af5c2e30daaf0af6489", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ac08c4f30aa777901015714111826410b4de95da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c21e812a9e6c14c0447710b781a3bba0585a364f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "08ac3906780d97e9b71538038d3b0d9d71d0ecc4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c24b016f0d815303f1af42f4e7faa7d4dec546a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "122cc4e5217565d86177e2b66e57b1eb7e343d8b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4ea67bda015159fd16dcedc629f12a11eeb34da9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f0b69befe4fb18b2e5ff07cb0532c0a6789abce5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e8136fa995086742a5e2ebbadc4d66766abc458a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3893e04b4922062d2a229ba176d0aca13b93228", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5da9ebc2dffbad8a5591860d42e112eea303040b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0a12544bd857dd4024805397f4a8abacacac41bb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "edd1bd8e064ef2690542df1dc6433c766fd15c30", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bca68667e8f68ee1dc858862fa43179e42415c75", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8b52fe13b6c8472ab161977e0b2635e3cb891807", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e772ef3362b18ce5fff11e81944de74249612bc6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "923a99400302aa69bee8caa3048baffe66dafd51", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fc0429ad3f3838076ae58d1a9577ca0c9f57444", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "64e113eb3aff3f90ea8d70297cb662e246e3c358", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6bb4cd88cc71904c21062642b3dbf2931fde6fac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bdddc62baad99ab5dad540272b6337854d598ebc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5842e6b7595ec8592a62cc5945344e177aaa0a15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa32e2db3cdf9c81482577d2d6d1df23ad0fbbec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4bd8d6917e43b8163aceccbb60037eb7e7274b04", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4b26af2d5a64ebb58d4e353ec4200aa3614aded6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "155fb65bc9b422b510e7bcd6d37ef6e4fb6c164c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5cbcbdff1bd304f2c0c59eb48ebe0619a5c01bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eaeeca29bc2ab9a2433719c3283487d3e94d7c15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b65d98358454f01f11633e6a2b59dcc1418a06ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cf507ffa15f1591e54549eba6430d5c158d53a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "920d5681667407f3a83a35161cd6773660d2499d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "80d9be3c952f7d243c3574647fd2b33bbe8a48eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "248e056a13b84c5096159c64a6e69d9fcd1e2bd5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cce5d206230307aca411dc5e5276c25347b617f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "229a8ee26af6b3e85c5c904b7a4c36b8cbf84e1b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2aca3d3ef11d68fd2f19952637be657f3d92847a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b686175b064380128635ae6b7af66cf1dbd59744", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71a1549f37be25f8aa3daf0be38995a322f6d972", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6043e3f4cd69ce3e4ff7216440406d111bf5e29e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a464dfcb01b0f6d6ceb8681a5633677656b2d235", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5eafd450709f71e1e2069b6b4778c86f2b5899d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dde6279cbaf592842127709c20d0582ca84c8fe1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "aeb0bb19d8e0c8f58fb4654dca053f125aa468bc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "341c28a48b9a5f6eed5340752a8ae5c1b94d7b2a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cec27a06611ec27bf67e38e1225f52ed6a5186c7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "14dd54886e18b2ccdc77bc656129bb0219bbe990", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f21ace028dde0334b66c8fde46f4e38c51fa5a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "050d41ead6d44350c820149c837224fc72e018f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ae4a576fb5becb8ee4bf209814173f387a0fc43e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6257b216cc765fb0a906d836966647de2fb9cf48", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e2f201262877baf0ca592d092b40e87f70647c38", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "844defc67f46b7a68d9b05c8b54e44c541ca462a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4b167ddeb14b5c75f43f992db4a7368b71acd0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79e402f57123bcc1f3fd951b5738af31c3b6f703", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e7f32fc7fd711aaac90fb3efa0712870f2366bcf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "495a9e45e55377f282113419ca2f7d6ca00c72f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d928a796838e2de4095d25a5fec219aa3fe6c321", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "74699afc32049b7b670660ac6c0626d40129c388", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a8b0cb9ad16b89a778407598179e84a65d49825f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6f8102beb2649588dac8cc208aa25ef006c2d224", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "285d215d0ed401c2a2c899035e5e262c9bcd3087", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9121eb05e94d9d707b0f6b7e100610ed419a4136", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e083d888b303a393993671d749436e068fa5d88f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "723da9214f860bafd4f5624e68c9e47f213b3396", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72d4fcdde058f0ad3f96a24c39258a18050b9e0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48da0af8c2cb8fe26194db6cd42c81f21f19af68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dce05da38bae3991072a2be4a277b22102378f3e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8337bfb00d08332051aed627f5b8d10958e9abb8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d4f345ea04051e14eaa8a7365338b57e3da496fa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0fdbf1cfa7c30d06c9889ee016567c221d9426b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b4f7aeb9863a2a6ac9ac464728c1953686bc9c1e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fcb378fd232c075e8afe594ed851386ac0359b7e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30b63154d508ae5504e106bb885113aba62244e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c89ad5927caa369268b653a4c5ba748f9506521", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd8aae772f6f71e32dacef69910015d803c526a4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "126813b2b4f534ad10fd075dc73c73cdc8f260a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "925304207d5361c4f2abc2b58f3d89bdd3fa2194", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c42c674be8150722f0955f320750f2420e0a0071", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01ccd69dc126d63f748f16cf3c002a0ff9217dd6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "82c899706e4f5d83695d1f0e5d9ee99cf9942401", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4eb02c02be1c082dd9c6c18ccfc6be212f5af59d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c612f7a308351c65a8a3706ca2be524c018170d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "aa013398b92759981c823e8807d3d1a05a6c47fe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "23a486b6951b346f4e71e5bf68957ca658c40a9b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3171fa768a41ded2145472cb2619b39b04219d0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c1d216ac268302f05b3aaf20546d5c732aee9e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51dad07850fc6959879f22af5981c0a32402db1b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7a8b2687135de4ce826751d3316f28949f175565", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "504b915b8042808e558a09d5b5482a65128e3129", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5e9ad2640175cad613505c41a5d795ad81a565d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4762046a4decf0f7db0b85ff3e4b58cd52523b9a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "90e3bd9c1b232ca4aaaa383d8b30356713c734d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "330b112acc3fbc13f70581237d52274e3af211a1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0d7cff6c0842fd685e1032df9c5d86b43c4a40d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c93a0e0796618bf57e779d3914ca0a9c8fba220", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "eac31901993523aeee6cf9016d16aa99ba1fdaac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e351609ecf2f9f65ee9aef2ce04740e9fc16e2a8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3c90a615c26ff976143168fcc17e06bb7e42faba", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c53a3aa33f629c9e8798e2ca6d886399136571e4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe607cf915393b3cdbce0b7799a78afa0842ed6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "40907074adebbcf2e86773f9e6262c4a28724479", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b5cdc3528a502ac59f346c2faf069bb86dac1b43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5d22b77cf5c715ec5488d9214d813d3908de63fe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "865c9279dc1a327ac55c0fda3a3860612227f23e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b67b53eccfd1c8121337ddf54e3a0bc567cf9ba6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "95ef0d3ce97e196f185a2caba43117689f087eac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d6f9112e6c835633cbd77c709855ee25c785832b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6703dc4403b6c278f5942833aea79bf6885611e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1bc00147f1d4a918832c8ac59f640e6f1ec1016e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "684891d8589d161f2e2049e83b457f3212c24469", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5b17c8614e3b50f9613d7972275895e3552cf6cf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7593923db57e61ae03a751b8a12b7ce0b05f658", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c00ecf5b4ccefa8c45baa12f31ab09bcf041492b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fe4f049e20528458d06a619036995e9fb6256a2d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8807a1fc79b3dbb1f22e5789beafbceb0690360", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da27c0438542e55716514e05e869ad8ee72b4f30", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4bb65294825918b6fe9dc32a4878096d96c3e1f8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ea9646044d9de2793e9675011d78b13635d457f4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c26beb59446b6d676a23a18986376d43429cd601", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "237c620456b02725e0194025f34a391f40a66bf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30fd6619cab2549e643f1eaca3d0cd20de0e2af3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cccebdf095724784f8c1e167cbb4f0c2d7db2d3d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1be06ef53d3c46a7e3cc4861709b2b065d6e9ebb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "298d6cfbcf938e2faaf908e332d3ac9b0d1b4155", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c7b90778539fcdf0d4561a101e46876f90b2d5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24f685e27d66cd9223e005a2de4b90fe47549599", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "69458e31daa1a8d25d42339504475ecac88c51fa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9956ff28e4f94e680fb0bcade0831ec371219f5a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bb6632c2e98f407b91c900a94eced6f122236caa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "65cefaa2bb108c7d0c91d4b7ee1d66cca02eedd2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6f3380f039555201b0d4e4bc31a7febf58452f3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bc7ebd19edfc09350ffbd9510995833e47e129b8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0b73958481a0e6d694814b86b27dceaa80b1a14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb7667568c7d0aa5cc8b2863ca9276171de1ae91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "84b564195cb74429185b69532457d1879479c39f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "90a04f0b5fcc7d792e35e429ae9f14ffa24a04a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3b074d9e9c811cd50707238f3bf036189001cfc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9b8f8de2fcbfc3b79207b69e3ab01256c6d25141", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7e33feefa46ab390e35f87cf2e166ca74e70de1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b99c3a359a022c5b6fbd31bed45dfb2fa92dce7c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "58128e3b47cfc856031246851af325e8a0a044eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89ee876f240ace603d10664611aa32eb4c2835d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "460f3f8e7851d63e924db933872951b87df49f17", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1b108f8420a5957c67dea8440d7260fd616b9671", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3eaf1813b6fbd1f254ce85e0b704e020a72fef4d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "743958f640cf811e1551143f6850b102967f63d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a20e014ae7bd9bf23a177c0b00523a991c0c9700", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dcff14155900814dc4dff5df7a5ce3bb8290f2ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2cc09fe483bb23873095865f0c8c24fa85a28361", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "574dab6e9f1363a9c69fb4cd1ca840efaa00532a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45d9b5121939e14de880fa33f742c0b1cdf5ac85", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "565f8fcefabe2be1687b48c93bfbd2e45c1894a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1d7c39709188b3b94acd9d40595f60b5c6eb0a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30e158ff288262c93c01812eef547b0583b8df88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ebf56e951662b6529bc315d4bf15c2d15169af57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6e4761ea12681ec5dbb1bbed158021e591b2f9d4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3d690f0d31ca5498f55b6ede5f9e77c730deef73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cdce9db8cfbddaf0217e5e632c54dae442a32a6d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f05bc839297771be3759df80725bc21c9f6de26e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "940a3779379cb90078051a345c6ce2d6c5ef963f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a5fb52c7c5df77efe9fd34332b5fac88145834ca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b2cf9e2920a44a0c36206115ca9f0c0b00d72ec4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "150c9d5223557086705b74d3d6e1f4951b698fed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "350aa15b25c0d00ebc1960831e3cb96341c3141a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68b2e4e9c25eedc8222a0fca15a9dc2640167190", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd5da1ad807c045d5b157f712a88527abccda931", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "758abfc334853243d0c58cc39cbe58f4ea7f9888", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8ff1ccec44c10cc2de8bb5dfa200b3a5aef0d3d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5ff8b955da6ee0c281270a58a65f665b93cc907e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2024c4619492180c7cdf9faf4c8e39c9bf443edd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b9dcf60c84925bdde7eec7c761280faf2b8755b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "508b23dbe4302e6b6dabc8e32dd6ffaca474421e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "af5aa43fcdb38fcaed7a7ede0b028608537fdd60", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "834edcc26914f1b99fd787252e1aa3064683f0c1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a79fbbb453e09c6120ded1539738a654290f1116", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bb34ab4e6744a09602fe221adbd4b4aac35e227a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c607fcf1ea15d41066935835361aa1a9960ad61", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4af3e6d8970031f5159775689e30408d8a4bf39d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42cd75816d5903a58f5dbd1f5fbcd30cdf04e1bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ebfd3dd61de4598c3466d0b019fccfa2c78ab8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10b66d9cad4d8853f9843d559bb7f6688bc60008", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6f15ffd29a35fbca144c408d94b4dc3f85e6e6e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5adc85aed1a220eb6efe6a3a501790f2d909c39", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "beaea0f55d9a6c832d63ac525a38f77c4ec72051", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a0c213dba4d035c486697b2f7d404041e4bec139", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2579bfa12eac89ba373890d9a3049697a0da291", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7d87ff9353b7e63338db8ebaf643da0521bd0dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f75da9a7ca6fb4fd50b6a677282711803925334f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c04953e0194e7b546dd27f251a6252f4eca2b942", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd04d3b9017f01d3035c8b961061f1887d9e8bc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9b4eec05a7b42db7870dd5d74d51ce03ed543e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "648f4928e88489e03d36e7b632f5949bab3766a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f8195d8755bc27f430bf53238a2b38b6a4fb7bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "444322f0ebe6e2380b1572f30fb8bdd1ae0c9798", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "34fa963311c5177dee4dbda9f7aab9dbcb8637d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c085f44a4f178be6e61a2790906567d61fedba89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4cc31dfc3828f85e82b37a28b5126410137b5dc7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0f3b1d075b98e647fc0ffab22b81a2c3e2ce168", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "335ee543ebe8997c00c12b0f6d264aad79e7908d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a41a132107852921fe4849c62174f9b3a57c43a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f2b934bdd3c594555aaf9ed14f8f04a5bb57105d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aec7a0babec1bd606486799b3844158a12ce5f32", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec64682a1b5cf26f099fca98de95e4a6fc7d2d88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "74fcbce6cc8892f22e542fc7d1b63c30ecd2ea7a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6006790c1517a6f357636ef02a91d7d0057f665f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d7ddfc338162af12bbff5c2604795df3f1b83b8f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "39e6cd02757c1580c86faec2240e6923bd72d9ac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "91ac72a0e58ae51820fbf0afb7fa1f74bfe82681", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e08cad38cf2619cbbd9ac47eb0d7b8a5378c2123", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "45424ccd3307ca80176b89a81231c7d4a82502a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "825aa850aa63ec4dcd6ab96af2506a91f7c8d6a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4da6357ee7e7cba849811a8e49338751b8c08d51", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d233503fa9bdc624db8ac78a5efd6bdd490ecdb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f3fb23137b601787ba90bb4340c992f75d5916c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "183ce17ca2167b4058461f6ff87e1a6e1723ae80", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34e798afabff67d7b50861cf23fea9c2749ff1a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "303ac209d43b323783a4f8e1aff1f505feece122", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "41a21d5d5edf44aa121d98d277c855ed0916b5a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9618d13d5ffd649adf8b6a0d8c7e6acc7ebc6580", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0e14eb2ab450d0c4320495114dec682b5c10ab8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "48cc97fc0478408194418b817d0d7bc245c08beb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "662bbc334da25d6a225f20289c5f4568f00a9ee3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dcc673cd3142cba535b145ead407bba352bf9e88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba23b996fdd241c9714010cf11894c0d46f441da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f4d851000f19dbe91e304232a0bd58e1af09a2e8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4760a6b254961f632d732249210f8b2c42b18142", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e4efd3d11fc8a8c497fc4a85b8c99e0d8e05097b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2f9b2600b511ac1a9ba0fd74722fcb2c618dceb4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ec53bd7f20737a3692f38296d2872c6abfb97edf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4acb3342eee3e12aeb431036ece0ab9d211c499c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9351a5fb137a92bdaea42191831df8bfe43b50d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d74466bb7c3b7f270f049e766a67655631915a77", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "405bc3f839a0a33b2e58ee37e594b2430624186c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1eedbc1d348a0373ed2a456ce0846575901f1249", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b791ae7b4b2823d97b109cfd9c02ced54abd199b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "adcedb61141eb31150906c149101e640c0b3588d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "78673e5f818cd28f51e3bbf837457ec78f1350b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4475452f096fbf0c602e8a87fcd075dc401fb5c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cad2fb4ee341a4c65f3499f4ece68c4c2ae85e3a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5f26470dd951d1312693fdac91f07f1399032174", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7fdcaecb275bb9f8793e777d5b64772ee1e6e479", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9964d5ceb83220945eeb282dba8afe2490d178ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e0953769fe0842473956e467f632f807a4d9b7a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b9c42de5fec7735fd63b5aa590c080734aec45fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6b207bbd49f96601484f52a3f4a4f63be7b9e89a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0fb5462611f8bb529a4da8e72e431dd2d5251181", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b4d47b0a38eceda5aa8d5d600d783d293d24cb07", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "376c56ad73e952585cea0245e69119235adffbe7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "284e443b430b7d4085cc6352008ffca2d77193b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6625e4eded9b1b09dd6abe6421423c20495f0e08", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be9d76f5fa707ced7bc7afd7209a59125134f175", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7478f0fae59768be1370e619dbb271c49a39e787", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b281d1b6efbd0c7def72186761cfc080807c7876", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "200acaa6929a418fe8517e3420b89bbdeac893a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "287d70e21163b0916ffb8a707a899c8bccd65275", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fca75102fc448414631c66aada891531733035eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0a4defcc66ce0f878446eed0adf1a01885296640", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "90c78b30fcde62e6904b803f4e8ed327794461ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76e711c80a8637a42792f8b79d291dc9b0bc7636", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a52f73ed4a8b1d5364d3e58fb8b24a64ae56159", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9df1e273f5e82e66df3d1c4e6830f9ba798e2857", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1ed672468edee07fd84abd93f33234f556bd137d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a6c2663a3a4f1e32621abc74a90af3555fef276c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11648bb7f955b8c9412966be194ede0b86a92c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10a8ef488dd24a5bdf99a12fbbed31e81b705b0f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a2fd5451fdfed98795d1125b5f0eb2677dabc539", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89f5786a6d06dc07b653ebb8784df60bfabfdd0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6ca69e46b960dc852c58989785d05db08b00a21", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "665f6022ba8122bc6e89173deb277af8752a48f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "660cce14b242b71fe33e80186c5eb3aecbdb0f11", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45a6f125d8db239914d35bb37a10807d20fa3582", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "183bffdb31ef479bc9c4746b19afe5463d7b6a56", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da58775217ab42bc10d0c80f04f912a941968899", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ebd4d9829c937e62089d957a09dcc04ab3a207eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3e054fc6e627b93e509e7400ed7562b768df941d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a90a34206d6bf47e878802729346bcf51f65ab8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3f27ae60180896eb37d86e13bbc9775422dde78", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "579ea1fe2c5a79146a2fe27e061b1ae96757d032", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7ef579fe9b5067c70fbdceb0d6077a22ff28690f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50e0981316d8ebf3d4407d72058b5e99b0fdbbc5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfbc151dd0601eaade814cdd556ddb06e26d2e72", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c8eec2449f38068ad22fe2bf94fe683240b3add0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "35001807a7565914cca399be133e494b92f01279", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd85f266321966af88dbce51a9b86b4779cb865e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "48c152b9fc9d6a972eb496faecf6ce39d8e2a9fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd792758c3884d5480ccfcacea1df30f89e55ed4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6216d94520e80cb744e6762d42ac72a9effae516", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0ebb7db181b54cb0d41e4985031093b87d9c2443", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa56a9f31929d2b2cace1047d0f4c4a11840b23d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "54563fa30aeaed04aa788d59a3d3f4eb24c1b005", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "825e949aedfd346a3a749d20fda073ee4c3e7037", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ead04f50ab723ed51d547d1235c678579e957de", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5f83f28538c5f0a20169886d733f10f36b17cd24", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "280cb145eefa0714305b06a8a3b723b4809c4f88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e223d6b6301d06e893fba7fdfae89d6e4fd70d84", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce9bf290f85b6605367c8eec7a250fb9de426d6e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ad9f5b4f9038539f040e56ca7a8d4301fa184940", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2072bac424286d44c31d08c207896a66fac6feec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "272b81be1e3e9b316043e11aaa25df28178ea2b5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a88d86d248e123818aa1da1f4bd67c1c3509d609", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2fc265c9776e7192b998865fd2b88493c7674d63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b18ffb395f76bae9562a5a95096251ff287eb487", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7a811bde0f76f7fd770621101c059f6ec9f315a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "859cfd9ce1c745a47af2e17f28e9beaf4a7cd1aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aeab2c323fa24bc426c410a3a926296f97f95e21", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e350185e60a947062e752b8fbe2042283d78919", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a4241c4c97e3766972646f17f48a469ded2d7f8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fba6c4cac42a740f0aa2c837ba94e43aa2fb074f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "981087eb1114d5a759c4b0a880b396af25b82e99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "94e94ab6bd2fa036273ba57e7542353205adae91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "604280b647d738c29eeb1eb7e23d469c684d9692", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "56be0954a64ea5f3ec28f304987c67546f5213a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d813780e59ebc7e7ea9284e4344727f619167456", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e545b08b224344500d89abb6d49408ef3d2d3e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5fda4b9132f19fb9010a1bc5f97175fa9d39014", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c787baf986d9a2a0fd62c89c0107d4f913f3dc44", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad87872e3252025352fb98f15c972c152f5ed837", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "80f4578dc4b1039b6329ed8cd3253dd1807167a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4441a8598017dca1c23117d4c8b99c00b60b371", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "229350d2e651905204d1a3d4d20bbd61c41f39d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "017a988e9bc58921ac9b64db1ad78e619716b340", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "77803f8c9c80989846b295acfbb9f27f216651fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0071bc30a6fd190253db802fc3a79fa1abc58e03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "88c56121342b365b3501d8157c25995f3286127a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eade9fef89579bfd53255a99cc9374681782cc73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "95a49e7c187f6c932aa2dade5f69985e0b019389", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f7803dc55a86d70be599b9cc7c5c35caa2f04c25", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6b84cbaed14bc783ff4fe0550085386b3998ff18", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a7062c5d915212f30f3dab1a1d324eb4746ba2ac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f52bf90840e34895ac5623ff69cb5829f6f0a82f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1082bccccf760d6ab43f029cb1607a8ccb83cecc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "00309f8b25c05bded1f44af748ded07025d80f92", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ac74f74c496cace98bdf9eab88ea993ae66568e5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0565a6ea12b5a2a48e0f52dd7e93fd35aaacd852", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "82d39de6e997e8935d9c53143f6b648692ed5b03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f3879bcf676cbaef448d854d2b5d5b5ef7aaec08", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d71218c23f7298f291acf956c96e81dbc15f9ae5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bb6fef2192691510b8e5c341d33085864db19cf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f95b3f0ac8ee1cb85e8a793bd71cf704d3dc2da6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dd6017f3bef9dcf7060d2b385629c13955343a97", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cd35e6d6d3f996c1cc7d936e25387ed7ba43f7f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6c399454c5d9395f22c299bd1d47851e07c2540c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "02f8fe32c8bce658e2a1da2b1b43d3e5b354b39b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "670e2f4f537a28ffaecf45cfaa50f92220f78bdc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ee9cf1b70dfa503d0b170a1c0e74937b605179f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8c529c02bce2841ad451315dac156bb5b2789abb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bcb3980e326dc1ee6c98cfbc4046edc2b5d6c06d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b3257f052ad53fb554305ba743ede0abaf0ee6c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9831aeecb24f52ddf82e9fe45e649b3c6e6357bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5176c3bebbc28cc4495acf6a187806576bef0890", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c0a9107f5657da183f9f6d3534f62a5f950e2bc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "932423773c2b904d0df4f71e33fe16b27e6c295d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d37cfb8a3a4da0196b313e3e0f35a921df2fa179", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ccefc01e110fead40dd8a27ac1074b14ee35bfa0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a53303bb59924f9df6d6bcd4643cbbcd52b3944", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "42086a9f29d90a0069de86f64042ae0f0ec72488", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed5dce2baf55f0c27a85497e6a0f02f6aa921544", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "128e23a13c3642ee0c53c45b0f99651ae9fd9a83", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "43ae7715b8655b02156747616ede4beaaa00b0c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4790dc14f12f050b6eb043105a889398112df4a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b7a8a8d80ac0c4415d19dee90826d2b80a4872f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6b2ba2c618122b614f6e3b53f7c651b704b3de17", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0ec28e8df1af4a3402ad5620c02d2448ff396e91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "651e2ba9aaad5ae533f44dcc4619e64aa71fb5dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e1b9bee74e8ca6007bed628c3a7c1d974e923b3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3c8a2b849b3ae013e4ef41d144cfe62415344ef", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a52fb6c19ef3235e10d9634617201bff8c8c9969", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7b94dc4461126e5e49248bfe5296720a5b4b3f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd7711e1b533bf770b658048e0a5922c356dd5a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d05112ebd1fba1efeb0163363e3f655aa4c4135b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "34ef4cca6ae727677d50f2a2c5fbb041d5dfb79f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed755bb0d4e16b4ddf2aa5be95476550277c983f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f7015487347c30ef34efade1eba11baa1b3aeac2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8c1f5568b1351c4f54b9ee5150be841645f7dc43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5d5099432eec5e8c6bc92783d2c94496c0cd2a74", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "632f5c1b31f631ee57ed5a0cbaf3ff39b62d6260", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0fdb0fd390e35bfb004fccdeedb83a77121c606a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b12b76bf3d7f74da43b7ff4c23b4072f4abaa0c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a7caa76f7a43190a80168bf634f3a9427577d679", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aab12667ffdae64e376cce3192a5047c741d00c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d56c054bd516b618a1c9ea5bfa3d0750cec2ce9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a08b1040acd3a12e70a2274b012f8c4f74913f7d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1dcc22b1116daf6dfa9799995ddafa665fa2e07a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34864317dbbcd682c06aeadcf54a03941a17c772", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a91964f3b47d2fa49e4d40b13ea78313389aac14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f7ada4f272d97e988996d1a1531770cb9c31e860", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "addf3637a6f8137dcd8629c451f52d386814feda", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d8e6465844941211530633a696b85b4cb25aa588", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7bed72563da75f07ca5c47c2c0be951acdff9386", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0eb612f37fd3b75759bee17bde9f088bdc9426c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6c6f093df04bb7973429ce9924d0e6d2b39f1a3d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b3908f824954c6eaa9fc8a548841eeb8c4a24518", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d939a7b210cdd6094fb400d67ac29b76f92c92c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5419272485a91d5da052b88a1cf5d71943a9323c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0b56fba245c7cbce409e145bd4e1436e5ba04f63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11c0dae0877b626a5e0709a8d98b2dc79814ae8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9beeefaeeb535e780fb094c593479dde6023cb31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2035c0902213fefa41be9c31f0877ecaf0f1823d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "15da9afc29a3cf0ca23b4981bc8953d474704f54", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1ab4f37aab9152bff243e20611785f369af64352", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9432679f702731bef16c314e8180e18656c1695", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af7b807684241161bf6c7e76f990b8069dbccac4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e0d09a348c085e48387642c596a8e975bed8a844", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d1bce2e4f220f17c8cdb7f5d8352be0f4d0d564", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71b7f8095dea5c9e86081460e0cfdb0bfc9f553d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58b001025e4991cbeb646363043694140b24a784", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3295163385dd939b49ef626c7c921ad1e76dfe88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b02ff5aa69b8b09079031efc44b89bcf018e194e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5690f8eaf4db52984179082cd754c43b17ba1ac2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3cf4921291e1ac0926f7043994ac7edde1f10488", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c4fcc34a6cc8c070ffa3308804429c2f5e728b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f844f680ffdfc6f7a1a17a85cbb6fcfa4dc35d65", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5ed260e569239e092be82ae13939882c68476ce0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12f2487b5b0a85a7f9323b3a307486712e5c2b7c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a9bc835314529b4fa6824d83cfeec78caeb00c9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a692c5f08e80c07fa473eb76924d225bc6837e4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "29430398b2f99c4e5e8fa2bd5565ef1f562f8e01", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0481242196f46f72d77b6442b4513d3720cde2e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6fa996275d6d9fdb2a41e096a83e2e8db3711fb6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7c4a22bb94d853abc2793c5d455bcf4b97c09c1c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa641959d856821a02c24b57e7bc886001f59ab2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "97f02a4ded3dcd72a763cf559da7ef43e2c02c4c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6dc7c24867d7840fe6a61627e30cf7901d32aad0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db91c60a6b7cef3b54517c9b38705201d41acc03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cadba66e32fd21a3422b92f57a5bc5a19a480c27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0034d20b4151b9a0c943ad154efaea7a79ea858", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "28f23525c72f9b3fc593c5ccb519ad7163d69742", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "474a9801e4022f9944b59e393abd5e1cdbc9cd45", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "210eb72cda27b7aec0ae9003f3c5ac45875aa26c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "780599b565a560dea68c7dedba527b5ea350bfc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1c1e5f4af114760a772c742e7dc39fdf1f45b5ff", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "967d7de042a2edbdabf5448ac4f93d17c7ccb91d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70c752b60c64bfd0be17cb6397fe184199682957", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91191ad27028c1e9e0ab1dba0df1e43aa055c895", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "07526bfe3957d116894c48b9e3cc20914a53afa2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c88a67113b6d64cfffcd78dc63f038c9ba848309", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ebcded0f5c56c6b34dd39375ce06092ecd2dc6fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f380eb5c2bc573fa7f22afe591f2cc2d2864f286", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a819958ab27fffaae1f0c26a4f2ccf2d99bc2bda", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2430017131f01db3c5180706333f5b98f6752d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c25a4f7c309f41d2fb2aa81df3ff75a83be0c43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad80a3c84ccd69d6f91c25990163c07d00fdc5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "834d0aaa6bb8bc3f434883eccee0392ad6fb22ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed305f5c8495fa5cc6f7a35adfed091c3cbf6001", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6ec9d73e310e0ff0b900e8f15dada348563dd528", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5397d3b8f2fdac7578b8b6702f4c6797a7c9be62", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bd0d9b17a3c8cb959949f64fd03c975ea71a2898", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "02ed597d19c749b5b15de7a07d5925aa25292b79", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e61142ab3b65c48e257bce860d7654fa7864b6ba", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3db1c1d9a1266b44ffc036f53a47c4e0458a4e36", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "219e385e5bb4966fd89a9e431e1383405505ed68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7874c880bc511878169c130d413d19c7d67c1d99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "459d63fe949b3d85410a5b876f3a25649c669bf8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c823acced4efa79c7ce7dae2a5435bc5751dba0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa45721333e24222ab958d600de4e1a661889f8d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "493abbd462a9a3e05211ac551ae3122f7952f3df", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3ec2e4d16254b51c0fad4766edd76bd6c64a44c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "edc0a3e6618ac920a943b97dd7a27dba4c706834", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9e80fd7935eba39258678afdcba4ff4f3e46be6d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "31b92ec0b4fb2f12361beb58834a700c9598b24d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d5c5bee4c36329923e77ca1e897240e27c09a2d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f4f49bdb293e17f1f186a8f604c4d039ac0659f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d0413bb4f6dea20cea787e9e3ddcafa8194bd3fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0bcefe6b6bac3bfdf55747c3618aa1b9e552a926", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6e8d269d5164a3491b7cef2f679da2e0a5dc4bc1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a4548aee40eb57d7d69d9997f945d97602048ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4ab798de581bb89e72748c55ff356d93374f32d1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "82b629581bdf27f49304f3b9f3caefe54d07d01a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00fbdc620eaea332861bace2e5d254e5c4feea28", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3a3974efafab3c6aca8f5f3718950d2e39956b43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8b49f43a0b36d17c54d08ec5c10a3963346179f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f8680cfd2a5e42fe662708a4ace5ef9df9341a94", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c15818522cc7f8ab8be306f9dc95e34cc93c5c70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d82672eaa3ab2fec8c4374a09373cc71aaf09036", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ccde5dfe51bcde29e88e183dd24c546f323d166d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "373ac705bf5bf3731a8f629e8ce97fb89d2f3c99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "964f9f63a61d003bbd153a4e5eb44767d77691a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0636a07c2afaaea2a75518622868c95b82f3df7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "45117cfafbf1246455102041190cec2edf1ec267", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de82749a33a7239b0516a001131488d733ab6206", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "62e26872d491c51200dcfd10488d8a8034bf176c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2a651383fd5106a149caf67ed618b1474b70404f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c6b61a28890f8cf39b7206d92f297f27918095d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "339099f36f39ccb091b9d145c887687586f309aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fae1318edc938f7e9e6aef368a2bdf2a2c02e395", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b36eeca07874824503ddc028af9a9f6d88055c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b0d2347da62f5e4fc064a850a354da0099d6d31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b8e30d18e4e3f5ab76e0b46f45f812701cc82685", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c7947e4c46b1cbc8278421b00434f615e5ff9b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b82954d9ff4595bf2c5ab2333387a1ea91e66c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "462378d6d245cac14627eba1098b7383979df4a9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f51c17d1e1a78ae5731ecb0e13cf2494b8938c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b599a979b784fbe3e3dac0cae3a1aaa9049cd74f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5c636cf57598bd1c080009a4e950aeaaf7eff23", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2d31709c8cbc1b6445f486e52d3d27463933a95e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7e6d3dc3ff269a24333003a694eccb10329892a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c0d56cd31b6901e918e4b2e64fda4128026a02cf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "15e9e12e0b81f234f2e7e5b09c44ed33796376e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1be2cbad3debaa7a1775c4c72dd5355bba0a8f93", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4e3d419e713cd912e26083be6610d2b39c67aacd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "436e661fe845fdb63d9ea991cd1056fe8e08f484", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0068850ba78a7b8915994e9ec1556a373079501b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e402b29e657d81ca5c96216ba7692eaeec30de27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "85b6455e2c5a5e56e79ac7132a62ea6d463f9bc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acfbb37fd82727b4b5c0ece0b51d16d6dcfa5a0d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50d18ceb935abc0e73629ed9c8c7344013957510", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "844ae5271a6a1c7e5c2c2083732c58a4d6f54bed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7a865e5d1809cbc2d5420b6c4e57eb790c60d68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25c084636ddc2f1bc8b6931c06efdc36dbe73f15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4d17dc943fe735c1cb72d7f88ba697f782b706a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "56d8d24888fe44b9adf06b542802ffa011cf9a09", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5b07d210939197aa830d922061c784e07a49c830", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7233f18705234aa1ab369aa2c1053afb57cd7bc0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0e4e34a17d90d6d03cb4f13e2eb90c9e979ddfd4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e0821607b6175efe88ec9260c40b65396d1455aa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3fdc40d3137494fc1d7c171eeb5fedd44d64fb0a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b139da1dab08c143fdc64ad2b782004b16856b9f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6aa0066e5dc794c44f6abb7d1d633307d1d200ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "db1dc86eb0bba8e0e8cc4a3941ee0e300ec5de2d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da1b83d0dcc9f714ba31abdb814407338971cb83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32e71124e06f26b829c4a1f4fbc848733ebcd8cc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92533b03ff791067f0ea0c2821016d7b92ed5a39", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "743a3902f39ac0b6a5e4a4c6ce8194a7cfad957b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "297941e9aa2e8cd23707ba6d13644abee92d9b86", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e50076e68eb0deda15427484220fba501cae5c7c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2f9a257e4c197067492e014aea614f717227aed9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3851d748724fe49e3dbb2d6c21ed513437dbf548", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f6cc7c3f64c36330866e376b0775b4a3e1914060", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b065a603da89b1840fa99c29815b474fd79105be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6870b31de1a683afdce2ffc42b53e3b953072efd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "926b5d303cc80ddbd34e7ebcfbbbbc14a3b61e53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "11b8ea9769b8ae9b5dc1d90481bfada4490d0b45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "95c0505eef8f6e0df538c69b72dc6e103e43df38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24457df22d9d79886a0ae37b795995c052d5084e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fbef4f1cf7c70bd1cfcb9ba670a658b85ba7f351", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "79baa1f64bbd1cbba2726b7af51822b4781266cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1e48d4f1b5676f678aa00627f8c5e3f178ab185a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7221ec0353d38055be2407dfdd14d1c1dc0aa2d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ceae0b0201e939fe999d7878746d5dd944255a8c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cb93f3f43e7b7bb2a5b539d937cf634b1b650299", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4aa062f683940bc8a7840b0ae38b51c8191d9bb0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "173e8ef1c9f189cd5dea9a3df2c4055152d85203", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "614f844a380673b5ac0a9ff47c19dc31c859662f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "89e67bfddc079fc1ede50dcc42abb3f489717aba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "58eb86aeadb1b44ae09088d6b41795de9f4b4099", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8349e3d5569a4b83b11eb61c3c580837e1003215", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde168373290a8fff0ef2733dbcbf75843fecc88", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b419e788958a34e870c8445ce633ab77103845c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c6d97136b23ed34d42d809f8c7442969024644", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4bf0bd46b42e133a3817d682eb6dd31302de8e13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6a43e39eb3e6161cd107cb25bf0cfc1cb22d1f23", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fa3bf8466faa071fbe6552fc16935c8c57c701f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "230a4a9f05ca30cebc6732ac6bec24d1f26da13e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26298f6624cfde73db1d598b34a315e17cc79e20", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "193e597212978cf521513653b38e496a61ddf454", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03f1be8ab32c214a6996c689015400ba4c0926e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e299bf2679af363be777f4d79f6caab798c0493f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84f8e28b4d162f33396e78af5474c4f3a852a488", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a7cbf4da11645a85ff7ecd1d934511fee0b79c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "64f42b26f74a51fb45d5f6010dea37c17bdb62e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "82e448bc5adc2e81693fcd1c2495b95d82be2330", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e804ad660614d1ab67a9fd98f09db05faf681817", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cfa0d535fe0424e5307799fcb9d075a409de579", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "679a399dbd15bc347ced68d6c05ab51668f26c51", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c9c1988d0176ed9e534c6e6fe81dc8766cfe0b7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "eeb948dc8aac468a4b0b032e8fd1b20fc2721c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "984931517b0a0c14344155cf799020315d117635", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f145ba1216cd10a782fc87b8766b3d65303f30a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f29a51854456d61f71e1917e626501520e792787", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "44831ed1342ce4f5856f5b55b40caafe81f6a4d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ca56e26fbe760b669fcbe36506e039325a803a97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0034cb5fe86017b41cfeb88980abade1bb26c71f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "048fcc6b144605b59d8dd6eee00a9251b630105e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f7448c778731201ed513ed77ddcda635cad3d66b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bfcc6afe54b17eed6436278c6ab0a66345e3c571", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4f4352f686b4a825be8fb8c60d885d2721b659e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "293843153fb81b3b1779a78fb9b6a29177627a5a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6a557950bafce4b812dcf5b6e74877f6119518de", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4ea0a2013b13d2841b68887a19e0ea04a6d16c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1df51717b9f361a8df67b8da5d687004037f7373", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c62914234596ec86b020febfbfa16618113e764a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7c0fee0541f6d8a7ceca0d34a2b85087079289ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a614323d414609ef0d52b2c46d545c856eb4051", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a16387ee29f95d53b1d7750afb62b5f5c711419f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e457e3dd97b299e0c6baae61fa6957df70a2346", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bf8d6dfdd6c9e0fdc3b748bce4fb0b77c5d3852b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c84fe348e3d11a25a4e8d9a4d8e91a9a884244d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "970e453082f0f110f83213a8349f644018528c70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f684b54121691b75d3e955b1aca496b3e2f8799f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dee1ea1516d25c9eae9fac05bc073fc1dd5c36dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a327abf0b004425693e0b0152005975314596a97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebdd9a923a80cce7684c32f41d0f530eaa4eba2a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f2c99e616c460daafeba284a1b35a2ae189874d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4b0eb7a6efc4fe5948cd623bef14618b34157209", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ec35bcf8fb86d4646becd40cb414997f1b5f4553", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b4e2a503e7e628418880d79c086ff9105319bdae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "924c146fde93c468df123dc2cf8dbb2f411a3eef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "889a137e5832765b20d5ce818d3e7ce695b483d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98bc0946ad8e64c2b5046d74b5c09716aa75366a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cafce887a5f972db5c912f17ffec8ba1137ab88e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "052fddac0191ab52b8b3255d5afac3f54f5de9f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d5b8261a14c45249e2b048bb21a84c091493959", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "12629472bb42c0a0496515d5d14c903b2bbc4d35", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "45a4692d8deb7f890032799ff98410ad69797ebe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3a53112d9b6db17e0f7ffee62d53e16025866da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12de68555ace53e66a79b1d13be462cf87bc7ef4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d95217e700cebcc54464de7722498dc8b74e85e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6903ad2a87541c964fe70cde72373f66358576c8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "555d7dfb493ac839fae1ff6c15eeb37953025974", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d74283fb7e91438a5b6d6413dbab9d36aa97d1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42390480d84ecda84f386bab1efe403dc4a96c38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f765476564a8e2bd05d48331200aa3b15fa195dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41ae8e6ad21b549611d1ad11109d718a6721dd24", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d80d7c9913803a5ab09fa5c647b335188609eb70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cc697ec09347c5201b619d0d09c2155d44df1914", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "df5b45af79fa9034387a1068be2f50fbcf3d9615", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a0767abedcb0e374efecb578830047db46e448a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9f8887414270bbcb65a26ebb3594269961f5f4d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0ef6ba376f228f3fed444ac31b71053834c14548", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ab5939b3bf37e542b6ab38c5e0411a5cc7441da0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "303cdd4d9ba4adefdc4e750ccf567b8ac9114382", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4bed10ab6b216e4f36618eda4ac5eb61fc956da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1648dbe841bd58f8e0878b0f41dc3e600ce2e0ab", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f4453cc06595fb90fc73c61e48f6a57ec13e404d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00d2cb98cb712ef75083f290b3705c42520d9345", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "522af4509ad708e07cb0915abb7f107bd964f23d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b69d6a9efc7ab48672c5e80a91e9e19d49077642", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "383f8b81d926841e5ba9f1e8f373230283520cb5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb4c3fd060b5560a6a71ce2f3c2f9ae1f3062777", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "534f6bf2ec42bb072d50962dafd6263128ffd0c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3b88ed282506834b199d34fa926fa17181a5c50", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "78baf51e8f19979b319e68fb2195f63260052788", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4e6c2fc9b7f53b8e905bb9c2ec6bbcbbd70bc8f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58d8fb6dec2e753d3719706008af5eb3898ace96", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2540683c194617f770f907e1a3c38cb5b7c008a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9ce221f4b21d7b501efe2128b79704adb3d97e95", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ae475f550cc4a3f717c77a1d9cd5a7d5d23b955", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4a8ce8cfc83f1d87733f6c55351e0fa0fb3e2cf9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "659f758085737e268a2d5df3c3e67022e5324a82", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "008945ebf5771ab1a970ce064175ef7f47a3349c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "18b1c3705a7f621b2566fdf9658ebcefc42d297e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7e704cb7630e0c5d5491fb659963415e455e89f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "602312a4c005e7f3fd3bf4e975fb097d3f1e91c6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c31767232d2f42cde9029ffdffd41ade0867dc66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "73c9b0981bc3cc5610c7ac2e85f51ffbf51c43d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e070dd6c556de1dde2d11c3cdda719c3a014b36c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59025840a0c8d845a52b372eeaeaba180891d122", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "16957ec12312ec64ef74a68255f28f35283d7aa6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ca68021baa50da4c2c627bf124f5f76887c6cfc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26d65bfc817aa64a77919923563c9bc5a12060a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "006eda3e26d2fc1d92fffc40c8a56cd868cd0b09", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "407db691daf348e87acdfc20c12d31257a713146", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d40e847936fc83a512abd4276f2ff30b9cfc224c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eefcbbadf1081db667aa82a1e1d263da1b567435", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde98a5fc7a15154c303c696151e09aee5f6792d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e813bd6081a74141c30867f581e14e7a9e04f526", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d91afea8edb601dada038098c1544c05d2d36df5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c21c0d0e5ee87bba087f7a6616c303b5f47164d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1a448549a175b15a4b69abc6ad5aa3fc18a2b275", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86a69ca50e2a74355c457f84fd7241cdde04d46d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7738ef48657c1671adb4547bb8c075ad93530098", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a3da9a6c7fe42da268d90f2be6265dcca785c6d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "708073c0ac1b97dce5d605e5d9efeded7a092b1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "194b87bbe36406f182720241f549c0c00cc6fa2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0e1505d0a28dae145f18404ae590ea2d60450c76", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "aecbe6da4c804e636393943bb7e0755874840792", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e4c15e3e17e46f40f508010541c7d7c2ae6c3de0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f89a980ce4c32d1a171d3b29c01f86ef45dccc1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9b72700a9f3e7decb0cf12dd351ab4f1248975fa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f344b2ec896ddf100a1c7367b6570825d14fbe5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "96e16da7f75972996e1810ccf3679f1399d04a34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e1bccbaffcf74a2c07f4d59c456ddf6de453b739", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "331d593886d69c1281b0f1c8a050b98c3e984a96", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "093a618a85ab2c324dd580297cfa1a29f8d82974", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "44e6cd67172dce6ad9a50c2c7eca3f4504b9aa47", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "188f1df87400640bc99f7853fd8c7ac60fa0cbe4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7c2e8d9f11401478fad16b21a9643b23cdb2819", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "02d3e25eb0ba6842c38ec0fc6fbfdfce26e6a357", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a457977bd101dc4e2fa95097bfda117dfb61c3a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7d786eeed501818c6e168e6f84f2c2280b9e4eb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "30f74b7273812d038fe2514076d35e8ed43a55ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c743e3133cea0b1be80ea7a32ee94c90fcecdfc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6ca5040606b5edb7c78dd8f475eeb88861ea9da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a7bc5374515f5e80744cf91859c2c8c90039d3f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c8e45bde3138ab398f4729ebf79c727cd3878d7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e063894f01812381de61b8063092e708532a9c54", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3697420da1b58e5524edb25da3c484127e34f48d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "409e721aeab4151a70996ae7d060b78176d8e8cb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4d1de90d5fab7d759d8291a216658380c216d61d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "94fb1205bec5160e080327123db0af950c024f18", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b9108342f043a4c68edfe9e0fb59ef3b69483a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3db072ce7fbfaf879a07b798feed672a5dbfbba6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e74650d64b3783e22e5602b0b6575634f3bd0be5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "711ca4efff0120fc14ebaf5fc2643dec8abc00d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3489c478c89a34a2fe858506e0b2449725374702", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a04f3477743c3b38a2198135fd06761f14e646ff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ca9622dc42c1481287ef19c6e279a9447d7f61b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f317389ba5780ed79a7b975363d36a4541279097", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "096ac8af03c30cf8eca32b07068fe57eb210814f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ee61c9246364007b363e4a8a79ec82a4d949a57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b175769fbc3677acc79a1033076812d950cf4aa5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "400d7485900e61a826f3cb6248441040f74aa1a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38f76bc973167ce751602d408343f9715f9aa578", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d249a7d6e143e78a24c191a6e9bb2313ba07180", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4b0eac029b846d4de41f6baf1e8e088c3a9d63ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "baafd46592ebe4b8a2b41e5054071b7e29bd545d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38d07fdd74a80182b41b4208dc799f95e641ddbb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "13645f1b6031f073d96931a9d593aab2c2a89cda", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "288cb5e615013717617db2e996951f59a10fce0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3fde324e9b715e1607963a90f8ff8202ab8967f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a4ea234999ded589beff5bbcbf8bd5c76ad6cbe1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8aa567e3a0bfdbe917adc298e29c9a86c3e53224", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ac52dd2bb34f50c4062f4f97bf7e3d7c09d25422", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1e4b6720240db3c209764691382050c7268aefcb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eaf9009a0c66d63037640e74f7bc458879d2a835", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9dda6fd6abca5858d7a52ea6b8ea372c23aadac8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "314291c7e2d479476d02f17d5d23b0166ce50890", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4623821f023c45b7f44682d8870abfd134a67f6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4bf506f12e8cac2ed5df92a535da636e014a92f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7932253cd2e7e01bbf0e816e0f41730175cd76d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0d4b3df557d04de9b9327834012fa52235443e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3209e11b0510fe51e2fcc109d048954a242885a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ee1fc009f984559ee057e8a1c6a430ab72d2f4ff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ae37902c5fdca4dd410723fec993dcb60768e64a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d233df0b61559b035f9817bdead36f6c4af80211", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b8a0d8622fb8a691f11a621f2bb3892334d9f14", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "feb660995429be2ebe98ccb17962513054085cf1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7c663a889237bc437ad8dbaf78d59b997debe4cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5eeeeff88c8419458328da5e21d833dab0e0d8d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8f0a3d75e1b2a5f4a8c704760c5af99894b81ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0fa7ebd4ee6223d9cd9bde8af8fa343cab7c0c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fbd2e61cdf442e27904c1e7595c152bd3a2020f4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4e02eedaf2e569a70f7e6094dd552daf36a039b5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0338370e2a883710d5f72fd622ebf50a188e0d43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b37dbadecdd9175a81d895e8a7b64d31f935e66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "38edf5ab3263014cb8b46841a8256198ed48c551", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9fb0e43e084846c9f76b13a0ea45dce19914f2b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6283e9b5bda6fc781904f816c788c231f5f28240", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "82983e0b1a09eae9eee25877a23ae81243a4f645", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c02efd205871c879d467aae27efd63427288dfc5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22904e4546a37200c4f77c73978855b7d361d61f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6a2e9a84bbc25d1f7c8957ac500b17afde5d72e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f09123d1ce65fdc16d617416cfcdfe2d599e4774", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "065d9f3f4597e55edfda77e0ecdfbc8aa7461a1a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "73e2ac1a97259e50d54f8402bb479549549a2587", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb00e78cebb562f6c8711f6c57b8cdced90776e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c0c7f7989d42112e8ecd287bb7c5567a0b01c13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5992109517edf507b087822aa059c61a9269b836", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "823ee96cd78d6b25bc0924a6fc236406ce996df4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c89af936bf7b5e777fd501e37f8af6370c2bef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "91a5bf221474c1733f4527148f64710904042963", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2f4bb3488afccf418573c10620ccaa0e4c6c6eec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "37dfa7fe1a0300bd78034764a006b885179faba1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0f8dfb63ab3de1608f1b0fb3ed74564545b540bd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "47764ad5b72482910cb155fe07fe822969db83c2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "addbd0187cc7f8e011d8d29645b09a2ef7b9e7ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dba34c14974782fabdc17e5fbc0faaa0aa62b64", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71b73440a7b36213c0de838d071e2986ce81be1c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b79b4d6150cef96b833d3a8753726290573ada5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1097c38c6c9f9033ea502caf0954bedfa0c94ea5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "203d0dc5bc09c0498870b5940b2b7e8a24736649", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0f80cb70887baea11a5caef94f4ffb7118de6d80", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "018be153bd961e3ff35345c4593bab1da806a466", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7363a09edd1fb3fca70c57f0b06c1fa38da56638", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6af0f03da1d8c3690e3505614db919c3fd027ee1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a277fceb40d8442f48fd281dd578b14d61e94d34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "567f05d80c0e1ea2b7f93b91578d81137f9bcda6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "138ac6b7c09297f43acf33decaf6b9f96d00bbe6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "51dd941ee02bb1c19c3a9018675be26d3a783f1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2da27e2502e31f6597446bff5288ee1b7b3589f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5c39f3f2458004c7b55d9829dac125ae3f9d758e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9fb9f1ba81ae9eeb7e69424bf3c6a91193f55c94", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41b7885e06fad9447bac193c3176e3e696d73e71", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "98fb61ab66089a958c1aa158a33aae96749a89bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "84ff00adef1d65d868be933f6b53babeb6570efc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "df06239e3938991f062041c207110cbaa32173ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1f3e171ec7840e992456bd23e6f525ec5fb9d8c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f2d4df9c8ae632d0675552fb4729584c461348df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f11179e2b7fecd78b101bc760143f41504acc903", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f85f78c5a8dddb612ab41ca03e736296334322b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "88b851ef2ea690d62402ae2edb8ae05f1f0e1d05", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5ac0e1b6b2219ab07bf56e8bc91a615db0ea9c5e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb86a5541e233311fc8fcbd5f4b299f41411c17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ed0fd8008ecc7eccff18bf9b59a3aed3cfdbd08c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57d7ad3952af59f4e32e531dfe9875e1400b7928", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d1420bdf3e6d46d997c62abf0b3a5fbbce38e633", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8806b8162acae6192ee019003e3141f0caf0e2f1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6d248c70586e9ec1842f63035668c16a07bdd801", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92b54d0f5f3c54bc720a6ea97cc26869397fd993", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0013174c4b5f4cabb94b818aa9d11f5b2014d732", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "14e07a71ad4efad431b14e225b67f5a18af77d93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "94c99d1611d1db479bdcf50bf0a4ce4e4d633c18", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f2df18fb512f34b2dc3a77d947ca8d1ebc8a64b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc42af735c6081551f975a41c31b1eaaa4039f2b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1c836cf5ec12378ee0b3dfdf9feb58c2b302fed8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c29fc857eb18377f0efa60bc84a706befe846c40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "49ad8b375ed60c867b8b3361c35e489798271a5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48a2b6cf78144175ba5f6963349111a1a2cea541", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9827a915be1f9f4a3e0ae61126ac7c1a34b190c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b25fc24754fa3fe634b077ff121c69a438632c7f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53b74ac0333c274fa07bc4636dc6a0cc4ea69774", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3b3dfcaca1d036ce28a5152c0724fa8e850d1041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "68fd82a22fe252bcdb7d18827559d15cebe58f40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "68b474b21d963619676aa1183bc35987669e2536", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "999fe51cf80857e6ba5480d3859558d871888614", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "039a2aecd2cf3a0adc31d17786b7717b0fd1407c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8ee9b2e44907cacb35af1290a1486d536fd657c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7fdf544e5c4370824398959c935dfaedd2b79bbe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cca77f0d5a3c9165af31885e389a6e3a55f4af57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e1ecdc21ed8e1fdf1955938ede3740014f08003", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "132f0a94e76aa03d0a39ef67d137876144299718", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85860e1e11eab5cb14ac212defb6357beda2e0e7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8a3dad5482a31bba2ec22da4c2d06e2cc99a2eef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2b57f20f5c4e0880f47b0a85b6b306cd43b2b30", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "91b1e48cd006acad781df3b08a1631debb549a63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c9a8d6a11b732b75ecca3116ba298fdb8e240ad6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fcb4f96db91249d3eb5456d3d3a0d82847592b30", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4732c8942e86d0013eafc8625cdbcb4a6083db71", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1a607481d17b6abc0bb8cf4cc1c8bef5e6422e0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "44f077fa1b67f7fd84e7e27ca176cc838d852b2f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "448ae143fb32410adda58f094b17c263634e4477", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c5fd17d735280e239b60dd0d11aa291d65103919", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5037c06c8857debbff930b98f79a0e6b77ba015", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "abdb84585614b7a963c7e65a49921f2f1d44ce5d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "843eae7b49d6ddc9294487f55d364a1c54afacfd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "deb0a96e75ab804025269c74c99242d5e4ef91c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31ec5d361129e6728a74002912109190b76dbe1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a5181256e7bd35d86f737a022254eacb69136d34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0de6f90544709e20e8b4f3a7c5c6ea6298336bc2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "485abd56a66788469ebb63a8fae4da5257e1e775", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e05b2a621b8976e4b58b0b987db40273105e19d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c854d15b09f5c662637084c88330a4629c8acf4e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e9e990c5684d9383b9e752511a9d5f1c85ddac08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b7eec0d0f55dfda10ed3eb7cedf296b643facf7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fc19dfda201ddfccfcb9cd41c2c69082038ab063", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d14e2df1c69807460ae4db8452813aaac32465da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2a9501895727d022508609ce09bf88aff3d1875c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8837a6967432426766b5c4d9c703fd60409efa56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "41d433864ea15aa1c7b909461b8e872ddaf00b0e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a917cd2f72f725021e09754b579d5c15cc8dc18e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4902b6a67d371e68bfb65b0af8e96da924e6c89c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "79281e9cfe75d3103b2d50dfda5344999f15c6be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec9d7be11b87a6f7ce2587337f834ab5ee9cce3c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3c13bca25d6cfa5418d5f243c107fa6d4ee8ff90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df2ccd716a7fa55ddf9b21f991c971d86465f54a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4c97066800bfb9bf9fd531425888317d8807659f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "40512284098a40eccebabaa59c2ba1b3166d9618", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "641ef46b81e8eee1d5aaaaa0687238ad6388b105", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "363ef01a2db8e7d5bde422bd53d046e3958c9b6b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a940e3c37cff8c175a98f6b56ed2c95e4013905e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4c78244ceaf558355bfd272be94a8a7c737c41a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1b0cda89606c2725a3267f721a04d9db1d4dfcc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cb1e93fda936d9b49808b5532f6c3445ed316c38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5778bb217875e7583b7e75ca133be11b61470ef3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1085f7215034d83af5d0393dbc92b1746a967e0c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7ec1b3f21a1a2904f515c72db544b111ff87327a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0cb6068c2a200cf2bd61833921a02855cadca1b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86068e7fa9fca28a59d1fd7e10768e2793db5c1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b1f1881da2c0a66dc10fb0764cdb90ae5bcf82e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fd4889336642eb1b5c6fbd90d48c869e6ab016d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "025eb81867676752797955ed61694e7e5aaba0b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8fc1fcda3e6bba38ac1823a88dc1c0277e9bd949", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05fbbe98a200b3e9d920f8493f1b0b4907fa1f61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b4f11116c986a9828ccffb69ac7ee2285bdcdc7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9230aba4e41456759fcf7105da4da26e26cefe1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8a87fd3ba3463d020cde67d364f35b9814921773", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "898e7a340c2a1b3e94844476768e8d40f6467d47", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8311c4a69214975c21fb3072818ab9667ac3625d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "56d72715b6d7afd82c686e27570677cddbfc4c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8f5d11ea9506dbb619f42700f1cea044a5fe0844", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "739809721db3f8d721b83972bf0810d481ffb49d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb723ffc22269f8311e882434089e1c6f4195c04", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5e4d69c6927042e6430db2e51271b40e61c5ae5d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9964b1c068da02a9904b7871dfc8dbab9960e80f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5150f512a493902ea4259d15c77f1bdde122e1f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "462ab0b5e865116ceec973a987a2a881512bab55", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5e87970121e2eebdd0035e45fdc4d4aa4483907a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "675aff8fc69357b0e3fa11a371ec1458d65c5fa1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb7210abc27655ddf486bed051947b34b78530b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ec5e3a79acad7d6f2ffc7de0f2fb825f452d5a17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42f74aa4dfd28faa653359dcf6d4092bc1d7e31a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4902ecdc2a7f5e8274c2e3f0e73dbce66ea35d01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ab43b39f468ac294f7b31ff87a040bda0af8106", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85f721fb85777af313e842262c2c7febba43f851", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d11192c27ca66b1d32c73403b5b368d4b6661e36", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9173e74c71c4cd75846adf917295ee471866cc10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d6091919a4d4bfa2d9df95d5c31ad09e9272596", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b0abd4002e037d048546a282e02f25020e9a5ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ec207081ee5b24f6924f9897cfc1d2d3ae813c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ba80476740bb385471fd1aaf9063b602c8bf564f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef73f824bc2acac5346023c3e5da2ceb9aec1dfb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "65e4c5f73cc7be7aeb3c58b7854751b3610230d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8f30252147ebed2f36790e49ef5e35394831b3bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2ee8d35552d6de58ee2c41b22ca0b51cdff4908", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d9726d3b6069ea839a42e091179df00b4ab7ab38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92bf3b69964f33b6fe8e2f73ed42a8fe769a4470", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b69fd0aa256578bdaa4512baeff66a45285a075b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c5c022893995ec9572dcbdb699493624780e8d25", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02acc169eecb5cfbc73acbd3b86825d30d4ec525", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4215ab97b483251efa4fea22deb7dbfa16e1dacf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7ecf58da5ec8accb23241e242286063d70b8f379", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bebf9f9e0906815d781415b9f4b8613317d13a98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5e2d0badbd99087c6c19a17c43f3eb65d889926c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5528ff2beae0526701ec92124cb1367e7b501468", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9b5c08bdc04091796abae4eee7798fc1ac9acd89", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1139f619764254c331c256b9b29ee6a764b0fb01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a8bc2345efcc7ab7df9baa4e9ac95c2467b9693", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "77a4c21e8b584ebb1a9207900458780fa9398efc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "321e59a875c1edae53b6d06785ff234051204624", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3c215733c2fffb0e29852f1b9ed44d324af0f3ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f90059e812d40df7b69277fe6d051423b6534522", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cc60fb4685b0ad805c36d78f4472737e1cbf110a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4ca1b27cd5ea956f98db08b28add50aa34f6bec4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d0a0219f96c3b0a57efd0152b6d6bf856eb8d26a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51c7febae7db3d8503a6b1f2755fb84a0a8810d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "670dff959243aadaa97cdda65467403d1a912ccb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "81ae7f9c8bd1580a9957d83a487e1c4993f975d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "42af5acc21e5f485e5a969f6a9cb392e1742e9df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "be116b4b3d7fd0f4496faff4fe14dcfa123c95a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "76fd191400156a24fe813c9052216824e120bac9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "202851354c7ab2094b62b3e14f001bd993bf0484", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "100bdd3aebf5f61912f5723bfb8e0b775069983c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9221673d3a87278dea9d30deedc3454bfd853d90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "60b76201a390efc269fcb5971193f34fee629eb3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "db8507f32ec6412c097d82773498b554667eae7c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b90af6b34adda74ee5cd07ed3ab3f8fa1b36865c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf2d81f2eaec4e6bc86945dbd6ba88d305d0154e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a3eeec2d2b2267cf574b5eb14425caa781d2efce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f072640214268546c1ea298894bffbba86f16769", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a99967a89752e976851ae5386edb9346627e21f2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d14dce54f21c1160b62d02c8e3adf87b2bdefc27", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "227b08d2734bc9fb782f5097d62bbccf83c311c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5cc56e3fb021a5c741143cc53a0957cc7bbc712d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7f1a9219664153dd00d0cfc61968709c3df01e92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4b0ec414ccc748bc79bdb07abea2965661e166a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ba59554a3234516cb4238420ddddf4e3beb4172", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c12e6444cbfb78a545799615d24e2702f0aab85f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3d37dda729c41d49a30bd20949257c4a3b7bb75", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95fd1ef706ec58d382ac172c18c6822f605e4d52", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7fea1b11ee22193367f542c3826c717561eb600", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7043e480f7f1a97a478577a2c982865eca7f0fcb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3acf4717d6d2a804908523e16644bb3271e07a93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0f892aa04543b92d44a80b9f179ebb753c2491e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce5c034757efa93b2d92b05b31c4e2d89ff4b336", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c5d3820a96c570e6d7476fad2d1079a2a9278ba4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "06d56418d4267e3b55cf8d4e138fd57e579d170d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2aa4e3b54af9c17dc1b9eda728f77eeabac8e943", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4a09482b7192d3d43a4b777db334a8db5a12d89a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ce3c5972b5d779bd97e6ff7244af09853eac01a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3b581641de2b5ccb35edfd916cf9ea362b575d1a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a087b9f281a4971fba34b288636e926459e43c82", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "325652d1b0793910899483a10a2ddeb02742875c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e0f792b7e663160af4eca618d5959eaa6475e34c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3ae6c8ed675c17b7628a8633d5cecdb0ace4fd20", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cc4e52ee8f85755b2d733c840a163a9b34f8a98a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "276084e1dac530458cb3e82fe041f0cc487ff44a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7448a22821ffb1d6163c25e44c28c3b013e8569c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d9456ed4d0552ffc702b075b722e8a36b712e0e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e2055e9310593780d02b3b4786ff77d408c214ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "658cfcfac3ab281300fa2cbf0a08a898e74ae362", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90654c2034b59b43ba30f359b510b6761d760d10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6dea553601b89ac8b88499e661c2e256338923fc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf701290b3fffe4ad1f9f6e16a2522d77c15d004", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d663faf8028c9d4fa87203040dbd5496bda8a4a3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7984a4f415eadd9da8ad636b6bf734774d3928dd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2bc32415710bc6b15f7a507a552421e69cf5bf6e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "daea957a3da23afcc835330a9c71617b8421b2bf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "078db8170f0c01425d7954975856ccb1b869a295", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f5ac38a92c10a05d2da42d58ea80b543e4e67475", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "348b3cd6fe35d64bef2b41a6ee1f3f2339facb2c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5677648d6115d5983f64df1c66292c2ddde502d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4b3f41239c4a6933123755d1751f3b71fff53df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3d25cba7f7d85842195a5936a5977b32d71e21c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "72a5358b8905249ac53f11594fc5f50a17d685e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c0e39164e52d90c32a684185c4a2077c5c6e5ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6f75bcc601ce0bf25bf533ab9bdee680679821d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "975799d2abfb78ed51524b2b5cfd5a28384d3c85", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "99eba6199e21055485d65ee523cd6ef7278c0149", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e616eb59291f6b7755dc2ee0484e81b6a670128", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7686ca58031b8dd1cd2f890c0645735f9f4d122c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c9b813020a8980d7a57314611f1f7506d1759266", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e19b5eca553c6c76caf56b03079473186138f4c2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e427a7744458d3db9835bf24be17c441fbc1d9b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fc6206ffe2914639bad3ad5bcd891039b496cb83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "33808b9393735b2ed2e16be22f80308a35fca168", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c9d331ef153d8cbad59af41d8c7333f34f30cc13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "499e1ffe6941268a78bb1da4278f4aa92eab5007", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8c4e6d711c6e6e54c74cace9f0578b4d49e798f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "617eb3e62f7fc5678eb50b48db12844ee1356ea0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a00a707ecea052f7077970efb69c90e838cd7391", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fae0ba1cb0e12ae5da73f2a04a457e5350019631", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4f74966512410e358cbafeac4b3c4ea525a4d83f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "09010f0b2a04ab03c56046ca1e01fbfbfeba34fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0394c7f3b5be02fca70b7d754376e5e3afc2ba57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bdf349cea84bc5fa9b1df387c3a84f9e326e8fb7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d24c7c0db9bdb57bf1d134f61cf73f57af538409", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9148ce25f5f094fcf8cdbff87ba7741a07c96306", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d8fb21189eb4b98fae4ee5ea019858663254d0a0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ead8378e9de7aee41f4d7805b2cd1f9aa5e46d86", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e01eefb32dd0584cee9e7920b7e44fcf412567fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f106cc6b4d8f34e8c85df4e896cfcea2b7d15b0f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "586af050b45a0e15e375eab991fb61bbeb4296e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4cac8853103555e29457910078fc45d981d3d041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26ca47c461eeda66843bafb9a9852a7a89e2b1de", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9cd7746d912c178112b52cc73baa8ee3a40f5e43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6a4ff13049810fe5fa11503bbc2890b90c5f42cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c7fe90417ccf6a739bd739c87930c7a9391cc842", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "55cf23fead50ae39ea82d2e898824b33defdc265", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "34ac356536723f78b97d860c2adde4c69e71af79", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ab09c6386d33df064c99ae4ff2b972c1e7274bca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8fdd0be4a05d1af4dacb89bad94e939ce9bd02d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dc4677390387b611f9045675aa62f7b32bf84e92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c4735292f9cffccff68ead3a987eff627210f3ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "37e0573988e68e647f1118f0fb5c7d0ff20d6674", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "897741ed420e40167183aec58bc7ca76df7f5b56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "956fcd1600f1aae60e8c51852ef2bff3bb58415b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ebabb70cb26def447c386b7141beee5b70af3870", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f484e961c9fa4577d7ca986241547ee8166e65b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435ab0fd237fdcd6a281777007cc9ac9f28df2c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1d8d0f4d30a9cabc2aeda69bfbf4e6253028dbc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "02ed3a86a61660051e0f81687caf5a229cc9ede6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "adb4557a10489713f9999ce9ba10bbbdb5feaf8d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2df74018eb8b7eca556a1a4679e4ac1cfedf5c94", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5418eec29a7359ae2bbea196fc4a6a2be4d2c686", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb090c5816ae5ef9938428edbb501e7188d5b2f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "222f0e5552224f63351a63b86781149300bd6595", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c9cb32fa9db3fc1c44cb32f381392f7d9ecbd95e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "637885803020dded969a58d2e27d775837529cc1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22e5fd5534979f4f4ba63e08fccfc3ae3107e833", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c4ba17768d01c12c6a8b06c5b0b88ab0ce337693", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8847c3ebf2c1bd322ad7d0d76db3ec20f7eef4a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "051dc362915d357dc142b07a123242aa251913c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f8aca421661617da6dd7f63569adad76f36153b4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87ecdff3ecff63ec6078b5e67d7b1a87c1ea5157", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "37ac68f5a278cbc0e06c8f86f060a6dae3084c0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "56232dd1ecba8646317e96bb94cf0a720080dd61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4aedc35b7719942c6bf8211992c9d45bb2fb53bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1fb1ea4880d69e34c11c0295c62d1305b64dc67", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97863c5ad8998b279a81076a0dfc36066f0d604f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07ab9862fa4bc7be36632d64ae45678cbd801c6d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9a4f064d3a6285e41f67dc404b05e3c2eefd9822", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0393b3b8723cf860dd42e9cbd8c1c9f5c4fb2dca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d69b730e7bfbbefb6ac81605fa5f8cdb9dc8c53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dee998f0fea607a86520e3867a972c0ee219fd93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "346a0e6cb23fb2052cf0ce22a824f077bf6efe97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53257b763f54b9b4141cf45eaf3e699d747e3922", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "640a935847da0171977f752d0c3548765b7eb51e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c7db10f023b5a31a5e899125a4c5fa8ec221d9e3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "604ca362bf94215df92c4b519d2fcfc3a782dc83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3e56cc0a089a935c0308a42b1ff788df3aab041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "697e3791ba07aa7ca608477c62f02820c8658784", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "608806b751eaeed2da3c4a23cabeed9f533392e8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da22a8a9a4ddc217bc40ab516d1768446bbbbce3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c599538f42aa47f8493d3ab8189c4358e8ec014", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "809c428f74aedb573dfde1f98f633341dfb7714a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "102d55df9aa1bea3489044a00758f61a350df8b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "11477e506250c9b5b387dec4c5cdebed75967670", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6749283ce4f62ebe4384e2cfc18c7fdab18319e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c521080e315deee09d60098b3a604536182463d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0270fba97790183a1aae3f29cf2c9bb8f32d3894", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "363b7dd627f2599861496a8e278e44b0362d9116", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8e020dd46e010cf5b1cd0c20b9e0aadb45f1ffaa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "df42cc3f276cbf68174bb507974119d4a5d16190", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7113d3a96011e6a3ce7b4b9e4f49c2450911cc7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ddca90582628aaecd1a1a5197253682d8a2913", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6f29889ade40bd57caf159b14725f5428cfa8d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1425441af3e90e6fe4cf420ff5c6db1473525560", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "734519212cbf0e73191a5545331d8b1fa8a6be08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57885d2cba5f7612a707a225e4f53238a635e2ca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a7debd552b2f24a8f855f7fb5c8c58baf41272b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dbb078292e25eef12cb613ebb4639405d09d9631", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "616f374cfb9062dc1bdfb6b5d8f074fdde9cb0ba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6c40f0fc969d0834e1e9d2c9ba2d2f840aea7b4d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fb36d150cdf0ed1a65869491f353a6c395d101c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7229893f00da58db5658c986f33f5f1fdece90a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "958c528ab60806546ff09c039121cba0171b2ec3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b647bb88454125e1ae1b4f5a951193db56d7a91", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d5bfe1a1580f3e3c9e4ce8bc85ba6ce8936a038", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "55703d8c98976b5853e5107f0bafc16bdbd3193a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "616a0c7483f7c4a67e15306d7cce7c61ecfff597", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b7ad1f4cef68ee4e4186215d7b0f399dceef7ec9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "76589474874d417b4f25cd22ac7a815869578250", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8eb6e5454eb4914257ab2f85d57f40d83595b6d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c398fbd96e20ecf443956ffb08761c09b649bfb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "257375abb969986d4e5f75d13875983e99c7438e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1843a9c9ada6a0e1a6313471e141c798fee40000", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "03b6d18f9df33440c9191bcaa4c01c8a699f12ba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "359a628f736a1320eb2b9aa9db548e949c7bd884", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "95f9c13d561bfc39d2572cb0db15e4140908e8a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "935973f3265cc8d480f3b80c472337de2ffa9ebd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "870448ee9f63e1f095903dd8245c3edf1a261bdb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "635996c9c6fa0e11d8f1ca251e42a8c1e8d05f01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b4860a67bb6ea19ff9a70ec07c070bf8d256d77", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b02612f9da7252f596ab8176091beb850ee97c2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a6c0000747b009dc445f65065cb82411679c692d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c4ad32e0321e8f607adace9fa010ef32958b8267", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cc607d44a679f3f3c92b446e3ac8cec6a29f6871", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7bfefe1ba3d4de77561e3b4fc8375b7769753ad1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01a612c52bbe65b7ce804985418892f93a6f4ded", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7cf281b95deb9051b9a4758fc40e03557f56bb1c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ff0d0e362913ea69236c440bb8ab80992e84a04b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "670241dfb803767a6fdeea7211f906daf3033eae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2738befa6a04860d1fa36b8c3bd82f425c2aa6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d7adea35d4866c7e7819e5063f14c199ce8c9d63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f0f4d3d34786d597e0feca349eb4103c049465ac", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "456b0dbe228d37b82c10839f06c9b4a5157aecb5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4243658cc9456dfcd88bfddfdb75977101f603", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cd0a867ca844a9750b986a87c57611a6ed8d6c07", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "be614aad0a10c08010775e3e772c94ac2ab27a06", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ff176473c8b90af9a53cb433b4bdb9f45684a12", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8085896404f50701b92d253b8ae9e0189d670d9f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d586d83a6f7a1d0a3a99f00ff2d5e49ddb8a01e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d3530574f542dc95df09a21b7f3835e6d569a193", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2277329a4ae6a40df3ac01f48817badd16d9602e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2b3d0b84fd80e7c24ec39e8938c7b88bcb513547", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "10423b96613dd238ce83c184820f088b4de6fc38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "85cec5454030e91ac306cf81752daf5d72603817", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "64b110045046bde309464c4bcefe076ca073a7f9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec4650a0eac8601a1546ebabb0030b5b1d46f7d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e6bb3eefa15ba92175bf8fc709754d09afc9031f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a96588a26fdce67ec6e80e7c637595eac29d023", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2daa849aaea244e15bf1ad922489f061104986d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67bd9d97ef07b8c1d72624c22b7090a4dff74c6f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "75e1ebf46f099c86ef466ca58e7d4231825d5730", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df263fad8ce8b1f7af46a39ae8adf934dac32dc6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "57cf4c0363e3c81a74eb69d955c435cf77037461", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "16cd196f42b3aa8e6565f0a6194812bc378e01a2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d3e153b24679249c3ffa2a3da1bbbb829228cb10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5101b55eb7b54dc49d9358b23eea395d29c86514", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "39fae79c20a82803012e140aff15912b99f4b336", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8df058f405e78b5277c4221a3d0c860561759fed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a8ed996d76dea3209ac7ab4228c67568a64da05e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "39394203703f63e93520b00c7d20fda3790748be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "219bf8b815d1551f321ca39051c03dafa0b699c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c341a52bd0589f157d70bbdfc500864fc18d04b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "68cd92c56536a1d1e971a532067ca089f7431bf8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dcec286f612da7eee83fc9a3d310f69f87c9e9e9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b1d0c5952c5ca1098d3fb3d7e36656a1189c8af1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "505458ced49573a7015f268185bfa505e4ce4905", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb4f1ffd58b793b922e47b2b6b0dee7abb1b75b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0d6fca10916524c12e8d4a119c90b4d6c852e6d1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6969f0bffe55fd0dee96e5ef5ce7a320ad3bc89f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5899b0290deb94735c9b4a331f8dfbb8bdc9af9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a321e7480223a209190b846b7911492d0cccfc8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "00f88ffa37d354701d925d676cdd48b5cbdc2247", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a5211040787d01fee61330117f11b457ff7e36c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3353a532c86d6a21a03407e195ac946c68cfa43c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f627ec6f053fea22588c69f347d946b9a1b01427", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "297ac2d87df3bcdceb871862580a74eb534011bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be9191039a72c54e1cf3563033569e3b2f530a7d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "126697b7ca474b1935690eadcf39dcd0b2ac5d40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "26c40a88186e0bfcc56e0b41aa5e38cde3ccba15", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dd5d5cfe5e84875c7f0651c09eb98859d95d8c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "78baed114253c5e3c9e728117f4379ab77d20320", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "709785e07d2c7f958bedfed44840d2597a914ac3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6e7658a0770f01081974461494aec41768b24a98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5408c7d98a69486dfa7af5ee90005e0f56bac6f2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f3b3d8d1f3532f4bff824de35e848fa556a1ae42", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1845053ad032cd38e8c8103d62b990e3ac2291e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7211b8280ae6e2fa606503c7a41fe13797a7cbc4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "543bd4eee33cd7f2dbf7dea8a8578217f23d08c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a043fd654b696857ffb95f82c03d4479ab23f38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1df121b75a8d331371fad37f07be24d29fbeedc5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b93e5ced4da5a366ff07962870c249c2e0cc0c08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90846ddce292bdbe8b49cd3f7a5b327502d206f3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4aeb9d0d37a362dfdcb57d22b9aa09ca1ddb9e85", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "16d7bdf16f5d7aaa6c11fc640bcea0bcc7909e3b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb10ddf246f95a767eb64539f25398c907306e17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1291a0374b54cb93ff008ee8e5910069476aa9f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb510df5961501e7596ba9a915eb67c4ed0a351b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef1fce6e41654377087648547839041b5a1ab850", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "be89451a26c6994970097daba401c4b6dcfa5d5a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9bf34bfc6dcbd7b1019e7962bdaa47fd04520e43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2177e137f207cb3d4f43e8eb96126300b7d4f52f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6ada1b3b9dd790cf0227202d1306673bb3d07ec8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "096983fae7a9909a5d1e290bdc3c75b83a238b9a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2cddc0faa749188fe1ff6729bf45faae8059b0a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d5708736bbcec9aff6a727b522406691338f9e87", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b8f9633e64c6af22ec0205f8ad0e4918dae2d53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6a7e3893fc850ca916641021c095498c50b376b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "640669ec95653cc4ebdff8b54a4939f1803ece57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4b3506c6f8277a104147f2d7a9ee99c90a55f15", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f50450ef4c1cecae264f79d45f0acb6622607060", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c31d2924235f26292365be9f0955ab00be65eba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e6842dbc826a42cd815652d00bb7b152274529f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e9208886626d708b694c732c5f553e77ba762362", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59fea27cf190880f09f06092d35eaa8c46bb8196", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37e4636c54abdd9ce849b9c52357369188b03d6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fd93ea28ffe5109523c40d14883584afcabd0968", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "89bd2ecb5ca244e779170e941468abb4cc6ee853", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d1e8719b6bc7ed7558b70c9270765b00f7e8dc40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b0d65f7eb9237ba6fab029a497f645e58cee59bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6e13c350958cabdb4a0f00d594d1e817927d121c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "486c314c450cab5556b5a0289f85cc2c477e521f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3153a26af2d42a2655184a9b6a9f96062019497c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f08e3b0ec91ce467d96e8156c0e254a06d54072", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8e55567012043294fe7aa8768df3671b5f63a18d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d496bc1d00f28767f618e9adb1f2deade182a2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "642aa1d411956b3b3e9411d780049047ca9abf07", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a76e07e98180df5500e1eb41fc7f51538a0307f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e56d4d1ecc284fd3ee10baba9abaca70d2667c73", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "563bb8987af52841c114799a994fa505bab77123", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "55fd10dfb4af8d53b939803977cbb07d3f6b5e90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "724c96fe85d2a3c4444d66d9358d2f84f3bd5193", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5252448c917cf10f69519aee2f30716529ab0242", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33446fb39ca61b83c8aab311a3e59162c6670990", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c36fe94860e02e109be23c1299f794e7e647ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0261e323a49b3ee3e59eb0b361de30262fa8dfcc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e467c7a016c64ed85bf3bcb56f1afaf72501131e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fb9f6bf42e0d4b17022d3260e60db423f1d5e5f3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "039e48714ce2935cc0a1097260044d7ff79a2ddc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a345a627588a9690b963458a854d83a870de0cdf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c527ed78940ed05fdd699e129f704af8f2faf48", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "102cf43e0195c9617a3605f8c541c303d8391fb4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c7e977d018a9ce259f6497c06ec485127930afd7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4a13e2355406512e92ac1dd0ce183586f591a6f4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fc762fbd790446c7b41cd2c975508cc55cedd62f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4727262390b1727a0ed0b4dd1dfd73dc5eef9f43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9f0b26f27251ed6d67880ddc99a28d0ea43407a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f550a29caf0069188abdbc82fdfdef7e9b786ac5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "684ba8c59fc5aed9c9b25e01a8e586b777dac9ed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c95958c451d3287bea51b07a423f9c01b16f302d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "06f8866dcac5276f9d30083bad531a15b65d204e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4ffa5d0c6292d3d5dbc67d7cc083e9297496506", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f5e79816f94d167036a18250bbda23fcf47bea79", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bd29a347d140b04bc3d5fca9c3f0b93d2d1faa29", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b028123f8a882ef40434b95857e411e4f123a51", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f6aa7e1b87a017cdefa07e27226ba026bb940ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d1f425efae7227f82242d0d421bac24b37017b45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "664f2139029633f8781a1d5a84b5603749ddb066", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76ce0973654f62a50d80afbf442722de9434787a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19313920108be0d31e8dce7ffc15921c69364a31", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c2a35a7cfcab0c761a88683cc35b6b512e14f12", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc8e50289d153a044479e16766e3823595ecd654", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d72bf99e961a8a5d49cd71dab949c3a1c0843a26", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "67d740294ff327b9bc6bb11908c1615e76121ba8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "71c8bb0cc7caeeeb7dea817890398b0c66385a8f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "52b35f54506180d04dfe50976fe27a8ea5f0e518", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "91ed24039bf8425b6903f7cfc5116f34f1ceec65", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a13c3f1bc8ab0827d01d2e912db50a069799df64", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78e38684fc65d0192bfe87e383bb3d0b8ee6407c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "237448f767fdc0721c98c8b2b30cc4694f1e938b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "815eede64aa53bad18747bdda7dd7cb657b6f5d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ca0fe4645feb600a2fb8bba337aed850d72551a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c67cddd9435ccfeeecefe8a465d165bfbf18bb5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "efc3c3a6145136a00ab9a31c42cd876ec28f5ae0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4f97d4d7b77ef9120dd195d35fae56b7fedd6622", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "637a6ad19c95807bd7171da23ef9d7381b16a784", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ace741deaa1a2a9fe8fb0b6ddef09b42ce3249bf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e731bfd7240819acb70eec9e1ec5fb53791f2d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4a44af2814c831420bfd715d1baa92040fd025ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37845c54043b38186fd0c508b9f373062952b025", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0012ad3a73ffe58a6623858853f8aa1c6306293d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f5bfd3fa053d6528d74a5e3447d2dd513335c050", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "46820285766c12e82b9f03a6360a92e9686e5e7f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c1e6961d3a4477d24f254234e50bb753b759fd8b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b0072761a58238c3f14e0ae184b3ec33abc9b965", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30a6427b35934e2268182eb72ecc5b6fc1b2bce9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f91b5e0c0f3742813997495f1e751fc8d9bc94b2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c6f034c6a530d382fee5efa0f7d4171b575167e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1f9e3b772fc8c3b39a65807d0905e6a68b2bd95b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d66b81f11d80a8fc9653dfe313f33037f2898dc1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ad55592e4ce7aefe5573a43e37c9b22b8bdfa165", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db1d778db40993ea2e701e9f5e1f7fbfa4d9bde1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1f8734721e9e3d873375b30f8439cacea615e3d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6478a5cae6ef7675ecf2f926515e8d9b5b73825e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "09fb9581dcc46003474d2dea58e691dd5501f1e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "678f362a78065a5c3c9775d84e63247b302a8785", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "57b6e102b67dc2831aad97d5aa8aa8922d191faa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e971522f687defa4c1872a890e2000480a688fd4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1bf91fa4290419c83ec846b1981278e73f52c237", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "20626568bc96636d69933996f3591585cb82307c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "56e1a08930b3467f060a2627b38086427bee20d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53276ed4aeaaad94e78a15595380d10c06713035", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3e78b552335b522cdf79ade327f04d46b6f8b1a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c37c51ce4cd1731fcecb65a6ece70a46ccb505c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bd5731771dc14d2ecf274e21832fc965aa29e54b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "52d7de6018666a0d52d090ebb68f01047c77e90f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "89471fcc0dea9656d262d28f896ddfd07b122ba0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5c7decc7c1f0499f29652b8a7d060f3a8ac2aab5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b6239f8720e386035be2547837484a226c1fe2e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "983c00c4d77ebfec99b8bf613e96f0e7e0a3f184", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "87f114ba3706a7cf42514eddd61cf262f1bbb117", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0923ab190a1b644a9c3764a4e6177004d89de7f5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "5982c62bab116806b4abc11030e9fbf70abbe8dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8722bdf241cf4fa4f9d557281f16255e0a7417d3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f55beb5d7635f24a22878da238f6406ebb0c5373", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2601025747a6544486512235c3221153d5581eed", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2601025747a6544486512235c3221153d5581eed", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "970bc5944f36ab57a8d10192ad00ff34a67d4551", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8430db206112733f1d19963d61cb6c3385ec07c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "520ed92481b0ad020d4c0d715a865d35820b4211", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d9e664748d0ab1a0eb01d0796a6333621d080395", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb99fd9f52658597705658c49a009b98d7540004", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb99fd9f52658597705658c49a009b98d7540004", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "11e2fa6d67ccae5e868c398188160d6f7ffb7b6a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd6139d17af91f22e7d564e45f98c91a443b509e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aeb5ac9863b7a426ef1a873fde743481691ab2d2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7603321ce42d82b1c3394cc79814a282d9916e51", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ca7b9dec043445ab28bc5ae0fcc2dc33c5768d4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a8baf9c3a92154e6d7122cc1621901af58e1095", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "091ac89ed20b9c2c24df25cb96bd9d5f69a352b7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d2cf5726ff06c9ae16cf5526d5c6b430f08e0eb8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "627e93009c2be2071d2d4f33a09aab6a313caaba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb98b2b60b2320b4a56460a3088f2274853446dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fc8586eadb9c2a9d2b2a2a9921b5f3a5c8b84bf4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4680ded5751229652852e6866e152d94253c6de7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c76d386c68ea3389fcbb0dc75b3ef6d7b34fe14e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d0ad90be41bcd288bf4a9263df25d8e77d578cdf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ddcdd238591108401ed123c45216f83f26f6fea6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cdc936f1db53c66771db6b0e2a2b7da32236662", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5490bf5ef30a1b843c49b84ea10b1afb95104374", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8934181ac5fe29d478f7bc87248b57ff70521554", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "18c44662815062668acdebbf04c638c6d63b29db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6c551d428fb4ffc5f8af2f16ed44137cd604e506", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0d02cdccf1a4b490aa9daf897459ab1794326a6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0c7ba1cc2253f8775cd1652b3ec48c739d974cf5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ad4b6b6e08c828a9924299dbf13838dc5c6bc4c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9ac5072059796b5f41898e488de9c5f6c8b9183d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07e984b1b4adc33cebfb67d92269ac5046293267", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "583bd2f69f3fb8337f16f6923104ef2c46ac0459", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c8b2e61a340d3087b76f8be99d92b0ee8737f5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b03c14534fca446c084d7ffc6a3e422f761fcdac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ff9f75584d0571add77cbe4622f25ae2de30d02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "5662d7d19a111c27032bfe56c529a8dc03b18aa5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "f47de5de3fa44961b2590456e2f71c79df0c677d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "be174811a60465eca33a2d7176fc850e81f5978b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f82251b4168e8a4eb0df12e767c86a6fab2ae65", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "75ea904ba086d884f81903d50f267b2385782f2f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "03ae253e8c47ece34cd887e5ac93a8eadfd6ea0b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "087e61b0ce554fdf5ac63d9db6cca45ab756813c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd9cbed08a8cc566867947d28df896ac05c09628", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d5fe04a434fbfd234fb311217cef45cd610e47dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5a28726fef6f268cd6c4cb73f9b12524f439738", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5112df01d1b4dbc3d97e4aefe39e584d81c31161", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f0d765b0ea7ee0ed306f4fcbed348c961d47f82a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "94369cd7935ba77cfb1d5a020d718e7b708dee2d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d606b8389362af7ac8661e1f73bf8b862939aa91", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "276e2ad5aa663a63b4f245c87dd4029fe516788e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e32964fc17d419f8ce8eabae55af3bbe815bb934", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a099c9678c45ce18bbff9c080a2cff5af9292869", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "81249f0e8dec5878f6b09731002636ed2e77b190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d9cc1ac72404b840283421720d590f306d521a9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c6592b91727b7d1e298014b49155568489a5a3c5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a5372dad4701f035ac562715ab8c740574d1418f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10475f1402bf32739f4e0b3ac1b7a5693ca46693", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1afcafa485450994fe7d6b9f11e58b898f13379", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c384c064386f04725fda74fef28f087135607e64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "34b2b6a7512fa41ecbf8c93505dd91f0e71f46b4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0dd02fad44549e7298d42ffecbe3a7cd6e0ed515", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "8541717cc2a586c0c4bfbdbc95d59cabf391b676", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03488e8b609e5c28d4c69beedd2f947af2bce8c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "609a7338d68ff41832889da49bbc6c765849a9a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "78e0793e1ccfb3ba3dcb95b555c921d95aea0172", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67d66ce9d8b196139451988c050a17df17a83887", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6b41ca80e7a1c105d59ba5fdbfd2a156d325b36e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "176d6fa421bddbce258b8101759c1d428ecd5a34", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "de7ad4893b8f7065bad1433f1ed93371ce682e3b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "74e978ee342c3293e1bc3e02fac528c4432fcfef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "701c25515ac58353c44da0cf1797d0018ae20426", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6c4458e301f881929c548672cb744ad8731dd49e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "08222f019ffe810c7eae7b3ee7be44b3cf4eb4d1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "97225e42f0c290d30ef7b755f62bab1084695dfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "360ae91306bf2f6069fc955ba247e0237a3d0aba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "408f63ea79d874ae4fd57b7c5b2772e1c27af93f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b94e8275f157f72ee63dc934e2cc676240c8262", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f2041443c5c584621ea6fcb6f825d19a0b80633d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "05c32cd7c3f99c6013fff3a31da57e72ce13dbf7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3bf4b8cc0f6f0df8d56db93bbb6662716e4444b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ecaf547cf761226d26b02121a83e62b32eeb4656", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f40aa03f623e3d16a2bcdec750babbb5696cd470", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "6c732f1b69d3b3a1cf711cfd64feea43bef42f08", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "acfc487f8751093675a7848d0e13436484dcd992", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "72ec2284a5a7d7a31a4c96c1160df6b0d2305bd0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4882b7a1bb734bf4aba91716560a006b3f6f1f93", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0e376dcbb5390d7293d7bd3e2ebf38bc272fac58", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b808bac761403635d7cb85322fb9d877fb8cb088", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4bd8e4cba8eaf73d51117f28ec0cf9b1bea35e84", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3f48ffee7d5f7e133fd33a63065937a61cde17ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b3a764c5222db74b585fe9555335f076a7cb44e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eb4623d27c7f969a52ee9a6715382af050c6ee78", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ffaab18133450814b834a3cafb11acf8302e9ae", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f16d057f8610ce4e1d665f426322e8c41fb83467", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d265a639bb791baf1bac6ed3c3e851ebb2fed95d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "642fde1405d8be917678a6ef4736503089669ea3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6f3af341fb4b448a03b82b1d943df800ecacb0b8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "dac0e3ebb7b2004a1ed444ef228d44c79d5ba74a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9a2df3198ce5e9e6de4b21eb5cc57ad88b21d4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9bc19fc502b1b816003dd2d1224e52e92d0a623e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "35f1b5759f19230333560056f2cd26c515e34ed3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ebd1f5c251b24298cbf4d7a97428e7d54b1194a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19a6f1b8daa70f6b54fdffd93b93484fd836e5b2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df19b8c9df9ca02c9d8f5c141a9dd0a81fb5e49d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "46656ccbd49b565785d4052c09b3cecd4bfc8e03", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59f3f907d1e1780c345357fdb33fbdf6f67577dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3fcc86df64840352479023ea27151da970090d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "55aa61c00c666ca67ba1a01a91e95b51d15bfdf8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "4f71ad5510f53d70cae32e94b220709a9c0d80a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f32d0cab8083b0c53dced2f468abc2a29b43b8ab", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "093d721348ed704e9a76bb891e37507c6a1122b6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "510c7114e757747d7761b8ad586e4f7c958183d2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b8ef6f258d151f7e590a91de314d2d6c50c05e3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97037b1ae6737ab91721d378d530d79f65118568", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "806cfbb973326c71487aba3876034d0d561e0a27", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d1b62da86c553a13a4aa6f566ca9dbfff156b7c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aea237f9caa42f270762af9825c78ac4f8cd74c9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "33582cc654c89cf6e584e081d7e5bd710ff075b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0cbceef00c744475a42b21d9de8feae93d995b38", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "9275bd67f5efbc682e431488906a37013b01e265", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "aa9ffc54b7d06d24c6a30fb52c92e9676052b419", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "a9aa587a6b3a46ba3b7e2812194fd2831959ac75", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe2d335b41c432f26899f2362c8ab88e59a72e1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b32cbeb1d5d8160c811893dc59f51b80a6ac2400", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "53626a17aca93f7a25944d42be00d7d5a0747a92", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "abfd07a147179956149021724e60e3157333f5fd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ce1cf304aa7c985218c27571edb15775506dc5d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ce67ecc032cd31c7ddca402c42af68222e6316ad", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "08d625e452905c3ae81702168eaebeb0ae1c2f37", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7a57fdb03c52a1d00ad57143a0339d9aabae5253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "2b57084c7ebdde966a43cb045be3a042eede3431", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a401ac6d9c12544c724365ac5e31f2d6174323d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6ca865a0d1285b4fd7f3e92281b713cb9c26e8a7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f8f40a30150bc944f96f07c98064ef2fb0b73044", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e42cdec827d2bf575e0686a7d9de703b944c54ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8c8a75d7dc2950a1aece1b8246f32e085774af83", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2e815beb6f3b3295b58c937867c1a15501174a4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e78da3423a3460ef40da4cfd84c1769939caf414", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5d4b654fbe5d09e6e52aa781b5c787366e1aebd6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f59471e38eefc7aa3d8361c023d20a17ed0730fb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ba1a6395c338cc82d7b1368903d72dce3853a6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "827704d8296d96372ed713377054b9cac099539e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5becde8434720749d0e0af01f72ede07433890a0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "78f3645467177d2fc9217635a19340ce0176ecb2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "70ffd1263ce9cc1017aa0f8d198957ddad024a5f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f44df82f6bf34005d4c6b10b8c434deeb8bd4f58", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "14636945cd0600abc201976df0744b46777a8991", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e3481bd99973eac0ed90771260a4dd58ec0dc9aa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7979b33f2ec6f3d5b1f981ee32984eae161be65f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "128890e95fffe15910bd0d240b725d3d6c6e71a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9927addc5e51bf771637f03d4d8cc5a346b4f44c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9c2d88436c2349b4be253a600a1f50401fb185a7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d97c0caefd07f05369bc61d6648a4c683e522ab8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d645b00a8e0fe288faeac65e813f622a7b1f322b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0761b768581d1247129d16deb43de396355732a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fce70d53c9d06fae4679cffa2083656924ae7924", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "1db02704d0ea6371c14a2247252cb7218a7acd6f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "040400cb8e65ce528d42e3d201fb022d9645e2b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3aab581158846fdf8a01dc4b1604535e1897ec1d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dc46119ece681d4e5bdc84082f3aff5a33d30cd8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c10b9abfc1ac56909831ce7e74d74c17577bfa82", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a628628c70fe3ca9ca226b61c98d1c1100af39b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d99924c0cd4b5c1c538ecf300dd6f88d77d82f1b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f0535b3efa5e18dffdf3fbcee3994abfee6daf2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7c9b327fc533a33f266b76b19d9ccdb796dc74b7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5f64762e5561c8a9e93c9da9b514e98e7484b4e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3712124602836ece0a9e835d9463fd0405e1407b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b9c7a85046ff2ecf897572634eec9b3805d517ec", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "473bf676401ad11d945c509bd0c253b4d60584b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1f0998e05109765a63a23962caf7b82d571298cc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5acc191439850bc4e4835ddd90ea5c4cef175dcb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "47faaeb14152e60a950e9302d86112aa5b57a109", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "36d3a0dc41556fec7a946fe7ca52b2ba17d1bac1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ae83fea09067ec9e18e771c37a5124b97d9f616", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0627f62d112cfe03f5bc5a9fea137e76da83bfe2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b9dc3821d7e474045164b0fbbd1424c150771fc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9e5881a38fb21b644986fffc4a67cbf9b0698622", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "10cc5fc94c2cd2db14d306925d24f9895a377443", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "4255dd28fbb9566b635cac7170b44d0e47647c18", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "ff77b89f6345a8954495c4290dd66db11d7fc4f1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "a3daf2eaa6990c2d5912d5cfe23422478a84c71f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0fbef5e81cd16db61b8202f50e3043421947df14", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "72922b82804d27d002a21244866bdc63a70fce0d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e2757c7dee24aa699c55962975a003b3927259b3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "afca6419401de08ec8b85922477ba0978da0215d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "654d7db49d8077f080997307a54fe40f7b01c956", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7db57b9eb5e6ab4d9f6f30b3ae5f6e8430fdc3dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a75b5ab64c33da921461311c4647c3bbb2352a30", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8bcedef6194970e8cbb017de67058895a4aea78", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "045b16599d916ed86651f9cbb7d25bae512c86d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "99639865d65c204f34fd712cb7d3f1b99d11bb42", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e26742256371eab228635b6b6270f5f62e567987", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "885918f70231a93b1b71d873b0184511a95eaeaf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1585fe59283074d565e46691d487adc593f3a77d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "af6916ad3ce0b1546cf940a7889dbb87e0a3ee4d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3f0a46b7f9a2e815a13cbe3e03d1a854f2070096", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d2f26bf4653c7c090f87b1285e640dc1f0de7d37", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8bc3567461ded2e0fe2ef8220f150a205f729a95", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5f108493d8b3719f348acade168a86dea0aa7570", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7f26c889ebfc2429d6ab3a49da4f1dddeabb303c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cf04e6f4e9d3f904df4a743e1cf017f70b1744f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "27b5324009503a97c9a79df57c1f51fe35ed2d81", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "cc590642dbbf1ac80eb21178cfe3336ff73a4f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fd546de64311f3a7276384ad1b090a3d4ad0a2b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6e1a64df10fed04f32257c0eeb228763caab2220", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0cf161efac428d13682601c140214741e0646462", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "49d1e146257306215a28c69e4b4ab16619166115", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "804f1109a8ee2277551cbb8bfbf00cc47e05faad", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d659628ac21393432c23525131a0277fc01a99dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "423585c2e6bdf570747d6ea0b4c39bc5aac60bd1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "33e66af1a92f639c427d46f88d31bac7293ac220", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3a9e31cfa64ce6ba6aa374722bd8568ee7c6c8ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "901b5d40ffef7f7f967a2a2075c1197114415698", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "21ddc9500d45a2077042204a57b7e179f19328fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "29236d836142172d5b64c8a68d3a2f0ccb897924", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "15b674f99e54bd4e439b0b59c376f4a7c192b5a1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "2113324ff310d75a4a97c7a19c9ad9635c808305", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "821438aadca41a9003bc3f30558c180b22868bcd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "84d2a633d458c17760014edbfe7911aef03b0962", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a235bb40f00542bb4f31425efd5bb320acc62c98", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5b1d02843a072d2a2b3edba549d7295ca0256e28", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24083d902b1a8d4f628345584528481513a3d6bc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba891548d3d9da3d92b07fe137d121e5171a752f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b8d3cd9e0220549821daf0878f9e83165b9e278c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "168b771ca8e5753b77bee7a0c8060abea29d1cfb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a546ce08d20a0e105a18314c0c8cad561d5612a1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f63d0427bc5f962f1e15ccd95fa43b98ea919156", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6a376ac1a44f5f0503f42f7a8cc47ba957ec73a2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "267e49a25bb6ccfaf4012eab5dd7222a40d0049f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "7ff78c463bc5201e39da3e2d59793937cf9dd61c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2217af463c0d6e53e8a0d85aa5dcf23742677b9c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6a49d7acc18a69344b97edd762c475269f727eb3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f60cb2671b4cc932cd15dd7163a4ce6d3f02e1db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0c69edf6601e8d1f9e3e82a2a0ca33266031ad39", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "40a70d296217b741d30ac18b9e9ea2845de0d405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6030e8c318ecba9d1c6f0ad3427d200cf9df1147", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e072653171e0db6790a69f6d874d039303688227", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daf4923ab01224a8e283627782bb4cca539c2863", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3177dd4b86b426d4625f9c87020a4a8ee373885b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e8f23291cd4fff12d22ec443db3067fdcce360ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "94613696fce40fa0b3deee8aacc8a6d757a0725a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4fb1c4f38b69cb19f8ea35274977b0083b05b9d6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ba798e65d7904578c84d648a7248480088d4d2e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "093afed531bc180351f3373d1a6f745b2003881a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "216e34d5d831eb16c303585cdf6951b105c36c11", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c835d2cd1b181524c6cd429187fc2b6d9884a48a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "deebeb8cc0533302ca48a3ffac8200f37bfaecd1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "39f83d46d15f94960b08200f8d6b7acfbe611040", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d77ae13eb3da2fd33955f1e980b2618440cf0d97", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cc21e686adee03fb8e38820d1be346b614645e3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ed3004d98509f77987da266a6c66247f12b0f0b2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "0097bc26cc780da13eecdb2a4e2e5e6aec593145", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "b624db88004355fc40da04a2de16d0492fac8917", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "c6997259966330a6558d05d59be7611c149e841c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7adc61fce405582e52ad70383c9aebe785890150", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a26bd24b77cd16fc7bd7dabfa35796b8ece33eb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33da08feae68f95451f1009def1ca516dc4d4835", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d5746b1d04e1075dc330bf93b7ef4bb35035344", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "60b5505110646c1bfe7a53e0d2c47e27c449f5c4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d99145c70aee0418c26120580b4ef70fd39ae9f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "caccc802083a7e965022e8a3ffbe187c3c293875", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "44104895b363699de2ba4328c52b74f86cf3dd71", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e936b6931f20ad58461b3baa93dee2a6078a0513", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "3b2552806acbbadf4db944b280e6db9c8c1e4e06", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c1c260a17c08fdd2f29446f406a339e6154c510f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b286e3ff478c822b6617a73d63cc35936581588f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cdbfcfe152487305ae195a897df4c3c64305d890", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8d45dccc0318595afa007d15a97e8fc73eadbf5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "364a3737702907843ad0a0e7a78dbff445b66b9c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e464bcf3cfa9904bce229c31b7e8407d7a4c9ac0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d" +} \ No newline at end of file From 344ba4f8652feea2a147014011d57d6da3b35307 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 5 Mar 2021 09:50:33 -0500 Subject: [PATCH 26/76] Fixing saml-idp git repo address Trailing slashes r bad mmkay. --- tests/ci/samlSetup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/ci/samlSetup.sh b/tests/ci/samlSetup.sh index 092c78767b..e67c16f823 100755 --- a/tests/ci/samlSetup.sh +++ b/tests/ci/samlSetup.sh @@ -19,7 +19,7 @@ then tar -zxf $CACHE_FILE cd saml-idp else - git clone https://github.com/mcguinness/saml-idp/ + git clone https://github.com/mcguinness/saml-idp cd saml-idp git checkout 8ff807a91f4badc3c0a10551e1d789df140a66cc rm -f package-lock.json From ac20975474d1093daefad7285e16acff91c9fb55 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 5 Mar 2021 09:56:38 -0500 Subject: [PATCH 27/76] Making the new expected file posix compliant --- .../xdmod/regression/images/expected.json | 7556 ++++++++--------- 1 file changed, 3778 insertions(+), 3778 deletions(-) mode change 100644 => 100755 tests/artifacts/xdmod/regression/images/expected.json diff --git a/tests/artifacts/xdmod/regression/images/expected.json b/tests/artifacts/xdmod/regression/images/expected.json old mode 100644 new mode 100755 index fc90bf2fc2..5fdd439f78 --- a/tests/artifacts/xdmod/regression/images/expected.json +++ b/tests/artifacts/xdmod/regression/images/expected.json @@ -1,3778 +1,3778 @@ -{ - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "57ea2b45f0800549366e393578bc563ced54e482", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "59a5c2f2ef0e9ea6cbb0f3ed79989be1a48ed902", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "535ad0a1b6ad6424f0c387aec893f337cb155922", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2927fb6b1ac59575cb81a7a6cc15d82ddddcc213", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e1b5a70cc2d45326321ee394bdbcdaf4dddd229", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8c042378d66bf5e2cc75e9e048667df2e1527bea", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3dfacaa40acd7e115d8cec2539d85a882a2faf45", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "608a34d5b090b3a7e5427fc2cae2712ee03a89ef", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "83eada08183b7c12c657416a51184faca17e8da6", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e4b88843f108a188e40edff932dca0eb247e2374", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2ebf8c8c7965793f11dcd77c3456943e7cf42910", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ea891809d81dfb5603688c89089ec8fc7fbbf224", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5483d333d6df4bb545ea4ec298960aefd6a22515", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9a46f4c516b393fdc7d6b96548823ea7ff7a5264", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b7298c6a9f95b798a03eeb189e1b882d51a6e827", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b04316bd7b32181f26632dcc7dfae02609f3bc0b", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "39ca724b311497972c75692b813de9134dc3a503", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "e6c7f7a18b3190c6639972b385bd73fbd662ac8a", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "23e38109b4a04a9fcd5d9c558530d227be44a459", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f7a6314fd0c22788e8b48f56e658c596d01145c2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "54b8c9a4e1c72a9bb422e9b33fd64946747f83a2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b5d16b7c9310547d008ac1eddc9e36d51e496589", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "53f47f92744d85567f5f6de95dd01dbfd43ca1b3", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8fca927b1422fd660ca13d6cedfe3e7b9367f403", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "18f1eeb9c25fd76d9d21636c27602dbab6d87df5", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "21c36de0517cc6ddaa14300aa8badc6ac2010592", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17fd64e1caf61c1a09aed41eefabc5ff8bd971ac", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "33e2d456cb6b1f2f18f9560d8e81331e79c2f26f", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "18a27aabb717bf0a417ccbb352f6269a407a4433", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "70a99146e8049590d47a8ef655fa467b40cbe1b8", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f0a5fedaafb3d6dfe0568e4c3a3dbc00b10a5915", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0cc6765922a9e537698ea11ce227580ac670467f", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1d416380d59546a9d02f9a1fe1421e292a52b8b2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "05f3cb522a6a1b1888b1c9866eff9b2f8d0aad3c", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b2fa9e1bef386c1518bd21fb78d63fd740a62fe7", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7272118fb1a06f23dc29d78f647f544a3a34cfa8", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5867f5468a2716d37986af1aec44f6949da3a421", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "436c7237e3431764b9d796efe1384357edcd17fb", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cbcabecdb611d56e1541781053dc11ca06b3f3e6", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3eee1d52d4a1650ece3120dcd134c7f502531efb", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e08c93fa09d85e1aecaada86dfcb41eb44ab132", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "ea6d2a1d3466f724f6bc06467ec9a914ce683214", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "abbca34a138f557c424731ae1a61d63addcd5a56", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a44f957fb1146766b45bfc435aed9f062e3928d2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "64421655ef11bbe25e418651c0a3f61fe5d8c706", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3b78ed2c2f9ed9beb3f03b153f32f5e8a92c12ce", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "096647801389f1756264d8bc78377931284bae4c", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1293c69641859da72886a8fcfebc825557594832", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "50b1cc28d0f3a46c0925f46b2eceaaac8fdb0bcd", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "430b06630ae55489534fd84bf4df31eaa4fefe29", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "36b7946c2bcc0eb248d077e8b6738e8182f268e9", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "36ca62314e7cc3f8b550916f861418f0af228707", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7fbb9df6c4b1d2c14dc09422a6baed0b5ca0b1d3", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cdbb56f35de7504a85acc881f95aa16c60da50b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b549e96d62ea594892ed6c5436655754e3c8d954", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "888786cf3a09ef051a51d4731f7af5f6ff0e3b51", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7dc579fce58f9b1281a6efb47dd89e3c43a4b04b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "8f32eeffb8b53809fe56e60ff16a9144ec13271c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ddf1d070f28b20a7e294c1d4846ea7eee071b95d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b2e0bca49ab8b9fae5d4077b5ce006512a14c64b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b1d22edd6d29df091232126ef64f9ef7c433a847", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0f2a73b5013b846469ebf922e76f5dc26fc1f2a2", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d61e92afd98d27279efab281f74a227e3eb2d25", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "39fbace779ef4dfe3a24807f04e3c97d47bcfcf6", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2c0401d3b38f3cc841b66b2804835a34930b8680", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "74eb933846b9216cd079a460a3dfa24b432bf7fc", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "74528ce9c06b963334cea153c5e9db030066125c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e36e105501442404b56e71611c5a80b9f4a57a2c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "29c4876840d0e92208c7f733ace3a5d26e76fa12", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2dbc7a6f5a1af73abe25995c9a12a48499daff7", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f4ff0836ed3aee1412199ddbf4d98c6ad38a444b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "20227792b0faa22e1bed4f0ba0698b787291be4a", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "03477cdbd5cc2fe842c244a8ef46196dc155da40", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1927ea2d550713e7ba8c464540de2f9c1585aef5", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d30c426027f9633f21021ff99727eb38dd735559", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b0b3b19907ea8e8f2fea32e2e4ef799b37c0c70d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "70bb704d4f2353f10a6bf7afaaf1e94caf09c08a", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c629c3fca2789230d1fa066dbe7bfd8749133202", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "90dbadf90c5704b0ffce0f1bf6056cc0b9a7aaf7", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e7b656f74f6902fa0c3b1d15c4709704e5dd8a00", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "43f0de931135c5af6bb67f1d18fc6921a03dd09d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0faf0dee8d110da9e98f5199dfbe89c467bb2fef", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "961039f332dabb61c2c7b66f0c56c3fbb08047a8", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9ad720c2338173629f76310430cedb3bae8d4e78", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ebb791e1ce38e15704137f75fab2b53b29bcb482", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fef73797af7b1239f0aa00d52eff0c2ec8790c0f", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "95170cc93e781912a0d2b1957973a541f6dab74a", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0535437960cc8b1ff08eb060cd81cd2d57928cf8", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d345d1e0da3781841242247d887b64989c8b2aae", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a9dbaa127c090f2cb67611a44ca256cb1497ec12", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c1610cdc743e5d30a39c690106b2a9a8a3be1289", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ff5a69d90505a5d42505c55f4b3323beb871a58c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4a86d0d8c2e53bdbb75e3632efe74d6d79a007b8", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b98c9db4e97837c0de1eaac97200d4689e232f26", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6062861ebd77af88ec2fc950db0e8508ddcd8c8c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "966babf23f06514dfedc4b24751a32799b4f2d35", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4f9fdcb1be0ed9183ec13155cf8daabb73bc9a46", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e7fe2b4678941a2092239f5586672857b39c9e7e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "01b49edce49e492e2c9d46b61b03e9d8ee550019", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e9c714d5f2ba4ebb203d8245ab033a32afd264bf", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9bcf879e82ddcf050430ab62e32c86f92ecfb4c4", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5658835f1f9f8e6ad4addd4cd6ffc7bbae9b4fcc", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3f408ce9a702c0792e10d1e4715d95f37593c13c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e0580f9c4d6fb3e14ed34053d7da25dd85878ebd", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d3d1ae935c50b54c858a0b6be0bc566fd50291c1", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0a9d57d514dcc325fb479545812e22159abcccf9", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b34104a26159d4895ed3054dede2b7bf72f0887d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d2b7d807c0c50911b0eaba2ce31cc65b64309ea6", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9cb8db453ad3521268919e7734673da1e72e25b", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "860f3fcd60d6773e6fe3001a5a02ce68d265072a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5a98a81a53b139b8dd29e2cd9e047592eaec9b95", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "129b40cee67c61a2d709169f25733e5573059de9", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bf96ea7fccfea6b616cf90af9183cbe6e48f236d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1bf70681a4880756f72db4a5b356596d6dbd8e1a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c0b447d923a75f3a5b17d02c2b936fdc6f07d121", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "09a601c78cc07280b92fed9b3ce275dee4c051a9", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "292b7f595675c9b2202badbdfc41b11e42479d9c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "832f175f67f786ea1dd3d2d2ae9352469ebb7a15", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c30b558102f25c2c21915d5b72e407e547fbf634", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "18e86ab3e93d8a61b3dad80377e3de45e62aa4af", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "cd6b0f2098daa66589a74c7092bebe214ba1cf92", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "ccecb290470dabc947d136090b07383396f4ac3c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f7b26da71ced9d8a90fdad88eaede591be581817", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52e2747457d0966d8c2c8ad6cf68be37b60d49bc", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7ae3e734baa9560540421e604b037698bb2e4b5c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "024d964bc0aace504baeb00148c428c67fd50313", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a6ef1a520000f9cb78dff670d42203f62081ce4e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "db5455f31adde419a4b5a48b36fccd87d1486d0d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1a08f3c9a3b09d2ee96aacf4958b98a2f14074e5", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "bcae6c775f75de8a64eb89537ecc9dc3c494b880", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "3e6a3d03dc142272a944e25f6fd4c47d5bc0f667", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b35e7b15b94c8d9076232741fd872f9cd1e434fc", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f9da99240bef4a807f06d8ad1e7c66462a79f64b", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fdaf87638ed33cc1108d37238035817ed9bb41d7", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d362ad00fa387420bcdb3f7e088beef0fb6daf3c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c66410ae48a2073a729e62ba0bcadba59a96151d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "dc674dda2f449370bf3d28d5528c1b7d98dab484", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d746128cb11fc730754f0b3f009344c39406bf68", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ce37b540eeb5fe8804eab42cdbbcfdd089402850", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4eccb3e142e82a0ee52139843807458a81f28b02", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e405081094c863bc5d02823e7ca82d021356f39a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "58bb0036ae232b5cb4b07375cba60ab2d4a15819", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "794b26c21e336d9bc2e306651f02ac7ced93ed9e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "65ea0a6c9ea796af23ff2a906cd80a25d0aaa9dd", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a7650855f7af4f26ccbe520858958ccea15f277d", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "eb72318c099b9058111f31b646723779033f8159", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "4049890e81422504030954e686a1524d1c04725f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "398f19c230fe17ffc4714eaba6d6a379224d688c", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bd14d7c5a7051a99ed6a32a2fd62b8fb7843d0ef", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0f11ca6b54172db0caeba830c30f92d95ba73250", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bbab6f2364d64156ff5e855ddbae0813744c2ab7", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "acfae08dccadc16ddf8d995adf3d1b24c8a17aa3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a1ecbdc651d549ba22fab2c71cf2f5d745fd6fa5", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f44fce4545ba0525a5511b8bb52027046ac120fc", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ccfef3d54307858444310ae9609e8ad9576eccaa", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4aab15b1359f52a5987c4f7aa3a31d80aa86d586", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "1b424f24f990c688a6bfe2864f6623c5a6aa1cde", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f285128a4b44c86bad4b265474b75d4ad6759945", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "efab62ec84449ab8b0b37d1ddc9f0bb0f86c82e9", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "58a64e1974deb7186ac455b81acfdb58f441499a", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "15198fe0f81f2f7028e57fc9d1694e3a755ff462", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "2ed30caa5edd75a48924737e27fcd6675850758d", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e4f790a1e7c55f936fb5ae5c9b0ed46cb79278f2", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "099e80b05f6a430e2a57a79f106f25729999a458", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8590f2fd9c13c54dcb75aaa4e883cef206dd45e9", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2afbf8bbf1b31f8493adac0b959c3b7e82384288", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24e10751c781f3eb9c13272f1fdd10fe00b798d3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "944aa9c5c3c64d8be09e3e167386c385501bf579", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "301aa475ffd2a359b384e7c8019bb12eb709c8f3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd8f9e6691441752971e1440d9185d8ddf4797a8", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "962aec26f428a66ca746c2cf2b707df0922c8dd6", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "d8b4e6c2b3dd6a88fbefd005de25dfc99859222f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ccf55934dc02cbab58d60c490f72f7f1eecd7710", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a06d9137468d13be52f9c2ee88ac2134e20064e3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5dad88b9805cce5c9a5ca0a17ddb8d9a9b7d9423", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4a88675c1a92019eaadc69231c1d3e2227bbb32c", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bba458ce0d86a5bb3011b388484dae8a65b1243e", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "abd94b2bb4ea8a5ad15a00ba8749c4353fa0f08c", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b0222adac2d0063531492033ff41cedf81c469dc", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7884fde1d460016bb03ce6d84d9aaf9ec59e8279", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3cb83eb4a131cc2759db5295309ceeb5e6d8a074", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2adb1367b00cdb8d17cd9d57b40a56560bc11a99", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "8302401d1d0fa6b35d79b0f03076bd51f0b6d03b", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "127e79e3173a722cd995d54b513419095a23ed2f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "69aaa4c7f9c3a231d9a13e1296eb2142fed9e259", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7de637dacd0f632961e4543f15ccc9e538f99bd0", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a282bb9bec8de7a3ac8ea223a3696a5380c71d2e", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "419ac886a65fb3f9e5c13b35cb2fc499e89377a7", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b292991859338887faa3706058443fdbd32d5d1a", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5cc1caaa3ddb128a87a91f50eef6972061f5354e", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1e8c8c4f8e48bfc5c3ffc5fcf4f5f265ceb0c96b", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e4afd4b07d3f9f0c96613dc8bb5dcdbd5f40129d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c4ac8f1d419d157f83b4fcd7d5a199bcf46e77af", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd99f8e1af3188d0343044ceb96944ae05fecf2b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e1e99eba4ab7d0b47665effa72fa73a6505983b7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4a97ed7ea6c3103aaa4ac47f579024d4828d0fa5", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "80f99e4ae6a36655a53a8dad288415539f928cc0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0259798f682a6db09ce9f43a00effda1879de914", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fe2ac8cde46acd052811caffc996ddfd90dfa8e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d304755bd482a8c27ad62c7a0f2a191aa9b78bb4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e4c048310816474fd12b44888dfc540d88e7b031", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "038895ef673abbdc7ea2361d1b07dfb29a23126a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c777c03fb12d62f3dc1a006c4f66b7ea7012e8e1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2c55e028a61d9778e56eb389f4ef292bfc6de251", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ffa1778bbd07fd7be7afefed61ab9d5007a3249c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e90539eb82f598e48f454d6edc62babb3f091fab", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "78b3c5ad6d1e38d3a9493372c98997bd03be8041", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9b570252647ce11c5bfe0407046d7f1509e8dc13", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f78de19859710b5175ddb9758a41254086b97006", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "44093e98a8084a74c303ddb718c5c05bd0ae3c35", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ea81f7d68b521bb0fe213b9ad267e3d074c89d13", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fcc4d66ae287fe3b3b0bd8177529002da5fbc748", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "98e35f87a99cd5b33477ecd757d79ecd1d2230c4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "edaafa1cad1d27eddd7b313145c7a8ac0a6b4fbb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "63f64ef0ea150897a39d2b10214fbacd18888c03", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e643265ac5792f3d7f51cdee12f842198b774f9f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "89f6324ab8dc8bd11df551ed4dd5731fe9d07a64", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e57474896c6e0be370b2f4645950442d4d14a715", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3d557acffa627a49f4d1fc2242659fd4d1f85503", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1ecbceec1c6e3a8f0ce6ad3d27f91ebf40021276", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "206dfb66f5110ebd1cc301f4b6cf2c716ab63c7b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f9a96140779d659c469c377a02008842a77b47c6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "29b48b5d62f4d0db2ff141a35b45f20370a24c0a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "34f14517fe3d5bcbd010da9b6c4088d867534310", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ec28b76e80dba94a2a1bddeb17d2d919143bacc2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d85a9cc97712a0a6013ad9a6c468e1c2a6bcf74f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "621c28acb5acfb840d5b15fe3a376778269d958d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "76ea607c09cd6ca6e91375b9ec6afb3df29f7879", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5c9706e217e5f95ce08bc1a1cefcf257f1b92c40", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "6554623d984ff4f3536af5a93bbf339be7e251f2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "10e8cecdbe4aedc96633fa95c85c8261fedbaec4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dd8bfa38156867c38b33a66b9bee74758fa638e1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "312b219fa3330710664de99ce44b2bf491b10a8a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1eb8741ef9477fdc3d01f36dd908e73ecd190a9f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3005db0032ad55d6f1b59b38724ca070ab2e82bc", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3c439735ea0a02f6e8fa89f5d9d9db9c4ab7a5d0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "86d12a8290d6254ad5b79bedf9584598ab5bf703", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "7b7c72a558ff52d9511dfed68f2bc35055dad21e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "65c627e9d8d81cdd896b8056fe776c9c52cb4fb1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f9cf93d6f0ee068ac6fe113e44015a31ab1b4cf3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "debe21ba7af574906ef8684f913040fa5f5af12f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "5cc1cc3e15f780acf592252a8048eb77420cc749", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "520aed56b41d6a18f2d08bbdb8542b0bf74d336d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "30f9d4f49b85ae83929222dbf76f1a46bb0e12fd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "119de37307da6c72bd4820533ad3ace7ae708b97", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "de7895fa131e1640c9ebfd9129d4f0bc96485df0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dfa100a124d44e9fe0cf346fdedfd1824dcf8676", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ffff4e259ce9df973f25fdf6a478ab94b3d99097", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3de730ed0c7db986f668cfac012547430ea0c95", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "44a646eca14d0daee70e479228a8610fb5f4e3b4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f685bb31c9af585f6af60f1f00d517011e10a425", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1fb355e91abff098ef6c5b53a78c550c37094e05", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0656ffa3d45c334643bf0500012971cf44017a91", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1321f359e0733a9a0d3d1f9a420be164bd6d62b7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d5d6bdfa6e6886f952ac51922d764d87430bbbfb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "53bfb36ae2e336524c06f7a5496640067c6da9de", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7747ef5cfd64de76a273a8a545706e6d0e421172", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0d55ce188940900cefacccb62eb0e4c485435042", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "661592c93dfdb328c8cf6e257271d64ae4213f71", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "052bdada9c29fafe9073fae58b06129ae401f1c2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d076ceb088a8c86598f5de6b2fd60d5064ecfc5a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "fdf8c4ad67d85f418961678b40715f93d86e80da", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ec3ff37ed5198fb6462d9015b00b80b2a5eafa70", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a8428c7f5a978dc9d4015a9f8bff34ac2d298ae2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "40d794a0df3a8276fcfe14b721413050620a8421", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "bcf7e555c33b286ff0a63092b792f20556c7953f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "047e2acaa985ff01340d2a31cd22824af655a875", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b00afab23f4c6d3539feb087a9836d6ca0dff564", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1defa8927294c15dc9afa3a515c2f8ae54055dee", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d71c3f0e5b3af307cf9d21b6fce4fb3697345838", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a05359224d6618828d1dd73f223da76575f5a3fc", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "7b72b7c3dc100000ae349bbcdc2a65a4848cead9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a2de88fac1bcb6610d948c4beffaef893c71ae84", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "126077185d0cd8f1c9bb6f63878d31ae077dda06", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8ad943422594a0038d63aa55ff13000b9c876382", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f3264598d9e0c91b72de9475b19c1c59344e2ca2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "6d80c5c1f1fa3fc3279f66ded577d3562089e166", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2cde57ab6b3f3d65e32a439a21053deaa1f10837", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "19ece94291d7b3544a80ba90bb64ac51c12ed974", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8d9d9304bf34a754b2e74892186faf8cbc9d1063", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e5cd3d18a96495df6a80b9b8c000fee3122528de", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cf4203c688cd86c7968d25030874a39c28356fd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bd0f80624119f3eeb20db24deed59a84779fdbe3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "c29e9d4e7ce05ddc357b09abcc3b6be8f0ed0dc8", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "797df0afdd69f0bc7d10529ae4fbbcff318af607", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9fa4310ac6de31e856c47c31d5ba4da2fa68d05e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24f1773c9c46489a2d51605ebbc3708f8b38c13e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d6887f6ee340b0739ea4894fd2b71b3e9d8b35e2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e6d27115ecf07dde265fc2a2d282cf2b1a48db96", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a8a7361d9d7557ed3c86a1fcbc442e041882591e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17a4e745f46f32d8551efa9d6867078ade588159", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dbc2f136f452602a193a62c0eb6932a1e7b77387", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1aa4f244340bacd6fcf09ecd5842f999bec98dda", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c61db6e13d09f4dadf48b874c3b326623f147cc0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c18378a62811d3cb95d32bffa2c85119ca4d6c48", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9af204c3e5ada5fab29019f265f66199529c2fe5", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d92675de7bca54b0185acec693dd6bd837e031e2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "04fe8d33c89dc796092edb9f569c8a2de08f838c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "71bf8ea72093d0512f2f3afc46c453aee31edfc1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d769382d172405517908bd5d1fc6ae1c61ab7bf7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ee0e680b040c42b40e539c142761f2dbbc4440d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "35187ed660f8e1488187a7ce55414b26dfa3248a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7f31813bdf11e19637ceeefa216292698c405b4d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95f66deda7f3173195381e48ae72820e97e9d887", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "751c26044f66e2f5f1ecb81ddbb8b161d4ddbf55", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1d0277ab05274d801b7ab20b9e5205cad4a6646d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "97313a72f873d6b8e5a00af0e198d8bf97baa0d2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "99841f88d608256763805c9119a804a41f8afe07", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a4863eefadef8c596c845ffb5cc60ea5fc7dc7a6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "de258fdd3820559f76e93ee8841f7e039b9ec1d9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8f1a5610d793c02fc10084499fb8a3807b5405bf", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "97a8abd14b005a2f6b343bf66add034e62a0bdec", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "db4c7d03918c0afe786396416f4610569aec2df2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "09a096a32e8b5c257f19c03cb817d5166fd006d1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "559ce3db2598994fda022550ed137feea22edc9c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c1e4129552c830e9a03b42beffeec0a08420a9ca", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b3332b20339d246ef5cb3f107a8dd57a288661bd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5a1a88f4110c12ed0885b8b90ba053ecb02b67a0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4f2513c54de89b04b070a74e8f5775ebb83f7c54", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b1ada4e018c08c991b822628f330bf4c81d68f64", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6e9f53f373993b50d4917f1bc6a262ddedf22972", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2c3b4768d00500a8a3c876956617d1329591f5a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6e76ab3bb6e4e13db97f95015d4cffa1e557daac", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d4adb7174c322152c932e6b962092f77aaca5db4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9567dbe15aa1710cb40ff2f5fab10eb9c111a62", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "653ca3c89f8159e3e41d39b4f2f4cbe629e430ba", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9a6212de07083e561a4cb9eb943576e0b800b144", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "69dd4b59f1235bdf73db9d09b8246e3f46a5d4d0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ecd784c9ee1e36e3c03262232a8094efa96b14d1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a50749ae3aebb5abf7a01d1295ea68c3c8488f98", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ef55737414c49d0517370d1905aeb6f469351b08", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dd36c46c64e535104fd33feadeed8306e7a4f47e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f0ca3015a22c23be6ce5b52107b7c2e1cc73fc48", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "140c8545768eb62fe9c811bff4ccbb939b8e7216", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a6939d50eb4483f8ca64509c22c2b6eeccdc5f52", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "eaba6980e5771530cdc96a58fcc1b5eb80e2f387", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d27da6c1a8e8ec85ffd743fb1412a30af5f372e9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4bb251cc62073eaa93207c66e8723400be7b88aa", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "20e703fdd8cba63978795b82d4df1ecde65dce5c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e14171e776c7e63771de4c28de515465aeaa864c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ac1aef15e13cfc4ea49e1cd7176b65fe9fce5fa2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7701743adb8410f60340488a231ee06036e88e32", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6b4075bb4075e329fb0a72b93c5a652f75f3a72a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca05b8c14d3e32327b566d79603d372e2d90de0c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7db069095dfec4f16294878696b1934e8eaa7a54", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3da98f720c3570f4bb186aedc377489b1162f250", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1fc07f1e9b096d0a661e11a965c4e148cd11b1e0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "08e9b78fa03ceee74dc7be70d52eadcd037d75d6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b9e08b9cc57e2dedc61900190503f49006005411", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b102606a9f2df2fcec988f6455dd07c9274e8a26", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f1b068af9d7d24ac1051e164bba50113eee26995", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b474cc0202a1c9176a3fb392470c7bc60e513eba", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c0007caf9dc5050bd9b588f65ecbe6f8816c5666", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f58b021179a1f08fb2040181b3360e89117cb3d0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bae421c9c0866eee2820a28a9800a81834a27261", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a065fdeb4ec4296d455a0c2efdfed367b5e19300", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5b23691db3dd6474b6dd14ebdd7c22f06c475a12", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "86a9dc6f28ab73eba4be9f9e59caca50e488c5dd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "babefd5799ecc2ca0511879f2b797b4122e165d4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "79ac9cde375903e7b33fb0079c5333ea7025df30", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b189b8bede8d5f9c7ca8db2a9fe4ba51fcfec7c7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "76d773e216276fbc5a900a572f9c3c6449bfea9b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "af0665686d3695f1fe2d5223ec7f81fd5aac1c71", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "745b239cebdf241ac169b53fd5060fd71344d68d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c5b0bbbe1e013954a5e42d9a14e3a8727f74e736", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "cf017a345d819c6997768512e5a1bc283def137d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f93f9b30382faf57254a09f3adb2b8dcbdf62055", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b6ff0ea1e9b608705f7d73b8f10a44c67c2be48a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c4ac1b013f9a7d6f9bfeb6f685636e9a11691a34", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "232111b3aab3756dd207d5915c7b1be62cf0f658", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7491ed771fbf151c3e12b5d0cbc57b0576d75088", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "aed75bd00627d1c2b4a836741c8c3e84b6fe10ef", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "85e6c00564f063e7bf8d1fdd59a276413ed3430e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "85594c329a03c5f39045630b32a438885265ff05", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c28f7d31047da053236021cb71858adf397a960d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "24784830f953b3b737cbed39530e42a4adc69517", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "99318ff4bbbaf6d39535e27f01bb662401d2dccb", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "64db1dac251ec17520d4f28cd56ff87a1cdcc6bf", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ac4a5497fd2285ab80df8f88ad739d6ad6d7faa7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0ffd59db16a300785cd41022e450fa433bdf2173", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0e11aaa2941689ec67fd5d1d43d0e46b5b6df11c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b95225956713411fd2d4be98889f6de4083ccd12", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "80aaf2e0aa9bbc0c8d691dd48ff87d6ea10b4bb3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ba54bfb6aacde7b3cc5bdeae7ebd4009da0bb01e", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "776c63cf38cc05b617b0b471a8a4fa8707662734", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7f8739633f3ec0b99fef194f793852dd4188d365", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7ff51d665d99d94f7c3c484432a79a4f2d209a10", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8386ec476a5569e58d158e81051e1bdd352b7280", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b4fe60e2d74d4a524607c74a6943cc1dd982c680", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b54aa63c72b8d6fcd5a339b89acf635674c11438", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "38371cdb7693d29d3ff2af17e946e453251b1e70", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dc25250bc27decd229b169b1c012964056d042d3", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "35309f3f61d6c0864d9cf2141f79b2bcb4908438", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d0d48a47884a2f7a3e6ed7a6a6662c9d8b98f6b2", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "15def4c04d881a5147a69ee50fce48ba1af11dd7", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "954bbe0adfa460bee809f71844be12e690d68f48", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b5d74ce13fdaabdf4bd7c5cbd4964560d36c4716", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a86c47171735543be43333a5efa6eea3d8f6dba5", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "343e98d3fa4d8c89e87c75e3893a14f3f8217a47", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9f1ade6be22c22366e3a32d0658080dd3cb36b59", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "89c841cf0ef0310ce786332692d56abf767281ad", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "6543962577c32ec443ef62ba00df31031bbcc131", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4c9d782ffd027105733afdf931b338e5fad99860", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "264a8007b746db82eb32c0d961ce280ee30b1215", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "93015f6b3fbf105d31933cb4ec439d7ad76a10da", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a5bb1a9eeb251fae664e294bc1dad300c3c40adb", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7f8857137645ae8eff5d5cac96f1c2c7c50c5fc1", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8e0205685534e228db453ba105aa26cbc67ef024", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "27e53460573be2f71665649f9d9146a1f87d5228", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e22c7c9253e125cdfed3b700c1507bb796c671da", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b67ac669a909328f2d21930b8cbd950db761b7f4", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a0808720f08ba941d95fd2a378718d645041c457", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f3bc8533341435a39651331cc1802c55afca01e7", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24900accf9c53a67d52634a72d1feaf43501f200", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "02921479aa4867b425004235c829d965d2c97516", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f4022c5f5f9929dc4b3a83bb476a544f4e0e0abb", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3ea75cd4b7506445a45d4ea59668e4a318d2fcc", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "174b388bf627f4494cb0916e68041602501c0ecc", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b3817c3374e14eb0dafa87aa8369de24da90b615", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2ccaa8fa4e74fd89c828f8ab779cb0babad8a71b", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8cddca52359e0c47bf7c65f5956eea06d7d78316", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a1fd29dc4d741eab051f3b88ff0a252b1c058251", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c1f38b86a6211d63b75dc1cbaae0e91e098bf128", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1771b3361349db37f21041ae3ccdbba68990bcd6", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "389224885a3c05282760b5faa684673cdd19ef61", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "71ee3f42d7e61071d318fe711eaaa6b07a44b3f2", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "511fef4511a076f73f7ecb8e76cc8cf75ecaadcb", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1c3bb7661dc6f600d21a9e08e294f5751ff46073", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8cc0d3fd0d2ddfb453b0b6e74cbf13b12e62f34d", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a173fdc57f3e89366d1784fe1e80e6cde46a3644", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f0d5bcdb0c5648a3bf5e5f604e5b5e246429f668", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "3002776e921b0eb708e5d9ae02718770a62f6114", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "39d94f462c614fa27ecad1664a78426abd55bb59", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0c876db2ce447b4fb32ad01b645cfd5f2c49337c", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e4ce46d39fb302ccf3048b9ce2206bd24125716a", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c033dc4598dde235cbb648d54587af26b60f91d5", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b112622c7a71c272b9782b2db4d19a228ce383a4", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0690567a63140343ab18269e9003d958f79d3ba0", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fc1f484695bb9a9f844abf16bb222b970a2c1c8", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8d41a8899e6f738837837062df3a76f35054fdc3", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0d724e6fd1ca883057f00270a9da32cfe06dcb18", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a53be95d05465e1cd0d52c33742749143648db9b", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c9051c0418743dc9f445a9c5e1cda835344a6085", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f17f8e6941f28e602e5e9696f2a14e360914286e", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28f6f570993c56ca29275be17f2c97e82a4efc68", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "c2e0c9e7fa3793f2b71224e4aee32b22fb8d74ad", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "dc9500690c5cd3b32ac31a0957ec31a5669eccc8", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4783f41c015b50b8f6ece463c3bf86347c9f3bd4", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bb922194c62500eece890af777897793b742724a", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c017dd4a6fe3cbeb7ddce43191f4f3c28e0b0812", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4ff7391eaf727956010653fecdfdd484c72312ad", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "af5d34c083a93d2d2f6bbe03045929f91f9b4c17", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c2db6692ef05b732b2d4f29ef4d58c0c9d06d6b9", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "6af62fb3c2f7e618e8bb12b71055ab9ff02cec8f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2a8a73e7f2ec7f1436871c54329993308b43037a", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "98c8fdb9eb6b08cdf6ad8383b656dddd6dce5670", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28cff8ea9488cad522667b526f6b902265b109c3", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "3d4a6259279cfa5fa6bb8dafd3491c622149721d", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c22bad9d13271755bff445f62f4886c75b55496c", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52a486f827d91279574ea070e2a28f39d75d196f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "4a0155afaccf7224914164545460b1caebdb66fe", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5219331872bf1c037dca508722a33c990272af48", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4d09124f40fe3330493938a216cf627e89dba26b", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "bce865972c2f2505bee68cdd23e0274e74f6a984", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e3e5399599c2190fad2f959ccdbc96d8a5113c49", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0553b15e3e6971fd76ae78afb1542c36df4844a3", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "38d5b4bf10affb110cdbab2078e5a376cf5b5193", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a1024832d330aab7cab6008b8929f3e32eb42540", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8ca47e8c97b71e0b7e871a2426e8df98fea8b293", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e3c87d18930120e41de3fed2ac53719d32b9a70d", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9546cbd4daf1319b06cf91f9b7943977a8fd867f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a7f3c4886ca66422066b988afd775866e17505b6", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "54adbe9a6f8874268b8b389a66c54f926a39a23f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b9dc63876b291f7e71e176643c8160c4b10ad815", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0004d0bb2fc578158e72f9635b56e347569e8258", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3e5a36f822d3f6da97d20af6f0c8dd82bfeba270", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "602f151028cf7a42b595d2cce2f0d51aa226b4b7", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "37203d6d06d912ca43d6df489e083c60ef9188cf", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "68fab2202ff3ddc4d23049e25e1757f229d27564", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4f86aa64ed98d7a73bd3197e48bc39b5282fb533", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c5a3b35556bc838db6b848e0cb5194b92c225628", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e2339662a95300260ed39d2ba05b1c58d860d89e", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "15659f6fb463b9e8412032980741e0fdbddfc7c9", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0aee932afe2d41bd25cb595c17609fb89a4f6f20", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "0286d6042ce744ca02efd5f2c653e924e02e3ec5", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8ddb4aa93d06115fe3555a0ddb2d22093b6fe528", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "06fb7cedf0c029e6753f96f40504085ff7dbc40d", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ae22bafc5a6de062c4ccc8c3a30cf651f0879192", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "abc54b9d34db0747b49058ac9ac159d058e42e9f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f3f37b999ab3ac8292b9fd4a028c82a0c5a1aa26", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a189258639a0fd8df4d164e603c8ad7992fd94ff", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8c6ca75d83af0b7cf3128638daf6b5b14115c10f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "76e2c6cc34de7638c77c0be163592329940a954a", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0e7d4c5d023b753cc177b9b1d59bd5b48be86211", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7304eb5cee9784fd343137a30635ee3d503bb097", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e6a67174cd202691ac19f08875421dd7f6a54f6f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c8cd5a9c47f6f6d2ebebf1d920ab30e94b761041", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24cedf6101549d81b826b2d8e21754396eaacc8f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "012bc0ae1cf1aa4525682c9469ea9d681b28e3c0", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca386251af37a49c402deb3d82a5d4b7b76b0a62", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "987c687714a79a8da68531c66fe5a8d16d16360e", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "41bfd3d1619c08269687be39f0d4b77475826866", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "acd0b9404ec3676ffb16fad3225be54bb2461b7d", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8791605baec68b82d22e3b66bc25962869cae665", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3c5b17458071778ac6b6b05f17c538ea9d486b68", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f0a6e821cf48678449a90c657c8d104c96a50edd", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d7825238083654ba7ccae115b60a231a448cf608", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "fb995f3dc40948e7d736ce1a228d6f8cbad7c1c5", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "839f825d0c4329160761246e9bbcd79e42f36f40", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "338ffb18b25ffd670f26384eea23c0fd7fff9814", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "19c72e446691abd0704c282fa87eb92142d91434", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "44f44dd8299b926707f0f8cb074dd49526d28779", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "cf2d4dbe0183d78f58e71691c474dcea2e016f20", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "88a75c23c31ab059298799d14a4a8e56aff53179", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7ca0f2521ff5aa897beaa3355a710d892d040da9", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8284e3c1fcc4748031084464e380fd0be3bb3e8c", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "56ebac2dd0ea78d9730e65fb5894867da683417a", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cf4d24760b3811b7b19d74334bace397466323c4", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9866ea8bf8a9108d75949eca6d1411b93bc9f42b", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "bc2519a04ef4c9572375c93f9e48ce01c65a6d82", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3f0d8ab99150cfb8c677d86f4b3996699b8c4191", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "baad6123b083b67c73445621e929ef8ffe0e4391", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c27622880eb0ed9d2177e42a8c7e4afce22bf732", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "2551d04d94936f9cc67153a51b92bb224734f675", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "2f2df97533397effeb2e3cb5a04039a47b05360c", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4f37c67ebbe5516c3aae066af3c59f36cdbc71fe", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6d26876a784648c073a89005da4c8abc031a227b", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "252e0d0b2ddcfdee8828b6b236cf599010cc584f", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5922a45602859ece99a6d70c28b32e6cfe044077", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a435ca92ce08d20bdac5c80956f6657f770ae71c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3af64e4a2279ab2828b69d86ba8046e3900efe50", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dfd1eb200c8d371e545f9eebb274013395a2f19c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "30cc636ce063fed364f5e7eea12256e4b3f3107b", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8043c23d7c1802d14601ca3a6642c65975e4f2f9", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e27edb43f0bbe06d2a3b0a11e75b310a940f9c7c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "46d4bf5278e86612f4b93dbb662d54075e27e09c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "db6b22dbed33100535df6f6c22bee968ce9cd8df", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2949ce5ea8a520f203b3b941438205528e8df793", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b4e0d9f83e780ea747242ad719145ab34a16cb1c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7a28f6a5a63f6e8e7edce73d0a0165182b5432c6", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e30c5c71964a8bc4664451c0ab62cdfb03465ddc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b0648393db6659af674026b5d9b5b0c640069c37", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e6ec0ed73149444b840a2315a6199f50f1e815d8", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "20aa670dc82ba01e109f57dbf4ed51e3fd39dbdd", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3c703bbfd705db7066d83bdcf5c5e68c4bda5798", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "60c1c9ec148e29806930b371255ea515363e97c6", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e7fca60d770a94a567cd2de71f49a3a1795af33", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d2b94ade19d989b2ffd3ce51e3e8a830e501d2cd", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bfcf371aa34f6eda4ec95344aa47875dcae225b1", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0c45c5d07f4e120c7ced1c4cdb9c9cdfd5957e10", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b758755c9b8e3020f74a442a313c4ece5f435a46", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "17454f59974671f8bcdce38b0caf25d2147e3898", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ccfdb07646435d9b43d291914a4b3bc568dc459", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7c59c23603a8b9a009ca94fb1f1225190661b3af", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "63b4f88c2405cf433f45cf013026b70ec46a798c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4640241bda32cacf122bd468e70132f9ab4c98fc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "209b6a596af8731c31a57543699038c247225cdc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f689367296fd72e3bca10ab94a86f5aedc1f2912", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b49fcb91f6f57ab031d0e914458c1c1fa741a675", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "29a7f20adeedc35b015e37e3643d1441015a1923", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1bdec72eebd57a21c5840174f182470851596689", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "23ae1c1adb7e71490ac7d1fe3993c8a2b566edbc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2e8de1bd8cb77087dda0377c95226fe2094d3e1e", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b5443b299097c0ccc1810e6f0db7390505bde2a0", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3a3eb5a38b95667a0f2b5cd59b3599a9ca7ae6ed", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "189ace8d04b8b7801978cc49b1530ee423302056", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "128918c3fd96fcf4d1a9cef4c9f13c4a035dbad3", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c92463dde3dbcd09b061f64ade3cafbb6d5e9021", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "baf5685f41161a0f92543c78c334d0a14c4cd114", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cebea162f2ab6b3a8aab272845664453405c270", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "de9f2ca92a9cc93e96fb8022193ab9fb02d6c532", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "cfe9bf722a4611313658b9477f1e7ad2662c7dc8", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e9712da83e6df4f5637997654e0b3b848bb5f257", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e0c8149e34a0f5e52f0076fbbecfedd2b3a591d1", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "51cf1adba46d1ee3b597c8e5dc26307a9c03e361", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "c2e0f14d960d7be1e558a43337bccf13ee239028", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "3e3cda1693a67e476721db647e6c360d0074c00f", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0908c35795eb643f950e5b6199b80de74b51a2cf", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "51e8c95a6bf172605e3f878ad3f182edf46e5b0a", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9c8c03c113bbe773fcd41c5d2a40326d82f8668e", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ceb26d8a607ea95001f05015b5347caa028b160", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "460b894b06851b88b6b691b5f0b9e29f050a906e", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1d36a77fbb01f461ea0ab8459e400011bc776bb2", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "09fba755565fdf3cb7226bb94686aec716f857db", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "536b15041e5432102fb024b84e813d9602c320a5", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bdb33861d3b25bb5f3da6dd18f7cbb4010e57803", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "dbf0929131b87b3f2b21654002a87f4123daf142", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "aff6c4429dfc7e8b11e30599785f2e06142ce0b3", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e21ac66c75f3170d210432fdb8d6160b17ea5a14", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "e05b76d6a8b01cbe0b08f2a2b75d69c60351266d", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fddffb8c3330cf9b9ad95a1ddbb805b4a558e21", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bdd0289a567096a7b0066260b980b62694a60921", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f8982be7c749f5c6ee3bb0b5b3f4c25832926744", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "41d41c3d7a683cb8feb4cac123a0883024b07eda", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bb288b96b26b63c450c3aa3cf662e909f3b2d619", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "3d9d243414d135208bedd60b4944a9b6ea7c3053", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "17601bf966708b6ec122b18d46ab535bd7fdcf89", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a19acde60178e1cab20cbb6567354075322a4d26", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "532023dd5d1502c2ede815025e77ed09f9af73a4", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c838bd0f1fc445b5e7e22e58c6e569f2412a0ac2", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "593c239ca19ef8c635daeacd21ca37d91597888a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "160552e3c51da477662fc1fb0f18c4b67c9736cd", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "a443516584755ca0b9f4847c893b19c8ccca3cb6", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "161280c670110924a328a5c8cb947e30832e56d9", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1c2e5419003ab1e134af7979773dd213f27a69c0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "bced9aab681423935618aa0d8de9e3bc083885a0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "44f46bbb262632b89b5cf3289c5e589e09a3e4b0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "c10f8b57d8d521a4928c1f38fe421d48840ce47b", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b13773d32c0dae1a6d77f0ab9ee56c483abfccb5", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9407aab9ebcc334ace09e859279e953fe2acdd4b", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bd4d80b6963266f5ffcba8b0c7623016207beb88", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "116d5d1b497db04ff5a7e2e452ef022aa7b546f4", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8674a126e57aa9d1547882fd2baace8742bdf28a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "16e69bc415e2c24e1fa0817b12a2a885e2ba737d", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f5a8c02b284666ac8741cff63d925b4c3d3fa3b2", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bbb6e1c68380e8445070672c7ac3db6e1e1460c0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67560009d90efb3cb49b2db68c85d016fed6efa4", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "175fdf2b5a5de66f2559564dabefddc213e7a267", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0fee6d4cad93267c3067c4236baf5417aa59ccf6", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "74af599c5f8cd0915352a922b1041a12593299e3", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b969dad1a32e08d16ab99a7d276bfa9841803b19", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "811182d5cc6a0cc99fa9f9c7e64923edbe982b21", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "eb03dc7aa7778771bc22f97aa5ffe3d6d2d98c9d", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "53941e23b0e782d80669c6e773dd6566b026b97c", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6e06d3964a19644e0d89ca3ea50635ce1a747bdf", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "de41cb7a9ec3b97c5952d5e197980b753d87efa3", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f1dc35e679eb0c7d7ea0aa55100eb34a5c153545", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "d2c82c4af4acba1ad7ec1863d5acbc728a419168", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e8f7c8a7d06e59692d68caf2b73c11d1fb00c95", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "9e67d2e9cfac06077402e6784440381cd2217b7a", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ff78fedc03fdf6b31cb0054fa4d5e6ab2b73b739", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "59de6d8d7d14871f2d6fe2c17eb0b89811117283", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f175f3ac67ae028d30695a57774a0465716bd829", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "011fec5402cd2d34acb208a12ee46b6db44e91b7", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "26a926e40e6201aceef00cb6c3638ea4b57e1f6d", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3f435007087726731fd144c7395e5912cde77ac4", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f4e171665880358fae519800e2312ee147530d8a", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "1a6cfc49528c379287bc9a2eb9f1701a49dc1b6e", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "0e330961bfb774a516b8869c93cdca06fb4720f6", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f44b087e487793066cd290083dc971f1d9551ea1", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1a7febefcd287e796ef629cbaee5b93945ab0d1d", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "18aae8de5d165ba83baa7e508cbefbe4b38dbdae", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6704a62692be1acfcbaea924bbdaaf2a560a315c", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "34a31a6fbb530f0874a0b720b31335fc7c17c916", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f58b6653498b6805f4ebaed2f8970259880149e3", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "01a899ee1f8483be50e250cebf29f34c56efde35", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "b18c5f1971e59393ee7e8cd47368707c04b6276c", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "6ca95b0b046d0c7139e1354d54705ea47f9ab7cb", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "27117b635e234a5d0a69737cad7438415e6d17b4", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b97716488f91fb40941138fd00ca1905c583707d", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "292070c0a71e706f803903bfd1f291c8e7b8be61", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c753a69964bff3e1bf4de6819155a16d0547d98e", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "66ede86f8fcfd7946fd5041c112d7c17b9f1133d", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "7e3a92a2287f6d7588b99e54ab5e1fbe75f2ae49", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "df95baa35dcdc19e2c76a723ef774b2a084b4795", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "bd53c618a9b37207ad9af1a4dfc5abd36bbc7338", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "1d437e7808412e699486301afa0ddcc016a1bbd9", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "129ce0fedc09cad23d9c57cd1e5f8f7a40ff586c", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a5d09d84d3663360c1ac7303f4fd32cb2e2bc8c7", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3838c3526366ee924ed464f7f2638ee55c3f4e26", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5bb54c54a59357049c8376cdbc8340e876e1c095", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "88e198efe1b21b1eac88b3bfd8e0b075c2f8dc1b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4f5b38f2d8267265243befe9fb66d7371b270a14", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "1922c52ae7d1490ea95602aa5908c7b8744b1ccd", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "51ea1a6f1bc14e5f8bf5b6d2f58325a58c6ef924", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "246fd39f2a273e56d668bc5eb1fe619dec42191e", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bcf2531608fc90da2ae025d46f4b5e8011a44de0", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "0b355dac5e691ebfc23e806a7b1dc26f66a73d0b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "2032f434bec6c65184f496b271823df20bc83c5b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "17ad4cb3165b386714f672b6d29aa725713513b7", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "445d6b6862f37ac40cdfa85605b663490117da5b", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "04b0695c9f2179171fd695c3a7e19c358ce37d23", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "89443aabac584d817b931a01d8f7a4c8eae9c960", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d63c9f4dbb36e749874963b58927626f9523f3e3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "412990068838fa505415b3cf756ae4c9b4dba3c3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "095413cf35e3cbdbbfeeee1b7e4903f8ef82ac0d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "17e39dbc3fb3e86b0e437b79dafaae1fdd9826fe", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "fa21dda73bcd12764a7deb0571e066559f05ede8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0cb17090a562cd4ed642ac6ddaf8dde509c51a2d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "11af70552db87b8650d02081eeffffeffb16ac9a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "c6026a0319f15f23f36ea28c24a4ac90d620f8fd", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "eeac8c3fe4f47f17c873aa90a3d12137d40d6601", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "fcd9fbb20863b6d589343363557eed99fc3a6389", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431f87309dea4c5b07f35bdff86489ecf60adc97", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "0756af3c588b84723f499c92fceb7087b5abca09", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a79e24c7951a6f07a3affa7389061161362aae4a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "de5aad1b72584f1aaa17bcf2204f340db4d57535", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f2c2564841f04f59a0d0bd2e0253ba0839d638aa", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a1fcc445689a15a82c4df9f755d46f50723be61c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "3475070ab0e46455f7874c24c1997e507f558868", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "7876b59facb70fb5ede7f30d6694d99dda8bbf5d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4c6af30c3f53941bb30d4c00c4afffc9407dc937", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ef973c9962e27b9c83cd5bab638f7f6b53a0bc66", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3c9f9d5f892481a5078dc720c3643d8499617ee6", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "5bed7f99681f02d5c35aabfb2bde10a9a8ceeebf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d8ab030dbb1b371502e7fa5c9bf29c11ec0a1a7c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "cadf7e4b87bbb7fb6a8d87772ff8d1ec5e8166e4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "205a6774d0e649b7b525d8bb93044a2efc6f07ed", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7aeb06e3d0001522de265c5a6648da2d5f62f4d1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9fc86543de41d30286c74feb2db534e9769a3b12", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e7cbb85858e0f2ed5ee4e608a98a519f2feb753", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "804b9cd9e4f9edd62ac83cba1fc7e17d4805253a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "d6a09564f465d690fa00eb040a7e68f056e2cd22", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "f304f31244573a74a4c6389a23b2e57e26a48934", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "43fcb143a3249e75afe6e82409ebbdb4a070cdf5", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3ff3820aaa8bd5cf2c3a37698762c3eec23a97e3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e6de007e90c72f4fb2b616994b3fff8ebc509068", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "af71b7e508a49fab5b4826f5e4ff3dbfdf9ff1ed", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "a6add7665c88aacf7c06f151c1b168bf8909c26a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "8011709ad7c111546751815ddd559b47141f8c94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "746217259b1c2a6238dc46c6990c75e9d0d8a65c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ecbe74554f6ea5105fd86c0c48bd2396d434ece5", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67b004657708850275760962e2fee30bec2cb382", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "168d22b5c537bb38bc8f3c9da1db9afff2a4c016", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ea1f79d2354d62288816c9d77a5c866e95a37aa1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "9888bb6f3365acbc92870ef7d25eeb6f5e7cabb0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b3b9ffa7126bbf4f961285bf9a503e594706e7dd", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "655a1f09363621917bc07a598ef061044a60ba97", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e1874eb530e2d0a1ee146abafd5858e20465cfbc", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78e453812f1c5550854410ec6a64aed71219d562", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8991a85e19dfee788b36cde87180bdab5aa46c68", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "7401974128c6c71675ea02d8e43b13b82a481cf1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "16215730a73c1414f62660af4fbdfd13e8d46a63", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "8e8af219e392931e68ad43275480eaea16b3a8e8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "6687cc619ddd5b2be7706c58695c209ca201521c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e90902c0e6e7d0b03fe72774bd87b2d907f82c8d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "746d6363edd580ef4e764424ef20f18ecebc0294", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff04e6bfb5443ae6052bc6a4531546e1bde1db47", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "011fe50b37f1b10f11b107505776ff5feed21cf8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "212aa84378b52de758b5f98c4166e5d21059b0c8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "447c9147b9b3cf494287cab0ad1f475cdbe7ccdf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "37d884da9c8e83dd3976667a7013c1b7e9583a14", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "2f419d5052264d57fbbfa83afc62eb9a52177de0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "02e2c957d9285541c516ce6f111260f2f9c37e12", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "62448f16f8faabd9939b7a484139c5a730588296", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "5c662b551a7f8064c8ccf02916d5d28f24b0e04d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4c2a5b6c2b029ec017619b9c0cc854b4d916297d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "366b320b1c7f44db4ef53b3a27d52fda834022de", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "405a43ef841055b29f8693a290ce5742dd9c011c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "864234687bed141c8001ed005af1160336e90199", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ad90fe4b68f57ce9671312f37e3781a9f0dc2049", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9a1a44966c9f968c159809f695667b4ab702ebaf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "343bd2376f682139981613fe219f399928f16814", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7050d48c42d2053b313bf463ccf50b5bd5c96922", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "893f37d035a3a11d6b846be4e4daed6408bb7d3b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0db95d1c595e20bf83fc8ce656bef3836996304f", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ce3003484955dd40d5846bef857c2ec8f9b9588c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "de6d2e37dd1d110457233afc11f916d0a23e7b3a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "b03dfb3dbd72b33d5ae23a2ff131342a3e8b2ae4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "770badea789590456594b9ea3548da6a53e6eaf6", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "f38f12324f5c0ccc56255ffd975615a38e25e7ce", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "fdb718cf5c7b3b2baa8ee1cc51c53170747d7b43", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "6e4e8a5d41bc831196920555cb6236fe32995df9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "295efb8619612e07cea2fa436b4bddba3def3628", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "ac2444661daa6598914be406c2d33fd8da564886", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "2ecb1cb4832c9f6334db545e4cee1c0259bde3c6", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "df647ddd06ba2546af4b559f3595a86527eda66a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a2fc526cf8fb0802807d608db0b3b0d75188a635", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "79008ae4476e10cd9eb957e03005abcefbac2727", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "86b852c131366f1f872b54bebeb3b8c7425d32b0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a968c0c9300c167b305c23789d28fef77ca9cc11", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "837c46d65f88b6d0713d571066c896094b493580", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6d955df0f1d96bd43f40d5e5bfccde41593bb5e9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4b0949118a55c19bcba32d8591ab6df07058cec0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "5b8c6c4686e06faa5641ee4539e64b905759be6f", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e457d605e0ab3c05fee40cdad546f97c81d7d1ec", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "4ea44c8781147272086cc3cb594ab70a340bc307", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "0636199db87c71bc4db2f51e8678c713a8c6965b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7165d89210d63aab27378870e13a9e43736ff900", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d893218fa8f95a026f96e5a4339a15082b2399a1", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4844eb45840530901c344e8ca76e1e42b9386620", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b186ad8a50094f3e5e8603e123b6d6c5690c2638", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "201c0f357ab994c70f10bc104a6663a45658a701", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b780721874c760500a5f2bbcffd83b258f2cdaea", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b1c8b115d851fb3d46c5e275541e3d4d5824bddb", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "5c048015696363ffbd4ea93432315b3634a7a8fb", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "34690f020e8c90f69a008fa62ac88581fed450f2", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a690fc25b5faa49042ffa7e6a12d72194958903e", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "44747e4b3f875f50a8f58c45cf3a96f9f5480a83", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "09c72f56a283080e537365af847c019f116def39", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "9ad27e9cf0dd4faeadcd2e33eb4b11a056f3c03f", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4ab557ad42ca685227cb9c3bfca20e797e4f9a15", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7571e48ca6be6a720129d6766b1b344633fc271d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "2cf3458749be9b37bd4d1633abe7bbb325a863fc", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "8d50d42a0063908a59e10ee41e51f59d09731276", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "2e426a9c1a20ee8bf9c1df38d3cf49754f9e48bc", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "67a65dc2585d7b2366ec7d4f704c1786b6a94f5d", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "dd914430686e256e3d4a488e2cc7a1be377774b9", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "7be4b535f903539dc4fd2697e09b968d109fba42", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "61c2fded86a53b4be36b073f62db5d0e999697d7", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e03b4c06c01af5e76d580c0a65321a3222d38f27", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431d54b2411b63712163cfb7ddb0619f10f419ec", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "45114a361ba9dd05a32fc7a2887c0f6fcdedc80d", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "ad51e19c7cde5f7a799aac9fa529c085e9b1e8ab", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fd7e403a0cc54ee7342349002bf7ff3b6acfdad", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a245edef0529144b86989cbc5c756bfd88e12b29", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f2d8d15cf5889504fa8e6ed2e613fff8e487ab4b", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "75603c1f207cd9964a83246f58415d2655bc7fc8", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "4203de969e074aa324ee3429040b16c076a14be3", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "21858ddf722a49a8e844d264e8ee7c4298c72933", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "8e8de6a28520b0563739e9176efcddd5443035b6", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "fd33d0a458ace666bfe52dc5a0bc98609652df26", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e47824676561787f4062187c206b003fc9808dee", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "1a9358d1f3b75755b49dd72eab32a6ef7a4416c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e86be08b33f71e5a93fd000a17af3e95a308bdb7", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d080ade5facd69276b87c0ea3837bc8f16206b97", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7ce00156bde91d76e8a71576266ff42371bab089", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "17e31c6cbdfc735b58f2b8a4141c3d669dd2d8ee", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "d7b4385e9e28d169f5e9f1e3c8f8b3ee0150bcca", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "5892628027b7c39761c0f92ade9f18577458fe40", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "3246ec2d0624121a4f0828386ea64dd3e531b671", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "12fb50b2ad1993cba9e88669d3f60aeb3f9866f7", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "cb2277b2f2a7fedc2c53924a0dceceb3e1ae7fb9", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "75807ba7749d18ac826d1214b17e05ed2868cb3d", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "62df967c0106d621ce1fa078e31547b824b32952", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78db51827d372e07c0bd9f356a7367e290bb7ef2", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6325e6d9820d68583d733eaf32606fabd7f309f3", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "9b249632a7106fa2bc52858fdfd63f8f29f80939", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "44a4bd99f3fc16d2a83c9689abcb84dcb65b3c59", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "619432e927130e09241d9976bbb572e81c061647", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0c65ab7092a98b407cdfcc268eb0d6ec7eee0da6", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "17976f8258001c50ce6a3eb3bf8ce561b84c909a", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1ff1fb5ee21673e24330b2c5c3a1e40db495199b", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff6471e7d267dd05a77f6e5c0cfb533496b15fb3", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "00f55b3542b083cc698e114be9a4818a10ae6559", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "15fc68348a03b55ffb37b65a2f2def0b9cb15e77", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f74468bdfe6e2c588574c382aeda5002633b54be", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b27ce5a4101df2c57859626c8219c8acfa727947", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e96493f18d48fce9865b31593a81301adf534bd3", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "f7ac0086e5ee18347a32dc322e6c712d729e48a8", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "67c163f0f8536dd301f48473a6fce9cf0aeb1166", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "eae3d18c8df51ef6e8bc2d6bff93c2a13c93c0fb", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "76d8f641fc6da8ae783c4d8db9c230614ec6ce00", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "952ed54f40dbced103365f78f42b40dc272a7c00", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "98cc47b845534e3c402fe460704729fe9825c670", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "d90c8fcef98c97eba2972f7965aabc889c2528c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "69773661c23463843aee07b136a4f2f981a4e9bf", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e0092ab686173cc5c3250d908c5ebb7c69d3194c", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "9835ff480ce7e86064e1feb88d71404112c07ad2", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a021b377c5c7a9db521dab6ae05765f77756436e", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "04ec9140627d053712e2afc40ee161da3c418a12", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "515c205194cf807e9bb74a1336f641c09e0ba485", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "e8682df3de2c35ba6c9bf1912e8f65a831ff3f57", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b5970640edefa58962ef4392ecb9e7aa0651e37b", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0d11bd89ef700ff108c284e2c47c3574dd516775", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "f42065f1ed4dc8f4b065999ff8a6fb470eb92c44", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "99f9f12cbf0ab877b5983b94d067e71a732b136c", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "01bb780f92ad4a2765c8f15cf397d793b56a7156", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "93175c3517c809a74cebdb7ddba5c11279129803", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "d0db5535751bf727f3615d3eacace9a64fbd3ea3", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bb94d56bdf9cb259159b703525b1f7cc537dcd62", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b790b4be3f75e677861f56d9976d2b623127d37e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "c87b2051b9d324e3ff7d18aec458cc7380b6ca0f", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "36f81f5b22285c5bd3c15efdd3fb2538af0d048f", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ca1568c40206f804569670b858887dcf222ecb00", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a935813f645a0865df8659cd1d882cc0719227ec", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ed0a6fd65ec0e872e2aa3498c53220353524eca", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e7c9b9faafe56823a8a62e11b9660da4f1e61b01", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "85408da94c92a8b9814668a82f8e5440c4ece4b8", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "733b6a6261ff3442ee560ef7cc914bd522796ab4", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "32ddb1dfeaeefaf1b0ca92a8b96add25dc882a5e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "5f1c4096c2cda8d8cabae81dc02e8d268c71c220", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "8cc087c7e693d70544013c99c29d0d13e4860f3d", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "91399af11a4a66cf48ca4f6227d3231318931a70", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da402b696398404aab0e60497fafb02ec0f22a5d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f1dd806cdc1ecfdae0c004e27e1baa9910be694", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c06bc88502ad01830a783418981e6c015d73b82d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d7694b177dd6e2796a24cd175296f29676eedd6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f92e3f09143c92d32e7fed764d6f88658a3398a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0e5d8b1666fa07e63f15ea35f259cc9f8fef511a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7656d6f849a98861a7adc1fb4502020890c94e63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b14c58745bcda2c0b06cdfb3b37cb956ee4b9fb2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "000598aadadce88a69bbba553afe3c51fcf9259c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d17593f8fc443ddd9b50f3a47fbee3721f9cf958", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6a70dd3ade3832a0ef9908a26286bec5f066edcb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226b41f939caea8c27ae192486343f0bc06ad002", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a353d896fee513b9d51f125607d529b8be3074", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "acdf6ba47764e2308de67dc9a5bbaa853d0eea24", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6976d10aa3d64f078a93e1df491f3f8eec2f3237", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "faf7edb93d09a794ceab111272b3c3f671e4017d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ce12a2a034880557e39d5c36adda9439927074f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e65c1d23e16e3c4049957ce9a7d7a84f37331d5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e16667a88b974bd20d9ace67b45242635d61dd4d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "32c453ffbdd6e72785111d51d7f603ae91612af2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4cdeb771777033f95cd261e46f31b64196617c16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec5f8a3622145ed863e7c86587921d9bc1ad2d45", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "014b9ea913d76bfc2b8dd8f0c59b1acfa49257c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ab6524fccf38a658751dfd0ab0c9e1d803a9fa2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b40a43f431d6175d7f65ef2a8340ad90f623782f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5fcd14974bd381c4a1773150cc2797bfa85c0bce", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ac6f1ccaa4e4ceaaef4e9b95d6fd21c204b4e5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3b528ff35d3f4a544106ba7f2c8bb1602ca6c567", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e7586b795bd2ef00545131fd148b36912c8d2df4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c3415ec73d6e6b6b65eec3b805277146de7469a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93930366454c53eb3ea66dc6d42221d23073a97f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2ba13ca7b591dc861cf3cb3e3b4e559d1d6cbe87", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d45c1237d13089bd29f1765e0b5a66d4aff4184", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec8826e17fd13f4b434abd399138f04b705b1d71", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6042943e7d8a9c4eb25bb8e00571a9c0ffe9b529", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "115beaff180f51a45d5dbe965fbfaad76ce25fb7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "244ac3a3d23caed2dd65ad03abf9a8903341bfa1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1722114020c03cbff084b11bef5e604e024c5e3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90b4b8e984b7b36c527b774acd0160fcf0faf3fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "28812ffe2b8e1719f56d5b58f6b1b5aa1e523520", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d8e68f3e2bd12ebbbcd52f5f7416252745cb65d2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8a90f751582979e5d07a661d8aed87d20d0159fa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b99dd94d8172cc55d6f589ad70f2b9fd73d25721", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "153b9a2538748f02de22f6c049e91d4d3f0acfff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf3c98b89d0c66ca38af89458e3ee7ed0f33b78b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7470487a6753b46d6d385c1597b9aa576ced5ad6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0b5d93eaddbf6442453e94f44dba595287ae6c48", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e62f6c2ef2a2ab88946adb90f930acf219b70388", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "545c43e3c2d84f99388f6c636d2fb23031d2a99e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b2203bc0e834ce60a859aecaf1e6ac3334261a2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "49fa3c567496fc7d52601584af20357fb23df106", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8287807f923093e0aa11c14985592cbf3d341c59", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0e1c2d27ddc1ceeeb8545579f871a4845d279707", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "985d064326a10040fab5a5d0bd131fd4339c8c53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f037885f4bbf14f8f05995038d069360642606a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0298199d16fbf1fb599b8e928a693642a80452f1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "661939633a265825948e34f763b98d3916b8dcac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d90c8ec191fc8e4d2e58dd883d551f5849e20eeb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "00a4cc1f9b713b68bfe747d6e8922d7d6fb2ebd7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4e388e956d1707b3e6246878d251a841e4792246", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f63aedaa3281e170b0fb7e2b438f8cdbd6044f1a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "69e3188f47203ec65fa21404fc72b3c6b2734805", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "015ca6ff87307b6e11b825ebaf53663b8a63cc54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90e9093d85e58b39a4347c5e4c91ca5e94dab3d5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1189483bb8b9504b097e84a842fbd19054e6dee1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1e884af089dbd61d747541162d6d787098e3a623", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5788332a60e16fe324d51ad19ae59300d7471956", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5ee3f6098016504dfbcd42d3522f61a0a56f2f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "33b3d45ca935595945d623272c7df9d03de227b0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "12d4f1347d2b80f6168db6bce83ebc7c0da5b18f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2cd6b42458bbede1fb6122fbff48c920d3b6ce89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24fc35873621b88063320273a6431f488048bf16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a567fa225bf7580925298c7b730384e0c307ef1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a9a42201ca7dd80548ada42fd7443e3bcdc1a980", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "129ad21a6de0dc824e9291f3b7441714ef9e3462", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0f75610337a4aa1a47f5cf5abcc9598c29f2fbf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "97f31a6e31b8c0e7910d7e05ace2f71a9e433945", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "20d7d6f43afce762d666c267f0def248cc7d001b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d7707c8133f49ba01cf7311e5362b1dac5802bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9861cee5ccb21ff5a52db6751ef6f715149158a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fc00dd9c45fbd54341375f13ad4f83fb50e34f0e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c270cec8cea9a41a9f032c9f33a193ad8c62b3d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c94cd2dcb2226e4bc1f9a4a649fb452e4221ca0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "545b2ebbe10e4eb5b6a80292cae59e8f1855b5e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8a45dc4cc8fab52c2e828c6bbfd18fa7a1972855", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "558aa93b827505d2123b0304551c8807c06c2afd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a107ceb57205d0430aed53af4e8f942ae9347283", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "01deaad39bc527b65b7284190aa6fa6c47bee615", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d695d1836c503e5975cc078c0cd901b8fc15bdd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "787a2a8249591b8e24e331f25374af023813fbd5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5935e991fb9380e397d1d6c549ed771d2b5fc5c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d682f03db622689b62cc330cafe529b56a73c1ac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b497690ca05cb983483fe6b6f076d0e615275938", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24a821167928c4e30f2807c89a67ead5575ad7c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0010c1b309e26b6eca51ea57d4e304518720ca8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "238569fd8f94d82545b3820e0f2698dd263fb27c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f105dfd879d752f8a8980c345420a3886ea6521", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c8965e334a9d3dc4bcb8c671c0f4f43f1c4f9ee5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c9200dec87d17eafb64c20b11ac7e7dcd35bf9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c48612be556dd0107f385799e79910d225247fe8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37d7c4e0c07788bc7fd3f8a0b452f89462645a9d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eac6fabdb1203e9e50f40d3a049a154cb2c8663c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ac79a69c905dcd0a12900fc611ce83cf25f9a5d4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89834d6d6fe0e4889528bdb9157449adc3935105", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c74c2b78a174820b6198f9fe6faea7398952de0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3506d79b517b6ced51ea2d54393d89d97b4edff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6dcf9d9df37c30895fea35695ec26040b8b0e572", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "974f2b61a11c5f2cc92dd76077e7c50c33195b46", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "450a264ac6e4d113c26e69cbef77399108745d6f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86897709a8f5f26dca0afbeed1844b570211d6af", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da8c3b45b587e207058018033f6ca650edbd63fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2d8ce784593fa224e917fb0dd22a1a51d433efe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86073321555a6f991f30ad6c62af057cf46ff999", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f719c58a9d685c88155b76e9c5d657a8ee6f26fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "08eb30e669f5d5f2741b9af798e0d5004adf2c89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "82a5950dd5369b538caf0364b8c3aa95e1a36af5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5d36be783f4d1470d1985a2d94428c4f18111157", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "83aa202fcec76a2c763108e57696edddab78fe15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d6d5f3254d462ac5d2facbe0626d2158d9ded7f1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2588a4fd65167ff334e77d7e0d3ac6ebb3092f64", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ada29f7844ac4c5fe4700d55687d73efdc2a22fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e60c6ed4a26afaa471218a95a354ca70ba7eff6b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ec4720b4b39cd3b37679ce3d6a3a743637a95f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9ad320cc967f66bbde44e4a5d6d95242ac804df0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "139d55252318abadaa35d968e5740f5eb6392100", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e75b06bc5279a5832f797e0cb490037b0afb3f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8729c06f25d63c642b0675b935fdd30c0499c882", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cb39d638134e2f829e8ba2352bb850c64b267e72", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "852035a6df0dec42eff52d5a16f194545fcc63c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "221f2f566ad57a5607336d4f71831b96d4b9447d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "893788f27ebc6cddf55e81d58dfe7799757a1897", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9d70ad2dd261c8ca8e1e70f337ea6e9a5fb973b7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2f8466ab3be58f77d2f830fff02a558efa23624", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42cf100c1d0b220647e5c43dfe26b8667f2bb577", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc2db7872c003b81352363f1d3a3da6fd7491b8a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c47b7c0bad80e6b6cf54c472a5c2d76942578ecc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2260bbe5f8ff54c754749ec85aec2ed7b7572c6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "263fa669ab2e3b6ca1e46058ce71a61b8e31c728", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c050c0243a0a99c9b8ffa64c90bb8a63e09593be", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578e3fe24dfea24e9f3388ea480e4c7135cc57a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "68368b37d9b96ac55c60f048bad764e758ef4de6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "299b70d368c96223a24b70b6cd0f297ca04bdd77", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e2232008aa62e17030e63ad65c89dc39357410ae", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1dd64174d5ed0fe42985efe5c18b1724c2ebef2d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "671cc1f50fa3362452d8d087b385d27622880437", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "06c9a9082916be971eb8ca31667952ad41400ec1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f42b1e829915be924a36f27b5c0544d8ceb790f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c0f8c66978eaff2ee82099faf625ebc509bc67f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "623021d88345ef7c929c011f41005a65b166a9de", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4b10c25792d8510cb808d131fb82bd07b031f4fd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "626309b2d8d6740f20982a4b4695175c3a10d0a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2033421b1f4d42cc8e43cb72267dba142d1268a9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ad135abba16c91f0b5b9c2e92c1d8cc2f9c5a3c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3c96afaa4d1b84b164061b7d4904f4d4077306fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "44bd6ce9b9b0e11c34714caa4173cf2ecbf3bfb2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2e3359e5b20fa7c79ada98d0733d55bb46ba9089", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d771e682c2eac1a406766ee1c684099e9b6c253", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9b7f0fc05c26b6150df093b86337081ecf71b42b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f4e0e2695c863d82fe1000c1d9b96cd3fe77e0f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4e6c4a54fa09927a8b1675c08346914ab7075096", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "30cad0d16dc0a7e9774c202ba3b328c77d834bb1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c85212f90619ed1cb589f01a7613bf4a55888be5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "275fa48ef152b18e055819ac727108d0f93435f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af08f83bdc51edd41a7e23c29985b5737846687e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "55b599df156b2d792583c315643164a7b52bde0f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b6bc91e983a96f1a35c42a4ece7af52cd9357b80", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dfdb22aab883bb47d671cf8be67944551e529083", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31f9fb56793eac6a09ba538a6671e249cbf70dd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "449868e6d26ac66d9fd1cc89440250883c485ee8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1194f582916faf9e5ec2aaf67796263651e1afd2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b42a2b9f9241dd70fa5c8dfe899c97424aa89b9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37aaa65942494cf23d89d37561fc97f34f5ffb63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9122057f884d61568de43abf193d4fd5ff30a0e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ecdfb7ec28bc6c34dc076d807b13d26636e33d73", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8e55bb9f805fc466a1176111c95f12c602b5bf87", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fe46f702399327f8be767b0213ffd786e3f1d189", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "87e3933852a552062c736a64594280423ef9293d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a1db27e3a7ae74a522b59bd23be02a15daa2c075", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c51703f1002f04b8110cd92e74d685294c052cee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90c215a36ea2413295f78c5d69cf42b9de6dd08d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bcce0adc3b6732d709eaa102e7f5aed5f1d3fec8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c987d7e61f32a9eec5c680d134c19fd03a064a3b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "653a43bbdae444b7e820a05190247cb576461fd3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f28b2970875b7bb3583bec517a7cf9fe28cc825b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c4779ee8c8e44ddc6be19e768668e9a4400c8e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "744aa92dffb0b1621b4aa29cbaaa6cd8ff6ca318", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "783f5e00b48762877068feae225f239daafe0d6a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e28ce86c493057882114a5e107f8694e74605a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dff315df45564111915d4904d6557ccd8baadb2f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98ebc5304af8f424118d879c18a8ca364fd34954", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d3d0548f26010091e90a456d9493847759fc82c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "15cea54d1a0e6ded4ad6392fe98a1f897f898577", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfe1f262eb9aef6b6e8933185e0e72c3d3548643", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "801da2540be5a73edec9f92e5f925048567b3efa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cef44837e66cba0d456bbac950222fbe4ff18009", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3dd1a5c8b82a34cb86a001e6569bfd8613c145b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a0a215a16d456eca6a6a5abaaa675a0237e1a25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e430365226a687562541221ec1d2e80779063143", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "180cc3d2675b070d871e90c57943d288255d7c78", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ae2825dd373dbf04f1b46eab3751d2394d49f96", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "79781b9c21fcc6b8c4c1777dc74ef260c1963062", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "25906a255b984fe09668fbfc6280fe255b6b3d46", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a14cf62a3051e82be261734312c1a81ba49ffa0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ccd4b21fa0d484aa12e95ae556b2302b67deb65", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1dd5e9d5b15efeee55d748b731041ab3fd5687e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a90fdee0fd6832f1b142d18a7d13bb3d50be1d9f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8e382a8a46c0b04fedb4406353ca26d0f3127bbd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9285faa0f3f37fb46ae3b747b7b355e3d0548a0d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1ca2779f6f3a02560def756ed873f34caa0b9777", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8a344af9c3f691225cd99f2f191a9c10bcdefcc6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb8a1c58b55da25b1437bda085809801de11acb8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "91417592b10e262a487373abaa5a782f6bbe657e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6bee539f1db61e2510bfdba27a656a8122783028", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cb7cd7d0f7f6597891a52905b05c5fc2038c752", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed5911ba4128f0c32c377d99ae468233d8636d6e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "002bad6065109663f6162ccbe5b21d4bc099b1e0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12605a6629b96d701f04780fa1cd20ace90ffe07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f3d2ab3aede5d0e34c704b9907c6cd39203c2411", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a6fc683a304ff7070e411e00a397f6374da57238", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61f6df1f195f28985da1458a905885bf7c37ffc4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "70c67327c3ce98cea818ceed412a8d4f2041cc69", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e83db220e19a0cbcfe42cbbff7671c28183309b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "63f0ef32f0543124a03ef9b7f819767cebaccf67", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2ec773fa8d5d55c8c9af21f38949863512e55e63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8716b9e4c25df81c4d8793b80a932567b4c1610c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "795db4818e4e9bcbf5458c90d7ffed334c194469", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d66a3cda3d3de32040138a51f7bdf9bbba2df7a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1821dadb987df353f96e864624bc59d1642d807a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d271bf951de2c7652a917644e4b3da9a75a3b7e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a335080606136d07d67b0d9d0f87e779b6843387", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03537e61c267824b36130bf5148233dacf491b3b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "14e7d57b2ca909e6f2e708e69156a0fffff226be", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "708414ed9426b17b7c93c2886e5fa811e93efab9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "810d33cb9f35f45a3c439dbb446dc1fffe07fdfb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8739f42c60db148a3c5158ce4b2c5d0e52815e31", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7ff34c3aa5b9910c31d941b7b65091b1ef3270fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90d16315c21d6f689d845f8c69602006e3bef175", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c381c76dcb019e7a52235e21dd6074decfc8de1e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "771cb73a2d42b8c231ac8ece1445637c1368c32f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e5fbabf4eb1be579a94f6b74c9ddcaa3e2aaebcd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1ac0f62b701b104e228f49b3e8eb9f3c049cf63e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c2535b7e964d90a8156d680fc14de0df2d517ab", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f65ed2da90dcb9e89a78227ddce7031987976ef0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb860094387709092737b45d242d3d1b204d6db4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4f194a9b38a6a3b2edd16c225f2912eb8e696508", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fac4bd420d54fb6e384d8ebccaf82b5152568353", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f983520b8f3c32b4fa67950ce5c65524061697b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dc999de36bd2da8184a2b43b4e605f5433a7800b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f40d9e2310326811125d7270a6f34d43d8cbc132", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1e7a75d061aca0b7f9fba55a8f02e22649813e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0fde5b5c4046bb132ddcf5fb5d4467f729262e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6b75f49cced9982ef08326601d4b01123b7b3531", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f8fdb53daf0f03c6a91a91a36a34dbf6abede2b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "162747760b6ddf807b5ccc80f46866e16e7b0c6f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a887d378ec600f05b1a884f8bda0e3aaa619addb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f785be9131b0b80754075eeefb987d08af8dba9d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1262def1f35561aabc2500456123ad18328ad16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38ec5104ea0a87a0ceaad5ab9a463a6d5baf6c10", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "696b1cd5ebd35626a67e46765d26ffff3080fc0a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "778285e920a71891fffbdfa6096e6d59543e7fa0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3f0bfef48e59ce9ce063a241d47a4926dd86996b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "eeef56381ae39e4fdbf51a204200deb128913a6f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb384d15bf03f3e84fd7aa800734393a8e9e9845", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41fff2993b2c7400c093dad8f7bdfe784b9e1c7f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d56193df9d6d58d2435f03974cea4af7958cae0c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6230ac00224734bb0bc481662d3f5338d38ffd9a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8621faedaa151827037d369aca52ec4e1c9e7732", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "50bf9abe6629eb309303c826fcde4ba916d19302", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ce26db0d01746795360fc6dab70b1c3a3cb0103f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8b9f6001210a10f0dfe588e78d1777e7764715bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ee10be7217383f841958f54d62b80c5a7d2d3904", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4d802e11d3539acd9764569d28c7b6e52792bcf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "286929bff2c386645578c1fd5dd0b296e0ce10d7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1488d60dbf401adc78053423eade4a2e66c720b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8895de3b92b7ae353061ebf5ae41f186f3224bfb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fb801dd26f6dccc173efe46c5d429e1b075bf5b3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "65326d9563a342c8fb7b4716c782d15fb9945cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "85e7529cb6458720547425afc845e198b62f450c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ad9e5ea8cf4f5a856ef369abb3d04d9d627d4ee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "52ec81bbcd2a5692737c2d92466a41c08bbeb6a9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8c60d068f401a1a9c8c0cf591a145dbdfd7ca088", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d451d364e4e699a9ff6b20b28397758db9868b9e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "69fb919964bcd1bf0397eb9690b0aeea4e957c13", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e96b3c86e9eb21bd5bd628bee3aaaf5795c56bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89eb63d9c20e54ff561b8ccb60b28a20eae11ff3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "60b0af8578bf3d1cf50294e561d1e5e835231523", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2a3c3df4b5cb7847347d2c11bd69eb4b2340d52d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "69c03964d8a0ca044194f03d6aa5c16464472262", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cda8e1d26d0809c33423f5826cfa8618354b8ee2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0f8bd061962900f88f42c449b6366cd127fad2f2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e08c9e0d13263f000982b9b08e7d07cf7bf67cef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b85efeb731f6910e5cf19a19c2bf6c64d8778e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2060735bccaa37429c5b514a8d210eadefe26b16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e3ffa3164fdedfd49d4c00cc0660ea740f1b30f3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "981a39bfb056cc0515227634c2313a306f8b2f0c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a11c96be22de3dd8c9800ede81c168aacab68b07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f6595d6df876bf300cf8af983b09e6446591db8d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8be3a7ada000f18c6cfe03a61469b8aedf531635", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e50e13e3b6abcedb95a07c24ed4bb4dd2ec2b296", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d46bb7c0458391c5a4e59d1e751428f57946d881", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ae02c66d52f87a20dec6260f73f2df0b20041b30", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "af7b1533144e347c424c83fa1d4adb3c2910b083", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ff5c73c802a062d66987281b5a958841fc176f24", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4b6cd69b3bcd47a0cba2a8aff03c6a8870898a19", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb20c3940c3da082eeb6d87641742df04376d2b6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ad2b3a7b4a468507a9301005d4c69d43a39c87d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cd6ad36228c90222b0c72eded8d262d316fbde7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "665a08c1ce448dd5867014b69e3aabaa8d235a1b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8849a73db58cb60d7f804b3676a2e8d6cf8f416c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90d99df21d501f331059819f8502b5a3a42d143c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "75b087b92ae3da2a9be69f36327cec8044e5ed77", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ea888734c9576d234a4fc1e60a65337809b07802", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "68cef029eac29c817601c98589ebe99f155c8484", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8af419a1d845ea3ba9887f4f4f4b19dc1ff84e54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a1d6eb8ca2e8f4834cbb2485ffc7a2a699c08a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a4d7d251efea2e4945ada6681481e2e630cd1364", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cd63cd068941e8a1fc014f3990259b9bb9af5cf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9417d6015dfde551d84ac55f79a8f158b78d1b08", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "271b24eed28e238628757d6876c01f088f1c95c4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68a1165b2716ccdad75f7715516577ca45878293", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "665ce9f2d6f595dfa85d0227669e95bed6ebea6e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb5f11f85c4dea46bcb7fe5d0bac0016f4d0e581", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c78c9efd02ee2c361da1d6445f89bc5bdea18e3a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "654e7bd00ac990cd5fa3a26b4dfbfb17e8b5b46f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c55d2b1996c3cccb3ea44af513f580c88224f1aa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1d85291d1f98613db67e0f7d0ea4970ccae5580a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66c0b23efb4521a5bc81ce23f9e24792214a0827", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5817707884c76cc8baf5ee30ea9d7132c0b14168", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec1d4644d2ba89bb45f13b038138840b25d95607", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a1a323cbcc3396ed8ed21a0336b74803e807e069", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "74a5d71454af0944f52b18545ace30863dacc652", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "258f4b98a8d0110aaa77543ead46e3569cc26165", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "df4e9955008c856915bdd8542af5c32fd41345f8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8999e3fc920cbe7a31189f5aa710bbd448f865ec", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a788c9de279ffe804d95a3caa46b78f5348230f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f6695f9ffde388e489f14d1319e9d78cb1603d87", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "44fa565242b4a12e46335f726c31b720639f59e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "be66dc48ef9801a322d75ec9f07fee36a7758997", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2be52bfd5c773f46bd8c77f1d904c3171764a121", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "067a575d45c4ae0e12d14d9ab760d708938aa81a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff93a0c6120700813c7f888f325d249194de1168", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5c77b88ea49d8690cd31a3d347e581fbd1ee98c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2b5de7325569f6e0ca86170a0032e91a759ca079", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1cc3f936446963e1c74f7f30c7b90520aa130a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "48c6d3a29ec688190c7052da0aeb96510c8a4617", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3d09725a8d344b4e67d773a567e3d6fbbc4edb9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "618ef626d7572238f8ed06d72f8d43181c85d2c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "384c733aa68f990f2e1ae7e3534269a5e12adf86", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "470377cc9205e9f36cedebe920970408925227ee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6997d00d05bed4216306734660b83ed2d4be2820", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c51b5cb8c79478460aa4edce4c6969f1427a0cf6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72c67fe0fb007b09b299c59114bc39e8a0f949f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "08d19166251aaa890ffdbdf33da49fdc0175cbf0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "791f37ba128bf2ef0b76c3121ca1ea18709ddc61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c5069cf512240002ec20ec65c4ac348c646247a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "626dcdca47d201aa2d1c53ec48beebc6562fc5f9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "35584fe866f023282507652c96b06c3e07afddbc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9243bb0a66ad8f7e65b7c2291cdcc603855b706", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e559ef09f68daa17d027320716bedfe527332b88", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "314527d3dc84ad3a7bc4c1b80fa87624fd5acbb8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "403393741ed6090b390e709f7a88d6ee50e975e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6e735fd53b8b5c53af00d2f2328eee5a44c1ec3a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "96ad35ebe73732847b7129364f434e075a5263e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d786621fc09fc6c95bbb67358f2cc5f00bbb00a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2f04880b037c8f08346bbdd4726f765d9b430964", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bada64eae1aa760a8e359301709fe2c5c66d4d67", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1726cb285de968bd84a2451279f3bd9331d82bc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eac05354c4c4b5773f9dc6114613e4e1605432a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "906a9a100b7775670f757186dda787e215c85484", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08110291cd9a5a905498b41a1b9d274712372144", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "368b2ba415c7e413a6d1a8543807791953011d3c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e7233d459d9c1bff8b3a5da9a7bff2da542fd54f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfa31748f3c71cd01a851cccec447f4c8bc9b656", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c269f8965a513c8997cf15f7553fbeec0a01271", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ac4f866c623012737e08401bdf0505e29b7fea2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "82fcfbc2074b0d6e20740d0da6d00426c2487276", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "74b5ed9eac40bc037742c260905b8518870184c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226496fa513d0549f0265c346300d727c9065423", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8f6422dcfe1f653dc8621aa6c6556d91d2b01af3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9442be83932d16ebd8e7b9dec5ee8bb029f4db15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "81f63c92ee044fc78c4fbbc42940539c789aa5c6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1ab33b7c1d696cde2688ca585448be20217b80a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61115aeb86ef147fb35ff05f0566d07d34636701", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "52c6733b524ac2059aad511ed0acd1b493974cb4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2f91d42c7e91d78005940b09175b3fa3620d1ad5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf70e427da46f20ddf2543a45387abbb9c9fa355", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1e75a20e6ba2b205fb41302aaa531cc54f109f2c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d69b2c365e00bcfb2e573c7406143993a3f3bc16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "88b8c28d5702420432d4cf4da5c6e130eb666504", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b79bb11cfbe68baf5579dd1ba9293cde06512594", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0529e4d851938aac7019604aa23a026964f2a07b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "888f83abe7b47750c77d675dfb70f0a3b22a7fae", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ee260a6bc799752bfae17d814e8c5d5dd9bba655", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6549adce1069638122b8e75a039f3b92ef2d5dea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "33ee283757a977573ade2ce739ca161cad7cfc99", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "38e4316c9d74b396d2f9a2b610db5e16c842152d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0605ecdb0d029eaadb69de073c84b3686745e693", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a2c32a04e739e766f97d571fbf96fe98037c48c5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1bd7b6f26ccfdea0fc3d03d9883d0ced27d7794a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05a5e51b927f5f58e54994d58274c879b62d759e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3de246dcd2ee05f4fec9a7e590bd598b9e77b718", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8980d9775581ba5f04241a09331161b176f90129", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7a79176a310d5e7871ffca2646fe48bc501e18e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "415f27ba54f917656a60aac5bbecbc2e3a8ead10", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0490f0b00cfd1e782e5cefbeae563af9703dc846", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3169ba29239a9ba3de4b38944a89fb2b984555f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d1c1ee773ddb28906064252ea38268a8a46440f3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c040552a848a51e723af2688b141b3e883ab3b57", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e821506d449e3bae34d29f7974b2377ba1dc612b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6cc96919c45da1d8cc78ce3bee99e1f6d4f38bde", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93312dd48bf01fd59fb85ecba9d4330c67d55389", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a7cd1a13c312bdeb24d6d862454bd0ed17d8825", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c9631175a4c993432a11adb09727f31b13bd522c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1777b4f70afadb86654fdbaa7969df554f1489ae", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "218f9f48693bdf739d7de63d627e045b8e299e58", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c2ac1bcbd5c76520d3b85ef1b309bf7768ba258e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad5edffff0a84a436bd56be3e6607149ec3b4570", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d3f8b4151a55b7386a84dc8131c639f07ef512b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59bd5875c771d6d53129f9abd6c10246c03e7a2b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b6fc06337addaff60972ad7825d4f6ac001b2fc7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e9ce0078cb8dfd40153bafffa038ae6c043752f8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "823cc6dac5a69d8dbcf46eca248f3d033d63a8b1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8d1550a16cccce8ee7002332cc831ff859e305d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57e3de35bea1c6b18c4f1bbf206fb4dd5c1366ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21d429647d610e067ed5317ae06d9bb686da5845", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d1ef6d142adbd7b6e6fd4f3e0cb7a6d183f841a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "43d6f71c5297693d02dbaf6b9691c2f1baddd54b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "28b5f7be39ce2bb223db02e45d38a9e1482d8136", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a72372849c06f879600becd21d08f82cf296033", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "826c50614d985568a9dccc871111f4f59a6f7f4e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5cf409bde29e5d94508df1823677ac1660d0709a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "68daf74d6dd9b5422676c97fd7261ffa78005561", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8ad88f44117f5d733cebf572c05ef8514105b29d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8e2116badb158c89d239231f215da6ab70a5fd66", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b70fa90b61cbc4a70dc4ce30d8086f53dc1bfa8f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e4d77e90d3cdcf721cbc3268d657037f046a0b97", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf90ca5f7df12db9164e57042b6090edb060a4bd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "446887fab80f4b41a234a5d567b197a7c13b208b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "30497b01eaa5530c5dc3857b8f56def3b7fdf9bc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23f27f87c0f9a7b46e8ca09ec3d17c33afbcd95f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cc5469d7f75e4a0b3f8a7fea32e27352c8ab802e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5ce214c83edee964b220c73418d14db67627493", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ffa06d91bee53d83651d865e7fbb0637995f5e3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "573f14befb65a1984f37390a053590163b3014a4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9c38484d03c7a022cfe1a4ff211b4a387c67e2e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b30d1ddf0725a027c3df3e3e29c5a60d20476af3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb95de384d61ee7d59c94b58b3ddaf5c089f9383", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b4681e9c24a04d457506680e875ae1989887fc3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3582effa12ee29f7710fb652fff8813507230197", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7bc0b16186ce376c0af103014611d935fa6609ef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8743a3adf403ab60b1e97a6aeccb12505a835438", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "caa7277cb0d68062dc0640de29a54b6fcebebc4a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5b371813fefa59ec2368d252d38686fd1c8ef72", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1f6b38b2ce2f1a665992f946a4221c5ce375d71", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "040725b9db58602a2a09f00c68c972dd7a3b060a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58ad233a99b68c67d2c0af3aa9b8b24c4670b2fd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93d748ada56ade7f81036e51314afa525fe56d07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "45def2c88747193a42f9e70fda3f2a2de4e024e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58487672dabdbde10a50c7add725a441e69f8532", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e54bab17744ebd81a0655c8f26d3872140563ea8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ea1c98a5d10bd1fd8318a1df4547ca5f067bc642", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef6e1b797a28202de3dfdc28116d6edb79acd782", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5873be38fca2636ffb96c037c6b2e212bda6f09f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8b49a6d623fc7fd8e6044a34bfcf1dc6e743ed84", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be60265b00c3e9731b5a78b4311679223d9d8e54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a94fb7cdd9615decffa716d93902c939945d40f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d48ffad6f002dcd00a6898536f8fa8596ad2dad", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "742a9cce05112f55d63bec4fe6c97d3d13d192e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3197302ed741354e6e878027b1223063f25a8e4f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "504625f6dcc0ebb10b760fafd576ea602bb52ddb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2e5d71efbbe223931e4de020343edac5cd82cbd2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c3f031bf798e16a82554edf7190a2e582a39f6ee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f7d4bda0d5d1f5c957e1a617fbb7209e4266545c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ec9779a499ea78912abd5c18eeb4b79a94efa98", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4dbba118a13040d40778c1b8b2f82e383e8f2cc8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b549fdf117dde2e6e52443ca8a88703c68ef11d6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2a9ce89f8b96c4448725bf58dd7ec80c30df2cb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ce160d29dac1a3b6f907546fef67073bfe5ed80a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7ca82a813ba2bd7b07755b56f0fc771184f14626", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bbf803e5b154c61a4df8ab80302b9e6e764c83cb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0d8138ba01c952aa3a3d076ae0ff1256e278a8a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51d323af79238e9330515852f28cccbcd0409d59", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8def42ed8f2bff8be19e85f3f85330ce2eae995f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4957c4ed9d7e92f196dc0112cfaefdaf29094b25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca3ecee591bcc8b54011e695a52bbb6b635c476a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7afcd99093820ddd14ea186229a53d78d28bb3c8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "36a4594ab7da528114382c1e5846fc203625272d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c50bad5e11f9e3c519ec8089ffb7eefca2888eb3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b378fde58f52ed4671fa8e6afbefdedc094264c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0dfaab6837be9aa2e304e9eb17d1c423c7e6a1f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3f1bf217a4181b5a81a6ed3312fa4f76947515f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dfbd904e89c74d35891479f2b2adc8b1d322be3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7c0efdb5b6b7430f0a4e11aeb216844825c38b61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6f3bbed369af858c512429baa0f727af8e7fae6a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d42a065be4a9eb1c9c4397384c04bd6b4d14b9c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86e148b3810575fba6a2628b5f978f7243302b4b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "83bcb66fe1aa795a47cf83823dd1dd12ad09420d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d35c300937604a53b0e7a0c4690e5c801b21ac76", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c68b1f949028778a9ad7e736af9a3ce42ac9931", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ef110feef67165c1bd06671fa27240af9282b914", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d1b9ce064bcc93527045d3dde12c9a87f3e0b89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "81b5163925bb27f810e72f96573a02724861e7d8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83fb05d9cd787bb4a48d9c7e8c997870444ac711", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9126543e077b0cc68b7b8a4118351b7326978163", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "88d05998eb578595598a2ae6bbaeb82a97cfd40f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf629cc5cea47af305260d957d782c96740fb594", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6e1a0288e21ab3a4f77ecbf80622a346ba93512", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9204a9d21d74a6535ca8df2deb65de7adefeb20d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff70288cb126ba5faad934538d1644ca84b05274", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "63c4e6524b575a31ee4b30eb3e6bc645c67a3f01", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0671716007c6e6c6f72b1e59aff5656ba84bab11", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b6707a84369341fe0d7ff038e2e0526a699f0b9d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c7e090dd494a0b08306cdeeb536f796e6c997d1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4d7534ec4d47483d9de5ffd85c10864f63c25c0d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ece53fcedc7c1d55ab1ea0af37a1baa92de1956", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ab9f23952c81adbe0a7e3671395ff4d05693cc53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b5b81a1eaf448fec9d2034ae792858ee0b1df384", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2320cd0a449c24aaf2aaf869b6fea47a2ce15ce0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5b479cedcbd414a95e2036fd2ee830879b2e181d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f511062160c9c53ef17ed5d982e96a3902db48a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f6d60c193277ca3627d29bbcf1b9dfd07cacc712", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "90beefd48596b489fa18ddb18e37a1283347d2e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c7c9c03f0e63ca934232d7ebdb5bb96c90dc2d7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e6cb06d37671feb41ce778836494a67ffb000928", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9f973be4eb309d100284c7dc8b222b8f3d54ff6a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5eaa6186b72793c0a284c2ed8fa1d635acaa55c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8b86078ee7f9734ceedd9838017c7205d1a8535a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "260cc4740885f42ce7bf818a06f43dcedcc2fb75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "637ba9cc3d38a5333dbd3418e5e938deb7d826c8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "565e4750c4e9553d17202c73bd7b1ab76469a4a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "753e5b14f3501f1aec871989525eeea42fbf8161", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cdc3f4263bc3887ffdc8ee49e761f585e9307ad9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d9f7483161e4462d676904292eeeefdc35daa593", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4b017305f56c9b73da72b3677f6e080659308f05", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0db9550f15a9dd43c3da40ba2994ae6edd0fe744", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e28f08d63fed07c482278f725c87efd571016c8a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "27ef81f43c8a214ce3454be7fefba241437b0f66", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fd72398e76decfb1456d91249903560dc82f5f75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "02feedea2c3ceaa775f4589d65714cef2c7a0228", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8bc485e2a18e9798221ca95cd38c1e611d3e2bea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93e5be18bc94f22a206c69bc48e0dbcb08ff34ca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9f6bb7f0f4acade7671472d6b17eb7c378a0c72c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1fb1e39f69ad43f7675eb63a74cc7b2a7f1ee295", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61561de93c26d87b04928df3e41a2b8e853879fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "340b23484440fcdea4f66c8f789d5104911a7537", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2d1a38519440e1f40341cfe368437a8d17e74055", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1fce36a62ce56a400430cfe1e4fb85f7a6ef4ae8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0c0ffb0dc38ac0e03a60ccb977bcf63b604f5eca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c0231aa7f9c2722c82839f5e1ceabfe73fa590c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "111d09d2edf6298892c3310b5f5a64d41fe10492", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99e70c659d458c1e7ba0bdfb4579cb1aebac8baa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "46f3f69be78d9c22a194c4ecaf73a2ee1713ee8a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3706d55b1c829dd57ce07cf33466328aeaa5bd75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "81f16d939fa45fd34474ea87c3c2d7c5fe315208", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ad67908249e06b746b3045531a1932296c22accb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24294257cd31b4afdecfa37a28b3edae18f7c434", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e00363db5658bf4d415e3ccca8070aada10ea601", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cae8d35da8fe69ffe1bd27a007d465858c08e15c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92eaadf85af725cd466c7f5ede58e63d6e19b4b0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dea49591f96221ee95ac4fd4e363694f5e67fe05", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "568acbf509e76647b5fad2f1ca671285d9de49e7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cef76d2b3dccb2a0e88ab5b1f877da2f36489e76", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9aa5abbd2632495fdfaf4b31da3f05f6e3e9c501", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8da7dbd0d5b32d35602de86f5034c4f5691a73a7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f56f48ffeceb05995ad2fc4643c1ec1dda40a2bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f99ee09b3f23daacb6d78617833130d33a292a0d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0607e6ba0dd269376c633de5f286196d25da5657", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23917328d13e0cf4ac81ebbce82a180aa94ee577", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86c7f78c3ecd56e6dcf687bd6de7b7d6dfe8b88f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b8fdb1addda8356073c7ace033ac91616a46a741", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ea7a77c816ed32e272aec25d26478e3869323b3d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4cb16c150ff8ebe2a61c8989526eb81eda60dd15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b62d60278975b9611af931746f390ecf3ee6541", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0f9956cffda7931a0bfd602cf88db113bbfb75ba", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c2afb38e53c49d17e757d5686b0722a1c8d9c565", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cae0a7d00f52d2b63111a55cdb54feb6522e02bd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "11302230a77638802c7a882b2dc8ef932fe4d040", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c4295e02a747130bdd50bc26aba68134a2b090dc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ef6939c382c401fa22ad784dd686ad3075ca866d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7b89aa4a91be70cbcbecf99e306f8776d119e786", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "95f40d8a017b8bd303c68c68b8cbcce59a363c25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5c1f5772d6dc5675d1a96a364a1026efba098e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ec36c26496819267f369269818784826ffbfd4f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "19def09ea3f7e9d2c0380b955df3091466f7d4e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "eec75bdaf815a44b16e2d85f80a70502c57e57e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05f3b0f95eaf700a27746d6b922b6903e4764e72", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f002ae877a2239400dd30a2ba39eb9805392ea89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "baa3e86f309f5072cae42e64c43aa3bf2a460504", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "70a38bc379409128e9611d306daa480111c6e7c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "951f6aa908ad3a48004c8da640a4e50a23b4f0a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ea8d3845159bac9ccb3c46b21f4e39af681404e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78416ec5108443d8c7ad0e698cddb0fe79c14344", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b68b59195be50366abdace78e8545ca185528090", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c4a863c3de9dd6c54d4fa960289de0a04b5a0788", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7d6e96a029a51fc91ea390d69597406ba0bb654", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "08065baa6c8353a1bbe9b5637b113376fb028175", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a926f6fe12c257a5bcc4acefd2c65df7a7c6f65a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e779b297ccc67da5c6dbc357554e0c82784e53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b84be30e59082b2f6f14beff08265ed6192be341", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "47f028e4dfadb34ae0e354baaf96ae1ff22e11d2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "389f83f956daa896c7284514d6f48ae5ef63070d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "03b578a9d3e81549c93b40a54a87008441531757", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "79c728194fb886d9fe6ac1bbf41a36fde14797f9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f1d6dae9ee906d704950e76cc30a71ab4fd9c339", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e6670e9dbea66f1a6cad1798452884fabfc6d518", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f71fd01a5bf99d478bd45e53c32b7f86cb17b983", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ca92dee8f882527fe493b75f56616b53f3f00ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "94969f98e281a1ede6945a90777227d8111714f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9729a47c49130e3436bd08b909cf577aa0a36a5d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "630b1057c6ecf415ac181f825e3bbb259dd225e7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1ed5376d68747b577f35249c4092644a3c266f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a587af2a585825ad133f3cdebef9ca5f1e7773e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7943fe79a9ba3945fe14b8e309a129a51703b2a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "485d1de68d5484f203b57c86b091bf75c3f5e57e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "24bd2fef0180761f8a79f60af0efe9d417aca92c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "adaac0ff4a96091f951a7802e52e5b13aa983cbf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf44af787a8b6b00d41dc383c3cdd4ada6b6a017", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de8adacbff8135c837052edb20eb496bef189d93", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a9637c25a32f31de9eaae75520f79774f82f3912", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f60ec6122d20df15bad22bbc194633c1217efb5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f8cf9520930e5f1e36dd635061998b6d3bf14e20", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ddaedf9640d2e5112c99bf73deac63de8cc0636e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b5212dab075ea17a1de95383850a243b2ef0384a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "49e393f0a1e4bf55b3e71a7130701319311b2cf4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03b50102a61a2082b414d6a1c645dbbc3ce3aaf0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6ade0abab4581222ecbfcdd122c7f7e271f73c5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bcd4760a2fc9b2fd982693806f4744b2850ecbbc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fa2d9603a69d78b81324ca69a5f0437e88c803de", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b87296ba079d82a726a57e07c147f2854b8a8e53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "484454949dbd2da10c7aa1b939705e9e3e579875", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5309362e7aabb1370c0ab65e62bfa5befc520e63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53d78447c87397107b3bef4b4eadf8e129640e82", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b27ade7bbdfa4ab9f4d004b876ba95e89722fcc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be661314d339dfa57774c042c83e4b6f576ce9fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "569c74739d332cf1471e7023985f244834addae6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bb90a6f4d2810bc4c74ca3b44ee356c559e4cbd6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "da8b132f7cbfe7b64ffc8e03622165b79c7f2d53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cb01cf977ecaef6ef24287272b61acc368cf7f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a95db4f9446c6537cc155071d8d411f6f3f52389", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78bce35ac9bb1638cc5fafd788988014c94e49e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a742c270a52ee5a24b5b2e1c8686cd5bac63520", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9796440fbbe35d5c8c7be9f77bbabf505fcd0cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "000c9c393b13e367f1258768d68ccf17c146f2c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "32de5572c19ac4f2334aa603e9d0943559c252be", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "210025bb7090f30d3e67a351a5d15694c267c530", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c0ec6d19d7602ce55a617ebe23bdb138a396d3ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e2615b14c3574d2bd99c37069f97dc048ef34ae9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8817bfe50679a02cf97e16f28871251ea8d804e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "75dcee8f4093b667378ba3a5adfe0fd8beecad64", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e71f08293d89897ae9daf3dd2acec20f90cdb311", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1567bc26eb7eeb81422bd8977b007556f2f15a58", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "390345f5b960987f14e2dba425690ffadcc43e45", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b578a569d2c8a9f5cdf95dadcc26eab32de580", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7ccb19a9c6c5876357897ad3a09c0c83789f7f5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5be47fb20fbe12b5b7ecad649d16f247d0b576bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "aa76a51c525e359fbd8a10494b9a6d658afb9144", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d58038b788ec8ddfe01e9555822cf3776832357c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "087fd988a63d9c0f8977a2d2d72c72dd3c8b89fd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "372e60e98d03b618f726d2a076184e24e2f68ea1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58e282d204f2c969fd5269803cde6c0e473e7d7e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1b4ec3057e53f83926298d75059726fd53903dea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eab4ce0b390731ed919f23786c05d1687aeb9a1a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "34fd2bb31739160f7c237d83d41f7b05e59a0fac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8a74be149b12bc22aa904c10f46fc931450e04ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9e033bafd61cbdaca25bd24148ba590ce6d50f63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "31ec4ec0708f055b35132110b0c3053a243eef7e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7f9c894b10017a19d202cc5aab1be0691c46596", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5442a68eaa06a4a0acedb69d523b96d5d1e94768", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ada0e9c3154d354b4f906df2e40921aa4aefb58c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02e6f6a24325ef5f48b2a6e04e8ed6e9d78299b7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "79fbcf039ce2c7af780b9ad56b78d94c50f6c514", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f42c28ef60dc155e178500278c9bed43df0722c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "02c836ab4c99463cfd52751989526b925cd57710", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fab43c37d96b418bdbb49ddbb3608494732a6c98", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1aadeb19c27d55a085f74edbc8b0d6c33ae79820", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "63252e9faa1c7b6e46326a997b96b0042e287213", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1452b623e37ee4e119f95f331470b4ccf1927bb6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "468a6cb58e00e35d8c9e342d553f64a7efb4e515", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5009271df6d2cf41a29032f9455bcced8a270848", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ae32aa672487ed5db69ddbbf89541b189af39e4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ae34b558f91f6fb7a6477ac6007ef90013033bc7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d826d43a726f878c62ce73b3263cea321d293ad3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a08efa5901d31c8324efeecda22be93b9a20bc7c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "921dc161c5507618643153dfd6eee420bfa05d20", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93ad3232c14fffee09321887f99faba58ffe74e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "09875cfac689d25dfc0223241654f1ead8dd749b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1c1106ac3be07131a02775c3d2bd27b4a56c9ac5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "04dde7b7da2f20463ca11bf4aefffc9ea2e94c14", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d17d098c61bd8e5373881b2f0f87bf0757c3d224", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a0602552676b78061c4ccc1593ab41975cad9c1c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1ca07c4984afe4942ce67565ad067ed1fe3c10e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71efb0c48d7c815e8f06bcefe9283e7e339dc5ce", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24d94bf770d2130cfb28f4426e775b0360d835e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "531300cf6b622927c9b83eaedebf3e7ca18c1db5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "955832d977751f948c74921e1e0afcf23f5f485c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f3b67051dc269c8d23cf298c1cd75be07c14e4a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03cb2fc9d0608d385dc695151ae06c532954a882", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f0c91b3f71f1176b47712a420aae6e2ab720450b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f5430cb8f736ffd330a7218049d0c73a0b825df3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3edf7d2e77a34388b0417de6737c4c14e6319149", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2c47b37f133748004a05d636c962a3fd8ea80aa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de35f88f1b00ded17e0edd89d14aa0e8fc260daa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0585defe5df0834b9bf5553394f4bcdc417183f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c8c4c7a351042039acd74e224396af174bfc75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4547c2eaf86a5c2ac06c6899eff91122689e21f9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb809401270db26bf48aae76c6bf210f9ec2520f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c5429c226e44eb40c10f7d3b96bd73f903a975e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e3de8bf7f2d22480fb30b826398d93934a9c72eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a9b37f521385c7d12c7c7700efbe08cba4fc11e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "857653030f3b0571f49a9502a5288b6035bc1175", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9bd1c7dc475b3e0a4447ec07eb152f966a94f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4daa2a0df0399d8df1cf1e9c0079fc7b21d339d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5af81f84992f5c538c8b3219fd67b08060160d9e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "465917556b1a1c1698107e33b9eb334bf44c2d9e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aa95b2fd9d6c4b8399ebea34513d5787df269582", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d392dbe2ff0f5a0fe8d4e285c626cdb51cf5b78", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24b1af28703cdf0dd973a99fbbfccba7cc058580", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "69bc74c25cfb6c4d25e217995558172dd2becda3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2dbaf301b5898a6f0e9fa218929b24e232dbacad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa6fffee6555f0b34dbf7369c5122cd2ab06c193", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7638170ec1a79e4ae1ef7cc6a788ca39aa4ac32a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "655b4e541dfb56a9b07382d4fd7db832562ff624", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3021402c85c7b14e9d857811fe24baaf8d5bf271", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a38db2c7db027264c607ca79f8942244ab3b853c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51015da9e0b60581677ce64fe88ba2e41f0b39fb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dc1ef5ff25ed63bc170b7023434a70b89e161432", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "94cfa47652b62ff07f8d7cd00b332835662c5e70", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b2a742e880986517ebb9d87f0ecd82d4fd379d85", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4a916ec1b51f5e83fdc3ddbd2426e43528e20e14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f058e1dc1946166f6632deb5561ace172bb3ce3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59efeee37bbb918e7b0b83da74d5f2cc28bc8412", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b8084c4f78e648f9471839c3686718596565f3a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7a6b96521fc242415da6a43082afe549d2af6b13", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9c8d4730504d52d568ab3b3f2a24a0d017b1adb2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf63271e808a803a26892314e95d5963958db710", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a85bcd00cb0917ed52b02bc464b87e008056d773", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9ccf1fd3bb118044efc8c45a679b1cc4fd39ee4b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d5046149fc4e54eb044cccab177bdf816a907cd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "83300291c01e1b9dda57795bc44d8a8dda572686", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "88fa824b503a767c4713211702a49bf783ebeb28", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "698ecaa5f765be89f6b0e5eb6b9e6837e730a8cd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "068e5bb17743305b3fa2beceb43c0525c4368144", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "84976084c3532cb8fb3916fc2820f19e19a48b5f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "23703f66496f120efd6d6ab90128db2b12892280", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ff46aceabfbd95c85b3e316efe49608a8cdb6339", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef5435497bcacb087492146115f7be440a7fcef0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "413c18f7ce1ed94c3f3f4bb955e7a88ee493a653", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8342f33d0906f95076529cc9064b515437d97e8c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "de8c664b42bd2004a58582ca32972819a1b5cb80", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a62bd5dc4adf3d36a32401dfac50597e63fd5ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a62867616418195d0cff4db469101908b7689b0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fa60a4216f544c353f0347943442ac19d3513e4b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b45d27aebcdc663c155f94f08820f35e5d1e0b6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e416678d0ea32bd5a72d9eceb657fbd1aadfd5c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a62968faf191afae41d18a37eadd888cdbbfc2a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "903f997c631cb093a5310f5f0f1e1fb39a33325c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "77e4def5a76d5c594e26ce52f8815eeac9800c9d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e521a87e2378b549d96adbdd1e60fe79a5cfe12c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7cedce6b430233938072c11a127aa4aaefebfa7e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b422c8244970d2221abf8da3da12eb55249d979e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51e0badc7e09cbb0e7c5c35ded7a00b0e598f446", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "734985f741961be120a8e97befa28c435ac79bd2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0baa31dd065df00d72ec7189caa8cc9ace1474aa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "45eb8776a24c95a14686e7818191c5ead8b61acd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3a2153ff010970fd3f8b3c9db4a36218c25a784b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "672c26c7f0043e699068a11ce44c3e9d4999df22", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8affcabf80b69662e4595598bd96c90a9decc31a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9dea0aff4769116bdb006009911a25942c98489e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bdcdd99149c6282255300e6a301ca3e86c91b7ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9006c53d3ced07e21b4efb0d1f0107dcbff417b8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f89476cf96a0dbef98a65d305777ea70a5b01d41", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df5feee0a75505892a0db0ec3ac68ab5067acf20", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d4dc1ba5d3804532df7800446229812733f24338", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "08d87002621fffa9da36bfa5d607f8f6f2966053", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3982ef8b29d1dd05442a9b1b176ece1baea35aea", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8074c20b348a92daa7ffab6ce4bc0a669bfafaac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "554cfde3dfedf6907232552a39db0e46754252ab", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daaec162a1ef2873a03575fd7f3a95bd53ffc5d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "45aca95271f218ef4af32a0db7c6028c70d16c29", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e10924935449eb206ee3da76b28629ae898eed0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "119f72a083cbea8eb8dbc66ab931f0f98a6b3891", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b345d3d0e24c4ea651041101735da36345c1ca31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "728fc89371ef40bc197c67fe8fcb9ddedf6cdf95", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a6422919be8d565675f9df89d38285590cce6e77", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4aa1d04672e1f26dd082d1137addc6502fd4a84d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c13ee1afe1caf411a72133a937e3492dbc103e45", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "142cd13a5da5759a852a494334ec868a9c3d0358", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e21acc0d8700a4814513d9e7cf291bbaae7120f1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f408e1cd9f88641824317676450edf08f091a330", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435571f8406d18d7fd7349345a1f45a8bdafdfee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c26aa6588c0fa980538ce62bf443fb7898b9a905", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ba61fadb1a110e7dcbd3d13c6cad11ca168b8c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d92390a2f1f31a799bb7f11bfaca897dc98d6bb9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cfbf100e3d3433ab6b8430c0d7c726d78ee172cd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4c4753cd8bc0417f3d563cb0b57db97047c4de02", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "837b6022083ddddaafd3ace7b203c317378acc68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92c4d224330671f679a9132e3254708d9f897029", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7be22941e0f7dad3a520e031d4e7d38b290788d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2df6c212053ed53569deffca7de9e3d6fa4a64", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f89d7507d5a2246af3eaf39a0fbe6dc2d34cb15f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9df0b97c20c18b9e9004ab8f0b442eb3fd90c20e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e8eaf265de5ecf7fd72999717856348a21b613", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f790dcb221d6553738f75926805e67251f9284a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cc8209d6ad5233b859fbd74296960da9d29cf93e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "390198d073a933fe603e09548fd45252c93756c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "20c507272a72e015c7c4e5aabac309c99af5ce2a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "67b7f07728b5391840a35192661aedc636f4a809", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "601d8de00acb6b7f10affb9329989f7acdcf71ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c96b7847f57f3d4605e9e0ac69b93af21eb3d9b0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eafeb9e74bd210cf9e7ef448a83bbe46481e9aac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35fe64db5c23f9dca7ac43264d219eef5787bc2c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "549d620a9d2718c96f6a01d9707ab520be207048", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "907c81298d1bee675c2cd761588ed8b88a11908c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb61fe8cb5448da8c375a2c40e886633ef4fe094", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f79632ab843bb232369e2bd3818e96a50aa27cd7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9c48dfffb9b5342bd71cd1a3c2ea30189349f5b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12ec3fe6f41a37f94723d79702c0d055b632fefb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ffbbe075e7beccd5fc3511cd34546028bf717248", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a73599b90d8229ec35f80b72108d1bcdd127f8b2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aadc1f48733224eae4844d8365fe5229f059e273", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5f91ca0411a855ec09e32b298284c6d54ea7348c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1bf2d34da49592dc4fd22483a77b67ccceb6f0a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fcd9edeb76e1002363acc6f14bb147f179ec307d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ce9fb8871889882ad737dce3feacd32a26dad4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "92b53ec4128a5e913c84d7a022c79b9964a06922", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "517ff3bee6d8da1d54b64553efc8955f6104d0c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ec8ef1d9c79b2a3f028427edc26a2aa72fbd2989", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "16f0c1e50726951a4804dff86d2c61ad3d6d0fed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5879b76781a71f53a94a4b46639131b2c206bce1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3faba478ac72327ffb475ae32c4a66cda979f13b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66a8892e05bc6f32baf87b3d0b998ad5cad2ec27", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "668c03caa8f9ceea2343f3b091258b3386b5aa37", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fae1d48dd9686fcd7e3cfea529ae104eb59b32ef", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2f428c46aba489fa1e651edb69d7298448ff12e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a7474baeea5aa69c85db2ec03a97d138e29426", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "523de103001c68abeaf14760b1040cbe7676b893", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3375792cba17008b80069d44c8c23d8b63211520", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "326f6e8b75c1754f30d68e0634cfa6fc00786eec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "53272602d489c937b9d770f31ea8f954aa5ef7d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "40b212e9eee0b1491df2643ebfd844afa7dbd7ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "15faaf3beec07a4c25633e8e2cfee1bcc7abc4ce", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "66212ce71da8b7ad24399dc46ca3b7c0560f1765", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f437d6ddf3b3e93c34c35efba5f8c80739a58ed0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e84461ccbb7afd96846e841803f8a24c62f2156", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "657c52476bcfccd94f00434a1f0c654c6e5b0396", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b541cd44fb0b2ccc57590b8021ca13f3425d916c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "af1931e15b21727efd043a8e3cbb07f3ab2b9b25", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bec0b83a2ecc577786c0d340c981c7f6f31437d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b77fc548cf2c3cf531c70e59ed9f5c92dc920a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b25edcb155407ac3af0e1ac5c0e3f896a26171ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "90b01700a464289426b5d7dcb301959e0f50f408", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d1a0c2d8904c1626123f96e555303a84d7a0d638", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8d3b2435509c7f4ce78b9f27556d0330147a72b2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "966d7070bd08d8e0969092a5149ddf95c174923f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1082dfed29855abc490d191086e84ca80f3d146d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80f96aca094b78e5ed084b2a8835a3e25b496763", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9a0f3f1f6f8cd0873eb807641453827e9910f0d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4af5bc4e8f3af26fa48e201f0c4b326dbb8d7a4a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8da6b7c3ca4d90157511beec31ec865014b48e19", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5f82bbb4593514ca2e2cbdac22812692b697f19c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de294c8658cb89ed6b592da4143f0f95a93af01d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37284c4de55e2e880de08b467955145db5deab31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b6be0c17e709f3fbbf6e4c5f8cdc4da7caa00c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dccb8734a5f4893910eaef517a69977191b0c2fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1a558e8beb4a1498b3ee96d85b84954489916a11", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ceaaad8ddedb88d1fca93e02b43fcfceb96bd8dc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ed7caf5b7562fa3295870fde0687532a13054d5b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6e9495261e622fb0e66d21f885616bd36a5ab51a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "403d0713def93d0f88cfec03256968327c9f0b1e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e82113b355ef8eb29e782af5c2e30daaf0af6489", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ac08c4f30aa777901015714111826410b4de95da", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c21e812a9e6c14c0447710b781a3bba0585a364f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "08ac3906780d97e9b71538038d3b0d9d71d0ecc4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c24b016f0d815303f1af42f4e7faa7d4dec546a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "122cc4e5217565d86177e2b66e57b1eb7e343d8b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4ea67bda015159fd16dcedc629f12a11eeb34da9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f0b69befe4fb18b2e5ff07cb0532c0a6789abce5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e8136fa995086742a5e2ebbadc4d66766abc458a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3893e04b4922062d2a229ba176d0aca13b93228", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5da9ebc2dffbad8a5591860d42e112eea303040b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0a12544bd857dd4024805397f4a8abacacac41bb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "edd1bd8e064ef2690542df1dc6433c766fd15c30", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bca68667e8f68ee1dc858862fa43179e42415c75", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8b52fe13b6c8472ab161977e0b2635e3cb891807", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e772ef3362b18ce5fff11e81944de74249612bc6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "923a99400302aa69bee8caa3048baffe66dafd51", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fc0429ad3f3838076ae58d1a9577ca0c9f57444", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "64e113eb3aff3f90ea8d70297cb662e246e3c358", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6bb4cd88cc71904c21062642b3dbf2931fde6fac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bdddc62baad99ab5dad540272b6337854d598ebc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5842e6b7595ec8592a62cc5945344e177aaa0a15", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa32e2db3cdf9c81482577d2d6d1df23ad0fbbec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4bd8d6917e43b8163aceccbb60037eb7e7274b04", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4b26af2d5a64ebb58d4e353ec4200aa3614aded6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "155fb65bc9b422b510e7bcd6d37ef6e4fb6c164c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5cbcbdff1bd304f2c0c59eb48ebe0619a5c01bf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eaeeca29bc2ab9a2433719c3283487d3e94d7c15", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b65d98358454f01f11633e6a2b59dcc1418a06ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cf507ffa15f1591e54549eba6430d5c158d53a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "920d5681667407f3a83a35161cd6773660d2499d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "80d9be3c952f7d243c3574647fd2b33bbe8a48eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "248e056a13b84c5096159c64a6e69d9fcd1e2bd5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cce5d206230307aca411dc5e5276c25347b617f5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "229a8ee26af6b3e85c5c904b7a4c36b8cbf84e1b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2aca3d3ef11d68fd2f19952637be657f3d92847a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b686175b064380128635ae6b7af66cf1dbd59744", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71a1549f37be25f8aa3daf0be38995a322f6d972", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6043e3f4cd69ce3e4ff7216440406d111bf5e29e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a464dfcb01b0f6d6ceb8681a5633677656b2d235", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5eafd450709f71e1e2069b6b4778c86f2b5899d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dde6279cbaf592842127709c20d0582ca84c8fe1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "aeb0bb19d8e0c8f58fb4654dca053f125aa468bc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "341c28a48b9a5f6eed5340752a8ae5c1b94d7b2a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cec27a06611ec27bf67e38e1225f52ed6a5186c7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "14dd54886e18b2ccdc77bc656129bb0219bbe990", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f21ace028dde0334b66c8fde46f4e38c51fa5a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "050d41ead6d44350c820149c837224fc72e018f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ae4a576fb5becb8ee4bf209814173f387a0fc43e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6257b216cc765fb0a906d836966647de2fb9cf48", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e2f201262877baf0ca592d092b40e87f70647c38", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "844defc67f46b7a68d9b05c8b54e44c541ca462a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4b167ddeb14b5c75f43f992db4a7368b71acd0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79e402f57123bcc1f3fd951b5738af31c3b6f703", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e7f32fc7fd711aaac90fb3efa0712870f2366bcf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "495a9e45e55377f282113419ca2f7d6ca00c72f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d928a796838e2de4095d25a5fec219aa3fe6c321", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "74699afc32049b7b670660ac6c0626d40129c388", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a8b0cb9ad16b89a778407598179e84a65d49825f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6f8102beb2649588dac8cc208aa25ef006c2d224", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "285d215d0ed401c2a2c899035e5e262c9bcd3087", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9121eb05e94d9d707b0f6b7e100610ed419a4136", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e083d888b303a393993671d749436e068fa5d88f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "723da9214f860bafd4f5624e68c9e47f213b3396", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72d4fcdde058f0ad3f96a24c39258a18050b9e0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48da0af8c2cb8fe26194db6cd42c81f21f19af68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dce05da38bae3991072a2be4a277b22102378f3e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8337bfb00d08332051aed627f5b8d10958e9abb8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d4f345ea04051e14eaa8a7365338b57e3da496fa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0fdbf1cfa7c30d06c9889ee016567c221d9426b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b4f7aeb9863a2a6ac9ac464728c1953686bc9c1e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fcb378fd232c075e8afe594ed851386ac0359b7e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30b63154d508ae5504e106bb885113aba62244e9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c89ad5927caa369268b653a4c5ba748f9506521", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd8aae772f6f71e32dacef69910015d803c526a4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "126813b2b4f534ad10fd075dc73c73cdc8f260a7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "925304207d5361c4f2abc2b58f3d89bdd3fa2194", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c42c674be8150722f0955f320750f2420e0a0071", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01ccd69dc126d63f748f16cf3c002a0ff9217dd6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "82c899706e4f5d83695d1f0e5d9ee99cf9942401", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4eb02c02be1c082dd9c6c18ccfc6be212f5af59d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c612f7a308351c65a8a3706ca2be524c018170d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "aa013398b92759981c823e8807d3d1a05a6c47fe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "23a486b6951b346f4e71e5bf68957ca658c40a9b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3171fa768a41ded2145472cb2619b39b04219d0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c1d216ac268302f05b3aaf20546d5c732aee9e3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51dad07850fc6959879f22af5981c0a32402db1b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7a8b2687135de4ce826751d3316f28949f175565", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "504b915b8042808e558a09d5b5482a65128e3129", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5e9ad2640175cad613505c41a5d795ad81a565d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4762046a4decf0f7db0b85ff3e4b58cd52523b9a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "90e3bd9c1b232ca4aaaa383d8b30356713c734d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "330b112acc3fbc13f70581237d52274e3af211a1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0d7cff6c0842fd685e1032df9c5d86b43c4a40d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c93a0e0796618bf57e779d3914ca0a9c8fba220", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "eac31901993523aeee6cf9016d16aa99ba1fdaac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e351609ecf2f9f65ee9aef2ce04740e9fc16e2a8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3c90a615c26ff976143168fcc17e06bb7e42faba", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c53a3aa33f629c9e8798e2ca6d886399136571e4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe607cf915393b3cdbce0b7799a78afa0842ed6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "40907074adebbcf2e86773f9e6262c4a28724479", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b5cdc3528a502ac59f346c2faf069bb86dac1b43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5d22b77cf5c715ec5488d9214d813d3908de63fe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "865c9279dc1a327ac55c0fda3a3860612227f23e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b67b53eccfd1c8121337ddf54e3a0bc567cf9ba6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "95ef0d3ce97e196f185a2caba43117689f087eac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d6f9112e6c835633cbd77c709855ee25c785832b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6703dc4403b6c278f5942833aea79bf6885611e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1bc00147f1d4a918832c8ac59f640e6f1ec1016e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "684891d8589d161f2e2049e83b457f3212c24469", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5b17c8614e3b50f9613d7972275895e3552cf6cf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7593923db57e61ae03a751b8a12b7ce0b05f658", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c00ecf5b4ccefa8c45baa12f31ab09bcf041492b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fe4f049e20528458d06a619036995e9fb6256a2d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8807a1fc79b3dbb1f22e5789beafbceb0690360", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da27c0438542e55716514e05e869ad8ee72b4f30", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4bb65294825918b6fe9dc32a4878096d96c3e1f8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ea9646044d9de2793e9675011d78b13635d457f4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c26beb59446b6d676a23a18986376d43429cd601", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "237c620456b02725e0194025f34a391f40a66bf4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30fd6619cab2549e643f1eaca3d0cd20de0e2af3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cccebdf095724784f8c1e167cbb4f0c2d7db2d3d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1be06ef53d3c46a7e3cc4861709b2b065d6e9ebb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "298d6cfbcf938e2faaf908e332d3ac9b0d1b4155", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c7b90778539fcdf0d4561a101e46876f90b2d5c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24f685e27d66cd9223e005a2de4b90fe47549599", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "69458e31daa1a8d25d42339504475ecac88c51fa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9956ff28e4f94e680fb0bcade0831ec371219f5a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bb6632c2e98f407b91c900a94eced6f122236caa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "65cefaa2bb108c7d0c91d4b7ee1d66cca02eedd2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6f3380f039555201b0d4e4bc31a7febf58452f3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bc7ebd19edfc09350ffbd9510995833e47e129b8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0b73958481a0e6d694814b86b27dceaa80b1a14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb7667568c7d0aa5cc8b2863ca9276171de1ae91", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "84b564195cb74429185b69532457d1879479c39f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "90a04f0b5fcc7d792e35e429ae9f14ffa24a04a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3b074d9e9c811cd50707238f3bf036189001cfc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9b8f8de2fcbfc3b79207b69e3ab01256c6d25141", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7e33feefa46ab390e35f87cf2e166ca74e70de1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b99c3a359a022c5b6fbd31bed45dfb2fa92dce7c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "58128e3b47cfc856031246851af325e8a0a044eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89ee876f240ace603d10664611aa32eb4c2835d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "460f3f8e7851d63e924db933872951b87df49f17", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1b108f8420a5957c67dea8440d7260fd616b9671", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3eaf1813b6fbd1f254ce85e0b704e020a72fef4d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "743958f640cf811e1551143f6850b102967f63d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a20e014ae7bd9bf23a177c0b00523a991c0c9700", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dcff14155900814dc4dff5df7a5ce3bb8290f2ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2cc09fe483bb23873095865f0c8c24fa85a28361", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "574dab6e9f1363a9c69fb4cd1ca840efaa00532a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45d9b5121939e14de880fa33f742c0b1cdf5ac85", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "565f8fcefabe2be1687b48c93bfbd2e45c1894a7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1d7c39709188b3b94acd9d40595f60b5c6eb0a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30e158ff288262c93c01812eef547b0583b8df88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ebf56e951662b6529bc315d4bf15c2d15169af57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6e4761ea12681ec5dbb1bbed158021e591b2f9d4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3d690f0d31ca5498f55b6ede5f9e77c730deef73", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cdce9db8cfbddaf0217e5e632c54dae442a32a6d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f05bc839297771be3759df80725bc21c9f6de26e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "940a3779379cb90078051a345c6ce2d6c5ef963f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a5fb52c7c5df77efe9fd34332b5fac88145834ca", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b2cf9e2920a44a0c36206115ca9f0c0b00d72ec4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "150c9d5223557086705b74d3d6e1f4951b698fed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "350aa15b25c0d00ebc1960831e3cb96341c3141a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68b2e4e9c25eedc8222a0fca15a9dc2640167190", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd5da1ad807c045d5b157f712a88527abccda931", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "758abfc334853243d0c58cc39cbe58f4ea7f9888", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8ff1ccec44c10cc2de8bb5dfa200b3a5aef0d3d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5ff8b955da6ee0c281270a58a65f665b93cc907e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2024c4619492180c7cdf9faf4c8e39c9bf443edd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b9dcf60c84925bdde7eec7c761280faf2b8755b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "508b23dbe4302e6b6dabc8e32dd6ffaca474421e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "af5aa43fcdb38fcaed7a7ede0b028608537fdd60", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "834edcc26914f1b99fd787252e1aa3064683f0c1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a79fbbb453e09c6120ded1539738a654290f1116", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bb34ab4e6744a09602fe221adbd4b4aac35e227a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c607fcf1ea15d41066935835361aa1a9960ad61", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4af3e6d8970031f5159775689e30408d8a4bf39d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42cd75816d5903a58f5dbd1f5fbcd30cdf04e1bd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ebfd3dd61de4598c3466d0b019fccfa2c78ab8a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10b66d9cad4d8853f9843d559bb7f6688bc60008", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6f15ffd29a35fbca144c408d94b4dc3f85e6e6e3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5adc85aed1a220eb6efe6a3a501790f2d909c39", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "beaea0f55d9a6c832d63ac525a38f77c4ec72051", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a0c213dba4d035c486697b2f7d404041e4bec139", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2579bfa12eac89ba373890d9a3049697a0da291", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7d87ff9353b7e63338db8ebaf643da0521bd0dc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f75da9a7ca6fb4fd50b6a677282711803925334f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c04953e0194e7b546dd27f251a6252f4eca2b942", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd04d3b9017f01d3035c8b961061f1887d9e8bc8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9b4eec05a7b42db7870dd5d74d51ce03ed543e7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "648f4928e88489e03d36e7b632f5949bab3766a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f8195d8755bc27f430bf53238a2b38b6a4fb7bf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "444322f0ebe6e2380b1572f30fb8bdd1ae0c9798", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "34fa963311c5177dee4dbda9f7aab9dbcb8637d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c085f44a4f178be6e61a2790906567d61fedba89", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4cc31dfc3828f85e82b37a28b5126410137b5dc7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0f3b1d075b98e647fc0ffab22b81a2c3e2ce168", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "335ee543ebe8997c00c12b0f6d264aad79e7908d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a41a132107852921fe4849c62174f9b3a57c43a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f2b934bdd3c594555aaf9ed14f8f04a5bb57105d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aec7a0babec1bd606486799b3844158a12ce5f32", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec64682a1b5cf26f099fca98de95e4a6fc7d2d88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "74fcbce6cc8892f22e542fc7d1b63c30ecd2ea7a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6006790c1517a6f357636ef02a91d7d0057f665f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d7ddfc338162af12bbff5c2604795df3f1b83b8f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "39e6cd02757c1580c86faec2240e6923bd72d9ac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "91ac72a0e58ae51820fbf0afb7fa1f74bfe82681", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e08cad38cf2619cbbd9ac47eb0d7b8a5378c2123", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "45424ccd3307ca80176b89a81231c7d4a82502a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "825aa850aa63ec4dcd6ab96af2506a91f7c8d6a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4da6357ee7e7cba849811a8e49338751b8c08d51", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d233503fa9bdc624db8ac78a5efd6bdd490ecdb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f3fb23137b601787ba90bb4340c992f75d5916c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "183ce17ca2167b4058461f6ff87e1a6e1723ae80", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34e798afabff67d7b50861cf23fea9c2749ff1a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "303ac209d43b323783a4f8e1aff1f505feece122", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "41a21d5d5edf44aa121d98d277c855ed0916b5a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9618d13d5ffd649adf8b6a0d8c7e6acc7ebc6580", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0e14eb2ab450d0c4320495114dec682b5c10ab8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "48cc97fc0478408194418b817d0d7bc245c08beb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "662bbc334da25d6a225f20289c5f4568f00a9ee3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dcc673cd3142cba535b145ead407bba352bf9e88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba23b996fdd241c9714010cf11894c0d46f441da", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f4d851000f19dbe91e304232a0bd58e1af09a2e8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4760a6b254961f632d732249210f8b2c42b18142", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e4efd3d11fc8a8c497fc4a85b8c99e0d8e05097b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2f9b2600b511ac1a9ba0fd74722fcb2c618dceb4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ec53bd7f20737a3692f38296d2872c6abfb97edf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4acb3342eee3e12aeb431036ece0ab9d211c499c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9351a5fb137a92bdaea42191831df8bfe43b50d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d74466bb7c3b7f270f049e766a67655631915a77", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "405bc3f839a0a33b2e58ee37e594b2430624186c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1eedbc1d348a0373ed2a456ce0846575901f1249", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b791ae7b4b2823d97b109cfd9c02ced54abd199b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "adcedb61141eb31150906c149101e640c0b3588d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "78673e5f818cd28f51e3bbf837457ec78f1350b4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4475452f096fbf0c602e8a87fcd075dc401fb5c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cad2fb4ee341a4c65f3499f4ece68c4c2ae85e3a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5f26470dd951d1312693fdac91f07f1399032174", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7fdcaecb275bb9f8793e777d5b64772ee1e6e479", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9964d5ceb83220945eeb282dba8afe2490d178ce", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e0953769fe0842473956e467f632f807a4d9b7a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b9c42de5fec7735fd63b5aa590c080734aec45fb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6b207bbd49f96601484f52a3f4a4f63be7b9e89a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0fb5462611f8bb529a4da8e72e431dd2d5251181", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b4d47b0a38eceda5aa8d5d600d783d293d24cb07", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "376c56ad73e952585cea0245e69119235adffbe7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "284e443b430b7d4085cc6352008ffca2d77193b4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6625e4eded9b1b09dd6abe6421423c20495f0e08", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be9d76f5fa707ced7bc7afd7209a59125134f175", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7478f0fae59768be1370e619dbb271c49a39e787", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b281d1b6efbd0c7def72186761cfc080807c7876", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "200acaa6929a418fe8517e3420b89bbdeac893a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "287d70e21163b0916ffb8a707a899c8bccd65275", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fca75102fc448414631c66aada891531733035eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0a4defcc66ce0f878446eed0adf1a01885296640", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "90c78b30fcde62e6904b803f4e8ed327794461ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76e711c80a8637a42792f8b79d291dc9b0bc7636", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a52f73ed4a8b1d5364d3e58fb8b24a64ae56159", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9df1e273f5e82e66df3d1c4e6830f9ba798e2857", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1ed672468edee07fd84abd93f33234f556bd137d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a6c2663a3a4f1e32621abc74a90af3555fef276c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11648bb7f955b8c9412966be194ede0b86a92c0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10a8ef488dd24a5bdf99a12fbbed31e81b705b0f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a2fd5451fdfed98795d1125b5f0eb2677dabc539", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89f5786a6d06dc07b653ebb8784df60bfabfdd0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6ca69e46b960dc852c58989785d05db08b00a21", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "665f6022ba8122bc6e89173deb277af8752a48f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "660cce14b242b71fe33e80186c5eb3aecbdb0f11", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45a6f125d8db239914d35bb37a10807d20fa3582", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "183bffdb31ef479bc9c4746b19afe5463d7b6a56", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da58775217ab42bc10d0c80f04f912a941968899", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ebd4d9829c937e62089d957a09dcc04ab3a207eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3e054fc6e627b93e509e7400ed7562b768df941d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a90a34206d6bf47e878802729346bcf51f65ab8a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3f27ae60180896eb37d86e13bbc9775422dde78", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "579ea1fe2c5a79146a2fe27e061b1ae96757d032", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7ef579fe9b5067c70fbdceb0d6077a22ff28690f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50e0981316d8ebf3d4407d72058b5e99b0fdbbc5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfbc151dd0601eaade814cdd556ddb06e26d2e72", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c8eec2449f38068ad22fe2bf94fe683240b3add0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "35001807a7565914cca399be133e494b92f01279", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd85f266321966af88dbce51a9b86b4779cb865e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "48c152b9fc9d6a972eb496faecf6ce39d8e2a9fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd792758c3884d5480ccfcacea1df30f89e55ed4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6216d94520e80cb744e6762d42ac72a9effae516", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0ebb7db181b54cb0d41e4985031093b87d9c2443", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa56a9f31929d2b2cace1047d0f4c4a11840b23d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "54563fa30aeaed04aa788d59a3d3f4eb24c1b005", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "825e949aedfd346a3a749d20fda073ee4c3e7037", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ead04f50ab723ed51d547d1235c678579e957de", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5f83f28538c5f0a20169886d733f10f36b17cd24", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "280cb145eefa0714305b06a8a3b723b4809c4f88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e223d6b6301d06e893fba7fdfae89d6e4fd70d84", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce9bf290f85b6605367c8eec7a250fb9de426d6e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ad9f5b4f9038539f040e56ca7a8d4301fa184940", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2072bac424286d44c31d08c207896a66fac6feec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "272b81be1e3e9b316043e11aaa25df28178ea2b5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a88d86d248e123818aa1da1f4bd67c1c3509d609", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2fc265c9776e7192b998865fd2b88493c7674d63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b18ffb395f76bae9562a5a95096251ff287eb487", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7a811bde0f76f7fd770621101c059f6ec9f315a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "859cfd9ce1c745a47af2e17f28e9beaf4a7cd1aa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aeab2c323fa24bc426c410a3a926296f97f95e21", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e350185e60a947062e752b8fbe2042283d78919", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a4241c4c97e3766972646f17f48a469ded2d7f8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fba6c4cac42a740f0aa2c837ba94e43aa2fb074f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "981087eb1114d5a759c4b0a880b396af25b82e99", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "94e94ab6bd2fa036273ba57e7542353205adae91", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "604280b647d738c29eeb1eb7e23d469c684d9692", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "56be0954a64ea5f3ec28f304987c67546f5213a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d813780e59ebc7e7ea9284e4344727f619167456", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e545b08b224344500d89abb6d49408ef3d2d3e7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5fda4b9132f19fb9010a1bc5f97175fa9d39014", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c787baf986d9a2a0fd62c89c0107d4f913f3dc44", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad87872e3252025352fb98f15c972c152f5ed837", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "80f4578dc4b1039b6329ed8cd3253dd1807167a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4441a8598017dca1c23117d4c8b99c00b60b371", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "229350d2e651905204d1a3d4d20bbd61c41f39d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "017a988e9bc58921ac9b64db1ad78e619716b340", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "77803f8c9c80989846b295acfbb9f27f216651fd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0071bc30a6fd190253db802fc3a79fa1abc58e03", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "88c56121342b365b3501d8157c25995f3286127a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eade9fef89579bfd53255a99cc9374681782cc73", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "95a49e7c187f6c932aa2dade5f69985e0b019389", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f7803dc55a86d70be599b9cc7c5c35caa2f04c25", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6b84cbaed14bc783ff4fe0550085386b3998ff18", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a7062c5d915212f30f3dab1a1d324eb4746ba2ac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f52bf90840e34895ac5623ff69cb5829f6f0a82f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1082bccccf760d6ab43f029cb1607a8ccb83cecc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "00309f8b25c05bded1f44af748ded07025d80f92", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ac74f74c496cace98bdf9eab88ea993ae66568e5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0565a6ea12b5a2a48e0f52dd7e93fd35aaacd852", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "82d39de6e997e8935d9c53143f6b648692ed5b03", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f3879bcf676cbaef448d854d2b5d5b5ef7aaec08", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d71218c23f7298f291acf956c96e81dbc15f9ae5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bb6fef2192691510b8e5c341d33085864db19cf4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f95b3f0ac8ee1cb85e8a793bd71cf704d3dc2da6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dd6017f3bef9dcf7060d2b385629c13955343a97", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cd35e6d6d3f996c1cc7d936e25387ed7ba43f7f9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6c399454c5d9395f22c299bd1d47851e07c2540c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "02f8fe32c8bce658e2a1da2b1b43d3e5b354b39b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "670e2f4f537a28ffaecf45cfaa50f92220f78bdc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ee9cf1b70dfa503d0b170a1c0e74937b605179f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8c529c02bce2841ad451315dac156bb5b2789abb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bcb3980e326dc1ee6c98cfbc4046edc2b5d6c06d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b3257f052ad53fb554305ba743ede0abaf0ee6c0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9831aeecb24f52ddf82e9fe45e649b3c6e6357bd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5176c3bebbc28cc4495acf6a187806576bef0890", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c0a9107f5657da183f9f6d3534f62a5f950e2bc3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "932423773c2b904d0df4f71e33fe16b27e6c295d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d37cfb8a3a4da0196b313e3e0f35a921df2fa179", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ccefc01e110fead40dd8a27ac1074b14ee35bfa0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a53303bb59924f9df6d6bcd4643cbbcd52b3944", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "42086a9f29d90a0069de86f64042ae0f0ec72488", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed5dce2baf55f0c27a85497e6a0f02f6aa921544", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "128e23a13c3642ee0c53c45b0f99651ae9fd9a83", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "43ae7715b8655b02156747616ede4beaaa00b0c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4790dc14f12f050b6eb043105a889398112df4a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b7a8a8d80ac0c4415d19dee90826d2b80a4872f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6b2ba2c618122b614f6e3b53f7c651b704b3de17", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0ec28e8df1af4a3402ad5620c02d2448ff396e91", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "651e2ba9aaad5ae533f44dcc4619e64aa71fb5dc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e1b9bee74e8ca6007bed628c3a7c1d974e923b3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3c8a2b849b3ae013e4ef41d144cfe62415344ef", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a52fb6c19ef3235e10d9634617201bff8c8c9969", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7b94dc4461126e5e49248bfe5296720a5b4b3f5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd7711e1b533bf770b658048e0a5922c356dd5a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d05112ebd1fba1efeb0163363e3f655aa4c4135b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "34ef4cca6ae727677d50f2a2c5fbb041d5dfb79f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed755bb0d4e16b4ddf2aa5be95476550277c983f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f7015487347c30ef34efade1eba11baa1b3aeac2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8c1f5568b1351c4f54b9ee5150be841645f7dc43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5d5099432eec5e8c6bc92783d2c94496c0cd2a74", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "632f5c1b31f631ee57ed5a0cbaf3ff39b62d6260", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0fdb0fd390e35bfb004fccdeedb83a77121c606a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b12b76bf3d7f74da43b7ff4c23b4072f4abaa0c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a7caa76f7a43190a80168bf634f3a9427577d679", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aab12667ffdae64e376cce3192a5047c741d00c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d56c054bd516b618a1c9ea5bfa3d0750cec2ce9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a08b1040acd3a12e70a2274b012f8c4f74913f7d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1dcc22b1116daf6dfa9799995ddafa665fa2e07a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34864317dbbcd682c06aeadcf54a03941a17c772", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a91964f3b47d2fa49e4d40b13ea78313389aac14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f7ada4f272d97e988996d1a1531770cb9c31e860", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "addf3637a6f8137dcd8629c451f52d386814feda", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d8e6465844941211530633a696b85b4cb25aa588", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7bed72563da75f07ca5c47c2c0be951acdff9386", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0eb612f37fd3b75759bee17bde9f088bdc9426c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6c6f093df04bb7973429ce9924d0e6d2b39f1a3d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b3908f824954c6eaa9fc8a548841eeb8c4a24518", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d939a7b210cdd6094fb400d67ac29b76f92c92c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5419272485a91d5da052b88a1cf5d71943a9323c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0b56fba245c7cbce409e145bd4e1436e5ba04f63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11c0dae0877b626a5e0709a8d98b2dc79814ae8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9beeefaeeb535e780fb094c593479dde6023cb31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2035c0902213fefa41be9c31f0877ecaf0f1823d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "15da9afc29a3cf0ca23b4981bc8953d474704f54", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1ab4f37aab9152bff243e20611785f369af64352", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9432679f702731bef16c314e8180e18656c1695", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af7b807684241161bf6c7e76f990b8069dbccac4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e0d09a348c085e48387642c596a8e975bed8a844", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d1bce2e4f220f17c8cdb7f5d8352be0f4d0d564", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71b7f8095dea5c9e86081460e0cfdb0bfc9f553d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58b001025e4991cbeb646363043694140b24a784", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3295163385dd939b49ef626c7c921ad1e76dfe88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b02ff5aa69b8b09079031efc44b89bcf018e194e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5690f8eaf4db52984179082cd754c43b17ba1ac2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3cf4921291e1ac0926f7043994ac7edde1f10488", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c4fcc34a6cc8c070ffa3308804429c2f5e728b6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f844f680ffdfc6f7a1a17a85cbb6fcfa4dc35d65", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5ed260e569239e092be82ae13939882c68476ce0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12f2487b5b0a85a7f9323b3a307486712e5c2b7c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a9bc835314529b4fa6824d83cfeec78caeb00c9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a692c5f08e80c07fa473eb76924d225bc6837e4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "29430398b2f99c4e5e8fa2bd5565ef1f562f8e01", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0481242196f46f72d77b6442b4513d3720cde2e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6fa996275d6d9fdb2a41e096a83e2e8db3711fb6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7c4a22bb94d853abc2793c5d455bcf4b97c09c1c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa641959d856821a02c24b57e7bc886001f59ab2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "97f02a4ded3dcd72a763cf559da7ef43e2c02c4c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6dc7c24867d7840fe6a61627e30cf7901d32aad0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db91c60a6b7cef3b54517c9b38705201d41acc03", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cadba66e32fd21a3422b92f57a5bc5a19a480c27", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0034d20b4151b9a0c943ad154efaea7a79ea858", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "28f23525c72f9b3fc593c5ccb519ad7163d69742", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "474a9801e4022f9944b59e393abd5e1cdbc9cd45", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "210eb72cda27b7aec0ae9003f3c5ac45875aa26c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "780599b565a560dea68c7dedba527b5ea350bfc8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1c1e5f4af114760a772c742e7dc39fdf1f45b5ff", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "967d7de042a2edbdabf5448ac4f93d17c7ccb91d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70c752b60c64bfd0be17cb6397fe184199682957", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91191ad27028c1e9e0ab1dba0df1e43aa055c895", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "07526bfe3957d116894c48b9e3cc20914a53afa2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c88a67113b6d64cfffcd78dc63f038c9ba848309", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ebcded0f5c56c6b34dd39375ce06092ecd2dc6fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f380eb5c2bc573fa7f22afe591f2cc2d2864f286", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a819958ab27fffaae1f0c26a4f2ccf2d99bc2bda", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2430017131f01db3c5180706333f5b98f6752d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c25a4f7c309f41d2fb2aa81df3ff75a83be0c43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad80a3c84ccd69d6f91c25990163c07d00fdc5c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "834d0aaa6bb8bc3f434883eccee0392ad6fb22ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed305f5c8495fa5cc6f7a35adfed091c3cbf6001", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6ec9d73e310e0ff0b900e8f15dada348563dd528", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5397d3b8f2fdac7578b8b6702f4c6797a7c9be62", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bd0d9b17a3c8cb959949f64fd03c975ea71a2898", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "02ed597d19c749b5b15de7a07d5925aa25292b79", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e61142ab3b65c48e257bce860d7654fa7864b6ba", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3db1c1d9a1266b44ffc036f53a47c4e0458a4e36", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "219e385e5bb4966fd89a9e431e1383405505ed68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7874c880bc511878169c130d413d19c7d67c1d99", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "459d63fe949b3d85410a5b876f3a25649c669bf8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c823acced4efa79c7ce7dae2a5435bc5751dba0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa45721333e24222ab958d600de4e1a661889f8d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "493abbd462a9a3e05211ac551ae3122f7952f3df", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3ec2e4d16254b51c0fad4766edd76bd6c64a44c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "edc0a3e6618ac920a943b97dd7a27dba4c706834", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9e80fd7935eba39258678afdcba4ff4f3e46be6d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "31b92ec0b4fb2f12361beb58834a700c9598b24d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d5c5bee4c36329923e77ca1e897240e27c09a2d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f4f49bdb293e17f1f186a8f604c4d039ac0659f1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d0413bb4f6dea20cea787e9e3ddcafa8194bd3fd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0bcefe6b6bac3bfdf55747c3618aa1b9e552a926", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6e8d269d5164a3491b7cef2f679da2e0a5dc4bc1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a4548aee40eb57d7d69d9997f945d97602048ce", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4ab798de581bb89e72748c55ff356d93374f32d1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "82b629581bdf27f49304f3b9f3caefe54d07d01a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00fbdc620eaea332861bace2e5d254e5c4feea28", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3a3974efafab3c6aca8f5f3718950d2e39956b43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8b49f43a0b36d17c54d08ec5c10a3963346179f1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f8680cfd2a5e42fe662708a4ace5ef9df9341a94", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c15818522cc7f8ab8be306f9dc95e34cc93c5c70", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d82672eaa3ab2fec8c4374a09373cc71aaf09036", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ccde5dfe51bcde29e88e183dd24c546f323d166d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "373ac705bf5bf3731a8f629e8ce97fb89d2f3c99", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "964f9f63a61d003bbd153a4e5eb44767d77691a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0636a07c2afaaea2a75518622868c95b82f3df7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "45117cfafbf1246455102041190cec2edf1ec267", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de82749a33a7239b0516a001131488d733ab6206", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "62e26872d491c51200dcfd10488d8a8034bf176c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2a651383fd5106a149caf67ed618b1474b70404f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c6b61a28890f8cf39b7206d92f297f27918095d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "339099f36f39ccb091b9d145c887687586f309aa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fae1318edc938f7e9e6aef368a2bdf2a2c02e395", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b36eeca07874824503ddc028af9a9f6d88055c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b0d2347da62f5e4fc064a850a354da0099d6d31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b8e30d18e4e3f5ab76e0b46f45f812701cc82685", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c7947e4c46b1cbc8278421b00434f615e5ff9b6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b82954d9ff4595bf2c5ab2333387a1ea91e66c0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "462378d6d245cac14627eba1098b7383979df4a9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f51c17d1e1a78ae5731ecb0e13cf2494b8938c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b599a979b784fbe3e3dac0cae3a1aaa9049cd74f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5c636cf57598bd1c080009a4e950aeaaf7eff23", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2d31709c8cbc1b6445f486e52d3d27463933a95e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7e6d3dc3ff269a24333003a694eccb10329892a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c0d56cd31b6901e918e4b2e64fda4128026a02cf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "15e9e12e0b81f234f2e7e5b09c44ed33796376e9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1be2cbad3debaa7a1775c4c72dd5355bba0a8f93", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4e3d419e713cd912e26083be6610d2b39c67aacd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "436e661fe845fdb63d9ea991cd1056fe8e08f484", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0068850ba78a7b8915994e9ec1556a373079501b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e402b29e657d81ca5c96216ba7692eaeec30de27", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "85b6455e2c5a5e56e79ac7132a62ea6d463f9bc8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acfbb37fd82727b4b5c0ece0b51d16d6dcfa5a0d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50d18ceb935abc0e73629ed9c8c7344013957510", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "844ae5271a6a1c7e5c2c2083732c58a4d6f54bed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7a865e5d1809cbc2d5420b6c4e57eb790c60d68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25c084636ddc2f1bc8b6931c06efdc36dbe73f15", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4d17dc943fe735c1cb72d7f88ba697f782b706a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "56d8d24888fe44b9adf06b542802ffa011cf9a09", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5b07d210939197aa830d922061c784e07a49c830", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7233f18705234aa1ab369aa2c1053afb57cd7bc0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0e4e34a17d90d6d03cb4f13e2eb90c9e979ddfd4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e0821607b6175efe88ec9260c40b65396d1455aa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3fdc40d3137494fc1d7c171eeb5fedd44d64fb0a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b139da1dab08c143fdc64ad2b782004b16856b9f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6aa0066e5dc794c44f6abb7d1d633307d1d200ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "db1dc86eb0bba8e0e8cc4a3941ee0e300ec5de2d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da1b83d0dcc9f714ba31abdb814407338971cb83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32e71124e06f26b829c4a1f4fbc848733ebcd8cc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92533b03ff791067f0ea0c2821016d7b92ed5a39", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "743a3902f39ac0b6a5e4a4c6ce8194a7cfad957b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "297941e9aa2e8cd23707ba6d13644abee92d9b86", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e50076e68eb0deda15427484220fba501cae5c7c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2f9a257e4c197067492e014aea614f717227aed9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3851d748724fe49e3dbb2d6c21ed513437dbf548", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f6cc7c3f64c36330866e376b0775b4a3e1914060", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b065a603da89b1840fa99c29815b474fd79105be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6870b31de1a683afdce2ffc42b53e3b953072efd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "926b5d303cc80ddbd34e7ebcfbbbbc14a3b61e53", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "11b8ea9769b8ae9b5dc1d90481bfada4490d0b45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "95c0505eef8f6e0df538c69b72dc6e103e43df38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24457df22d9d79886a0ae37b795995c052d5084e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fbef4f1cf7c70bd1cfcb9ba670a658b85ba7f351", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "79baa1f64bbd1cbba2726b7af51822b4781266cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1e48d4f1b5676f678aa00627f8c5e3f178ab185a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7221ec0353d38055be2407dfdd14d1c1dc0aa2d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ceae0b0201e939fe999d7878746d5dd944255a8c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cb93f3f43e7b7bb2a5b539d937cf634b1b650299", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4aa062f683940bc8a7840b0ae38b51c8191d9bb0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "173e8ef1c9f189cd5dea9a3df2c4055152d85203", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "614f844a380673b5ac0a9ff47c19dc31c859662f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "89e67bfddc079fc1ede50dcc42abb3f489717aba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "58eb86aeadb1b44ae09088d6b41795de9f4b4099", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8349e3d5569a4b83b11eb61c3c580837e1003215", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde168373290a8fff0ef2733dbcbf75843fecc88", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b419e788958a34e870c8445ce633ab77103845c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c6d97136b23ed34d42d809f8c7442969024644", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4bf0bd46b42e133a3817d682eb6dd31302de8e13", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6a43e39eb3e6161cd107cb25bf0cfc1cb22d1f23", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fa3bf8466faa071fbe6552fc16935c8c57c701f0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "230a4a9f05ca30cebc6732ac6bec24d1f26da13e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26298f6624cfde73db1d598b34a315e17cc79e20", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "193e597212978cf521513653b38e496a61ddf454", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03f1be8ab32c214a6996c689015400ba4c0926e0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e299bf2679af363be777f4d79f6caab798c0493f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84f8e28b4d162f33396e78af5474c4f3a852a488", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a7cbf4da11645a85ff7ecd1d934511fee0b79c9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "64f42b26f74a51fb45d5f6010dea37c17bdb62e4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "82e448bc5adc2e81693fcd1c2495b95d82be2330", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e804ad660614d1ab67a9fd98f09db05faf681817", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cfa0d535fe0424e5307799fcb9d075a409de579", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "679a399dbd15bc347ced68d6c05ab51668f26c51", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c9c1988d0176ed9e534c6e6fe81dc8766cfe0b7a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "eeb948dc8aac468a4b0b032e8fd1b20fc2721c7b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "984931517b0a0c14344155cf799020315d117635", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f145ba1216cd10a782fc87b8766b3d65303f30a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f29a51854456d61f71e1917e626501520e792787", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "44831ed1342ce4f5856f5b55b40caafe81f6a4d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ca56e26fbe760b669fcbe36506e039325a803a97", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0034cb5fe86017b41cfeb88980abade1bb26c71f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "048fcc6b144605b59d8dd6eee00a9251b630105e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f7448c778731201ed513ed77ddcda635cad3d66b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bfcc6afe54b17eed6436278c6ab0a66345e3c571", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4f4352f686b4a825be8fb8c60d885d2721b659e1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "293843153fb81b3b1779a78fb9b6a29177627a5a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6a557950bafce4b812dcf5b6e74877f6119518de", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4ea0a2013b13d2841b68887a19e0ea04a6d16c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1df51717b9f361a8df67b8da5d687004037f7373", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c62914234596ec86b020febfbfa16618113e764a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7c0fee0541f6d8a7ceca0d34a2b85087079289ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a614323d414609ef0d52b2c46d545c856eb4051", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a16387ee29f95d53b1d7750afb62b5f5c711419f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e457e3dd97b299e0c6baae61fa6957df70a2346", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bf8d6dfdd6c9e0fdc3b748bce4fb0b77c5d3852b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c84fe348e3d11a25a4e8d9a4d8e91a9a884244d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "970e453082f0f110f83213a8349f644018528c70", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f684b54121691b75d3e955b1aca496b3e2f8799f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dee1ea1516d25c9eae9fac05bc073fc1dd5c36dc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a327abf0b004425693e0b0152005975314596a97", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebdd9a923a80cce7684c32f41d0f530eaa4eba2a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f2c99e616c460daafeba284a1b35a2ae189874d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4b0eb7a6efc4fe5948cd623bef14618b34157209", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ec35bcf8fb86d4646becd40cb414997f1b5f4553", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b4e2a503e7e628418880d79c086ff9105319bdae", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "924c146fde93c468df123dc2cf8dbb2f411a3eef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "889a137e5832765b20d5ce818d3e7ce695b483d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98bc0946ad8e64c2b5046d74b5c09716aa75366a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cafce887a5f972db5c912f17ffec8ba1137ab88e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "052fddac0191ab52b8b3255d5afac3f54f5de9f5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d5b8261a14c45249e2b048bb21a84c091493959", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "12629472bb42c0a0496515d5d14c903b2bbc4d35", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "45a4692d8deb7f890032799ff98410ad69797ebe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3a53112d9b6db17e0f7ffee62d53e16025866da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12de68555ace53e66a79b1d13be462cf87bc7ef4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d95217e700cebcc54464de7722498dc8b74e85e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6903ad2a87541c964fe70cde72373f66358576c8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "555d7dfb493ac839fae1ff6c15eeb37953025974", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d74283fb7e91438a5b6d6413dbab9d36aa97d1b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42390480d84ecda84f386bab1efe403dc4a96c38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f765476564a8e2bd05d48331200aa3b15fa195dc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41ae8e6ad21b549611d1ad11109d718a6721dd24", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d80d7c9913803a5ab09fa5c647b335188609eb70", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cc697ec09347c5201b619d0d09c2155d44df1914", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "df5b45af79fa9034387a1068be2f50fbcf3d9615", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a0767abedcb0e374efecb578830047db46e448a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9f8887414270bbcb65a26ebb3594269961f5f4d4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0ef6ba376f228f3fed444ac31b71053834c14548", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ab5939b3bf37e542b6ab38c5e0411a5cc7441da0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "303cdd4d9ba4adefdc4e750ccf567b8ac9114382", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4bed10ab6b216e4f36618eda4ac5eb61fc956da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1648dbe841bd58f8e0878b0f41dc3e600ce2e0ab", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f4453cc06595fb90fc73c61e48f6a57ec13e404d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00d2cb98cb712ef75083f290b3705c42520d9345", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "522af4509ad708e07cb0915abb7f107bd964f23d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b69d6a9efc7ab48672c5e80a91e9e19d49077642", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "383f8b81d926841e5ba9f1e8f373230283520cb5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb4c3fd060b5560a6a71ce2f3c2f9ae1f3062777", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "534f6bf2ec42bb072d50962dafd6263128ffd0c1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3b88ed282506834b199d34fa926fa17181a5c50", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "78baf51e8f19979b319e68fb2195f63260052788", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4e6c2fc9b7f53b8e905bb9c2ec6bbcbbd70bc8f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58d8fb6dec2e753d3719706008af5eb3898ace96", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2540683c194617f770f907e1a3c38cb5b7c008a1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9ce221f4b21d7b501efe2128b79704adb3d97e95", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ae475f550cc4a3f717c77a1d9cd5a7d5d23b955", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4a8ce8cfc83f1d87733f6c55351e0fa0fb3e2cf9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "659f758085737e268a2d5df3c3e67022e5324a82", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "008945ebf5771ab1a970ce064175ef7f47a3349c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "18b1c3705a7f621b2566fdf9658ebcefc42d297e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7e704cb7630e0c5d5491fb659963415e455e89f5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "602312a4c005e7f3fd3bf4e975fb097d3f1e91c6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c31767232d2f42cde9029ffdffd41ade0867dc66", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "73c9b0981bc3cc5610c7ac2e85f51ffbf51c43d4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e070dd6c556de1dde2d11c3cdda719c3a014b36c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59025840a0c8d845a52b372eeaeaba180891d122", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "16957ec12312ec64ef74a68255f28f35283d7aa6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ca68021baa50da4c2c627bf124f5f76887c6cfc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26d65bfc817aa64a77919923563c9bc5a12060a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "006eda3e26d2fc1d92fffc40c8a56cd868cd0b09", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "407db691daf348e87acdfc20c12d31257a713146", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d40e847936fc83a512abd4276f2ff30b9cfc224c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eefcbbadf1081db667aa82a1e1d263da1b567435", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde98a5fc7a15154c303c696151e09aee5f6792d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e813bd6081a74141c30867f581e14e7a9e04f526", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d91afea8edb601dada038098c1544c05d2d36df5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c21c0d0e5ee87bba087f7a6616c303b5f47164d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1a448549a175b15a4b69abc6ad5aa3fc18a2b275", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86a69ca50e2a74355c457f84fd7241cdde04d46d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7738ef48657c1671adb4547bb8c075ad93530098", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a3da9a6c7fe42da268d90f2be6265dcca785c6d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "708073c0ac1b97dce5d605e5d9efeded7a092b1b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "194b87bbe36406f182720241f549c0c00cc6fa2e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0e1505d0a28dae145f18404ae590ea2d60450c76", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "aecbe6da4c804e636393943bb7e0755874840792", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e4c15e3e17e46f40f508010541c7d7c2ae6c3de0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f89a980ce4c32d1a171d3b29c01f86ef45dccc1f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9b72700a9f3e7decb0cf12dd351ab4f1248975fa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f344b2ec896ddf100a1c7367b6570825d14fbe5b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "96e16da7f75972996e1810ccf3679f1399d04a34", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e1bccbaffcf74a2c07f4d59c456ddf6de453b739", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "331d593886d69c1281b0f1c8a050b98c3e984a96", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "093a618a85ab2c324dd580297cfa1a29f8d82974", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "44e6cd67172dce6ad9a50c2c7eca3f4504b9aa47", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "188f1df87400640bc99f7853fd8c7ac60fa0cbe4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7c2e8d9f11401478fad16b21a9643b23cdb2819", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "02d3e25eb0ba6842c38ec0fc6fbfdfce26e6a357", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a457977bd101dc4e2fa95097bfda117dfb61c3a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7d786eeed501818c6e168e6f84f2c2280b9e4eb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "30f74b7273812d038fe2514076d35e8ed43a55ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c743e3133cea0b1be80ea7a32ee94c90fcecdfc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6ca5040606b5edb7c78dd8f475eeb88861ea9da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a7bc5374515f5e80744cf91859c2c8c90039d3f0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c8e45bde3138ab398f4729ebf79c727cd3878d7a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e063894f01812381de61b8063092e708532a9c54", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3697420da1b58e5524edb25da3c484127e34f48d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "409e721aeab4151a70996ae7d060b78176d8e8cb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4d1de90d5fab7d759d8291a216658380c216d61d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "94fb1205bec5160e080327123db0af950c024f18", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b9108342f043a4c68edfe9e0fb59ef3b69483a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3db072ce7fbfaf879a07b798feed672a5dbfbba6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e74650d64b3783e22e5602b0b6575634f3bd0be5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "711ca4efff0120fc14ebaf5fc2643dec8abc00d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3489c478c89a34a2fe858506e0b2449725374702", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a04f3477743c3b38a2198135fd06761f14e646ff", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ca9622dc42c1481287ef19c6e279a9447d7f61b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f317389ba5780ed79a7b975363d36a4541279097", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "096ac8af03c30cf8eca32b07068fe57eb210814f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ee61c9246364007b363e4a8a79ec82a4d949a57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b175769fbc3677acc79a1033076812d950cf4aa5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "400d7485900e61a826f3cb6248441040f74aa1a7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38f76bc973167ce751602d408343f9715f9aa578", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d249a7d6e143e78a24c191a6e9bb2313ba07180", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4b0eac029b846d4de41f6baf1e8e088c3a9d63ce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "baafd46592ebe4b8a2b41e5054071b7e29bd545d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38d07fdd74a80182b41b4208dc799f95e641ddbb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "13645f1b6031f073d96931a9d593aab2c2a89cda", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "288cb5e615013717617db2e996951f59a10fce0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3fde324e9b715e1607963a90f8ff8202ab8967f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a4ea234999ded589beff5bbcbf8bd5c76ad6cbe1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8aa567e3a0bfdbe917adc298e29c9a86c3e53224", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ac52dd2bb34f50c4062f4f97bf7e3d7c09d25422", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1e4b6720240db3c209764691382050c7268aefcb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eaf9009a0c66d63037640e74f7bc458879d2a835", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9dda6fd6abca5858d7a52ea6b8ea372c23aadac8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "314291c7e2d479476d02f17d5d23b0166ce50890", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4623821f023c45b7f44682d8870abfd134a67f6a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4bf506f12e8cac2ed5df92a535da636e014a92f7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7932253cd2e7e01bbf0e816e0f41730175cd76d4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0d4b3df557d04de9b9327834012fa52235443e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3209e11b0510fe51e2fcc109d048954a242885a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ee1fc009f984559ee057e8a1c6a430ab72d2f4ff", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ae37902c5fdca4dd410723fec993dcb60768e64a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d233df0b61559b035f9817bdead36f6c4af80211", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b8a0d8622fb8a691f11a621f2bb3892334d9f14", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "feb660995429be2ebe98ccb17962513054085cf1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7c663a889237bc437ad8dbaf78d59b997debe4cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5eeeeff88c8419458328da5e21d833dab0e0d8d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8f0a3d75e1b2a5f4a8c704760c5af99894b81ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0fa7ebd4ee6223d9cd9bde8af8fa343cab7c0c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fbd2e61cdf442e27904c1e7595c152bd3a2020f4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4e02eedaf2e569a70f7e6094dd552daf36a039b5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0338370e2a883710d5f72fd622ebf50a188e0d43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b37dbadecdd9175a81d895e8a7b64d31f935e66", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "38edf5ab3263014cb8b46841a8256198ed48c551", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9fb0e43e084846c9f76b13a0ea45dce19914f2b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6283e9b5bda6fc781904f816c788c231f5f28240", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "82983e0b1a09eae9eee25877a23ae81243a4f645", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c02efd205871c879d467aae27efd63427288dfc5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22904e4546a37200c4f77c73978855b7d361d61f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6a2e9a84bbc25d1f7c8957ac500b17afde5d72e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f09123d1ce65fdc16d617416cfcdfe2d599e4774", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "065d9f3f4597e55edfda77e0ecdfbc8aa7461a1a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "73e2ac1a97259e50d54f8402bb479549549a2587", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb00e78cebb562f6c8711f6c57b8cdced90776e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c0c7f7989d42112e8ecd287bb7c5567a0b01c13", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5992109517edf507b087822aa059c61a9269b836", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "823ee96cd78d6b25bc0924a6fc236406ce996df4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c89af936bf7b5e777fd501e37f8af6370c2bef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "91a5bf221474c1733f4527148f64710904042963", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2f4bb3488afccf418573c10620ccaa0e4c6c6eec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "37dfa7fe1a0300bd78034764a006b885179faba1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0f8dfb63ab3de1608f1b0fb3ed74564545b540bd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "47764ad5b72482910cb155fe07fe822969db83c2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "addbd0187cc7f8e011d8d29645b09a2ef7b9e7ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dba34c14974782fabdc17e5fbc0faaa0aa62b64", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71b73440a7b36213c0de838d071e2986ce81be1c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b79b4d6150cef96b833d3a8753726290573ada5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1097c38c6c9f9033ea502caf0954bedfa0c94ea5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "203d0dc5bc09c0498870b5940b2b7e8a24736649", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0f80cb70887baea11a5caef94f4ffb7118de6d80", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "018be153bd961e3ff35345c4593bab1da806a466", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7363a09edd1fb3fca70c57f0b06c1fa38da56638", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6af0f03da1d8c3690e3505614db919c3fd027ee1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a277fceb40d8442f48fd281dd578b14d61e94d34", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "567f05d80c0e1ea2b7f93b91578d81137f9bcda6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "138ac6b7c09297f43acf33decaf6b9f96d00bbe6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "51dd941ee02bb1c19c3a9018675be26d3a783f1f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2da27e2502e31f6597446bff5288ee1b7b3589f0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5c39f3f2458004c7b55d9829dac125ae3f9d758e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9fb9f1ba81ae9eeb7e69424bf3c6a91193f55c94", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41b7885e06fad9447bac193c3176e3e696d73e71", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "98fb61ab66089a958c1aa158a33aae96749a89bb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "84ff00adef1d65d868be933f6b53babeb6570efc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "df06239e3938991f062041c207110cbaa32173ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1f3e171ec7840e992456bd23e6f525ec5fb9d8c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f2d4df9c8ae632d0675552fb4729584c461348df", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f11179e2b7fecd78b101bc760143f41504acc903", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f85f78c5a8dddb612ab41ca03e736296334322b1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "88b851ef2ea690d62402ae2edb8ae05f1f0e1d05", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5ac0e1b6b2219ab07bf56e8bc91a615db0ea9c5e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb86a5541e233311fc8fcbd5f4b299f41411c17", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ed0fd8008ecc7eccff18bf9b59a3aed3cfdbd08c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57d7ad3952af59f4e32e531dfe9875e1400b7928", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d1420bdf3e6d46d997c62abf0b3a5fbbce38e633", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8806b8162acae6192ee019003e3141f0caf0e2f1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6d248c70586e9ec1842f63035668c16a07bdd801", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92b54d0f5f3c54bc720a6ea97cc26869397fd993", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0013174c4b5f4cabb94b818aa9d11f5b2014d732", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "14e07a71ad4efad431b14e225b67f5a18af77d93", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "94c99d1611d1db479bdcf50bf0a4ce4e4d633c18", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f2df18fb512f34b2dc3a77d947ca8d1ebc8a64b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc42af735c6081551f975a41c31b1eaaa4039f2b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1c836cf5ec12378ee0b3dfdf9feb58c2b302fed8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c29fc857eb18377f0efa60bc84a706befe846c40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "49ad8b375ed60c867b8b3361c35e489798271a5b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48a2b6cf78144175ba5f6963349111a1a2cea541", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9827a915be1f9f4a3e0ae61126ac7c1a34b190c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b25fc24754fa3fe634b077ff121c69a438632c7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53b74ac0333c274fa07bc4636dc6a0cc4ea69774", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3b3dfcaca1d036ce28a5152c0724fa8e850d1041", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "68fd82a22fe252bcdb7d18827559d15cebe58f40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "68b474b21d963619676aa1183bc35987669e2536", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "999fe51cf80857e6ba5480d3859558d871888614", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "039a2aecd2cf3a0adc31d17786b7717b0fd1407c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8ee9b2e44907cacb35af1290a1486d536fd657c4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7fdf544e5c4370824398959c935dfaedd2b79bbe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cca77f0d5a3c9165af31885e389a6e3a55f4af57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e1ecdc21ed8e1fdf1955938ede3740014f08003", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "132f0a94e76aa03d0a39ef67d137876144299718", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85860e1e11eab5cb14ac212defb6357beda2e0e7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8a3dad5482a31bba2ec22da4c2d06e2cc99a2eef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2b57f20f5c4e0880f47b0a85b6b306cd43b2b30", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "91b1e48cd006acad781df3b08a1631debb549a63", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c9a8d6a11b732b75ecca3116ba298fdb8e240ad6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fcb4f96db91249d3eb5456d3d3a0d82847592b30", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4732c8942e86d0013eafc8625cdbcb4a6083db71", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1a607481d17b6abc0bb8cf4cc1c8bef5e6422e0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "44f077fa1b67f7fd84e7e27ca176cc838d852b2f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "448ae143fb32410adda58f094b17c263634e4477", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c5fd17d735280e239b60dd0d11aa291d65103919", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5037c06c8857debbff930b98f79a0e6b77ba015", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "abdb84585614b7a963c7e65a49921f2f1d44ce5d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "843eae7b49d6ddc9294487f55d364a1c54afacfd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "deb0a96e75ab804025269c74c99242d5e4ef91c1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31ec5d361129e6728a74002912109190b76dbe1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a5181256e7bd35d86f737a022254eacb69136d34", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0de6f90544709e20e8b4f3a7c5c6ea6298336bc2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "485abd56a66788469ebb63a8fae4da5257e1e775", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e05b2a621b8976e4b58b0b987db40273105e19d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c854d15b09f5c662637084c88330a4629c8acf4e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e9e990c5684d9383b9e752511a9d5f1c85ddac08", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b7eec0d0f55dfda10ed3eb7cedf296b643facf7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fc19dfda201ddfccfcb9cd41c2c69082038ab063", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d14e2df1c69807460ae4db8452813aaac32465da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2a9501895727d022508609ce09bf88aff3d1875c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8837a6967432426766b5c4d9c703fd60409efa56", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "41d433864ea15aa1c7b909461b8e872ddaf00b0e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a917cd2f72f725021e09754b579d5c15cc8dc18e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4902b6a67d371e68bfb65b0af8e96da924e6c89c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "79281e9cfe75d3103b2d50dfda5344999f15c6be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec9d7be11b87a6f7ce2587337f834ab5ee9cce3c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3c13bca25d6cfa5418d5f243c107fa6d4ee8ff90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df2ccd716a7fa55ddf9b21f991c971d86465f54a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4c97066800bfb9bf9fd531425888317d8807659f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "40512284098a40eccebabaa59c2ba1b3166d9618", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "641ef46b81e8eee1d5aaaaa0687238ad6388b105", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "363ef01a2db8e7d5bde422bd53d046e3958c9b6b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a940e3c37cff8c175a98f6b56ed2c95e4013905e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4c78244ceaf558355bfd272be94a8a7c737c41a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1b0cda89606c2725a3267f721a04d9db1d4dfcc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cb1e93fda936d9b49808b5532f6c3445ed316c38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5778bb217875e7583b7e75ca133be11b61470ef3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1085f7215034d83af5d0393dbc92b1746a967e0c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7ec1b3f21a1a2904f515c72db544b111ff87327a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0cb6068c2a200cf2bd61833921a02855cadca1b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86068e7fa9fca28a59d1fd7e10768e2793db5c1f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b1f1881da2c0a66dc10fb0764cdb90ae5bcf82e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fd4889336642eb1b5c6fbd90d48c869e6ab016d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "025eb81867676752797955ed61694e7e5aaba0b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8fc1fcda3e6bba38ac1823a88dc1c0277e9bd949", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05fbbe98a200b3e9d920f8493f1b0b4907fa1f61", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b4f11116c986a9828ccffb69ac7ee2285bdcdc7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9230aba4e41456759fcf7105da4da26e26cefe1b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8a87fd3ba3463d020cde67d364f35b9814921773", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "898e7a340c2a1b3e94844476768e8d40f6467d47", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8311c4a69214975c21fb3072818ab9667ac3625d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "56d72715b6d7afd82c686e27570677cddbfc4c7b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8f5d11ea9506dbb619f42700f1cea044a5fe0844", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "739809721db3f8d721b83972bf0810d481ffb49d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb723ffc22269f8311e882434089e1c6f4195c04", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5e4d69c6927042e6430db2e51271b40e61c5ae5d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9964b1c068da02a9904b7871dfc8dbab9960e80f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5150f512a493902ea4259d15c77f1bdde122e1f5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "462ab0b5e865116ceec973a987a2a881512bab55", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5e87970121e2eebdd0035e45fdc4d4aa4483907a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "675aff8fc69357b0e3fa11a371ec1458d65c5fa1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb7210abc27655ddf486bed051947b34b78530b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ec5e3a79acad7d6f2ffc7de0f2fb825f452d5a17", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42f74aa4dfd28faa653359dcf6d4092bc1d7e31a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4902ecdc2a7f5e8274c2e3f0e73dbce66ea35d01", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ab43b39f468ac294f7b31ff87a040bda0af8106", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85f721fb85777af313e842262c2c7febba43f851", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d11192c27ca66b1d32c73403b5b368d4b6661e36", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9173e74c71c4cd75846adf917295ee471866cc10", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d6091919a4d4bfa2d9df95d5c31ad09e9272596", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b0abd4002e037d048546a282e02f25020e9a5ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ec207081ee5b24f6924f9897cfc1d2d3ae813c4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ba80476740bb385471fd1aaf9063b602c8bf564f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef73f824bc2acac5346023c3e5da2ceb9aec1dfb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "65e4c5f73cc7be7aeb3c58b7854751b3610230d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8f30252147ebed2f36790e49ef5e35394831b3bb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2ee8d35552d6de58ee2c41b22ca0b51cdff4908", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d9726d3b6069ea839a42e091179df00b4ab7ab38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92bf3b69964f33b6fe8e2f73ed42a8fe769a4470", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b69fd0aa256578bdaa4512baeff66a45285a075b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c5c022893995ec9572dcbdb699493624780e8d25", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02acc169eecb5cfbc73acbd3b86825d30d4ec525", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4215ab97b483251efa4fea22deb7dbfa16e1dacf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7ecf58da5ec8accb23241e242286063d70b8f379", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bebf9f9e0906815d781415b9f4b8613317d13a98", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5e2d0badbd99087c6c19a17c43f3eb65d889926c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5528ff2beae0526701ec92124cb1367e7b501468", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9b5c08bdc04091796abae4eee7798fc1ac9acd89", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1139f619764254c331c256b9b29ee6a764b0fb01", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a8bc2345efcc7ab7df9baa4e9ac95c2467b9693", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "77a4c21e8b584ebb1a9207900458780fa9398efc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "321e59a875c1edae53b6d06785ff234051204624", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3c215733c2fffb0e29852f1b9ed44d324af0f3ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f90059e812d40df7b69277fe6d051423b6534522", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cc60fb4685b0ad805c36d78f4472737e1cbf110a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4ca1b27cd5ea956f98db08b28add50aa34f6bec4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d0a0219f96c3b0a57efd0152b6d6bf856eb8d26a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51c7febae7db3d8503a6b1f2755fb84a0a8810d9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "670dff959243aadaa97cdda65467403d1a912ccb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "81ae7f9c8bd1580a9957d83a487e1c4993f975d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "42af5acc21e5f485e5a969f6a9cb392e1742e9df", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "be116b4b3d7fd0f4496faff4fe14dcfa123c95a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "76fd191400156a24fe813c9052216824e120bac9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "202851354c7ab2094b62b3e14f001bd993bf0484", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "100bdd3aebf5f61912f5723bfb8e0b775069983c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9221673d3a87278dea9d30deedc3454bfd853d90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "60b76201a390efc269fcb5971193f34fee629eb3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "db8507f32ec6412c097d82773498b554667eae7c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b90af6b34adda74ee5cd07ed3ab3f8fa1b36865c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf2d81f2eaec4e6bc86945dbd6ba88d305d0154e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a3eeec2d2b2267cf574b5eb14425caa781d2efce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f072640214268546c1ea298894bffbba86f16769", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a99967a89752e976851ae5386edb9346627e21f2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d14dce54f21c1160b62d02c8e3adf87b2bdefc27", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "227b08d2734bc9fb782f5097d62bbccf83c311c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5cc56e3fb021a5c741143cc53a0957cc7bbc712d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7f1a9219664153dd00d0cfc61968709c3df01e92", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4b0ec414ccc748bc79bdb07abea2965661e166a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ba59554a3234516cb4238420ddddf4e3beb4172", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c12e6444cbfb78a545799615d24e2702f0aab85f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3d37dda729c41d49a30bd20949257c4a3b7bb75", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95fd1ef706ec58d382ac172c18c6822f605e4d52", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7fea1b11ee22193367f542c3826c717561eb600", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7043e480f7f1a97a478577a2c982865eca7f0fcb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3acf4717d6d2a804908523e16644bb3271e07a93", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0f892aa04543b92d44a80b9f179ebb753c2491e0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce5c034757efa93b2d92b05b31c4e2d89ff4b336", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c5d3820a96c570e6d7476fad2d1079a2a9278ba4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "06d56418d4267e3b55cf8d4e138fd57e579d170d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2aa4e3b54af9c17dc1b9eda728f77eeabac8e943", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4a09482b7192d3d43a4b777db334a8db5a12d89a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ce3c5972b5d779bd97e6ff7244af09853eac01a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3b581641de2b5ccb35edfd916cf9ea362b575d1a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a087b9f281a4971fba34b288636e926459e43c82", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "325652d1b0793910899483a10a2ddeb02742875c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e0f792b7e663160af4eca618d5959eaa6475e34c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3ae6c8ed675c17b7628a8633d5cecdb0ace4fd20", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cc4e52ee8f85755b2d733c840a163a9b34f8a98a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "276084e1dac530458cb3e82fe041f0cc487ff44a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7448a22821ffb1d6163c25e44c28c3b013e8569c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d9456ed4d0552ffc702b075b722e8a36b712e0e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e2055e9310593780d02b3b4786ff77d408c214ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "658cfcfac3ab281300fa2cbf0a08a898e74ae362", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90654c2034b59b43ba30f359b510b6761d760d10", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6dea553601b89ac8b88499e661c2e256338923fc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf701290b3fffe4ad1f9f6e16a2522d77c15d004", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d663faf8028c9d4fa87203040dbd5496bda8a4a3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7984a4f415eadd9da8ad636b6bf734774d3928dd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2bc32415710bc6b15f7a507a552421e69cf5bf6e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "daea957a3da23afcc835330a9c71617b8421b2bf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "078db8170f0c01425d7954975856ccb1b869a295", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f5ac38a92c10a05d2da42d58ea80b543e4e67475", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "348b3cd6fe35d64bef2b41a6ee1f3f2339facb2c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5677648d6115d5983f64df1c66292c2ddde502d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4b3f41239c4a6933123755d1751f3b71fff53df", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3d25cba7f7d85842195a5936a5977b32d71e21c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "72a5358b8905249ac53f11594fc5f50a17d685e5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c0e39164e52d90c32a684185c4a2077c5c6e5ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6f75bcc601ce0bf25bf533ab9bdee680679821d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "975799d2abfb78ed51524b2b5cfd5a28384d3c85", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "99eba6199e21055485d65ee523cd6ef7278c0149", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e616eb59291f6b7755dc2ee0484e81b6a670128", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7686ca58031b8dd1cd2f890c0645735f9f4d122c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c9b813020a8980d7a57314611f1f7506d1759266", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e19b5eca553c6c76caf56b03079473186138f4c2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e427a7744458d3db9835bf24be17c441fbc1d9b7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fc6206ffe2914639bad3ad5bcd891039b496cb83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "33808b9393735b2ed2e16be22f80308a35fca168", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c9d331ef153d8cbad59af41d8c7333f34f30cc13", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "499e1ffe6941268a78bb1da4278f4aa92eab5007", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8c4e6d711c6e6e54c74cace9f0578b4d49e798f7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "617eb3e62f7fc5678eb50b48db12844ee1356ea0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a00a707ecea052f7077970efb69c90e838cd7391", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fae0ba1cb0e12ae5da73f2a04a457e5350019631", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4f74966512410e358cbafeac4b3c4ea525a4d83f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "09010f0b2a04ab03c56046ca1e01fbfbfeba34fe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0394c7f3b5be02fca70b7d754376e5e3afc2ba57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bdf349cea84bc5fa9b1df387c3a84f9e326e8fb7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d24c7c0db9bdb57bf1d134f61cf73f57af538409", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9148ce25f5f094fcf8cdbff87ba7741a07c96306", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d8fb21189eb4b98fae4ee5ea019858663254d0a0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ead8378e9de7aee41f4d7805b2cd1f9aa5e46d86", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e01eefb32dd0584cee9e7920b7e44fcf412567fe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f106cc6b4d8f34e8c85df4e896cfcea2b7d15b0f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "586af050b45a0e15e375eab991fb61bbeb4296e1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4cac8853103555e29457910078fc45d981d3d041", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26ca47c461eeda66843bafb9a9852a7a89e2b1de", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9cd7746d912c178112b52cc73baa8ee3a40f5e43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6a4ff13049810fe5fa11503bbc2890b90c5f42cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c7fe90417ccf6a739bd739c87930c7a9391cc842", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "55cf23fead50ae39ea82d2e898824b33defdc265", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "34ac356536723f78b97d860c2adde4c69e71af79", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ab09c6386d33df064c99ae4ff2b972c1e7274bca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8fdd0be4a05d1af4dacb89bad94e939ce9bd02d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dc4677390387b611f9045675aa62f7b32bf84e92", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c4735292f9cffccff68ead3a987eff627210f3ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "37e0573988e68e647f1118f0fb5c7d0ff20d6674", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "897741ed420e40167183aec58bc7ca76df7f5b56", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "956fcd1600f1aae60e8c51852ef2bff3bb58415b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ebabb70cb26def447c386b7141beee5b70af3870", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f484e961c9fa4577d7ca986241547ee8166e65b1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435ab0fd237fdcd6a281777007cc9ac9f28df2c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1d8d0f4d30a9cabc2aeda69bfbf4e6253028dbc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "02ed3a86a61660051e0f81687caf5a229cc9ede6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "adb4557a10489713f9999ce9ba10bbbdb5feaf8d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2df74018eb8b7eca556a1a4679e4ac1cfedf5c94", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5418eec29a7359ae2bbea196fc4a6a2be4d2c686", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb090c5816ae5ef9938428edbb501e7188d5b2f6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "222f0e5552224f63351a63b86781149300bd6595", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c9cb32fa9db3fc1c44cb32f381392f7d9ecbd95e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "637885803020dded969a58d2e27d775837529cc1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22e5fd5534979f4f4ba63e08fccfc3ae3107e833", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c4ba17768d01c12c6a8b06c5b0b88ab0ce337693", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8847c3ebf2c1bd322ad7d0d76db3ec20f7eef4a7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "051dc362915d357dc142b07a123242aa251913c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f8aca421661617da6dd7f63569adad76f36153b4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87ecdff3ecff63ec6078b5e67d7b1a87c1ea5157", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "37ac68f5a278cbc0e06c8f86f060a6dae3084c0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "56232dd1ecba8646317e96bb94cf0a720080dd61", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4aedc35b7719942c6bf8211992c9d45bb2fb53bc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1fb1ea4880d69e34c11c0295c62d1305b64dc67", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97863c5ad8998b279a81076a0dfc36066f0d604f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07ab9862fa4bc7be36632d64ae45678cbd801c6d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9a4f064d3a6285e41f67dc404b05e3c2eefd9822", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0393b3b8723cf860dd42e9cbd8c1c9f5c4fb2dca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d69b730e7bfbbefb6ac81605fa5f8cdb9dc8c53", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dee998f0fea607a86520e3867a972c0ee219fd93", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "346a0e6cb23fb2052cf0ce22a824f077bf6efe97", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53257b763f54b9b4141cf45eaf3e699d747e3922", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "640a935847da0171977f752d0c3548765b7eb51e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c7db10f023b5a31a5e899125a4c5fa8ec221d9e3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "604ca362bf94215df92c4b519d2fcfc3a782dc83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3e56cc0a089a935c0308a42b1ff788df3aab041", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "697e3791ba07aa7ca608477c62f02820c8658784", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "608806b751eaeed2da3c4a23cabeed9f533392e8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da22a8a9a4ddc217bc40ab516d1768446bbbbce3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c599538f42aa47f8493d3ab8189c4358e8ec014", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "809c428f74aedb573dfde1f98f633341dfb7714a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "102d55df9aa1bea3489044a00758f61a350df8b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "11477e506250c9b5b387dec4c5cdebed75967670", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6749283ce4f62ebe4384e2cfc18c7fdab18319e4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c521080e315deee09d60098b3a604536182463d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0270fba97790183a1aae3f29cf2c9bb8f32d3894", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "363b7dd627f2599861496a8e278e44b0362d9116", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8e020dd46e010cf5b1cd0c20b9e0aadb45f1ffaa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "df42cc3f276cbf68174bb507974119d4a5d16190", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7113d3a96011e6a3ce7b4b9e4f49c2450911cc7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ddca90582628aaecd1a1a5197253682d8a2913", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6f29889ade40bd57caf159b14725f5428cfa8d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1425441af3e90e6fe4cf420ff5c6db1473525560", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "734519212cbf0e73191a5545331d8b1fa8a6be08", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57885d2cba5f7612a707a225e4f53238a635e2ca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a7debd552b2f24a8f855f7fb5c8c58baf41272b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dbb078292e25eef12cb613ebb4639405d09d9631", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "616f374cfb9062dc1bdfb6b5d8f074fdde9cb0ba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6c40f0fc969d0834e1e9d2c9ba2d2f840aea7b4d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fb36d150cdf0ed1a65869491f353a6c395d101c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7229893f00da58db5658c986f33f5f1fdece90a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "958c528ab60806546ff09c039121cba0171b2ec3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b647bb88454125e1ae1b4f5a951193db56d7a91", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d5bfe1a1580f3e3c9e4ce8bc85ba6ce8936a038", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "55703d8c98976b5853e5107f0bafc16bdbd3193a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "616a0c7483f7c4a67e15306d7cce7c61ecfff597", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b7ad1f4cef68ee4e4186215d7b0f399dceef7ec9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "76589474874d417b4f25cd22ac7a815869578250", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8eb6e5454eb4914257ab2f85d57f40d83595b6d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c398fbd96e20ecf443956ffb08761c09b649bfb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "257375abb969986d4e5f75d13875983e99c7438e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1843a9c9ada6a0e1a6313471e141c798fee40000", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "03b6d18f9df33440c9191bcaa4c01c8a699f12ba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "359a628f736a1320eb2b9aa9db548e949c7bd884", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "95f9c13d561bfc39d2572cb0db15e4140908e8a1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "935973f3265cc8d480f3b80c472337de2ffa9ebd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "870448ee9f63e1f095903dd8245c3edf1a261bdb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "635996c9c6fa0e11d8f1ca251e42a8c1e8d05f01", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b4860a67bb6ea19ff9a70ec07c070bf8d256d77", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b02612f9da7252f596ab8176091beb850ee97c2e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a6c0000747b009dc445f65065cb82411679c692d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c4ad32e0321e8f607adace9fa010ef32958b8267", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cc607d44a679f3f3c92b446e3ac8cec6a29f6871", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7bfefe1ba3d4de77561e3b4fc8375b7769753ad1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01a612c52bbe65b7ce804985418892f93a6f4ded", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7cf281b95deb9051b9a4758fc40e03557f56bb1c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ff0d0e362913ea69236c440bb8ab80992e84a04b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "670241dfb803767a6fdeea7211f906daf3033eae", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2738befa6a04860d1fa36b8c3bd82f425c2aa6a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d7adea35d4866c7e7819e5063f14c199ce8c9d63", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f0f4d3d34786d597e0feca349eb4103c049465ac", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "456b0dbe228d37b82c10839f06c9b4a5157aecb5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4243658cc9456dfcd88bfddfdb75977101f603", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cd0a867ca844a9750b986a87c57611a6ed8d6c07", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "be614aad0a10c08010775e3e772c94ac2ab27a06", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ff176473c8b90af9a53cb433b4bdb9f45684a12", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8085896404f50701b92d253b8ae9e0189d670d9f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d586d83a6f7a1d0a3a99f00ff2d5e49ddb8a01e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d3530574f542dc95df09a21b7f3835e6d569a193", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2277329a4ae6a40df3ac01f48817badd16d9602e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2b3d0b84fd80e7c24ec39e8938c7b88bcb513547", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "10423b96613dd238ce83c184820f088b4de6fc38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "85cec5454030e91ac306cf81752daf5d72603817", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "64b110045046bde309464c4bcefe076ca073a7f9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec4650a0eac8601a1546ebabb0030b5b1d46f7d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e6bb3eefa15ba92175bf8fc709754d09afc9031f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a96588a26fdce67ec6e80e7c637595eac29d023", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2daa849aaea244e15bf1ad922489f061104986d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67bd9d97ef07b8c1d72624c22b7090a4dff74c6f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "75e1ebf46f099c86ef466ca58e7d4231825d5730", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df263fad8ce8b1f7af46a39ae8adf934dac32dc6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "57cf4c0363e3c81a74eb69d955c435cf77037461", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "16cd196f42b3aa8e6565f0a6194812bc378e01a2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d3e153b24679249c3ffa2a3da1bbbb829228cb10", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5101b55eb7b54dc49d9358b23eea395d29c86514", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "39fae79c20a82803012e140aff15912b99f4b336", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8df058f405e78b5277c4221a3d0c860561759fed", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a8ed996d76dea3209ac7ab4228c67568a64da05e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "39394203703f63e93520b00c7d20fda3790748be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "219bf8b815d1551f321ca39051c03dafa0b699c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c341a52bd0589f157d70bbdfc500864fc18d04b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "68cd92c56536a1d1e971a532067ca089f7431bf8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dcec286f612da7eee83fc9a3d310f69f87c9e9e9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b1d0c5952c5ca1098d3fb3d7e36656a1189c8af1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "505458ced49573a7015f268185bfa505e4ce4905", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb4f1ffd58b793b922e47b2b6b0dee7abb1b75b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0d6fca10916524c12e8d4a119c90b4d6c852e6d1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6969f0bffe55fd0dee96e5ef5ce7a320ad3bc89f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5899b0290deb94735c9b4a331f8dfbb8bdc9af9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a321e7480223a209190b846b7911492d0cccfc8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "00f88ffa37d354701d925d676cdd48b5cbdc2247", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a5211040787d01fee61330117f11b457ff7e36c1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3353a532c86d6a21a03407e195ac946c68cfa43c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f627ec6f053fea22588c69f347d946b9a1b01427", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "297ac2d87df3bcdceb871862580a74eb534011bc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be9191039a72c54e1cf3563033569e3b2f530a7d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "126697b7ca474b1935690eadcf39dcd0b2ac5d40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "26c40a88186e0bfcc56e0b41aa5e38cde3ccba15", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dd5d5cfe5e84875c7f0651c09eb98859d95d8c4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "78baed114253c5e3c9e728117f4379ab77d20320", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "709785e07d2c7f958bedfed44840d2597a914ac3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6e7658a0770f01081974461494aec41768b24a98", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5408c7d98a69486dfa7af5ee90005e0f56bac6f2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f3b3d8d1f3532f4bff824de35e848fa556a1ae42", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1845053ad032cd38e8c8103d62b990e3ac2291e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7211b8280ae6e2fa606503c7a41fe13797a7cbc4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "543bd4eee33cd7f2dbf7dea8a8578217f23d08c9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a043fd654b696857ffb95f82c03d4479ab23f38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1df121b75a8d331371fad37f07be24d29fbeedc5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b93e5ced4da5a366ff07962870c249c2e0cc0c08", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90846ddce292bdbe8b49cd3f7a5b327502d206f3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4aeb9d0d37a362dfdcb57d22b9aa09ca1ddb9e85", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "16d7bdf16f5d7aaa6c11fc640bcea0bcc7909e3b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb10ddf246f95a767eb64539f25398c907306e17", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1291a0374b54cb93ff008ee8e5910069476aa9f6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb510df5961501e7596ba9a915eb67c4ed0a351b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef1fce6e41654377087648547839041b5a1ab850", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "be89451a26c6994970097daba401c4b6dcfa5d5a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9bf34bfc6dcbd7b1019e7962bdaa47fd04520e43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2177e137f207cb3d4f43e8eb96126300b7d4f52f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6ada1b3b9dd790cf0227202d1306673bb3d07ec8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "096983fae7a9909a5d1e290bdc3c75b83a238b9a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2cddc0faa749188fe1ff6729bf45faae8059b0a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d5708736bbcec9aff6a727b522406691338f9e87", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b8f9633e64c6af22ec0205f8ad0e4918dae2d53", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6a7e3893fc850ca916641021c095498c50b376b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "640669ec95653cc4ebdff8b54a4939f1803ece57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4b3506c6f8277a104147f2d7a9ee99c90a55f15", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f50450ef4c1cecae264f79d45f0acb6622607060", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c31d2924235f26292365be9f0955ab00be65eba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e6842dbc826a42cd815652d00bb7b152274529f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e9208886626d708b694c732c5f553e77ba762362", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59fea27cf190880f09f06092d35eaa8c46bb8196", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37e4636c54abdd9ce849b9c52357369188b03d6a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fd93ea28ffe5109523c40d14883584afcabd0968", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "89bd2ecb5ca244e779170e941468abb4cc6ee853", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d1e8719b6bc7ed7558b70c9270765b00f7e8dc40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b0d65f7eb9237ba6fab029a497f645e58cee59bc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6e13c350958cabdb4a0f00d594d1e817927d121c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "486c314c450cab5556b5a0289f85cc2c477e521f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3153a26af2d42a2655184a9b6a9f96062019497c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f08e3b0ec91ce467d96e8156c0e254a06d54072", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8e55567012043294fe7aa8768df3671b5f63a18d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d496bc1d00f28767f618e9adb1f2deade182a2e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "642aa1d411956b3b3e9411d780049047ca9abf07", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a76e07e98180df5500e1eb41fc7f51538a0307f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e56d4d1ecc284fd3ee10baba9abaca70d2667c73", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "563bb8987af52841c114799a994fa505bab77123", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "55fd10dfb4af8d53b939803977cbb07d3f6b5e90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "724c96fe85d2a3c4444d66d9358d2f84f3bd5193", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5252448c917cf10f69519aee2f30716529ab0242", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33446fb39ca61b83c8aab311a3e59162c6670990", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c36fe94860e02e109be23c1299f794e7e647ce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0261e323a49b3ee3e59eb0b361de30262fa8dfcc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e467c7a016c64ed85bf3bcb56f1afaf72501131e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fb9f6bf42e0d4b17022d3260e60db423f1d5e5f3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "039e48714ce2935cc0a1097260044d7ff79a2ddc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a345a627588a9690b963458a854d83a870de0cdf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c527ed78940ed05fdd699e129f704af8f2faf48", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "102cf43e0195c9617a3605f8c541c303d8391fb4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c7e977d018a9ce259f6497c06ec485127930afd7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4a13e2355406512e92ac1dd0ce183586f591a6f4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fc762fbd790446c7b41cd2c975508cc55cedd62f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4727262390b1727a0ed0b4dd1dfd73dc5eef9f43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9f0b26f27251ed6d67880ddc99a28d0ea43407a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f550a29caf0069188abdbc82fdfdef7e9b786ac5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "684ba8c59fc5aed9c9b25e01a8e586b777dac9ed", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c95958c451d3287bea51b07a423f9c01b16f302d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "06f8866dcac5276f9d30083bad531a15b65d204e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4ffa5d0c6292d3d5dbc67d7cc083e9297496506", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f5e79816f94d167036a18250bbda23fcf47bea79", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bd29a347d140b04bc3d5fca9c3f0b93d2d1faa29", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b028123f8a882ef40434b95857e411e4f123a51", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f6aa7e1b87a017cdefa07e27226ba026bb940ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d1f425efae7227f82242d0d421bac24b37017b45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "664f2139029633f8781a1d5a84b5603749ddb066", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76ce0973654f62a50d80afbf442722de9434787a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19313920108be0d31e8dce7ffc15921c69364a31", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c2a35a7cfcab0c761a88683cc35b6b512e14f12", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc8e50289d153a044479e16766e3823595ecd654", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d72bf99e961a8a5d49cd71dab949c3a1c0843a26", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "67d740294ff327b9bc6bb11908c1615e76121ba8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "71c8bb0cc7caeeeb7dea817890398b0c66385a8f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "52b35f54506180d04dfe50976fe27a8ea5f0e518", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "91ed24039bf8425b6903f7cfc5116f34f1ceec65", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a13c3f1bc8ab0827d01d2e912db50a069799df64", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78e38684fc65d0192bfe87e383bb3d0b8ee6407c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "237448f767fdc0721c98c8b2b30cc4694f1e938b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "815eede64aa53bad18747bdda7dd7cb657b6f5d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ca0fe4645feb600a2fb8bba337aed850d72551a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c67cddd9435ccfeeecefe8a465d165bfbf18bb5b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "efc3c3a6145136a00ab9a31c42cd876ec28f5ae0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4f97d4d7b77ef9120dd195d35fae56b7fedd6622", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "637a6ad19c95807bd7171da23ef9d7381b16a784", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ace741deaa1a2a9fe8fb0b6ddef09b42ce3249bf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e731bfd7240819acb70eec9e1ec5fb53791f2d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4a44af2814c831420bfd715d1baa92040fd025ce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37845c54043b38186fd0c508b9f373062952b025", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0012ad3a73ffe58a6623858853f8aa1c6306293d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f5bfd3fa053d6528d74a5e3447d2dd513335c050", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "46820285766c12e82b9f03a6360a92e9686e5e7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c1e6961d3a4477d24f254234e50bb753b759fd8b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b0072761a58238c3f14e0ae184b3ec33abc9b965", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30a6427b35934e2268182eb72ecc5b6fc1b2bce9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f91b5e0c0f3742813997495f1e751fc8d9bc94b2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c6f034c6a530d382fee5efa0f7d4171b575167e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1f9e3b772fc8c3b39a65807d0905e6a68b2bd95b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d66b81f11d80a8fc9653dfe313f33037f2898dc1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ad55592e4ce7aefe5573a43e37c9b22b8bdfa165", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db1d778db40993ea2e701e9f5e1f7fbfa4d9bde1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1f8734721e9e3d873375b30f8439cacea615e3d9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6478a5cae6ef7675ecf2f926515e8d9b5b73825e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "09fb9581dcc46003474d2dea58e691dd5501f1e5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "678f362a78065a5c3c9775d84e63247b302a8785", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "57b6e102b67dc2831aad97d5aa8aa8922d191faa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e971522f687defa4c1872a890e2000480a688fd4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1bf91fa4290419c83ec846b1981278e73f52c237", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "20626568bc96636d69933996f3591585cb82307c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "56e1a08930b3467f060a2627b38086427bee20d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53276ed4aeaaad94e78a15595380d10c06713035", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3e78b552335b522cdf79ade327f04d46b6f8b1a1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c37c51ce4cd1731fcecb65a6ece70a46ccb505c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bd5731771dc14d2ecf274e21832fc965aa29e54b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "52d7de6018666a0d52d090ebb68f01047c77e90f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "89471fcc0dea9656d262d28f896ddfd07b122ba0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5c7decc7c1f0499f29652b8a7d060f3a8ac2aab5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b6239f8720e386035be2547837484a226c1fe2e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "983c00c4d77ebfec99b8bf613e96f0e7e0a3f184", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "87f114ba3706a7cf42514eddd61cf262f1bbb117", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0923ab190a1b644a9c3764a4e6177004d89de7f5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "5982c62bab116806b4abc11030e9fbf70abbe8dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8722bdf241cf4fa4f9d557281f16255e0a7417d3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f55beb5d7635f24a22878da238f6406ebb0c5373", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2601025747a6544486512235c3221153d5581eed", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2601025747a6544486512235c3221153d5581eed", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "970bc5944f36ab57a8d10192ad00ff34a67d4551", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8430db206112733f1d19963d61cb6c3385ec07c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "520ed92481b0ad020d4c0d715a865d35820b4211", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d9e664748d0ab1a0eb01d0796a6333621d080395", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb99fd9f52658597705658c49a009b98d7540004", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb99fd9f52658597705658c49a009b98d7540004", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "11e2fa6d67ccae5e868c398188160d6f7ffb7b6a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd6139d17af91f22e7d564e45f98c91a443b509e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aeb5ac9863b7a426ef1a873fde743481691ab2d2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7603321ce42d82b1c3394cc79814a282d9916e51", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ca7b9dec043445ab28bc5ae0fcc2dc33c5768d4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a8baf9c3a92154e6d7122cc1621901af58e1095", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "091ac89ed20b9c2c24df25cb96bd9d5f69a352b7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d2cf5726ff06c9ae16cf5526d5c6b430f08e0eb8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "627e93009c2be2071d2d4f33a09aab6a313caaba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb98b2b60b2320b4a56460a3088f2274853446dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fc8586eadb9c2a9d2b2a2a9921b5f3a5c8b84bf4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4680ded5751229652852e6866e152d94253c6de7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c76d386c68ea3389fcbb0dc75b3ef6d7b34fe14e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d0ad90be41bcd288bf4a9263df25d8e77d578cdf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ddcdd238591108401ed123c45216f83f26f6fea6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cdc936f1db53c66771db6b0e2a2b7da32236662", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5490bf5ef30a1b843c49b84ea10b1afb95104374", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8934181ac5fe29d478f7bc87248b57ff70521554", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "18c44662815062668acdebbf04c638c6d63b29db", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6c551d428fb4ffc5f8af2f16ed44137cd604e506", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0d02cdccf1a4b490aa9daf897459ab1794326a6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0c7ba1cc2253f8775cd1652b3ec48c739d974cf5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ad4b6b6e08c828a9924299dbf13838dc5c6bc4c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9ac5072059796b5f41898e488de9c5f6c8b9183d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07e984b1b4adc33cebfb67d92269ac5046293267", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "583bd2f69f3fb8337f16f6923104ef2c46ac0459", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c8b2e61a340d3087b76f8be99d92b0ee8737f5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b03c14534fca446c084d7ffc6a3e422f761fcdac", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ff9f75584d0571add77cbe4622f25ae2de30d02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "5662d7d19a111c27032bfe56c529a8dc03b18aa5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "f47de5de3fa44961b2590456e2f71c79df0c677d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "be174811a60465eca33a2d7176fc850e81f5978b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f82251b4168e8a4eb0df12e767c86a6fab2ae65", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "75ea904ba086d884f81903d50f267b2385782f2f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "03ae253e8c47ece34cd887e5ac93a8eadfd6ea0b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "087e61b0ce554fdf5ac63d9db6cca45ab756813c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd9cbed08a8cc566867947d28df896ac05c09628", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d5fe04a434fbfd234fb311217cef45cd610e47dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5a28726fef6f268cd6c4cb73f9b12524f439738", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5112df01d1b4dbc3d97e4aefe39e584d81c31161", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f0d765b0ea7ee0ed306f4fcbed348c961d47f82a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "94369cd7935ba77cfb1d5a020d718e7b708dee2d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d606b8389362af7ac8661e1f73bf8b862939aa91", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "276e2ad5aa663a63b4f245c87dd4029fe516788e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e32964fc17d419f8ce8eabae55af3bbe815bb934", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a099c9678c45ce18bbff9c080a2cff5af9292869", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "81249f0e8dec5878f6b09731002636ed2e77b190", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d9cc1ac72404b840283421720d590f306d521a9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c6592b91727b7d1e298014b49155568489a5a3c5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a5372dad4701f035ac562715ab8c740574d1418f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10475f1402bf32739f4e0b3ac1b7a5693ca46693", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1afcafa485450994fe7d6b9f11e58b898f13379", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c384c064386f04725fda74fef28f087135607e64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "34b2b6a7512fa41ecbf8c93505dd91f0e71f46b4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0dd02fad44549e7298d42ffecbe3a7cd6e0ed515", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "8541717cc2a586c0c4bfbdbc95d59cabf391b676", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03488e8b609e5c28d4c69beedd2f947af2bce8c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "609a7338d68ff41832889da49bbc6c765849a9a3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "78e0793e1ccfb3ba3dcb95b555c921d95aea0172", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67d66ce9d8b196139451988c050a17df17a83887", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6b41ca80e7a1c105d59ba5fdbfd2a156d325b36e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "176d6fa421bddbce258b8101759c1d428ecd5a34", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "de7ad4893b8f7065bad1433f1ed93371ce682e3b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "74e978ee342c3293e1bc3e02fac528c4432fcfef", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "701c25515ac58353c44da0cf1797d0018ae20426", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6c4458e301f881929c548672cb744ad8731dd49e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "08222f019ffe810c7eae7b3ee7be44b3cf4eb4d1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "97225e42f0c290d30ef7b755f62bab1084695dfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "360ae91306bf2f6069fc955ba247e0237a3d0aba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "408f63ea79d874ae4fd57b7c5b2772e1c27af93f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b94e8275f157f72ee63dc934e2cc676240c8262", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f2041443c5c584621ea6fcb6f825d19a0b80633d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "05c32cd7c3f99c6013fff3a31da57e72ce13dbf7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3bf4b8cc0f6f0df8d56db93bbb6662716e4444b9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ecaf547cf761226d26b02121a83e62b32eeb4656", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f40aa03f623e3d16a2bcdec750babbb5696cd470", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "6c732f1b69d3b3a1cf711cfd64feea43bef42f08", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "acfc487f8751093675a7848d0e13436484dcd992", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "72ec2284a5a7d7a31a4c96c1160df6b0d2305bd0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4882b7a1bb734bf4aba91716560a006b3f6f1f93", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0e376dcbb5390d7293d7bd3e2ebf38bc272fac58", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b808bac761403635d7cb85322fb9d877fb8cb088", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4bd8e4cba8eaf73d51117f28ec0cf9b1bea35e84", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3f48ffee7d5f7e133fd33a63065937a61cde17ba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b3a764c5222db74b585fe9555335f076a7cb44e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eb4623d27c7f969a52ee9a6715382af050c6ee78", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ffaab18133450814b834a3cafb11acf8302e9ae", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f16d057f8610ce4e1d665f426322e8c41fb83467", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d265a639bb791baf1bac6ed3c3e851ebb2fed95d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "642fde1405d8be917678a6ef4736503089669ea3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6f3af341fb4b448a03b82b1d943df800ecacb0b8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "dac0e3ebb7b2004a1ed444ef228d44c79d5ba74a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9a2df3198ce5e9e6de4b21eb5cc57ad88b21d4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9bc19fc502b1b816003dd2d1224e52e92d0a623e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "35f1b5759f19230333560056f2cd26c515e34ed3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ebd1f5c251b24298cbf4d7a97428e7d54b1194a3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19a6f1b8daa70f6b54fdffd93b93484fd836e5b2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df19b8c9df9ca02c9d8f5c141a9dd0a81fb5e49d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "46656ccbd49b565785d4052c09b3cecd4bfc8e03", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59f3f907d1e1780c345357fdb33fbdf6f67577dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3fcc86df64840352479023ea27151da970090d09", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "55aa61c00c666ca67ba1a01a91e95b51d15bfdf8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "4f71ad5510f53d70cae32e94b220709a9c0d80a3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f32d0cab8083b0c53dced2f468abc2a29b43b8ab", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "093d721348ed704e9a76bb891e37507c6a1122b6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "510c7114e757747d7761b8ad586e4f7c958183d2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b8ef6f258d151f7e590a91de314d2d6c50c05e3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97037b1ae6737ab91721d378d530d79f65118568", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "806cfbb973326c71487aba3876034d0d561e0a27", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d1b62da86c553a13a4aa6f566ca9dbfff156b7c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aea237f9caa42f270762af9825c78ac4f8cd74c9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "33582cc654c89cf6e584e081d7e5bd710ff075b1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0cbceef00c744475a42b21d9de8feae93d995b38", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "9275bd67f5efbc682e431488906a37013b01e265", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "aa9ffc54b7d06d24c6a30fb52c92e9676052b419", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "a9aa587a6b3a46ba3b7e2812194fd2831959ac75", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe2d335b41c432f26899f2362c8ab88e59a72e1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b32cbeb1d5d8160c811893dc59f51b80a6ac2400", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "53626a17aca93f7a25944d42be00d7d5a0747a92", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "abfd07a147179956149021724e60e3157333f5fd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ce1cf304aa7c985218c27571edb15775506dc5d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ce67ecc032cd31c7ddca402c42af68222e6316ad", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "08d625e452905c3ae81702168eaebeb0ae1c2f37", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7a57fdb03c52a1d00ad57143a0339d9aabae5253", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "2b57084c7ebdde966a43cb045be3a042eede3431", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a401ac6d9c12544c724365ac5e31f2d6174323d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6ca865a0d1285b4fd7f3e92281b713cb9c26e8a7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f8f40a30150bc944f96f07c98064ef2fb0b73044", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e42cdec827d2bf575e0686a7d9de703b944c54ac", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8c8a75d7dc2950a1aece1b8246f32e085774af83", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2e815beb6f3b3295b58c937867c1a15501174a4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e78da3423a3460ef40da4cfd84c1769939caf414", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5d4b654fbe5d09e6e52aa781b5c787366e1aebd6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f59471e38eefc7aa3d8361c023d20a17ed0730fb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ba1a6395c338cc82d7b1368903d72dce3853a6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "827704d8296d96372ed713377054b9cac099539e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5becde8434720749d0e0af01f72ede07433890a0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "78f3645467177d2fc9217635a19340ce0176ecb2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "70ffd1263ce9cc1017aa0f8d198957ddad024a5f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f44df82f6bf34005d4c6b10b8c434deeb8bd4f58", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "14636945cd0600abc201976df0744b46777a8991", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e3481bd99973eac0ed90771260a4dd58ec0dc9aa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7979b33f2ec6f3d5b1f981ee32984eae161be65f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "128890e95fffe15910bd0d240b725d3d6c6e71a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9927addc5e51bf771637f03d4d8cc5a346b4f44c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9c2d88436c2349b4be253a600a1f50401fb185a7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d97c0caefd07f05369bc61d6648a4c683e522ab8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d645b00a8e0fe288faeac65e813f622a7b1f322b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0761b768581d1247129d16deb43de396355732a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fce70d53c9d06fae4679cffa2083656924ae7924", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "1db02704d0ea6371c14a2247252cb7218a7acd6f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "040400cb8e65ce528d42e3d201fb022d9645e2b1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3aab581158846fdf8a01dc4b1604535e1897ec1d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dc46119ece681d4e5bdc84082f3aff5a33d30cd8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c10b9abfc1ac56909831ce7e74d74c17577bfa82", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a628628c70fe3ca9ca226b61c98d1c1100af39b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d99924c0cd4b5c1c538ecf300dd6f88d77d82f1b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f0535b3efa5e18dffdf3fbcee3994abfee6daf2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7c9b327fc533a33f266b76b19d9ccdb796dc74b7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5f64762e5561c8a9e93c9da9b514e98e7484b4e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3712124602836ece0a9e835d9463fd0405e1407b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b9c7a85046ff2ecf897572634eec9b3805d517ec", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "473bf676401ad11d945c509bd0c253b4d60584b9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1f0998e05109765a63a23962caf7b82d571298cc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5acc191439850bc4e4835ddd90ea5c4cef175dcb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "47faaeb14152e60a950e9302d86112aa5b57a109", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "36d3a0dc41556fec7a946fe7ca52b2ba17d1bac1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ae83fea09067ec9e18e771c37a5124b97d9f616", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0627f62d112cfe03f5bc5a9fea137e76da83bfe2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b9dc3821d7e474045164b0fbbd1424c150771fc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9e5881a38fb21b644986fffc4a67cbf9b0698622", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "10cc5fc94c2cd2db14d306925d24f9895a377443", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "4255dd28fbb9566b635cac7170b44d0e47647c18", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "ff77b89f6345a8954495c4290dd66db11d7fc4f1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "a3daf2eaa6990c2d5912d5cfe23422478a84c71f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0fbef5e81cd16db61b8202f50e3043421947df14", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "72922b82804d27d002a21244866bdc63a70fce0d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e2757c7dee24aa699c55962975a003b3927259b3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "afca6419401de08ec8b85922477ba0978da0215d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "654d7db49d8077f080997307a54fe40f7b01c956", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7db57b9eb5e6ab4d9f6f30b3ae5f6e8430fdc3dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a75b5ab64c33da921461311c4647c3bbb2352a30", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8bcedef6194970e8cbb017de67058895a4aea78", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "045b16599d916ed86651f9cbb7d25bae512c86d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "99639865d65c204f34fd712cb7d3f1b99d11bb42", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e26742256371eab228635b6b6270f5f62e567987", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "885918f70231a93b1b71d873b0184511a95eaeaf", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1585fe59283074d565e46691d487adc593f3a77d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "af6916ad3ce0b1546cf940a7889dbb87e0a3ee4d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3f0a46b7f9a2e815a13cbe3e03d1a854f2070096", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d2f26bf4653c7c090f87b1285e640dc1f0de7d37", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8bc3567461ded2e0fe2ef8220f150a205f729a95", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5f108493d8b3719f348acade168a86dea0aa7570", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7f26c889ebfc2429d6ab3a49da4f1dddeabb303c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cf04e6f4e9d3f904df4a743e1cf017f70b1744f7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "27b5324009503a97c9a79df57c1f51fe35ed2d81", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "cc590642dbbf1ac80eb21178cfe3336ff73a4f64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fd546de64311f3a7276384ad1b090a3d4ad0a2b9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6e1a64df10fed04f32257c0eeb228763caab2220", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0cf161efac428d13682601c140214741e0646462", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "49d1e146257306215a28c69e4b4ab16619166115", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "804f1109a8ee2277551cbb8bfbf00cc47e05faad", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d659628ac21393432c23525131a0277fc01a99dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "423585c2e6bdf570747d6ea0b4c39bc5aac60bd1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "33e66af1a92f639c427d46f88d31bac7293ac220", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3a9e31cfa64ce6ba6aa374722bd8568ee7c6c8ba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "901b5d40ffef7f7f967a2a2075c1197114415698", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "21ddc9500d45a2077042204a57b7e179f19328fe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "29236d836142172d5b64c8a68d3a2f0ccb897924", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "15b674f99e54bd4e439b0b59c376f4a7c192b5a1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "2113324ff310d75a4a97c7a19c9ad9635c808305", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "821438aadca41a9003bc3f30558c180b22868bcd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "84d2a633d458c17760014edbfe7911aef03b0962", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a235bb40f00542bb4f31425efd5bb320acc62c98", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5b1d02843a072d2a2b3edba549d7295ca0256e28", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24083d902b1a8d4f628345584528481513a3d6bc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba891548d3d9da3d92b07fe137d121e5171a752f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b8d3cd9e0220549821daf0878f9e83165b9e278c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "168b771ca8e5753b77bee7a0c8060abea29d1cfb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a546ce08d20a0e105a18314c0c8cad561d5612a1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f63d0427bc5f962f1e15ccd95fa43b98ea919156", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6a376ac1a44f5f0503f42f7a8cc47ba957ec73a2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "267e49a25bb6ccfaf4012eab5dd7222a40d0049f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "7ff78c463bc5201e39da3e2d59793937cf9dd61c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2217af463c0d6e53e8a0d85aa5dcf23742677b9c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6a49d7acc18a69344b97edd762c475269f727eb3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f60cb2671b4cc932cd15dd7163a4ce6d3f02e1db", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0c69edf6601e8d1f9e3e82a2a0ca33266031ad39", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "40a70d296217b741d30ac18b9e9ea2845de0d405", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6030e8c318ecba9d1c6f0ad3427d200cf9df1147", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e072653171e0db6790a69f6d874d039303688227", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daf4923ab01224a8e283627782bb4cca539c2863", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3177dd4b86b426d4625f9c87020a4a8ee373885b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e8f23291cd4fff12d22ec443db3067fdcce360ba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "94613696fce40fa0b3deee8aacc8a6d757a0725a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4fb1c4f38b69cb19f8ea35274977b0083b05b9d6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ba798e65d7904578c84d648a7248480088d4d2e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "093afed531bc180351f3373d1a6f745b2003881a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "216e34d5d831eb16c303585cdf6951b105c36c11", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c835d2cd1b181524c6cd429187fc2b6d9884a48a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "deebeb8cc0533302ca48a3ffac8200f37bfaecd1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "39f83d46d15f94960b08200f8d6b7acfbe611040", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d77ae13eb3da2fd33955f1e980b2618440cf0d97", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cc21e686adee03fb8e38820d1be346b614645e3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ed3004d98509f77987da266a6c66247f12b0f0b2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "0097bc26cc780da13eecdb2a4e2e5e6aec593145", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "b624db88004355fc40da04a2de16d0492fac8917", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "c6997259966330a6558d05d59be7611c149e841c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7adc61fce405582e52ad70383c9aebe785890150", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a26bd24b77cd16fc7bd7dabfa35796b8ece33eb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33da08feae68f95451f1009def1ca516dc4d4835", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d5746b1d04e1075dc330bf93b7ef4bb35035344", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "60b5505110646c1bfe7a53e0d2c47e27c449f5c4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d99145c70aee0418c26120580b4ef70fd39ae9f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "caccc802083a7e965022e8a3ffbe187c3c293875", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "44104895b363699de2ba4328c52b74f86cf3dd71", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e936b6931f20ad58461b3baa93dee2a6078a0513", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "3b2552806acbbadf4db944b280e6db9c8c1e4e06", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c1c260a17c08fdd2f29446f406a339e6154c510f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b286e3ff478c822b6617a73d63cc35936581588f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cdbfcfe152487305ae195a897df4c3c64305d890", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8d45dccc0318595afa007d15a97e8fc73eadbf5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "364a3737702907843ad0a0e7a78dbff445b66b9c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e464bcf3cfa9904bce229c31b7e8407d7a4c9ac0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d" -} \ No newline at end of file +{ + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "57ea2b45f0800549366e393578bc563ced54e482", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "59a5c2f2ef0e9ea6cbb0f3ed79989be1a48ed902", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "535ad0a1b6ad6424f0c387aec893f337cb155922", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2927fb6b1ac59575cb81a7a6cc15d82ddddcc213", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e1b5a70cc2d45326321ee394bdbcdaf4dddd229", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8c042378d66bf5e2cc75e9e048667df2e1527bea", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3dfacaa40acd7e115d8cec2539d85a882a2faf45", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "608a34d5b090b3a7e5427fc2cae2712ee03a89ef", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "83eada08183b7c12c657416a51184faca17e8da6", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e4b88843f108a188e40edff932dca0eb247e2374", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2ebf8c8c7965793f11dcd77c3456943e7cf42910", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ea891809d81dfb5603688c89089ec8fc7fbbf224", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5483d333d6df4bb545ea4ec298960aefd6a22515", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9a46f4c516b393fdc7d6b96548823ea7ff7a5264", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b7298c6a9f95b798a03eeb189e1b882d51a6e827", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b04316bd7b32181f26632dcc7dfae02609f3bc0b", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "39ca724b311497972c75692b813de9134dc3a503", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "e6c7f7a18b3190c6639972b385bd73fbd662ac8a", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "23e38109b4a04a9fcd5d9c558530d227be44a459", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f7a6314fd0c22788e8b48f56e658c596d01145c2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "54b8c9a4e1c72a9bb422e9b33fd64946747f83a2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b5d16b7c9310547d008ac1eddc9e36d51e496589", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "53f47f92744d85567f5f6de95dd01dbfd43ca1b3", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8fca927b1422fd660ca13d6cedfe3e7b9367f403", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "18f1eeb9c25fd76d9d21636c27602dbab6d87df5", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "21c36de0517cc6ddaa14300aa8badc6ac2010592", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17fd64e1caf61c1a09aed41eefabc5ff8bd971ac", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "33e2d456cb6b1f2f18f9560d8e81331e79c2f26f", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "18a27aabb717bf0a417ccbb352f6269a407a4433", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "70a99146e8049590d47a8ef655fa467b40cbe1b8", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f0a5fedaafb3d6dfe0568e4c3a3dbc00b10a5915", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0cc6765922a9e537698ea11ce227580ac670467f", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1d416380d59546a9d02f9a1fe1421e292a52b8b2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "05f3cb522a6a1b1888b1c9866eff9b2f8d0aad3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b2fa9e1bef386c1518bd21fb78d63fd740a62fe7", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7272118fb1a06f23dc29d78f647f544a3a34cfa8", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5867f5468a2716d37986af1aec44f6949da3a421", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "436c7237e3431764b9d796efe1384357edcd17fb", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cbcabecdb611d56e1541781053dc11ca06b3f3e6", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3eee1d52d4a1650ece3120dcd134c7f502531efb", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e08c93fa09d85e1aecaada86dfcb41eb44ab132", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "ea6d2a1d3466f724f6bc06467ec9a914ce683214", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "abbca34a138f557c424731ae1a61d63addcd5a56", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a44f957fb1146766b45bfc435aed9f062e3928d2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "64421655ef11bbe25e418651c0a3f61fe5d8c706", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3b78ed2c2f9ed9beb3f03b153f32f5e8a92c12ce", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "096647801389f1756264d8bc78377931284bae4c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1293c69641859da72886a8fcfebc825557594832", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "50b1cc28d0f3a46c0925f46b2eceaaac8fdb0bcd", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "430b06630ae55489534fd84bf4df31eaa4fefe29", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "36b7946c2bcc0eb248d077e8b6738e8182f268e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "36ca62314e7cc3f8b550916f861418f0af228707", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7fbb9df6c4b1d2c14dc09422a6baed0b5ca0b1d3", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cdbb56f35de7504a85acc881f95aa16c60da50b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b549e96d62ea594892ed6c5436655754e3c8d954", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "888786cf3a09ef051a51d4731f7af5f6ff0e3b51", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7dc579fce58f9b1281a6efb47dd89e3c43a4b04b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "8f32eeffb8b53809fe56e60ff16a9144ec13271c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ddf1d070f28b20a7e294c1d4846ea7eee071b95d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b2e0bca49ab8b9fae5d4077b5ce006512a14c64b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b1d22edd6d29df091232126ef64f9ef7c433a847", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0f2a73b5013b846469ebf922e76f5dc26fc1f2a2", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d61e92afd98d27279efab281f74a227e3eb2d25", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "39fbace779ef4dfe3a24807f04e3c97d47bcfcf6", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2c0401d3b38f3cc841b66b2804835a34930b8680", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "74eb933846b9216cd079a460a3dfa24b432bf7fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "74528ce9c06b963334cea153c5e9db030066125c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e36e105501442404b56e71611c5a80b9f4a57a2c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "29c4876840d0e92208c7f733ace3a5d26e76fa12", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2dbc7a6f5a1af73abe25995c9a12a48499daff7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f4ff0836ed3aee1412199ddbf4d98c6ad38a444b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "20227792b0faa22e1bed4f0ba0698b787291be4a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "03477cdbd5cc2fe842c244a8ef46196dc155da40", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1927ea2d550713e7ba8c464540de2f9c1585aef5", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d30c426027f9633f21021ff99727eb38dd735559", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b0b3b19907ea8e8f2fea32e2e4ef799b37c0c70d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "70bb704d4f2353f10a6bf7afaaf1e94caf09c08a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c629c3fca2789230d1fa066dbe7bfd8749133202", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "90dbadf90c5704b0ffce0f1bf6056cc0b9a7aaf7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e7b656f74f6902fa0c3b1d15c4709704e5dd8a00", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "43f0de931135c5af6bb67f1d18fc6921a03dd09d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0faf0dee8d110da9e98f5199dfbe89c467bb2fef", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "961039f332dabb61c2c7b66f0c56c3fbb08047a8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9ad720c2338173629f76310430cedb3bae8d4e78", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ebb791e1ce38e15704137f75fab2b53b29bcb482", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fef73797af7b1239f0aa00d52eff0c2ec8790c0f", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "95170cc93e781912a0d2b1957973a541f6dab74a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0535437960cc8b1ff08eb060cd81cd2d57928cf8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d345d1e0da3781841242247d887b64989c8b2aae", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a9dbaa127c090f2cb67611a44ca256cb1497ec12", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c1610cdc743e5d30a39c690106b2a9a8a3be1289", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ff5a69d90505a5d42505c55f4b3323beb871a58c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4a86d0d8c2e53bdbb75e3632efe74d6d79a007b8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b98c9db4e97837c0de1eaac97200d4689e232f26", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6062861ebd77af88ec2fc950db0e8508ddcd8c8c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "966babf23f06514dfedc4b24751a32799b4f2d35", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4f9fdcb1be0ed9183ec13155cf8daabb73bc9a46", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e7fe2b4678941a2092239f5586672857b39c9e7e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "01b49edce49e492e2c9d46b61b03e9d8ee550019", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e9c714d5f2ba4ebb203d8245ab033a32afd264bf", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9bcf879e82ddcf050430ab62e32c86f92ecfb4c4", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5658835f1f9f8e6ad4addd4cd6ffc7bbae9b4fcc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3f408ce9a702c0792e10d1e4715d95f37593c13c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e0580f9c4d6fb3e14ed34053d7da25dd85878ebd", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d3d1ae935c50b54c858a0b6be0bc566fd50291c1", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0a9d57d514dcc325fb479545812e22159abcccf9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b34104a26159d4895ed3054dede2b7bf72f0887d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d2b7d807c0c50911b0eaba2ce31cc65b64309ea6", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9cb8db453ad3521268919e7734673da1e72e25b", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "860f3fcd60d6773e6fe3001a5a02ce68d265072a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5a98a81a53b139b8dd29e2cd9e047592eaec9b95", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "129b40cee67c61a2d709169f25733e5573059de9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bf96ea7fccfea6b616cf90af9183cbe6e48f236d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1bf70681a4880756f72db4a5b356596d6dbd8e1a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c0b447d923a75f3a5b17d02c2b936fdc6f07d121", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "09a601c78cc07280b92fed9b3ce275dee4c051a9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "292b7f595675c9b2202badbdfc41b11e42479d9c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "832f175f67f786ea1dd3d2d2ae9352469ebb7a15", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c30b558102f25c2c21915d5b72e407e547fbf634", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "18e86ab3e93d8a61b3dad80377e3de45e62aa4af", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "cd6b0f2098daa66589a74c7092bebe214ba1cf92", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "ccecb290470dabc947d136090b07383396f4ac3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f7b26da71ced9d8a90fdad88eaede591be581817", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52e2747457d0966d8c2c8ad6cf68be37b60d49bc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7ae3e734baa9560540421e604b037698bb2e4b5c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "024d964bc0aace504baeb00148c428c67fd50313", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a6ef1a520000f9cb78dff670d42203f62081ce4e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "db5455f31adde419a4b5a48b36fccd87d1486d0d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1a08f3c9a3b09d2ee96aacf4958b98a2f14074e5", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "bcae6c775f75de8a64eb89537ecc9dc3c494b880", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "3e6a3d03dc142272a944e25f6fd4c47d5bc0f667", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b35e7b15b94c8d9076232741fd872f9cd1e434fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f9da99240bef4a807f06d8ad1e7c66462a79f64b", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fdaf87638ed33cc1108d37238035817ed9bb41d7", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d362ad00fa387420bcdb3f7e088beef0fb6daf3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c66410ae48a2073a729e62ba0bcadba59a96151d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "dc674dda2f449370bf3d28d5528c1b7d98dab484", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d746128cb11fc730754f0b3f009344c39406bf68", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ce37b540eeb5fe8804eab42cdbbcfdd089402850", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4eccb3e142e82a0ee52139843807458a81f28b02", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e405081094c863bc5d02823e7ca82d021356f39a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "58bb0036ae232b5cb4b07375cba60ab2d4a15819", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "794b26c21e336d9bc2e306651f02ac7ced93ed9e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "65ea0a6c9ea796af23ff2a906cd80a25d0aaa9dd", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a7650855f7af4f26ccbe520858958ccea15f277d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "eb72318c099b9058111f31b646723779033f8159", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "4049890e81422504030954e686a1524d1c04725f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "398f19c230fe17ffc4714eaba6d6a379224d688c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bd14d7c5a7051a99ed6a32a2fd62b8fb7843d0ef", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0f11ca6b54172db0caeba830c30f92d95ba73250", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bbab6f2364d64156ff5e855ddbae0813744c2ab7", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "acfae08dccadc16ddf8d995adf3d1b24c8a17aa3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a1ecbdc651d549ba22fab2c71cf2f5d745fd6fa5", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f44fce4545ba0525a5511b8bb52027046ac120fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ccfef3d54307858444310ae9609e8ad9576eccaa", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4aab15b1359f52a5987c4f7aa3a31d80aa86d586", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "1b424f24f990c688a6bfe2864f6623c5a6aa1cde", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f285128a4b44c86bad4b265474b75d4ad6759945", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "efab62ec84449ab8b0b37d1ddc9f0bb0f86c82e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "58a64e1974deb7186ac455b81acfdb58f441499a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "15198fe0f81f2f7028e57fc9d1694e3a755ff462", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "2ed30caa5edd75a48924737e27fcd6675850758d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e4f790a1e7c55f936fb5ae5c9b0ed46cb79278f2", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "099e80b05f6a430e2a57a79f106f25729999a458", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8590f2fd9c13c54dcb75aaa4e883cef206dd45e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2afbf8bbf1b31f8493adac0b959c3b7e82384288", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24e10751c781f3eb9c13272f1fdd10fe00b798d3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "944aa9c5c3c64d8be09e3e167386c385501bf579", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "301aa475ffd2a359b384e7c8019bb12eb709c8f3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd8f9e6691441752971e1440d9185d8ddf4797a8", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "962aec26f428a66ca746c2cf2b707df0922c8dd6", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "d8b4e6c2b3dd6a88fbefd005de25dfc99859222f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ccf55934dc02cbab58d60c490f72f7f1eecd7710", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a06d9137468d13be52f9c2ee88ac2134e20064e3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5dad88b9805cce5c9a5ca0a17ddb8d9a9b7d9423", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4a88675c1a92019eaadc69231c1d3e2227bbb32c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bba458ce0d86a5bb3011b388484dae8a65b1243e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "abd94b2bb4ea8a5ad15a00ba8749c4353fa0f08c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b0222adac2d0063531492033ff41cedf81c469dc", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7884fde1d460016bb03ce6d84d9aaf9ec59e8279", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3cb83eb4a131cc2759db5295309ceeb5e6d8a074", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2adb1367b00cdb8d17cd9d57b40a56560bc11a99", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "8302401d1d0fa6b35d79b0f03076bd51f0b6d03b", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "127e79e3173a722cd995d54b513419095a23ed2f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "69aaa4c7f9c3a231d9a13e1296eb2142fed9e259", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7de637dacd0f632961e4543f15ccc9e538f99bd0", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a282bb9bec8de7a3ac8ea223a3696a5380c71d2e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "419ac886a65fb3f9e5c13b35cb2fc499e89377a7", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b292991859338887faa3706058443fdbd32d5d1a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5cc1caaa3ddb128a87a91f50eef6972061f5354e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1e8c8c4f8e48bfc5c3ffc5fcf4f5f265ceb0c96b", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e4afd4b07d3f9f0c96613dc8bb5dcdbd5f40129d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c4ac8f1d419d157f83b4fcd7d5a199bcf46e77af", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd99f8e1af3188d0343044ceb96944ae05fecf2b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e1e99eba4ab7d0b47665effa72fa73a6505983b7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4a97ed7ea6c3103aaa4ac47f579024d4828d0fa5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "80f99e4ae6a36655a53a8dad288415539f928cc0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0259798f682a6db09ce9f43a00effda1879de914", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fe2ac8cde46acd052811caffc996ddfd90dfa8e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d304755bd482a8c27ad62c7a0f2a191aa9b78bb4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e4c048310816474fd12b44888dfc540d88e7b031", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "038895ef673abbdc7ea2361d1b07dfb29a23126a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c777c03fb12d62f3dc1a006c4f66b7ea7012e8e1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2c55e028a61d9778e56eb389f4ef292bfc6de251", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ffa1778bbd07fd7be7afefed61ab9d5007a3249c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e90539eb82f598e48f454d6edc62babb3f091fab", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "78b3c5ad6d1e38d3a9493372c98997bd03be8041", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9b570252647ce11c5bfe0407046d7f1509e8dc13", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f78de19859710b5175ddb9758a41254086b97006", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "44093e98a8084a74c303ddb718c5c05bd0ae3c35", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ea81f7d68b521bb0fe213b9ad267e3d074c89d13", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fcc4d66ae287fe3b3b0bd8177529002da5fbc748", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "98e35f87a99cd5b33477ecd757d79ecd1d2230c4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "edaafa1cad1d27eddd7b313145c7a8ac0a6b4fbb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "63f64ef0ea150897a39d2b10214fbacd18888c03", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e643265ac5792f3d7f51cdee12f842198b774f9f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "89f6324ab8dc8bd11df551ed4dd5731fe9d07a64", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e57474896c6e0be370b2f4645950442d4d14a715", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3d557acffa627a49f4d1fc2242659fd4d1f85503", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1ecbceec1c6e3a8f0ce6ad3d27f91ebf40021276", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "206dfb66f5110ebd1cc301f4b6cf2c716ab63c7b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f9a96140779d659c469c377a02008842a77b47c6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "29b48b5d62f4d0db2ff141a35b45f20370a24c0a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "34f14517fe3d5bcbd010da9b6c4088d867534310", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ec28b76e80dba94a2a1bddeb17d2d919143bacc2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d85a9cc97712a0a6013ad9a6c468e1c2a6bcf74f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "621c28acb5acfb840d5b15fe3a376778269d958d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "76ea607c09cd6ca6e91375b9ec6afb3df29f7879", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5c9706e217e5f95ce08bc1a1cefcf257f1b92c40", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "6554623d984ff4f3536af5a93bbf339be7e251f2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "10e8cecdbe4aedc96633fa95c85c8261fedbaec4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dd8bfa38156867c38b33a66b9bee74758fa638e1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "312b219fa3330710664de99ce44b2bf491b10a8a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1eb8741ef9477fdc3d01f36dd908e73ecd190a9f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3005db0032ad55d6f1b59b38724ca070ab2e82bc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3c439735ea0a02f6e8fa89f5d9d9db9c4ab7a5d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "86d12a8290d6254ad5b79bedf9584598ab5bf703", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "7b7c72a558ff52d9511dfed68f2bc35055dad21e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "65c627e9d8d81cdd896b8056fe776c9c52cb4fb1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f9cf93d6f0ee068ac6fe113e44015a31ab1b4cf3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "debe21ba7af574906ef8684f913040fa5f5af12f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "5cc1cc3e15f780acf592252a8048eb77420cc749", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "520aed56b41d6a18f2d08bbdb8542b0bf74d336d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "30f9d4f49b85ae83929222dbf76f1a46bb0e12fd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "119de37307da6c72bd4820533ad3ace7ae708b97", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "de7895fa131e1640c9ebfd9129d4f0bc96485df0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dfa100a124d44e9fe0cf346fdedfd1824dcf8676", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ffff4e259ce9df973f25fdf6a478ab94b3d99097", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3de730ed0c7db986f668cfac012547430ea0c95", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "44a646eca14d0daee70e479228a8610fb5f4e3b4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f685bb31c9af585f6af60f1f00d517011e10a425", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1fb355e91abff098ef6c5b53a78c550c37094e05", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0656ffa3d45c334643bf0500012971cf44017a91", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1321f359e0733a9a0d3d1f9a420be164bd6d62b7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d5d6bdfa6e6886f952ac51922d764d87430bbbfb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "53bfb36ae2e336524c06f7a5496640067c6da9de", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7747ef5cfd64de76a273a8a545706e6d0e421172", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0d55ce188940900cefacccb62eb0e4c485435042", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "661592c93dfdb328c8cf6e257271d64ae4213f71", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "052bdada9c29fafe9073fae58b06129ae401f1c2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d076ceb088a8c86598f5de6b2fd60d5064ecfc5a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "fdf8c4ad67d85f418961678b40715f93d86e80da", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ec3ff37ed5198fb6462d9015b00b80b2a5eafa70", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a8428c7f5a978dc9d4015a9f8bff34ac2d298ae2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "40d794a0df3a8276fcfe14b721413050620a8421", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "bcf7e555c33b286ff0a63092b792f20556c7953f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "047e2acaa985ff01340d2a31cd22824af655a875", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b00afab23f4c6d3539feb087a9836d6ca0dff564", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1defa8927294c15dc9afa3a515c2f8ae54055dee", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d71c3f0e5b3af307cf9d21b6fce4fb3697345838", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a05359224d6618828d1dd73f223da76575f5a3fc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "7b72b7c3dc100000ae349bbcdc2a65a4848cead9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a2de88fac1bcb6610d948c4beffaef893c71ae84", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "126077185d0cd8f1c9bb6f63878d31ae077dda06", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8ad943422594a0038d63aa55ff13000b9c876382", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f3264598d9e0c91b72de9475b19c1c59344e2ca2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "6d80c5c1f1fa3fc3279f66ded577d3562089e166", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2cde57ab6b3f3d65e32a439a21053deaa1f10837", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "19ece94291d7b3544a80ba90bb64ac51c12ed974", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8d9d9304bf34a754b2e74892186faf8cbc9d1063", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e5cd3d18a96495df6a80b9b8c000fee3122528de", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cf4203c688cd86c7968d25030874a39c28356fd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bd0f80624119f3eeb20db24deed59a84779fdbe3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "c29e9d4e7ce05ddc357b09abcc3b6be8f0ed0dc8", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "797df0afdd69f0bc7d10529ae4fbbcff318af607", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9fa4310ac6de31e856c47c31d5ba4da2fa68d05e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24f1773c9c46489a2d51605ebbc3708f8b38c13e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d6887f6ee340b0739ea4894fd2b71b3e9d8b35e2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e6d27115ecf07dde265fc2a2d282cf2b1a48db96", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a8a7361d9d7557ed3c86a1fcbc442e041882591e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17a4e745f46f32d8551efa9d6867078ade588159", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dbc2f136f452602a193a62c0eb6932a1e7b77387", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1aa4f244340bacd6fcf09ecd5842f999bec98dda", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c61db6e13d09f4dadf48b874c3b326623f147cc0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c18378a62811d3cb95d32bffa2c85119ca4d6c48", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9af204c3e5ada5fab29019f265f66199529c2fe5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d92675de7bca54b0185acec693dd6bd837e031e2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "04fe8d33c89dc796092edb9f569c8a2de08f838c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "71bf8ea72093d0512f2f3afc46c453aee31edfc1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d769382d172405517908bd5d1fc6ae1c61ab7bf7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ee0e680b040c42b40e539c142761f2dbbc4440d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "35187ed660f8e1488187a7ce55414b26dfa3248a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7f31813bdf11e19637ceeefa216292698c405b4d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95f66deda7f3173195381e48ae72820e97e9d887", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "751c26044f66e2f5f1ecb81ddbb8b161d4ddbf55", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1d0277ab05274d801b7ab20b9e5205cad4a6646d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "97313a72f873d6b8e5a00af0e198d8bf97baa0d2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "99841f88d608256763805c9119a804a41f8afe07", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a4863eefadef8c596c845ffb5cc60ea5fc7dc7a6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "de258fdd3820559f76e93ee8841f7e039b9ec1d9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8f1a5610d793c02fc10084499fb8a3807b5405bf", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "97a8abd14b005a2f6b343bf66add034e62a0bdec", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "db4c7d03918c0afe786396416f4610569aec2df2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "09a096a32e8b5c257f19c03cb817d5166fd006d1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "559ce3db2598994fda022550ed137feea22edc9c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c1e4129552c830e9a03b42beffeec0a08420a9ca", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b3332b20339d246ef5cb3f107a8dd57a288661bd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5a1a88f4110c12ed0885b8b90ba053ecb02b67a0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4f2513c54de89b04b070a74e8f5775ebb83f7c54", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b1ada4e018c08c991b822628f330bf4c81d68f64", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6e9f53f373993b50d4917f1bc6a262ddedf22972", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2c3b4768d00500a8a3c876956617d1329591f5a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6e76ab3bb6e4e13db97f95015d4cffa1e557daac", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d4adb7174c322152c932e6b962092f77aaca5db4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9567dbe15aa1710cb40ff2f5fab10eb9c111a62", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "653ca3c89f8159e3e41d39b4f2f4cbe629e430ba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9a6212de07083e561a4cb9eb943576e0b800b144", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "69dd4b59f1235bdf73db9d09b8246e3f46a5d4d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ecd784c9ee1e36e3c03262232a8094efa96b14d1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a50749ae3aebb5abf7a01d1295ea68c3c8488f98", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ef55737414c49d0517370d1905aeb6f469351b08", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dd36c46c64e535104fd33feadeed8306e7a4f47e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f0ca3015a22c23be6ce5b52107b7c2e1cc73fc48", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "140c8545768eb62fe9c811bff4ccbb939b8e7216", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a6939d50eb4483f8ca64509c22c2b6eeccdc5f52", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "eaba6980e5771530cdc96a58fcc1b5eb80e2f387", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d27da6c1a8e8ec85ffd743fb1412a30af5f372e9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4bb251cc62073eaa93207c66e8723400be7b88aa", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "20e703fdd8cba63978795b82d4df1ecde65dce5c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e14171e776c7e63771de4c28de515465aeaa864c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ac1aef15e13cfc4ea49e1cd7176b65fe9fce5fa2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7701743adb8410f60340488a231ee06036e88e32", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6b4075bb4075e329fb0a72b93c5a652f75f3a72a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca05b8c14d3e32327b566d79603d372e2d90de0c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7db069095dfec4f16294878696b1934e8eaa7a54", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3da98f720c3570f4bb186aedc377489b1162f250", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1fc07f1e9b096d0a661e11a965c4e148cd11b1e0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "08e9b78fa03ceee74dc7be70d52eadcd037d75d6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b9e08b9cc57e2dedc61900190503f49006005411", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b102606a9f2df2fcec988f6455dd07c9274e8a26", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f1b068af9d7d24ac1051e164bba50113eee26995", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b474cc0202a1c9176a3fb392470c7bc60e513eba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c0007caf9dc5050bd9b588f65ecbe6f8816c5666", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f58b021179a1f08fb2040181b3360e89117cb3d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bae421c9c0866eee2820a28a9800a81834a27261", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a065fdeb4ec4296d455a0c2efdfed367b5e19300", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5b23691db3dd6474b6dd14ebdd7c22f06c475a12", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "86a9dc6f28ab73eba4be9f9e59caca50e488c5dd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "babefd5799ecc2ca0511879f2b797b4122e165d4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "79ac9cde375903e7b33fb0079c5333ea7025df30", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b189b8bede8d5f9c7ca8db2a9fe4ba51fcfec7c7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "76d773e216276fbc5a900a572f9c3c6449bfea9b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "af0665686d3695f1fe2d5223ec7f81fd5aac1c71", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "745b239cebdf241ac169b53fd5060fd71344d68d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c5b0bbbe1e013954a5e42d9a14e3a8727f74e736", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "cf017a345d819c6997768512e5a1bc283def137d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f93f9b30382faf57254a09f3adb2b8dcbdf62055", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b6ff0ea1e9b608705f7d73b8f10a44c67c2be48a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c4ac1b013f9a7d6f9bfeb6f685636e9a11691a34", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "232111b3aab3756dd207d5915c7b1be62cf0f658", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7491ed771fbf151c3e12b5d0cbc57b0576d75088", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "aed75bd00627d1c2b4a836741c8c3e84b6fe10ef", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "85e6c00564f063e7bf8d1fdd59a276413ed3430e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "85594c329a03c5f39045630b32a438885265ff05", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c28f7d31047da053236021cb71858adf397a960d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "24784830f953b3b737cbed39530e42a4adc69517", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "99318ff4bbbaf6d39535e27f01bb662401d2dccb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "64db1dac251ec17520d4f28cd56ff87a1cdcc6bf", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ac4a5497fd2285ab80df8f88ad739d6ad6d7faa7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0ffd59db16a300785cd41022e450fa433bdf2173", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0e11aaa2941689ec67fd5d1d43d0e46b5b6df11c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b95225956713411fd2d4be98889f6de4083ccd12", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "80aaf2e0aa9bbc0c8d691dd48ff87d6ea10b4bb3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ba54bfb6aacde7b3cc5bdeae7ebd4009da0bb01e", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "776c63cf38cc05b617b0b471a8a4fa8707662734", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7f8739633f3ec0b99fef194f793852dd4188d365", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7ff51d665d99d94f7c3c484432a79a4f2d209a10", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8386ec476a5569e58d158e81051e1bdd352b7280", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b4fe60e2d74d4a524607c74a6943cc1dd982c680", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b54aa63c72b8d6fcd5a339b89acf635674c11438", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "38371cdb7693d29d3ff2af17e946e453251b1e70", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dc25250bc27decd229b169b1c012964056d042d3", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "35309f3f61d6c0864d9cf2141f79b2bcb4908438", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d0d48a47884a2f7a3e6ed7a6a6662c9d8b98f6b2", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "15def4c04d881a5147a69ee50fce48ba1af11dd7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "954bbe0adfa460bee809f71844be12e690d68f48", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b5d74ce13fdaabdf4bd7c5cbd4964560d36c4716", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a86c47171735543be43333a5efa6eea3d8f6dba5", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "343e98d3fa4d8c89e87c75e3893a14f3f8217a47", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9f1ade6be22c22366e3a32d0658080dd3cb36b59", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "89c841cf0ef0310ce786332692d56abf767281ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "6543962577c32ec443ef62ba00df31031bbcc131", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4c9d782ffd027105733afdf931b338e5fad99860", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "264a8007b746db82eb32c0d961ce280ee30b1215", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "93015f6b3fbf105d31933cb4ec439d7ad76a10da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a5bb1a9eeb251fae664e294bc1dad300c3c40adb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7f8857137645ae8eff5d5cac96f1c2c7c50c5fc1", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8e0205685534e228db453ba105aa26cbc67ef024", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "27e53460573be2f71665649f9d9146a1f87d5228", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e22c7c9253e125cdfed3b700c1507bb796c671da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b67ac669a909328f2d21930b8cbd950db761b7f4", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a0808720f08ba941d95fd2a378718d645041c457", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f3bc8533341435a39651331cc1802c55afca01e7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24900accf9c53a67d52634a72d1feaf43501f200", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "02921479aa4867b425004235c829d965d2c97516", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f4022c5f5f9929dc4b3a83bb476a544f4e0e0abb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3ea75cd4b7506445a45d4ea59668e4a318d2fcc", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "174b388bf627f4494cb0916e68041602501c0ecc", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b3817c3374e14eb0dafa87aa8369de24da90b615", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2ccaa8fa4e74fd89c828f8ab779cb0babad8a71b", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8cddca52359e0c47bf7c65f5956eea06d7d78316", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a1fd29dc4d741eab051f3b88ff0a252b1c058251", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c1f38b86a6211d63b75dc1cbaae0e91e098bf128", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1771b3361349db37f21041ae3ccdbba68990bcd6", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "389224885a3c05282760b5faa684673cdd19ef61", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "71ee3f42d7e61071d318fe711eaaa6b07a44b3f2", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "511fef4511a076f73f7ecb8e76cc8cf75ecaadcb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1c3bb7661dc6f600d21a9e08e294f5751ff46073", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8cc0d3fd0d2ddfb453b0b6e74cbf13b12e62f34d", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a173fdc57f3e89366d1784fe1e80e6cde46a3644", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f0d5bcdb0c5648a3bf5e5f604e5b5e246429f668", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "3002776e921b0eb708e5d9ae02718770a62f6114", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "39d94f462c614fa27ecad1664a78426abd55bb59", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0c876db2ce447b4fb32ad01b645cfd5f2c49337c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e4ce46d39fb302ccf3048b9ce2206bd24125716a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c033dc4598dde235cbb648d54587af26b60f91d5", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b112622c7a71c272b9782b2db4d19a228ce383a4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0690567a63140343ab18269e9003d958f79d3ba0", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fc1f484695bb9a9f844abf16bb222b970a2c1c8", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8d41a8899e6f738837837062df3a76f35054fdc3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0d724e6fd1ca883057f00270a9da32cfe06dcb18", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a53be95d05465e1cd0d52c33742749143648db9b", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c9051c0418743dc9f445a9c5e1cda835344a6085", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f17f8e6941f28e602e5e9696f2a14e360914286e", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28f6f570993c56ca29275be17f2c97e82a4efc68", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "c2e0c9e7fa3793f2b71224e4aee32b22fb8d74ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "dc9500690c5cd3b32ac31a0957ec31a5669eccc8", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4783f41c015b50b8f6ece463c3bf86347c9f3bd4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bb922194c62500eece890af777897793b742724a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c017dd4a6fe3cbeb7ddce43191f4f3c28e0b0812", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4ff7391eaf727956010653fecdfdd484c72312ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "af5d34c083a93d2d2f6bbe03045929f91f9b4c17", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c2db6692ef05b732b2d4f29ef4d58c0c9d06d6b9", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "6af62fb3c2f7e618e8bb12b71055ab9ff02cec8f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2a8a73e7f2ec7f1436871c54329993308b43037a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "98c8fdb9eb6b08cdf6ad8383b656dddd6dce5670", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28cff8ea9488cad522667b526f6b902265b109c3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "3d4a6259279cfa5fa6bb8dafd3491c622149721d", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c22bad9d13271755bff445f62f4886c75b55496c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52a486f827d91279574ea070e2a28f39d75d196f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "4a0155afaccf7224914164545460b1caebdb66fe", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5219331872bf1c037dca508722a33c990272af48", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4d09124f40fe3330493938a216cf627e89dba26b", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "bce865972c2f2505bee68cdd23e0274e74f6a984", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e3e5399599c2190fad2f959ccdbc96d8a5113c49", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0553b15e3e6971fd76ae78afb1542c36df4844a3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "38d5b4bf10affb110cdbab2078e5a376cf5b5193", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a1024832d330aab7cab6008b8929f3e32eb42540", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8ca47e8c97b71e0b7e871a2426e8df98fea8b293", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e3c87d18930120e41de3fed2ac53719d32b9a70d", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9546cbd4daf1319b06cf91f9b7943977a8fd867f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a7f3c4886ca66422066b988afd775866e17505b6", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "54adbe9a6f8874268b8b389a66c54f926a39a23f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b9dc63876b291f7e71e176643c8160c4b10ad815", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0004d0bb2fc578158e72f9635b56e347569e8258", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3e5a36f822d3f6da97d20af6f0c8dd82bfeba270", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "602f151028cf7a42b595d2cce2f0d51aa226b4b7", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "37203d6d06d912ca43d6df489e083c60ef9188cf", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "68fab2202ff3ddc4d23049e25e1757f229d27564", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4f86aa64ed98d7a73bd3197e48bc39b5282fb533", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c5a3b35556bc838db6b848e0cb5194b92c225628", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e2339662a95300260ed39d2ba05b1c58d860d89e", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "15659f6fb463b9e8412032980741e0fdbddfc7c9", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0aee932afe2d41bd25cb595c17609fb89a4f6f20", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "0286d6042ce744ca02efd5f2c653e924e02e3ec5", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8ddb4aa93d06115fe3555a0ddb2d22093b6fe528", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "06fb7cedf0c029e6753f96f40504085ff7dbc40d", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ae22bafc5a6de062c4ccc8c3a30cf651f0879192", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "abc54b9d34db0747b49058ac9ac159d058e42e9f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f3f37b999ab3ac8292b9fd4a028c82a0c5a1aa26", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a189258639a0fd8df4d164e603c8ad7992fd94ff", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8c6ca75d83af0b7cf3128638daf6b5b14115c10f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "76e2c6cc34de7638c77c0be163592329940a954a", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0e7d4c5d023b753cc177b9b1d59bd5b48be86211", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7304eb5cee9784fd343137a30635ee3d503bb097", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e6a67174cd202691ac19f08875421dd7f6a54f6f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c8cd5a9c47f6f6d2ebebf1d920ab30e94b761041", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24cedf6101549d81b826b2d8e21754396eaacc8f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "012bc0ae1cf1aa4525682c9469ea9d681b28e3c0", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca386251af37a49c402deb3d82a5d4b7b76b0a62", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "987c687714a79a8da68531c66fe5a8d16d16360e", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "41bfd3d1619c08269687be39f0d4b77475826866", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "acd0b9404ec3676ffb16fad3225be54bb2461b7d", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8791605baec68b82d22e3b66bc25962869cae665", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3c5b17458071778ac6b6b05f17c538ea9d486b68", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f0a6e821cf48678449a90c657c8d104c96a50edd", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d7825238083654ba7ccae115b60a231a448cf608", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "fb995f3dc40948e7d736ce1a228d6f8cbad7c1c5", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "839f825d0c4329160761246e9bbcd79e42f36f40", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "338ffb18b25ffd670f26384eea23c0fd7fff9814", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "19c72e446691abd0704c282fa87eb92142d91434", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "44f44dd8299b926707f0f8cb074dd49526d28779", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "cf2d4dbe0183d78f58e71691c474dcea2e016f20", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "88a75c23c31ab059298799d14a4a8e56aff53179", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7ca0f2521ff5aa897beaa3355a710d892d040da9", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8284e3c1fcc4748031084464e380fd0be3bb3e8c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "56ebac2dd0ea78d9730e65fb5894867da683417a", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cf4d24760b3811b7b19d74334bace397466323c4", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9866ea8bf8a9108d75949eca6d1411b93bc9f42b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "bc2519a04ef4c9572375c93f9e48ce01c65a6d82", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3f0d8ab99150cfb8c677d86f4b3996699b8c4191", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "baad6123b083b67c73445621e929ef8ffe0e4391", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c27622880eb0ed9d2177e42a8c7e4afce22bf732", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "2551d04d94936f9cc67153a51b92bb224734f675", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "2f2df97533397effeb2e3cb5a04039a47b05360c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4f37c67ebbe5516c3aae066af3c59f36cdbc71fe", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6d26876a784648c073a89005da4c8abc031a227b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "252e0d0b2ddcfdee8828b6b236cf599010cc584f", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5922a45602859ece99a6d70c28b32e6cfe044077", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a435ca92ce08d20bdac5c80956f6657f770ae71c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3af64e4a2279ab2828b69d86ba8046e3900efe50", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dfd1eb200c8d371e545f9eebb274013395a2f19c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "30cc636ce063fed364f5e7eea12256e4b3f3107b", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8043c23d7c1802d14601ca3a6642c65975e4f2f9", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e27edb43f0bbe06d2a3b0a11e75b310a940f9c7c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "46d4bf5278e86612f4b93dbb662d54075e27e09c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "db6b22dbed33100535df6f6c22bee968ce9cd8df", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2949ce5ea8a520f203b3b941438205528e8df793", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b4e0d9f83e780ea747242ad719145ab34a16cb1c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7a28f6a5a63f6e8e7edce73d0a0165182b5432c6", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e30c5c71964a8bc4664451c0ab62cdfb03465ddc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b0648393db6659af674026b5d9b5b0c640069c37", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e6ec0ed73149444b840a2315a6199f50f1e815d8", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "20aa670dc82ba01e109f57dbf4ed51e3fd39dbdd", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3c703bbfd705db7066d83bdcf5c5e68c4bda5798", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "60c1c9ec148e29806930b371255ea515363e97c6", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e7fca60d770a94a567cd2de71f49a3a1795af33", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d2b94ade19d989b2ffd3ce51e3e8a830e501d2cd", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bfcf371aa34f6eda4ec95344aa47875dcae225b1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0c45c5d07f4e120c7ced1c4cdb9c9cdfd5957e10", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b758755c9b8e3020f74a442a313c4ece5f435a46", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "17454f59974671f8bcdce38b0caf25d2147e3898", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ccfdb07646435d9b43d291914a4b3bc568dc459", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7c59c23603a8b9a009ca94fb1f1225190661b3af", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "63b4f88c2405cf433f45cf013026b70ec46a798c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4640241bda32cacf122bd468e70132f9ab4c98fc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "209b6a596af8731c31a57543699038c247225cdc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f689367296fd72e3bca10ab94a86f5aedc1f2912", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b49fcb91f6f57ab031d0e914458c1c1fa741a675", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "29a7f20adeedc35b015e37e3643d1441015a1923", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1bdec72eebd57a21c5840174f182470851596689", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "23ae1c1adb7e71490ac7d1fe3993c8a2b566edbc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2e8de1bd8cb77087dda0377c95226fe2094d3e1e", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b5443b299097c0ccc1810e6f0db7390505bde2a0", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3a3eb5a38b95667a0f2b5cd59b3599a9ca7ae6ed", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "189ace8d04b8b7801978cc49b1530ee423302056", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "128918c3fd96fcf4d1a9cef4c9f13c4a035dbad3", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c92463dde3dbcd09b061f64ade3cafbb6d5e9021", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "baf5685f41161a0f92543c78c334d0a14c4cd114", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cebea162f2ab6b3a8aab272845664453405c270", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "de9f2ca92a9cc93e96fb8022193ab9fb02d6c532", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "cfe9bf722a4611313658b9477f1e7ad2662c7dc8", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e9712da83e6df4f5637997654e0b3b848bb5f257", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e0c8149e34a0f5e52f0076fbbecfedd2b3a591d1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "51cf1adba46d1ee3b597c8e5dc26307a9c03e361", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "c2e0f14d960d7be1e558a43337bccf13ee239028", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "3e3cda1693a67e476721db647e6c360d0074c00f", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0908c35795eb643f950e5b6199b80de74b51a2cf", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "51e8c95a6bf172605e3f878ad3f182edf46e5b0a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9c8c03c113bbe773fcd41c5d2a40326d82f8668e", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ceb26d8a607ea95001f05015b5347caa028b160", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "460b894b06851b88b6b691b5f0b9e29f050a906e", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1d36a77fbb01f461ea0ab8459e400011bc776bb2", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "09fba755565fdf3cb7226bb94686aec716f857db", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "536b15041e5432102fb024b84e813d9602c320a5", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bdb33861d3b25bb5f3da6dd18f7cbb4010e57803", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "dbf0929131b87b3f2b21654002a87f4123daf142", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "aff6c4429dfc7e8b11e30599785f2e06142ce0b3", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e21ac66c75f3170d210432fdb8d6160b17ea5a14", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "e05b76d6a8b01cbe0b08f2a2b75d69c60351266d", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fddffb8c3330cf9b9ad95a1ddbb805b4a558e21", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bdd0289a567096a7b0066260b980b62694a60921", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f8982be7c749f5c6ee3bb0b5b3f4c25832926744", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "41d41c3d7a683cb8feb4cac123a0883024b07eda", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bb288b96b26b63c450c3aa3cf662e909f3b2d619", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "3d9d243414d135208bedd60b4944a9b6ea7c3053", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "17601bf966708b6ec122b18d46ab535bd7fdcf89", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a19acde60178e1cab20cbb6567354075322a4d26", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "532023dd5d1502c2ede815025e77ed09f9af73a4", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c838bd0f1fc445b5e7e22e58c6e569f2412a0ac2", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "593c239ca19ef8c635daeacd21ca37d91597888a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "160552e3c51da477662fc1fb0f18c4b67c9736cd", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "a443516584755ca0b9f4847c893b19c8ccca3cb6", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "161280c670110924a328a5c8cb947e30832e56d9", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1c2e5419003ab1e134af7979773dd213f27a69c0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "bced9aab681423935618aa0d8de9e3bc083885a0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "44f46bbb262632b89b5cf3289c5e589e09a3e4b0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "c10f8b57d8d521a4928c1f38fe421d48840ce47b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b13773d32c0dae1a6d77f0ab9ee56c483abfccb5", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9407aab9ebcc334ace09e859279e953fe2acdd4b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bd4d80b6963266f5ffcba8b0c7623016207beb88", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "116d5d1b497db04ff5a7e2e452ef022aa7b546f4", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8674a126e57aa9d1547882fd2baace8742bdf28a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "16e69bc415e2c24e1fa0817b12a2a885e2ba737d", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f5a8c02b284666ac8741cff63d925b4c3d3fa3b2", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bbb6e1c68380e8445070672c7ac3db6e1e1460c0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67560009d90efb3cb49b2db68c85d016fed6efa4", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "175fdf2b5a5de66f2559564dabefddc213e7a267", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0fee6d4cad93267c3067c4236baf5417aa59ccf6", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "74af599c5f8cd0915352a922b1041a12593299e3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b969dad1a32e08d16ab99a7d276bfa9841803b19", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "811182d5cc6a0cc99fa9f9c7e64923edbe982b21", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "eb03dc7aa7778771bc22f97aa5ffe3d6d2d98c9d", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "53941e23b0e782d80669c6e773dd6566b026b97c", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6e06d3964a19644e0d89ca3ea50635ce1a747bdf", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "de41cb7a9ec3b97c5952d5e197980b753d87efa3", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f1dc35e679eb0c7d7ea0aa55100eb34a5c153545", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "d2c82c4af4acba1ad7ec1863d5acbc728a419168", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e8f7c8a7d06e59692d68caf2b73c11d1fb00c95", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "9e67d2e9cfac06077402e6784440381cd2217b7a", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ff78fedc03fdf6b31cb0054fa4d5e6ab2b73b739", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "59de6d8d7d14871f2d6fe2c17eb0b89811117283", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f175f3ac67ae028d30695a57774a0465716bd829", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "011fec5402cd2d34acb208a12ee46b6db44e91b7", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "26a926e40e6201aceef00cb6c3638ea4b57e1f6d", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3f435007087726731fd144c7395e5912cde77ac4", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f4e171665880358fae519800e2312ee147530d8a", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "1a6cfc49528c379287bc9a2eb9f1701a49dc1b6e", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "0e330961bfb774a516b8869c93cdca06fb4720f6", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f44b087e487793066cd290083dc971f1d9551ea1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1a7febefcd287e796ef629cbaee5b93945ab0d1d", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "18aae8de5d165ba83baa7e508cbefbe4b38dbdae", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6704a62692be1acfcbaea924bbdaaf2a560a315c", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "34a31a6fbb530f0874a0b720b31335fc7c17c916", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f58b6653498b6805f4ebaed2f8970259880149e3", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "01a899ee1f8483be50e250cebf29f34c56efde35", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "b18c5f1971e59393ee7e8cd47368707c04b6276c", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "6ca95b0b046d0c7139e1354d54705ea47f9ab7cb", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "27117b635e234a5d0a69737cad7438415e6d17b4", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b97716488f91fb40941138fd00ca1905c583707d", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "292070c0a71e706f803903bfd1f291c8e7b8be61", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c753a69964bff3e1bf4de6819155a16d0547d98e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "66ede86f8fcfd7946fd5041c112d7c17b9f1133d", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "7e3a92a2287f6d7588b99e54ab5e1fbe75f2ae49", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "df95baa35dcdc19e2c76a723ef774b2a084b4795", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "bd53c618a9b37207ad9af1a4dfc5abd36bbc7338", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "1d437e7808412e699486301afa0ddcc016a1bbd9", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "129ce0fedc09cad23d9c57cd1e5f8f7a40ff586c", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a5d09d84d3663360c1ac7303f4fd32cb2e2bc8c7", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3838c3526366ee924ed464f7f2638ee55c3f4e26", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5bb54c54a59357049c8376cdbc8340e876e1c095", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "88e198efe1b21b1eac88b3bfd8e0b075c2f8dc1b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4f5b38f2d8267265243befe9fb66d7371b270a14", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "1922c52ae7d1490ea95602aa5908c7b8744b1ccd", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "51ea1a6f1bc14e5f8bf5b6d2f58325a58c6ef924", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "246fd39f2a273e56d668bc5eb1fe619dec42191e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bcf2531608fc90da2ae025d46f4b5e8011a44de0", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "0b355dac5e691ebfc23e806a7b1dc26f66a73d0b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "2032f434bec6c65184f496b271823df20bc83c5b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "17ad4cb3165b386714f672b6d29aa725713513b7", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "445d6b6862f37ac40cdfa85605b663490117da5b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "04b0695c9f2179171fd695c3a7e19c358ce37d23", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "89443aabac584d817b931a01d8f7a4c8eae9c960", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d63c9f4dbb36e749874963b58927626f9523f3e3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "412990068838fa505415b3cf756ae4c9b4dba3c3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "095413cf35e3cbdbbfeeee1b7e4903f8ef82ac0d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "17e39dbc3fb3e86b0e437b79dafaae1fdd9826fe", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "fa21dda73bcd12764a7deb0571e066559f05ede8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0cb17090a562cd4ed642ac6ddaf8dde509c51a2d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "11af70552db87b8650d02081eeffffeffb16ac9a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "c6026a0319f15f23f36ea28c24a4ac90d620f8fd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "eeac8c3fe4f47f17c873aa90a3d12137d40d6601", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "fcd9fbb20863b6d589343363557eed99fc3a6389", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431f87309dea4c5b07f35bdff86489ecf60adc97", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "0756af3c588b84723f499c92fceb7087b5abca09", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a79e24c7951a6f07a3affa7389061161362aae4a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "de5aad1b72584f1aaa17bcf2204f340db4d57535", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f2c2564841f04f59a0d0bd2e0253ba0839d638aa", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a1fcc445689a15a82c4df9f755d46f50723be61c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "3475070ab0e46455f7874c24c1997e507f558868", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "7876b59facb70fb5ede7f30d6694d99dda8bbf5d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4c6af30c3f53941bb30d4c00c4afffc9407dc937", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ef973c9962e27b9c83cd5bab638f7f6b53a0bc66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3c9f9d5f892481a5078dc720c3643d8499617ee6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "5bed7f99681f02d5c35aabfb2bde10a9a8ceeebf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d8ab030dbb1b371502e7fa5c9bf29c11ec0a1a7c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "cadf7e4b87bbb7fb6a8d87772ff8d1ec5e8166e4", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "205a6774d0e649b7b525d8bb93044a2efc6f07ed", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7aeb06e3d0001522de265c5a6648da2d5f62f4d1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9fc86543de41d30286c74feb2db534e9769a3b12", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e7cbb85858e0f2ed5ee4e608a98a519f2feb753", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "804b9cd9e4f9edd62ac83cba1fc7e17d4805253a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "d6a09564f465d690fa00eb040a7e68f056e2cd22", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "f304f31244573a74a4c6389a23b2e57e26a48934", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "43fcb143a3249e75afe6e82409ebbdb4a070cdf5", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3ff3820aaa8bd5cf2c3a37698762c3eec23a97e3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e6de007e90c72f4fb2b616994b3fff8ebc509068", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "af71b7e508a49fab5b4826f5e4ff3dbfdf9ff1ed", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "a6add7665c88aacf7c06f151c1b168bf8909c26a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "8011709ad7c111546751815ddd559b47141f8c94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "746217259b1c2a6238dc46c6990c75e9d0d8a65c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ecbe74554f6ea5105fd86c0c48bd2396d434ece5", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67b004657708850275760962e2fee30bec2cb382", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "168d22b5c537bb38bc8f3c9da1db9afff2a4c016", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ea1f79d2354d62288816c9d77a5c866e95a37aa1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "9888bb6f3365acbc92870ef7d25eeb6f5e7cabb0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b3b9ffa7126bbf4f961285bf9a503e594706e7dd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "655a1f09363621917bc07a598ef061044a60ba97", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e1874eb530e2d0a1ee146abafd5858e20465cfbc", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78e453812f1c5550854410ec6a64aed71219d562", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8991a85e19dfee788b36cde87180bdab5aa46c68", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "7401974128c6c71675ea02d8e43b13b82a481cf1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "16215730a73c1414f62660af4fbdfd13e8d46a63", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "8e8af219e392931e68ad43275480eaea16b3a8e8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "6687cc619ddd5b2be7706c58695c209ca201521c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e90902c0e6e7d0b03fe72774bd87b2d907f82c8d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "746d6363edd580ef4e764424ef20f18ecebc0294", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff04e6bfb5443ae6052bc6a4531546e1bde1db47", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "011fe50b37f1b10f11b107505776ff5feed21cf8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "212aa84378b52de758b5f98c4166e5d21059b0c8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "447c9147b9b3cf494287cab0ad1f475cdbe7ccdf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "37d884da9c8e83dd3976667a7013c1b7e9583a14", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "2f419d5052264d57fbbfa83afc62eb9a52177de0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "02e2c957d9285541c516ce6f111260f2f9c37e12", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "62448f16f8faabd9939b7a484139c5a730588296", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "5c662b551a7f8064c8ccf02916d5d28f24b0e04d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4c2a5b6c2b029ec017619b9c0cc854b4d916297d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "366b320b1c7f44db4ef53b3a27d52fda834022de", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "405a43ef841055b29f8693a290ce5742dd9c011c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "864234687bed141c8001ed005af1160336e90199", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ad90fe4b68f57ce9671312f37e3781a9f0dc2049", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9a1a44966c9f968c159809f695667b4ab702ebaf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "343bd2376f682139981613fe219f399928f16814", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7050d48c42d2053b313bf463ccf50b5bd5c96922", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "893f37d035a3a11d6b846be4e4daed6408bb7d3b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0db95d1c595e20bf83fc8ce656bef3836996304f", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ce3003484955dd40d5846bef857c2ec8f9b9588c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "de6d2e37dd1d110457233afc11f916d0a23e7b3a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "b03dfb3dbd72b33d5ae23a2ff131342a3e8b2ae4", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "770badea789590456594b9ea3548da6a53e6eaf6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "f38f12324f5c0ccc56255ffd975615a38e25e7ce", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "fdb718cf5c7b3b2baa8ee1cc51c53170747d7b43", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "6e4e8a5d41bc831196920555cb6236fe32995df9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "295efb8619612e07cea2fa436b4bddba3def3628", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "ac2444661daa6598914be406c2d33fd8da564886", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "2ecb1cb4832c9f6334db545e4cee1c0259bde3c6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "df647ddd06ba2546af4b559f3595a86527eda66a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a2fc526cf8fb0802807d608db0b3b0d75188a635", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "79008ae4476e10cd9eb957e03005abcefbac2727", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "86b852c131366f1f872b54bebeb3b8c7425d32b0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a968c0c9300c167b305c23789d28fef77ca9cc11", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "837c46d65f88b6d0713d571066c896094b493580", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6d955df0f1d96bd43f40d5e5bfccde41593bb5e9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4b0949118a55c19bcba32d8591ab6df07058cec0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "5b8c6c4686e06faa5641ee4539e64b905759be6f", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e457d605e0ab3c05fee40cdad546f97c81d7d1ec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "4ea44c8781147272086cc3cb594ab70a340bc307", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "0636199db87c71bc4db2f51e8678c713a8c6965b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7165d89210d63aab27378870e13a9e43736ff900", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d893218fa8f95a026f96e5a4339a15082b2399a1", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4844eb45840530901c344e8ca76e1e42b9386620", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b186ad8a50094f3e5e8603e123b6d6c5690c2638", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "201c0f357ab994c70f10bc104a6663a45658a701", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b780721874c760500a5f2bbcffd83b258f2cdaea", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b1c8b115d851fb3d46c5e275541e3d4d5824bddb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "5c048015696363ffbd4ea93432315b3634a7a8fb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "34690f020e8c90f69a008fa62ac88581fed450f2", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a690fc25b5faa49042ffa7e6a12d72194958903e", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "44747e4b3f875f50a8f58c45cf3a96f9f5480a83", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "09c72f56a283080e537365af847c019f116def39", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "9ad27e9cf0dd4faeadcd2e33eb4b11a056f3c03f", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4ab557ad42ca685227cb9c3bfca20e797e4f9a15", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7571e48ca6be6a720129d6766b1b344633fc271d", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "2cf3458749be9b37bd4d1633abe7bbb325a863fc", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "8d50d42a0063908a59e10ee41e51f59d09731276", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "2e426a9c1a20ee8bf9c1df38d3cf49754f9e48bc", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "67a65dc2585d7b2366ec7d4f704c1786b6a94f5d", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "dd914430686e256e3d4a488e2cc7a1be377774b9", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "7be4b535f903539dc4fd2697e09b968d109fba42", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "61c2fded86a53b4be36b073f62db5d0e999697d7", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e03b4c06c01af5e76d580c0a65321a3222d38f27", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431d54b2411b63712163cfb7ddb0619f10f419ec", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "45114a361ba9dd05a32fc7a2887c0f6fcdedc80d", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "ad51e19c7cde5f7a799aac9fa529c085e9b1e8ab", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fd7e403a0cc54ee7342349002bf7ff3b6acfdad", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a245edef0529144b86989cbc5c756bfd88e12b29", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f2d8d15cf5889504fa8e6ed2e613fff8e487ab4b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "75603c1f207cd9964a83246f58415d2655bc7fc8", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "4203de969e074aa324ee3429040b16c076a14be3", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "21858ddf722a49a8e844d264e8ee7c4298c72933", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "8e8de6a28520b0563739e9176efcddd5443035b6", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "fd33d0a458ace666bfe52dc5a0bc98609652df26", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e47824676561787f4062187c206b003fc9808dee", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "1a9358d1f3b75755b49dd72eab32a6ef7a4416c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e86be08b33f71e5a93fd000a17af3e95a308bdb7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d080ade5facd69276b87c0ea3837bc8f16206b97", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7ce00156bde91d76e8a71576266ff42371bab089", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "17e31c6cbdfc735b58f2b8a4141c3d669dd2d8ee", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "d7b4385e9e28d169f5e9f1e3c8f8b3ee0150bcca", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "5892628027b7c39761c0f92ade9f18577458fe40", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "3246ec2d0624121a4f0828386ea64dd3e531b671", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "12fb50b2ad1993cba9e88669d3f60aeb3f9866f7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "cb2277b2f2a7fedc2c53924a0dceceb3e1ae7fb9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "75807ba7749d18ac826d1214b17e05ed2868cb3d", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "62df967c0106d621ce1fa078e31547b824b32952", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78db51827d372e07c0bd9f356a7367e290bb7ef2", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6325e6d9820d68583d733eaf32606fabd7f309f3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "9b249632a7106fa2bc52858fdfd63f8f29f80939", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "44a4bd99f3fc16d2a83c9689abcb84dcb65b3c59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "619432e927130e09241d9976bbb572e81c061647", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0c65ab7092a98b407cdfcc268eb0d6ec7eee0da6", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "17976f8258001c50ce6a3eb3bf8ce561b84c909a", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1ff1fb5ee21673e24330b2c5c3a1e40db495199b", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff6471e7d267dd05a77f6e5c0cfb533496b15fb3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "00f55b3542b083cc698e114be9a4818a10ae6559", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "15fc68348a03b55ffb37b65a2f2def0b9cb15e77", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f74468bdfe6e2c588574c382aeda5002633b54be", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b27ce5a4101df2c57859626c8219c8acfa727947", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e96493f18d48fce9865b31593a81301adf534bd3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "f7ac0086e5ee18347a32dc322e6c712d729e48a8", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "67c163f0f8536dd301f48473a6fce9cf0aeb1166", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "eae3d18c8df51ef6e8bc2d6bff93c2a13c93c0fb", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "76d8f641fc6da8ae783c4d8db9c230614ec6ce00", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "952ed54f40dbced103365f78f42b40dc272a7c00", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "98cc47b845534e3c402fe460704729fe9825c670", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "d90c8fcef98c97eba2972f7965aabc889c2528c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "69773661c23463843aee07b136a4f2f981a4e9bf", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e0092ab686173cc5c3250d908c5ebb7c69d3194c", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "9835ff480ce7e86064e1feb88d71404112c07ad2", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a021b377c5c7a9db521dab6ae05765f77756436e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "04ec9140627d053712e2afc40ee161da3c418a12", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "515c205194cf807e9bb74a1336f641c09e0ba485", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "e8682df3de2c35ba6c9bf1912e8f65a831ff3f57", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b5970640edefa58962ef4392ecb9e7aa0651e37b", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0d11bd89ef700ff108c284e2c47c3574dd516775", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "f42065f1ed4dc8f4b065999ff8a6fb470eb92c44", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "99f9f12cbf0ab877b5983b94d067e71a732b136c", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "01bb780f92ad4a2765c8f15cf397d793b56a7156", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "93175c3517c809a74cebdb7ddba5c11279129803", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "d0db5535751bf727f3615d3eacace9a64fbd3ea3", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bb94d56bdf9cb259159b703525b1f7cc537dcd62", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b790b4be3f75e677861f56d9976d2b623127d37e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "c87b2051b9d324e3ff7d18aec458cc7380b6ca0f", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "36f81f5b22285c5bd3c15efdd3fb2538af0d048f", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ca1568c40206f804569670b858887dcf222ecb00", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a935813f645a0865df8659cd1d882cc0719227ec", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ed0a6fd65ec0e872e2aa3498c53220353524eca", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e7c9b9faafe56823a8a62e11b9660da4f1e61b01", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "85408da94c92a8b9814668a82f8e5440c4ece4b8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "733b6a6261ff3442ee560ef7cc914bd522796ab4", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "32ddb1dfeaeefaf1b0ca92a8b96add25dc882a5e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "5f1c4096c2cda8d8cabae81dc02e8d268c71c220", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "8cc087c7e693d70544013c99c29d0d13e4860f3d", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "91399af11a4a66cf48ca4f6227d3231318931a70", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da402b696398404aab0e60497fafb02ec0f22a5d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f1dd806cdc1ecfdae0c004e27e1baa9910be694", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c06bc88502ad01830a783418981e6c015d73b82d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d7694b177dd6e2796a24cd175296f29676eedd6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f92e3f09143c92d32e7fed764d6f88658a3398a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0e5d8b1666fa07e63f15ea35f259cc9f8fef511a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7656d6f849a98861a7adc1fb4502020890c94e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b14c58745bcda2c0b06cdfb3b37cb956ee4b9fb2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "000598aadadce88a69bbba553afe3c51fcf9259c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d17593f8fc443ddd9b50f3a47fbee3721f9cf958", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6a70dd3ade3832a0ef9908a26286bec5f066edcb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226b41f939caea8c27ae192486343f0bc06ad002", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a353d896fee513b9d51f125607d529b8be3074", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "acdf6ba47764e2308de67dc9a5bbaa853d0eea24", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6976d10aa3d64f078a93e1df491f3f8eec2f3237", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "faf7edb93d09a794ceab111272b3c3f671e4017d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ce12a2a034880557e39d5c36adda9439927074f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e65c1d23e16e3c4049957ce9a7d7a84f37331d5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e16667a88b974bd20d9ace67b45242635d61dd4d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "32c453ffbdd6e72785111d51d7f603ae91612af2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4cdeb771777033f95cd261e46f31b64196617c16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec5f8a3622145ed863e7c86587921d9bc1ad2d45", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "014b9ea913d76bfc2b8dd8f0c59b1acfa49257c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ab6524fccf38a658751dfd0ab0c9e1d803a9fa2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b40a43f431d6175d7f65ef2a8340ad90f623782f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5fcd14974bd381c4a1773150cc2797bfa85c0bce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ac6f1ccaa4e4ceaaef4e9b95d6fd21c204b4e5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3b528ff35d3f4a544106ba7f2c8bb1602ca6c567", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e7586b795bd2ef00545131fd148b36912c8d2df4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c3415ec73d6e6b6b65eec3b805277146de7469a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93930366454c53eb3ea66dc6d42221d23073a97f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2ba13ca7b591dc861cf3cb3e3b4e559d1d6cbe87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d45c1237d13089bd29f1765e0b5a66d4aff4184", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec8826e17fd13f4b434abd399138f04b705b1d71", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6042943e7d8a9c4eb25bb8e00571a9c0ffe9b529", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "115beaff180f51a45d5dbe965fbfaad76ce25fb7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "244ac3a3d23caed2dd65ad03abf9a8903341bfa1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1722114020c03cbff084b11bef5e604e024c5e3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90b4b8e984b7b36c527b774acd0160fcf0faf3fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "28812ffe2b8e1719f56d5b58f6b1b5aa1e523520", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d8e68f3e2bd12ebbbcd52f5f7416252745cb65d2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8a90f751582979e5d07a661d8aed87d20d0159fa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b99dd94d8172cc55d6f589ad70f2b9fd73d25721", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "153b9a2538748f02de22f6c049e91d4d3f0acfff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf3c98b89d0c66ca38af89458e3ee7ed0f33b78b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7470487a6753b46d6d385c1597b9aa576ced5ad6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0b5d93eaddbf6442453e94f44dba595287ae6c48", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e62f6c2ef2a2ab88946adb90f930acf219b70388", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "545c43e3c2d84f99388f6c636d2fb23031d2a99e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b2203bc0e834ce60a859aecaf1e6ac3334261a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "49fa3c567496fc7d52601584af20357fb23df106", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8287807f923093e0aa11c14985592cbf3d341c59", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0e1c2d27ddc1ceeeb8545579f871a4845d279707", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "985d064326a10040fab5a5d0bd131fd4339c8c53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f037885f4bbf14f8f05995038d069360642606a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0298199d16fbf1fb599b8e928a693642a80452f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "661939633a265825948e34f763b98d3916b8dcac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d90c8ec191fc8e4d2e58dd883d551f5849e20eeb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "00a4cc1f9b713b68bfe747d6e8922d7d6fb2ebd7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4e388e956d1707b3e6246878d251a841e4792246", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f63aedaa3281e170b0fb7e2b438f8cdbd6044f1a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "69e3188f47203ec65fa21404fc72b3c6b2734805", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "015ca6ff87307b6e11b825ebaf53663b8a63cc54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90e9093d85e58b39a4347c5e4c91ca5e94dab3d5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1189483bb8b9504b097e84a842fbd19054e6dee1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1e884af089dbd61d747541162d6d787098e3a623", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5788332a60e16fe324d51ad19ae59300d7471956", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5ee3f6098016504dfbcd42d3522f61a0a56f2f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "33b3d45ca935595945d623272c7df9d03de227b0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "12d4f1347d2b80f6168db6bce83ebc7c0da5b18f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2cd6b42458bbede1fb6122fbff48c920d3b6ce89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24fc35873621b88063320273a6431f488048bf16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a567fa225bf7580925298c7b730384e0c307ef1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a9a42201ca7dd80548ada42fd7443e3bcdc1a980", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "129ad21a6de0dc824e9291f3b7441714ef9e3462", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0f75610337a4aa1a47f5cf5abcc9598c29f2fbf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "97f31a6e31b8c0e7910d7e05ace2f71a9e433945", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "20d7d6f43afce762d666c267f0def248cc7d001b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d7707c8133f49ba01cf7311e5362b1dac5802bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9861cee5ccb21ff5a52db6751ef6f715149158a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fc00dd9c45fbd54341375f13ad4f83fb50e34f0e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c270cec8cea9a41a9f032c9f33a193ad8c62b3d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c94cd2dcb2226e4bc1f9a4a649fb452e4221ca0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "545b2ebbe10e4eb5b6a80292cae59e8f1855b5e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8a45dc4cc8fab52c2e828c6bbfd18fa7a1972855", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "558aa93b827505d2123b0304551c8807c06c2afd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a107ceb57205d0430aed53af4e8f942ae9347283", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "01deaad39bc527b65b7284190aa6fa6c47bee615", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d695d1836c503e5975cc078c0cd901b8fc15bdd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "787a2a8249591b8e24e331f25374af023813fbd5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5935e991fb9380e397d1d6c549ed771d2b5fc5c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d682f03db622689b62cc330cafe529b56a73c1ac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b497690ca05cb983483fe6b6f076d0e615275938", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24a821167928c4e30f2807c89a67ead5575ad7c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0010c1b309e26b6eca51ea57d4e304518720ca8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "238569fd8f94d82545b3820e0f2698dd263fb27c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f105dfd879d752f8a8980c345420a3886ea6521", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c8965e334a9d3dc4bcb8c671c0f4f43f1c4f9ee5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c9200dec87d17eafb64c20b11ac7e7dcd35bf9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c48612be556dd0107f385799e79910d225247fe8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37d7c4e0c07788bc7fd3f8a0b452f89462645a9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eac6fabdb1203e9e50f40d3a049a154cb2c8663c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ac79a69c905dcd0a12900fc611ce83cf25f9a5d4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89834d6d6fe0e4889528bdb9157449adc3935105", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c74c2b78a174820b6198f9fe6faea7398952de0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3506d79b517b6ced51ea2d54393d89d97b4edff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6dcf9d9df37c30895fea35695ec26040b8b0e572", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "974f2b61a11c5f2cc92dd76077e7c50c33195b46", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "450a264ac6e4d113c26e69cbef77399108745d6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86897709a8f5f26dca0afbeed1844b570211d6af", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da8c3b45b587e207058018033f6ca650edbd63fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2d8ce784593fa224e917fb0dd22a1a51d433efe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86073321555a6f991f30ad6c62af057cf46ff999", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f719c58a9d685c88155b76e9c5d657a8ee6f26fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "08eb30e669f5d5f2741b9af798e0d5004adf2c89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "82a5950dd5369b538caf0364b8c3aa95e1a36af5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5d36be783f4d1470d1985a2d94428c4f18111157", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "83aa202fcec76a2c763108e57696edddab78fe15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d6d5f3254d462ac5d2facbe0626d2158d9ded7f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2588a4fd65167ff334e77d7e0d3ac6ebb3092f64", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ada29f7844ac4c5fe4700d55687d73efdc2a22fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e60c6ed4a26afaa471218a95a354ca70ba7eff6b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ec4720b4b39cd3b37679ce3d6a3a743637a95f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9ad320cc967f66bbde44e4a5d6d95242ac804df0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "139d55252318abadaa35d968e5740f5eb6392100", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e75b06bc5279a5832f797e0cb490037b0afb3f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8729c06f25d63c642b0675b935fdd30c0499c882", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cb39d638134e2f829e8ba2352bb850c64b267e72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "852035a6df0dec42eff52d5a16f194545fcc63c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "221f2f566ad57a5607336d4f71831b96d4b9447d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "893788f27ebc6cddf55e81d58dfe7799757a1897", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9d70ad2dd261c8ca8e1e70f337ea6e9a5fb973b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2f8466ab3be58f77d2f830fff02a558efa23624", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42cf100c1d0b220647e5c43dfe26b8667f2bb577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc2db7872c003b81352363f1d3a3da6fd7491b8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c47b7c0bad80e6b6cf54c472a5c2d76942578ecc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2260bbe5f8ff54c754749ec85aec2ed7b7572c6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "263fa669ab2e3b6ca1e46058ce71a61b8e31c728", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c050c0243a0a99c9b8ffa64c90bb8a63e09593be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578e3fe24dfea24e9f3388ea480e4c7135cc57a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "68368b37d9b96ac55c60f048bad764e758ef4de6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "299b70d368c96223a24b70b6cd0f297ca04bdd77", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e2232008aa62e17030e63ad65c89dc39357410ae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1dd64174d5ed0fe42985efe5c18b1724c2ebef2d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "671cc1f50fa3362452d8d087b385d27622880437", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "06c9a9082916be971eb8ca31667952ad41400ec1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f42b1e829915be924a36f27b5c0544d8ceb790f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c0f8c66978eaff2ee82099faf625ebc509bc67f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "623021d88345ef7c929c011f41005a65b166a9de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4b10c25792d8510cb808d131fb82bd07b031f4fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "626309b2d8d6740f20982a4b4695175c3a10d0a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2033421b1f4d42cc8e43cb72267dba142d1268a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ad135abba16c91f0b5b9c2e92c1d8cc2f9c5a3c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3c96afaa4d1b84b164061b7d4904f4d4077306fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "44bd6ce9b9b0e11c34714caa4173cf2ecbf3bfb2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2e3359e5b20fa7c79ada98d0733d55bb46ba9089", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d771e682c2eac1a406766ee1c684099e9b6c253", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9b7f0fc05c26b6150df093b86337081ecf71b42b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f4e0e2695c863d82fe1000c1d9b96cd3fe77e0f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4e6c4a54fa09927a8b1675c08346914ab7075096", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "30cad0d16dc0a7e9774c202ba3b328c77d834bb1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c85212f90619ed1cb589f01a7613bf4a55888be5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "275fa48ef152b18e055819ac727108d0f93435f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af08f83bdc51edd41a7e23c29985b5737846687e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "55b599df156b2d792583c315643164a7b52bde0f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b6bc91e983a96f1a35c42a4ece7af52cd9357b80", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dfdb22aab883bb47d671cf8be67944551e529083", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31f9fb56793eac6a09ba538a6671e249cbf70dd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "449868e6d26ac66d9fd1cc89440250883c485ee8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1194f582916faf9e5ec2aaf67796263651e1afd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b42a2b9f9241dd70fa5c8dfe899c97424aa89b9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37aaa65942494cf23d89d37561fc97f34f5ffb63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9122057f884d61568de43abf193d4fd5ff30a0e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ecdfb7ec28bc6c34dc076d807b13d26636e33d73", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8e55bb9f805fc466a1176111c95f12c602b5bf87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fe46f702399327f8be767b0213ffd786e3f1d189", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "87e3933852a552062c736a64594280423ef9293d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a1db27e3a7ae74a522b59bd23be02a15daa2c075", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c51703f1002f04b8110cd92e74d685294c052cee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90c215a36ea2413295f78c5d69cf42b9de6dd08d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bcce0adc3b6732d709eaa102e7f5aed5f1d3fec8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c987d7e61f32a9eec5c680d134c19fd03a064a3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "653a43bbdae444b7e820a05190247cb576461fd3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f28b2970875b7bb3583bec517a7cf9fe28cc825b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c4779ee8c8e44ddc6be19e768668e9a4400c8e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "744aa92dffb0b1621b4aa29cbaaa6cd8ff6ca318", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "783f5e00b48762877068feae225f239daafe0d6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e28ce86c493057882114a5e107f8694e74605a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dff315df45564111915d4904d6557ccd8baadb2f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98ebc5304af8f424118d879c18a8ca364fd34954", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d3d0548f26010091e90a456d9493847759fc82c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "15cea54d1a0e6ded4ad6392fe98a1f897f898577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfe1f262eb9aef6b6e8933185e0e72c3d3548643", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "801da2540be5a73edec9f92e5f925048567b3efa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cef44837e66cba0d456bbac950222fbe4ff18009", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3dd1a5c8b82a34cb86a001e6569bfd8613c145b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a0a215a16d456eca6a6a5abaaa675a0237e1a25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e430365226a687562541221ec1d2e80779063143", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "180cc3d2675b070d871e90c57943d288255d7c78", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ae2825dd373dbf04f1b46eab3751d2394d49f96", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "79781b9c21fcc6b8c4c1777dc74ef260c1963062", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "25906a255b984fe09668fbfc6280fe255b6b3d46", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a14cf62a3051e82be261734312c1a81ba49ffa0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ccd4b21fa0d484aa12e95ae556b2302b67deb65", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1dd5e9d5b15efeee55d748b731041ab3fd5687e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a90fdee0fd6832f1b142d18a7d13bb3d50be1d9f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8e382a8a46c0b04fedb4406353ca26d0f3127bbd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9285faa0f3f37fb46ae3b747b7b355e3d0548a0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1ca2779f6f3a02560def756ed873f34caa0b9777", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8a344af9c3f691225cd99f2f191a9c10bcdefcc6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb8a1c58b55da25b1437bda085809801de11acb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "91417592b10e262a487373abaa5a782f6bbe657e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6bee539f1db61e2510bfdba27a656a8122783028", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cb7cd7d0f7f6597891a52905b05c5fc2038c752", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed5911ba4128f0c32c377d99ae468233d8636d6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "002bad6065109663f6162ccbe5b21d4bc099b1e0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12605a6629b96d701f04780fa1cd20ace90ffe07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f3d2ab3aede5d0e34c704b9907c6cd39203c2411", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a6fc683a304ff7070e411e00a397f6374da57238", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61f6df1f195f28985da1458a905885bf7c37ffc4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "70c67327c3ce98cea818ceed412a8d4f2041cc69", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e83db220e19a0cbcfe42cbbff7671c28183309b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "63f0ef32f0543124a03ef9b7f819767cebaccf67", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2ec773fa8d5d55c8c9af21f38949863512e55e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8716b9e4c25df81c4d8793b80a932567b4c1610c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "795db4818e4e9bcbf5458c90d7ffed334c194469", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d66a3cda3d3de32040138a51f7bdf9bbba2df7a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1821dadb987df353f96e864624bc59d1642d807a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d271bf951de2c7652a917644e4b3da9a75a3b7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a335080606136d07d67b0d9d0f87e779b6843387", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03537e61c267824b36130bf5148233dacf491b3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "14e7d57b2ca909e6f2e708e69156a0fffff226be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "708414ed9426b17b7c93c2886e5fa811e93efab9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "810d33cb9f35f45a3c439dbb446dc1fffe07fdfb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8739f42c60db148a3c5158ce4b2c5d0e52815e31", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7ff34c3aa5b9910c31d941b7b65091b1ef3270fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90d16315c21d6f689d845f8c69602006e3bef175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c381c76dcb019e7a52235e21dd6074decfc8de1e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "771cb73a2d42b8c231ac8ece1445637c1368c32f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e5fbabf4eb1be579a94f6b74c9ddcaa3e2aaebcd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1ac0f62b701b104e228f49b3e8eb9f3c049cf63e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c2535b7e964d90a8156d680fc14de0df2d517ab", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f65ed2da90dcb9e89a78227ddce7031987976ef0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb860094387709092737b45d242d3d1b204d6db4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4f194a9b38a6a3b2edd16c225f2912eb8e696508", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fac4bd420d54fb6e384d8ebccaf82b5152568353", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f983520b8f3c32b4fa67950ce5c65524061697b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dc999de36bd2da8184a2b43b4e605f5433a7800b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f40d9e2310326811125d7270a6f34d43d8cbc132", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1e7a75d061aca0b7f9fba55a8f02e22649813e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0fde5b5c4046bb132ddcf5fb5d4467f729262e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6b75f49cced9982ef08326601d4b01123b7b3531", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f8fdb53daf0f03c6a91a91a36a34dbf6abede2b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "162747760b6ddf807b5ccc80f46866e16e7b0c6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a887d378ec600f05b1a884f8bda0e3aaa619addb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f785be9131b0b80754075eeefb987d08af8dba9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1262def1f35561aabc2500456123ad18328ad16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38ec5104ea0a87a0ceaad5ab9a463a6d5baf6c10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "696b1cd5ebd35626a67e46765d26ffff3080fc0a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "778285e920a71891fffbdfa6096e6d59543e7fa0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3f0bfef48e59ce9ce063a241d47a4926dd86996b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "eeef56381ae39e4fdbf51a204200deb128913a6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb384d15bf03f3e84fd7aa800734393a8e9e9845", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41fff2993b2c7400c093dad8f7bdfe784b9e1c7f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d56193df9d6d58d2435f03974cea4af7958cae0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6230ac00224734bb0bc481662d3f5338d38ffd9a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8621faedaa151827037d369aca52ec4e1c9e7732", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "50bf9abe6629eb309303c826fcde4ba916d19302", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ce26db0d01746795360fc6dab70b1c3a3cb0103f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8b9f6001210a10f0dfe588e78d1777e7764715bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ee10be7217383f841958f54d62b80c5a7d2d3904", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4d802e11d3539acd9764569d28c7b6e52792bcf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "286929bff2c386645578c1fd5dd0b296e0ce10d7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1488d60dbf401adc78053423eade4a2e66c720b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8895de3b92b7ae353061ebf5ae41f186f3224bfb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fb801dd26f6dccc173efe46c5d429e1b075bf5b3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "65326d9563a342c8fb7b4716c782d15fb9945cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "85e7529cb6458720547425afc845e198b62f450c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ad9e5ea8cf4f5a856ef369abb3d04d9d627d4ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "52ec81bbcd2a5692737c2d92466a41c08bbeb6a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8c60d068f401a1a9c8c0cf591a145dbdfd7ca088", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d451d364e4e699a9ff6b20b28397758db9868b9e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "69fb919964bcd1bf0397eb9690b0aeea4e957c13", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e96b3c86e9eb21bd5bd628bee3aaaf5795c56bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89eb63d9c20e54ff561b8ccb60b28a20eae11ff3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "60b0af8578bf3d1cf50294e561d1e5e835231523", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2a3c3df4b5cb7847347d2c11bd69eb4b2340d52d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "69c03964d8a0ca044194f03d6aa5c16464472262", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cda8e1d26d0809c33423f5826cfa8618354b8ee2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0f8bd061962900f88f42c449b6366cd127fad2f2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e08c9e0d13263f000982b9b08e7d07cf7bf67cef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b85efeb731f6910e5cf19a19c2bf6c64d8778e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2060735bccaa37429c5b514a8d210eadefe26b16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e3ffa3164fdedfd49d4c00cc0660ea740f1b30f3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "981a39bfb056cc0515227634c2313a306f8b2f0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a11c96be22de3dd8c9800ede81c168aacab68b07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f6595d6df876bf300cf8af983b09e6446591db8d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8be3a7ada000f18c6cfe03a61469b8aedf531635", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e50e13e3b6abcedb95a07c24ed4bb4dd2ec2b296", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d46bb7c0458391c5a4e59d1e751428f57946d881", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ae02c66d52f87a20dec6260f73f2df0b20041b30", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "af7b1533144e347c424c83fa1d4adb3c2910b083", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ff5c73c802a062d66987281b5a958841fc176f24", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4b6cd69b3bcd47a0cba2a8aff03c6a8870898a19", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb20c3940c3da082eeb6d87641742df04376d2b6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ad2b3a7b4a468507a9301005d4c69d43a39c87d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cd6ad36228c90222b0c72eded8d262d316fbde7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "665a08c1ce448dd5867014b69e3aabaa8d235a1b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8849a73db58cb60d7f804b3676a2e8d6cf8f416c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90d99df21d501f331059819f8502b5a3a42d143c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "75b087b92ae3da2a9be69f36327cec8044e5ed77", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ea888734c9576d234a4fc1e60a65337809b07802", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "68cef029eac29c817601c98589ebe99f155c8484", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8af419a1d845ea3ba9887f4f4f4b19dc1ff84e54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a1d6eb8ca2e8f4834cbb2485ffc7a2a699c08a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a4d7d251efea2e4945ada6681481e2e630cd1364", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cd63cd068941e8a1fc014f3990259b9bb9af5cf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9417d6015dfde551d84ac55f79a8f158b78d1b08", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "271b24eed28e238628757d6876c01f088f1c95c4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68a1165b2716ccdad75f7715516577ca45878293", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "665ce9f2d6f595dfa85d0227669e95bed6ebea6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb5f11f85c4dea46bcb7fe5d0bac0016f4d0e581", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c78c9efd02ee2c361da1d6445f89bc5bdea18e3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "654e7bd00ac990cd5fa3a26b4dfbfb17e8b5b46f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c55d2b1996c3cccb3ea44af513f580c88224f1aa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1d85291d1f98613db67e0f7d0ea4970ccae5580a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66c0b23efb4521a5bc81ce23f9e24792214a0827", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5817707884c76cc8baf5ee30ea9d7132c0b14168", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec1d4644d2ba89bb45f13b038138840b25d95607", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a1a323cbcc3396ed8ed21a0336b74803e807e069", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "74a5d71454af0944f52b18545ace30863dacc652", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "258f4b98a8d0110aaa77543ead46e3569cc26165", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "df4e9955008c856915bdd8542af5c32fd41345f8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8999e3fc920cbe7a31189f5aa710bbd448f865ec", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a788c9de279ffe804d95a3caa46b78f5348230f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f6695f9ffde388e489f14d1319e9d78cb1603d87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "44fa565242b4a12e46335f726c31b720639f59e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "be66dc48ef9801a322d75ec9f07fee36a7758997", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2be52bfd5c773f46bd8c77f1d904c3171764a121", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "067a575d45c4ae0e12d14d9ab760d708938aa81a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff93a0c6120700813c7f888f325d249194de1168", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5c77b88ea49d8690cd31a3d347e581fbd1ee98c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2b5de7325569f6e0ca86170a0032e91a759ca079", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1cc3f936446963e1c74f7f30c7b90520aa130a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "48c6d3a29ec688190c7052da0aeb96510c8a4617", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3d09725a8d344b4e67d773a567e3d6fbbc4edb9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "618ef626d7572238f8ed06d72f8d43181c85d2c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "384c733aa68f990f2e1ae7e3534269a5e12adf86", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "470377cc9205e9f36cedebe920970408925227ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6997d00d05bed4216306734660b83ed2d4be2820", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c51b5cb8c79478460aa4edce4c6969f1427a0cf6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72c67fe0fb007b09b299c59114bc39e8a0f949f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "08d19166251aaa890ffdbdf33da49fdc0175cbf0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "791f37ba128bf2ef0b76c3121ca1ea18709ddc61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c5069cf512240002ec20ec65c4ac348c646247a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "626dcdca47d201aa2d1c53ec48beebc6562fc5f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "35584fe866f023282507652c96b06c3e07afddbc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9243bb0a66ad8f7e65b7c2291cdcc603855b706", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e559ef09f68daa17d027320716bedfe527332b88", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "314527d3dc84ad3a7bc4c1b80fa87624fd5acbb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "403393741ed6090b390e709f7a88d6ee50e975e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6e735fd53b8b5c53af00d2f2328eee5a44c1ec3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "96ad35ebe73732847b7129364f434e075a5263e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d786621fc09fc6c95bbb67358f2cc5f00bbb00a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2f04880b037c8f08346bbdd4726f765d9b430964", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bada64eae1aa760a8e359301709fe2c5c66d4d67", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1726cb285de968bd84a2451279f3bd9331d82bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eac05354c4c4b5773f9dc6114613e4e1605432a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "906a9a100b7775670f757186dda787e215c85484", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08110291cd9a5a905498b41a1b9d274712372144", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "368b2ba415c7e413a6d1a8543807791953011d3c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e7233d459d9c1bff8b3a5da9a7bff2da542fd54f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfa31748f3c71cd01a851cccec447f4c8bc9b656", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c269f8965a513c8997cf15f7553fbeec0a01271", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ac4f866c623012737e08401bdf0505e29b7fea2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "82fcfbc2074b0d6e20740d0da6d00426c2487276", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "74b5ed9eac40bc037742c260905b8518870184c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226496fa513d0549f0265c346300d727c9065423", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8f6422dcfe1f653dc8621aa6c6556d91d2b01af3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9442be83932d16ebd8e7b9dec5ee8bb029f4db15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "81f63c92ee044fc78c4fbbc42940539c789aa5c6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1ab33b7c1d696cde2688ca585448be20217b80a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61115aeb86ef147fb35ff05f0566d07d34636701", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "52c6733b524ac2059aad511ed0acd1b493974cb4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2f91d42c7e91d78005940b09175b3fa3620d1ad5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf70e427da46f20ddf2543a45387abbb9c9fa355", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1e75a20e6ba2b205fb41302aaa531cc54f109f2c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d69b2c365e00bcfb2e573c7406143993a3f3bc16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "88b8c28d5702420432d4cf4da5c6e130eb666504", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b79bb11cfbe68baf5579dd1ba9293cde06512594", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0529e4d851938aac7019604aa23a026964f2a07b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "888f83abe7b47750c77d675dfb70f0a3b22a7fae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ee260a6bc799752bfae17d814e8c5d5dd9bba655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6549adce1069638122b8e75a039f3b92ef2d5dea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "33ee283757a977573ade2ce739ca161cad7cfc99", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "38e4316c9d74b396d2f9a2b610db5e16c842152d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0605ecdb0d029eaadb69de073c84b3686745e693", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a2c32a04e739e766f97d571fbf96fe98037c48c5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1bd7b6f26ccfdea0fc3d03d9883d0ced27d7794a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05a5e51b927f5f58e54994d58274c879b62d759e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3de246dcd2ee05f4fec9a7e590bd598b9e77b718", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8980d9775581ba5f04241a09331161b176f90129", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7a79176a310d5e7871ffca2646fe48bc501e18e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "415f27ba54f917656a60aac5bbecbc2e3a8ead10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0490f0b00cfd1e782e5cefbeae563af9703dc846", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3169ba29239a9ba3de4b38944a89fb2b984555f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d1c1ee773ddb28906064252ea38268a8a46440f3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c040552a848a51e723af2688b141b3e883ab3b57", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e821506d449e3bae34d29f7974b2377ba1dc612b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6cc96919c45da1d8cc78ce3bee99e1f6d4f38bde", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93312dd48bf01fd59fb85ecba9d4330c67d55389", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a7cd1a13c312bdeb24d6d862454bd0ed17d8825", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c9631175a4c993432a11adb09727f31b13bd522c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1777b4f70afadb86654fdbaa7969df554f1489ae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "218f9f48693bdf739d7de63d627e045b8e299e58", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c2ac1bcbd5c76520d3b85ef1b309bf7768ba258e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad5edffff0a84a436bd56be3e6607149ec3b4570", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d3f8b4151a55b7386a84dc8131c639f07ef512b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59bd5875c771d6d53129f9abd6c10246c03e7a2b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b6fc06337addaff60972ad7825d4f6ac001b2fc7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e9ce0078cb8dfd40153bafffa038ae6c043752f8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "823cc6dac5a69d8dbcf46eca248f3d033d63a8b1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8d1550a16cccce8ee7002332cc831ff859e305d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57e3de35bea1c6b18c4f1bbf206fb4dd5c1366ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21d429647d610e067ed5317ae06d9bb686da5845", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d1ef6d142adbd7b6e6fd4f3e0cb7a6d183f841a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "43d6f71c5297693d02dbaf6b9691c2f1baddd54b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "28b5f7be39ce2bb223db02e45d38a9e1482d8136", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a72372849c06f879600becd21d08f82cf296033", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "826c50614d985568a9dccc871111f4f59a6f7f4e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5cf409bde29e5d94508df1823677ac1660d0709a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "68daf74d6dd9b5422676c97fd7261ffa78005561", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8ad88f44117f5d733cebf572c05ef8514105b29d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8e2116badb158c89d239231f215da6ab70a5fd66", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b70fa90b61cbc4a70dc4ce30d8086f53dc1bfa8f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e4d77e90d3cdcf721cbc3268d657037f046a0b97", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf90ca5f7df12db9164e57042b6090edb060a4bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "446887fab80f4b41a234a5d567b197a7c13b208b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "30497b01eaa5530c5dc3857b8f56def3b7fdf9bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23f27f87c0f9a7b46e8ca09ec3d17c33afbcd95f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cc5469d7f75e4a0b3f8a7fea32e27352c8ab802e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5ce214c83edee964b220c73418d14db67627493", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ffa06d91bee53d83651d865e7fbb0637995f5e3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "573f14befb65a1984f37390a053590163b3014a4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9c38484d03c7a022cfe1a4ff211b4a387c67e2e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b30d1ddf0725a027c3df3e3e29c5a60d20476af3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb95de384d61ee7d59c94b58b3ddaf5c089f9383", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b4681e9c24a04d457506680e875ae1989887fc3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3582effa12ee29f7710fb652fff8813507230197", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7bc0b16186ce376c0af103014611d935fa6609ef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8743a3adf403ab60b1e97a6aeccb12505a835438", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "caa7277cb0d68062dc0640de29a54b6fcebebc4a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5b371813fefa59ec2368d252d38686fd1c8ef72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1f6b38b2ce2f1a665992f946a4221c5ce375d71", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "040725b9db58602a2a09f00c68c972dd7a3b060a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58ad233a99b68c67d2c0af3aa9b8b24c4670b2fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93d748ada56ade7f81036e51314afa525fe56d07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "45def2c88747193a42f9e70fda3f2a2de4e024e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58487672dabdbde10a50c7add725a441e69f8532", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e54bab17744ebd81a0655c8f26d3872140563ea8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ea1c98a5d10bd1fd8318a1df4547ca5f067bc642", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef6e1b797a28202de3dfdc28116d6edb79acd782", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5873be38fca2636ffb96c037c6b2e212bda6f09f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8b49a6d623fc7fd8e6044a34bfcf1dc6e743ed84", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be60265b00c3e9731b5a78b4311679223d9d8e54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a94fb7cdd9615decffa716d93902c939945d40f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d48ffad6f002dcd00a6898536f8fa8596ad2dad", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "742a9cce05112f55d63bec4fe6c97d3d13d192e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3197302ed741354e6e878027b1223063f25a8e4f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "504625f6dcc0ebb10b760fafd576ea602bb52ddb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2e5d71efbbe223931e4de020343edac5cd82cbd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c3f031bf798e16a82554edf7190a2e582a39f6ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f7d4bda0d5d1f5c957e1a617fbb7209e4266545c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ec9779a499ea78912abd5c18eeb4b79a94efa98", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4dbba118a13040d40778c1b8b2f82e383e8f2cc8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b549fdf117dde2e6e52443ca8a88703c68ef11d6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2a9ce89f8b96c4448725bf58dd7ec80c30df2cb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ce160d29dac1a3b6f907546fef67073bfe5ed80a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7ca82a813ba2bd7b07755b56f0fc771184f14626", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bbf803e5b154c61a4df8ab80302b9e6e764c83cb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0d8138ba01c952aa3a3d076ae0ff1256e278a8a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51d323af79238e9330515852f28cccbcd0409d59", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8def42ed8f2bff8be19e85f3f85330ce2eae995f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4957c4ed9d7e92f196dc0112cfaefdaf29094b25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca3ecee591bcc8b54011e695a52bbb6b635c476a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7afcd99093820ddd14ea186229a53d78d28bb3c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "36a4594ab7da528114382c1e5846fc203625272d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c50bad5e11f9e3c519ec8089ffb7eefca2888eb3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b378fde58f52ed4671fa8e6afbefdedc094264c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0dfaab6837be9aa2e304e9eb17d1c423c7e6a1f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3f1bf217a4181b5a81a6ed3312fa4f76947515f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dfbd904e89c74d35891479f2b2adc8b1d322be3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7c0efdb5b6b7430f0a4e11aeb216844825c38b61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6f3bbed369af858c512429baa0f727af8e7fae6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d42a065be4a9eb1c9c4397384c04bd6b4d14b9c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86e148b3810575fba6a2628b5f978f7243302b4b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "83bcb66fe1aa795a47cf83823dd1dd12ad09420d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d35c300937604a53b0e7a0c4690e5c801b21ac76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c68b1f949028778a9ad7e736af9a3ce42ac9931", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ef110feef67165c1bd06671fa27240af9282b914", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d1b9ce064bcc93527045d3dde12c9a87f3e0b89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "81b5163925bb27f810e72f96573a02724861e7d8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83fb05d9cd787bb4a48d9c7e8c997870444ac711", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9126543e077b0cc68b7b8a4118351b7326978163", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "88d05998eb578595598a2ae6bbaeb82a97cfd40f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf629cc5cea47af305260d957d782c96740fb594", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6e1a0288e21ab3a4f77ecbf80622a346ba93512", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9204a9d21d74a6535ca8df2deb65de7adefeb20d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff70288cb126ba5faad934538d1644ca84b05274", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "63c4e6524b575a31ee4b30eb3e6bc645c67a3f01", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0671716007c6e6c6f72b1e59aff5656ba84bab11", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b6707a84369341fe0d7ff038e2e0526a699f0b9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c7e090dd494a0b08306cdeeb536f796e6c997d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4d7534ec4d47483d9de5ffd85c10864f63c25c0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ece53fcedc7c1d55ab1ea0af37a1baa92de1956", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ab9f23952c81adbe0a7e3671395ff4d05693cc53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b5b81a1eaf448fec9d2034ae792858ee0b1df384", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2320cd0a449c24aaf2aaf869b6fea47a2ce15ce0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5b479cedcbd414a95e2036fd2ee830879b2e181d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f511062160c9c53ef17ed5d982e96a3902db48a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f6d60c193277ca3627d29bbcf1b9dfd07cacc712", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "90beefd48596b489fa18ddb18e37a1283347d2e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c7c9c03f0e63ca934232d7ebdb5bb96c90dc2d7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e6cb06d37671feb41ce778836494a67ffb000928", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9f973be4eb309d100284c7dc8b222b8f3d54ff6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5eaa6186b72793c0a284c2ed8fa1d635acaa55c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8b86078ee7f9734ceedd9838017c7205d1a8535a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "260cc4740885f42ce7bf818a06f43dcedcc2fb75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "637ba9cc3d38a5333dbd3418e5e938deb7d826c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "565e4750c4e9553d17202c73bd7b1ab76469a4a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "753e5b14f3501f1aec871989525eeea42fbf8161", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cdc3f4263bc3887ffdc8ee49e761f585e9307ad9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d9f7483161e4462d676904292eeeefdc35daa593", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4b017305f56c9b73da72b3677f6e080659308f05", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0db9550f15a9dd43c3da40ba2994ae6edd0fe744", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e28f08d63fed07c482278f725c87efd571016c8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "27ef81f43c8a214ce3454be7fefba241437b0f66", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fd72398e76decfb1456d91249903560dc82f5f75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "02feedea2c3ceaa775f4589d65714cef2c7a0228", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8bc485e2a18e9798221ca95cd38c1e611d3e2bea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93e5be18bc94f22a206c69bc48e0dbcb08ff34ca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9f6bb7f0f4acade7671472d6b17eb7c378a0c72c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1fb1e39f69ad43f7675eb63a74cc7b2a7f1ee295", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61561de93c26d87b04928df3e41a2b8e853879fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "340b23484440fcdea4f66c8f789d5104911a7537", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2d1a38519440e1f40341cfe368437a8d17e74055", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1fce36a62ce56a400430cfe1e4fb85f7a6ef4ae8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0c0ffb0dc38ac0e03a60ccb977bcf63b604f5eca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c0231aa7f9c2722c82839f5e1ceabfe73fa590c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "111d09d2edf6298892c3310b5f5a64d41fe10492", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99e70c659d458c1e7ba0bdfb4579cb1aebac8baa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "46f3f69be78d9c22a194c4ecaf73a2ee1713ee8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3706d55b1c829dd57ce07cf33466328aeaa5bd75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "81f16d939fa45fd34474ea87c3c2d7c5fe315208", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ad67908249e06b746b3045531a1932296c22accb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24294257cd31b4afdecfa37a28b3edae18f7c434", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e00363db5658bf4d415e3ccca8070aada10ea601", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cae8d35da8fe69ffe1bd27a007d465858c08e15c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92eaadf85af725cd466c7f5ede58e63d6e19b4b0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dea49591f96221ee95ac4fd4e363694f5e67fe05", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "568acbf509e76647b5fad2f1ca671285d9de49e7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cef76d2b3dccb2a0e88ab5b1f877da2f36489e76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9aa5abbd2632495fdfaf4b31da3f05f6e3e9c501", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8da7dbd0d5b32d35602de86f5034c4f5691a73a7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f56f48ffeceb05995ad2fc4643c1ec1dda40a2bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f99ee09b3f23daacb6d78617833130d33a292a0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0607e6ba0dd269376c633de5f286196d25da5657", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23917328d13e0cf4ac81ebbce82a180aa94ee577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86c7f78c3ecd56e6dcf687bd6de7b7d6dfe8b88f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b8fdb1addda8356073c7ace033ac91616a46a741", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ea7a77c816ed32e272aec25d26478e3869323b3d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4cb16c150ff8ebe2a61c8989526eb81eda60dd15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b62d60278975b9611af931746f390ecf3ee6541", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0f9956cffda7931a0bfd602cf88db113bbfb75ba", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c2afb38e53c49d17e757d5686b0722a1c8d9c565", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cae0a7d00f52d2b63111a55cdb54feb6522e02bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "11302230a77638802c7a882b2dc8ef932fe4d040", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c4295e02a747130bdd50bc26aba68134a2b090dc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ef6939c382c401fa22ad784dd686ad3075ca866d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7b89aa4a91be70cbcbecf99e306f8776d119e786", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "95f40d8a017b8bd303c68c68b8cbcce59a363c25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5c1f5772d6dc5675d1a96a364a1026efba098e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ec36c26496819267f369269818784826ffbfd4f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "19def09ea3f7e9d2c0380b955df3091466f7d4e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "eec75bdaf815a44b16e2d85f80a70502c57e57e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05f3b0f95eaf700a27746d6b922b6903e4764e72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f002ae877a2239400dd30a2ba39eb9805392ea89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "baa3e86f309f5072cae42e64c43aa3bf2a460504", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "70a38bc379409128e9611d306daa480111c6e7c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "951f6aa908ad3a48004c8da640a4e50a23b4f0a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ea8d3845159bac9ccb3c46b21f4e39af681404e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78416ec5108443d8c7ad0e698cddb0fe79c14344", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b68b59195be50366abdace78e8545ca185528090", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c4a863c3de9dd6c54d4fa960289de0a04b5a0788", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7d6e96a029a51fc91ea390d69597406ba0bb654", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "08065baa6c8353a1bbe9b5637b113376fb028175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a926f6fe12c257a5bcc4acefd2c65df7a7c6f65a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e779b297ccc67da5c6dbc357554e0c82784e53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b84be30e59082b2f6f14beff08265ed6192be341", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "47f028e4dfadb34ae0e354baaf96ae1ff22e11d2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "389f83f956daa896c7284514d6f48ae5ef63070d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "03b578a9d3e81549c93b40a54a87008441531757", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "79c728194fb886d9fe6ac1bbf41a36fde14797f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f1d6dae9ee906d704950e76cc30a71ab4fd9c339", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e6670e9dbea66f1a6cad1798452884fabfc6d518", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f71fd01a5bf99d478bd45e53c32b7f86cb17b983", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ca92dee8f882527fe493b75f56616b53f3f00ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "94969f98e281a1ede6945a90777227d8111714f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9729a47c49130e3436bd08b909cf577aa0a36a5d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "630b1057c6ecf415ac181f825e3bbb259dd225e7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1ed5376d68747b577f35249c4092644a3c266f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a587af2a585825ad133f3cdebef9ca5f1e7773e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7943fe79a9ba3945fe14b8e309a129a51703b2a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "485d1de68d5484f203b57c86b091bf75c3f5e57e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "24bd2fef0180761f8a79f60af0efe9d417aca92c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "adaac0ff4a96091f951a7802e52e5b13aa983cbf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf44af787a8b6b00d41dc383c3cdd4ada6b6a017", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de8adacbff8135c837052edb20eb496bef189d93", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a9637c25a32f31de9eaae75520f79774f82f3912", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f60ec6122d20df15bad22bbc194633c1217efb5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f8cf9520930e5f1e36dd635061998b6d3bf14e20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ddaedf9640d2e5112c99bf73deac63de8cc0636e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b5212dab075ea17a1de95383850a243b2ef0384a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "49e393f0a1e4bf55b3e71a7130701319311b2cf4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03b50102a61a2082b414d6a1c645dbbc3ce3aaf0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6ade0abab4581222ecbfcdd122c7f7e271f73c5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bcd4760a2fc9b2fd982693806f4744b2850ecbbc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fa2d9603a69d78b81324ca69a5f0437e88c803de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b87296ba079d82a726a57e07c147f2854b8a8e53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "484454949dbd2da10c7aa1b939705e9e3e579875", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5309362e7aabb1370c0ab65e62bfa5befc520e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53d78447c87397107b3bef4b4eadf8e129640e82", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b27ade7bbdfa4ab9f4d004b876ba95e89722fcc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be661314d339dfa57774c042c83e4b6f576ce9fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "569c74739d332cf1471e7023985f244834addae6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bb90a6f4d2810bc4c74ca3b44ee356c559e4cbd6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "da8b132f7cbfe7b64ffc8e03622165b79c7f2d53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cb01cf977ecaef6ef24287272b61acc368cf7f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a95db4f9446c6537cc155071d8d411f6f3f52389", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78bce35ac9bb1638cc5fafd788988014c94e49e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a742c270a52ee5a24b5b2e1c8686cd5bac63520", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9796440fbbe35d5c8c7be9f77bbabf505fcd0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "000c9c393b13e367f1258768d68ccf17c146f2c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "32de5572c19ac4f2334aa603e9d0943559c252be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "210025bb7090f30d3e67a351a5d15694c267c530", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c0ec6d19d7602ce55a617ebe23bdb138a396d3ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e2615b14c3574d2bd99c37069f97dc048ef34ae9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8817bfe50679a02cf97e16f28871251ea8d804e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "75dcee8f4093b667378ba3a5adfe0fd8beecad64", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e71f08293d89897ae9daf3dd2acec20f90cdb311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1567bc26eb7eeb81422bd8977b007556f2f15a58", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "390345f5b960987f14e2dba425690ffadcc43e45", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b578a569d2c8a9f5cdf95dadcc26eab32de580", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7ccb19a9c6c5876357897ad3a09c0c83789f7f5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5be47fb20fbe12b5b7ecad649d16f247d0b576bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "aa76a51c525e359fbd8a10494b9a6d658afb9144", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d58038b788ec8ddfe01e9555822cf3776832357c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "087fd988a63d9c0f8977a2d2d72c72dd3c8b89fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "372e60e98d03b618f726d2a076184e24e2f68ea1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58e282d204f2c969fd5269803cde6c0e473e7d7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1b4ec3057e53f83926298d75059726fd53903dea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eab4ce0b390731ed919f23786c05d1687aeb9a1a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "34fd2bb31739160f7c237d83d41f7b05e59a0fac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8a74be149b12bc22aa904c10f46fc931450e04ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9e033bafd61cbdaca25bd24148ba590ce6d50f63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "31ec4ec0708f055b35132110b0c3053a243eef7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7f9c894b10017a19d202cc5aab1be0691c46596", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5442a68eaa06a4a0acedb69d523b96d5d1e94768", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ada0e9c3154d354b4f906df2e40921aa4aefb58c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02e6f6a24325ef5f48b2a6e04e8ed6e9d78299b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "79fbcf039ce2c7af780b9ad56b78d94c50f6c514", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f42c28ef60dc155e178500278c9bed43df0722c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "02c836ab4c99463cfd52751989526b925cd57710", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fab43c37d96b418bdbb49ddbb3608494732a6c98", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1aadeb19c27d55a085f74edbc8b0d6c33ae79820", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "63252e9faa1c7b6e46326a997b96b0042e287213", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1452b623e37ee4e119f95f331470b4ccf1927bb6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "468a6cb58e00e35d8c9e342d553f64a7efb4e515", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5009271df6d2cf41a29032f9455bcced8a270848", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ae32aa672487ed5db69ddbbf89541b189af39e4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ae34b558f91f6fb7a6477ac6007ef90013033bc7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d826d43a726f878c62ce73b3263cea321d293ad3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a08efa5901d31c8324efeecda22be93b9a20bc7c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "921dc161c5507618643153dfd6eee420bfa05d20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93ad3232c14fffee09321887f99faba58ffe74e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "09875cfac689d25dfc0223241654f1ead8dd749b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1c1106ac3be07131a02775c3d2bd27b4a56c9ac5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "04dde7b7da2f20463ca11bf4aefffc9ea2e94c14", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d17d098c61bd8e5373881b2f0f87bf0757c3d224", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a0602552676b78061c4ccc1593ab41975cad9c1c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1ca07c4984afe4942ce67565ad067ed1fe3c10e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71efb0c48d7c815e8f06bcefe9283e7e339dc5ce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24d94bf770d2130cfb28f4426e775b0360d835e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "531300cf6b622927c9b83eaedebf3e7ca18c1db5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "955832d977751f948c74921e1e0afcf23f5f485c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f3b67051dc269c8d23cf298c1cd75be07c14e4a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03cb2fc9d0608d385dc695151ae06c532954a882", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f0c91b3f71f1176b47712a420aae6e2ab720450b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f5430cb8f736ffd330a7218049d0c73a0b825df3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3edf7d2e77a34388b0417de6737c4c14e6319149", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2c47b37f133748004a05d636c962a3fd8ea80aa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de35f88f1b00ded17e0edd89d14aa0e8fc260daa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0585defe5df0834b9bf5553394f4bcdc417183f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c8c4c7a351042039acd74e224396af174bfc75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4547c2eaf86a5c2ac06c6899eff91122689e21f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb809401270db26bf48aae76c6bf210f9ec2520f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c5429c226e44eb40c10f7d3b96bd73f903a975e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e3de8bf7f2d22480fb30b826398d93934a9c72eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a9b37f521385c7d12c7c7700efbe08cba4fc11e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "857653030f3b0571f49a9502a5288b6035bc1175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9bd1c7dc475b3e0a4447ec07eb152f966a94f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4daa2a0df0399d8df1cf1e9c0079fc7b21d339d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5af81f84992f5c538c8b3219fd67b08060160d9e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "465917556b1a1c1698107e33b9eb334bf44c2d9e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aa95b2fd9d6c4b8399ebea34513d5787df269582", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d392dbe2ff0f5a0fe8d4e285c626cdb51cf5b78", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24b1af28703cdf0dd973a99fbbfccba7cc058580", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "69bc74c25cfb6c4d25e217995558172dd2becda3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2dbaf301b5898a6f0e9fa218929b24e232dbacad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa6fffee6555f0b34dbf7369c5122cd2ab06c193", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7638170ec1a79e4ae1ef7cc6a788ca39aa4ac32a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "655b4e541dfb56a9b07382d4fd7db832562ff624", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3021402c85c7b14e9d857811fe24baaf8d5bf271", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a38db2c7db027264c607ca79f8942244ab3b853c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51015da9e0b60581677ce64fe88ba2e41f0b39fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dc1ef5ff25ed63bc170b7023434a70b89e161432", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "94cfa47652b62ff07f8d7cd00b332835662c5e70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b2a742e880986517ebb9d87f0ecd82d4fd379d85", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4a916ec1b51f5e83fdc3ddbd2426e43528e20e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f058e1dc1946166f6632deb5561ace172bb3ce3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59efeee37bbb918e7b0b83da74d5f2cc28bc8412", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b8084c4f78e648f9471839c3686718596565f3a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7a6b96521fc242415da6a43082afe549d2af6b13", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9c8d4730504d52d568ab3b3f2a24a0d017b1adb2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf63271e808a803a26892314e95d5963958db710", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a85bcd00cb0917ed52b02bc464b87e008056d773", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9ccf1fd3bb118044efc8c45a679b1cc4fd39ee4b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d5046149fc4e54eb044cccab177bdf816a907cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "83300291c01e1b9dda57795bc44d8a8dda572686", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "88fa824b503a767c4713211702a49bf783ebeb28", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "698ecaa5f765be89f6b0e5eb6b9e6837e730a8cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "068e5bb17743305b3fa2beceb43c0525c4368144", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "84976084c3532cb8fb3916fc2820f19e19a48b5f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "23703f66496f120efd6d6ab90128db2b12892280", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ff46aceabfbd95c85b3e316efe49608a8cdb6339", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef5435497bcacb087492146115f7be440a7fcef0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "413c18f7ce1ed94c3f3f4bb955e7a88ee493a653", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8342f33d0906f95076529cc9064b515437d97e8c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "de8c664b42bd2004a58582ca32972819a1b5cb80", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a62bd5dc4adf3d36a32401dfac50597e63fd5ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a62867616418195d0cff4db469101908b7689b0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fa60a4216f544c353f0347943442ac19d3513e4b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b45d27aebcdc663c155f94f08820f35e5d1e0b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e416678d0ea32bd5a72d9eceb657fbd1aadfd5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a62968faf191afae41d18a37eadd888cdbbfc2a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "903f997c631cb093a5310f5f0f1e1fb39a33325c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "77e4def5a76d5c594e26ce52f8815eeac9800c9d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e521a87e2378b549d96adbdd1e60fe79a5cfe12c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7cedce6b430233938072c11a127aa4aaefebfa7e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b422c8244970d2221abf8da3da12eb55249d979e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51e0badc7e09cbb0e7c5c35ded7a00b0e598f446", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "734985f741961be120a8e97befa28c435ac79bd2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0baa31dd065df00d72ec7189caa8cc9ace1474aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "45eb8776a24c95a14686e7818191c5ead8b61acd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3a2153ff010970fd3f8b3c9db4a36218c25a784b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "672c26c7f0043e699068a11ce44c3e9d4999df22", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8affcabf80b69662e4595598bd96c90a9decc31a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9dea0aff4769116bdb006009911a25942c98489e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bdcdd99149c6282255300e6a301ca3e86c91b7ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9006c53d3ced07e21b4efb0d1f0107dcbff417b8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f89476cf96a0dbef98a65d305777ea70a5b01d41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df5feee0a75505892a0db0ec3ac68ab5067acf20", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d4dc1ba5d3804532df7800446229812733f24338", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "08d87002621fffa9da36bfa5d607f8f6f2966053", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3982ef8b29d1dd05442a9b1b176ece1baea35aea", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8074c20b348a92daa7ffab6ce4bc0a669bfafaac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "554cfde3dfedf6907232552a39db0e46754252ab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daaec162a1ef2873a03575fd7f3a95bd53ffc5d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "45aca95271f218ef4af32a0db7c6028c70d16c29", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e10924935449eb206ee3da76b28629ae898eed0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "119f72a083cbea8eb8dbc66ab931f0f98a6b3891", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b345d3d0e24c4ea651041101735da36345c1ca31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "728fc89371ef40bc197c67fe8fcb9ddedf6cdf95", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a6422919be8d565675f9df89d38285590cce6e77", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4aa1d04672e1f26dd082d1137addc6502fd4a84d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c13ee1afe1caf411a72133a937e3492dbc103e45", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "142cd13a5da5759a852a494334ec868a9c3d0358", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e21acc0d8700a4814513d9e7cf291bbaae7120f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f408e1cd9f88641824317676450edf08f091a330", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435571f8406d18d7fd7349345a1f45a8bdafdfee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c26aa6588c0fa980538ce62bf443fb7898b9a905", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ba61fadb1a110e7dcbd3d13c6cad11ca168b8c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d92390a2f1f31a799bb7f11bfaca897dc98d6bb9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cfbf100e3d3433ab6b8430c0d7c726d78ee172cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4c4753cd8bc0417f3d563cb0b57db97047c4de02", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "837b6022083ddddaafd3ace7b203c317378acc68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92c4d224330671f679a9132e3254708d9f897029", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7be22941e0f7dad3a520e031d4e7d38b290788d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2df6c212053ed53569deffca7de9e3d6fa4a64", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f89d7507d5a2246af3eaf39a0fbe6dc2d34cb15f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9df0b97c20c18b9e9004ab8f0b442eb3fd90c20e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e8eaf265de5ecf7fd72999717856348a21b613", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f790dcb221d6553738f75926805e67251f9284a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cc8209d6ad5233b859fbd74296960da9d29cf93e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "390198d073a933fe603e09548fd45252c93756c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "20c507272a72e015c7c4e5aabac309c99af5ce2a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "67b7f07728b5391840a35192661aedc636f4a809", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "601d8de00acb6b7f10affb9329989f7acdcf71ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c96b7847f57f3d4605e9e0ac69b93af21eb3d9b0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eafeb9e74bd210cf9e7ef448a83bbe46481e9aac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35fe64db5c23f9dca7ac43264d219eef5787bc2c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "549d620a9d2718c96f6a01d9707ab520be207048", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "907c81298d1bee675c2cd761588ed8b88a11908c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb61fe8cb5448da8c375a2c40e886633ef4fe094", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f79632ab843bb232369e2bd3818e96a50aa27cd7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9c48dfffb9b5342bd71cd1a3c2ea30189349f5b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12ec3fe6f41a37f94723d79702c0d055b632fefb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ffbbe075e7beccd5fc3511cd34546028bf717248", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a73599b90d8229ec35f80b72108d1bcdd127f8b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aadc1f48733224eae4844d8365fe5229f059e273", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5f91ca0411a855ec09e32b298284c6d54ea7348c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1bf2d34da49592dc4fd22483a77b67ccceb6f0a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fcd9edeb76e1002363acc6f14bb147f179ec307d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ce9fb8871889882ad737dce3feacd32a26dad4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "92b53ec4128a5e913c84d7a022c79b9964a06922", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "517ff3bee6d8da1d54b64553efc8955f6104d0c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ec8ef1d9c79b2a3f028427edc26a2aa72fbd2989", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "16f0c1e50726951a4804dff86d2c61ad3d6d0fed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5879b76781a71f53a94a4b46639131b2c206bce1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3faba478ac72327ffb475ae32c4a66cda979f13b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66a8892e05bc6f32baf87b3d0b998ad5cad2ec27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "668c03caa8f9ceea2343f3b091258b3386b5aa37", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fae1d48dd9686fcd7e3cfea529ae104eb59b32ef", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2f428c46aba489fa1e651edb69d7298448ff12e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a7474baeea5aa69c85db2ec03a97d138e29426", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "523de103001c68abeaf14760b1040cbe7676b893", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3375792cba17008b80069d44c8c23d8b63211520", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "326f6e8b75c1754f30d68e0634cfa6fc00786eec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "53272602d489c937b9d770f31ea8f954aa5ef7d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "40b212e9eee0b1491df2643ebfd844afa7dbd7ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "15faaf3beec07a4c25633e8e2cfee1bcc7abc4ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "66212ce71da8b7ad24399dc46ca3b7c0560f1765", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f437d6ddf3b3e93c34c35efba5f8c80739a58ed0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e84461ccbb7afd96846e841803f8a24c62f2156", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "657c52476bcfccd94f00434a1f0c654c6e5b0396", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b541cd44fb0b2ccc57590b8021ca13f3425d916c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "af1931e15b21727efd043a8e3cbb07f3ab2b9b25", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bec0b83a2ecc577786c0d340c981c7f6f31437d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b77fc548cf2c3cf531c70e59ed9f5c92dc920a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b25edcb155407ac3af0e1ac5c0e3f896a26171ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "90b01700a464289426b5d7dcb301959e0f50f408", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d1a0c2d8904c1626123f96e555303a84d7a0d638", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8d3b2435509c7f4ce78b9f27556d0330147a72b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "966d7070bd08d8e0969092a5149ddf95c174923f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1082dfed29855abc490d191086e84ca80f3d146d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80f96aca094b78e5ed084b2a8835a3e25b496763", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9a0f3f1f6f8cd0873eb807641453827e9910f0d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4af5bc4e8f3af26fa48e201f0c4b326dbb8d7a4a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8da6b7c3ca4d90157511beec31ec865014b48e19", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5f82bbb4593514ca2e2cbdac22812692b697f19c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de294c8658cb89ed6b592da4143f0f95a93af01d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37284c4de55e2e880de08b467955145db5deab31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b6be0c17e709f3fbbf6e4c5f8cdc4da7caa00c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dccb8734a5f4893910eaef517a69977191b0c2fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1a558e8beb4a1498b3ee96d85b84954489916a11", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ceaaad8ddedb88d1fca93e02b43fcfceb96bd8dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ed7caf5b7562fa3295870fde0687532a13054d5b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6e9495261e622fb0e66d21f885616bd36a5ab51a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "403d0713def93d0f88cfec03256968327c9f0b1e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e82113b355ef8eb29e782af5c2e30daaf0af6489", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ac08c4f30aa777901015714111826410b4de95da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c21e812a9e6c14c0447710b781a3bba0585a364f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "08ac3906780d97e9b71538038d3b0d9d71d0ecc4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c24b016f0d815303f1af42f4e7faa7d4dec546a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "122cc4e5217565d86177e2b66e57b1eb7e343d8b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4ea67bda015159fd16dcedc629f12a11eeb34da9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f0b69befe4fb18b2e5ff07cb0532c0a6789abce5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e8136fa995086742a5e2ebbadc4d66766abc458a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3893e04b4922062d2a229ba176d0aca13b93228", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5da9ebc2dffbad8a5591860d42e112eea303040b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0a12544bd857dd4024805397f4a8abacacac41bb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "edd1bd8e064ef2690542df1dc6433c766fd15c30", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bca68667e8f68ee1dc858862fa43179e42415c75", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8b52fe13b6c8472ab161977e0b2635e3cb891807", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e772ef3362b18ce5fff11e81944de74249612bc6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "923a99400302aa69bee8caa3048baffe66dafd51", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fc0429ad3f3838076ae58d1a9577ca0c9f57444", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "64e113eb3aff3f90ea8d70297cb662e246e3c358", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6bb4cd88cc71904c21062642b3dbf2931fde6fac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bdddc62baad99ab5dad540272b6337854d598ebc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5842e6b7595ec8592a62cc5945344e177aaa0a15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa32e2db3cdf9c81482577d2d6d1df23ad0fbbec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4bd8d6917e43b8163aceccbb60037eb7e7274b04", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4b26af2d5a64ebb58d4e353ec4200aa3614aded6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "155fb65bc9b422b510e7bcd6d37ef6e4fb6c164c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5cbcbdff1bd304f2c0c59eb48ebe0619a5c01bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eaeeca29bc2ab9a2433719c3283487d3e94d7c15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b65d98358454f01f11633e6a2b59dcc1418a06ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cf507ffa15f1591e54549eba6430d5c158d53a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "920d5681667407f3a83a35161cd6773660d2499d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "80d9be3c952f7d243c3574647fd2b33bbe8a48eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "248e056a13b84c5096159c64a6e69d9fcd1e2bd5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cce5d206230307aca411dc5e5276c25347b617f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "229a8ee26af6b3e85c5c904b7a4c36b8cbf84e1b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2aca3d3ef11d68fd2f19952637be657f3d92847a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b686175b064380128635ae6b7af66cf1dbd59744", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71a1549f37be25f8aa3daf0be38995a322f6d972", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6043e3f4cd69ce3e4ff7216440406d111bf5e29e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a464dfcb01b0f6d6ceb8681a5633677656b2d235", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5eafd450709f71e1e2069b6b4778c86f2b5899d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dde6279cbaf592842127709c20d0582ca84c8fe1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "aeb0bb19d8e0c8f58fb4654dca053f125aa468bc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "341c28a48b9a5f6eed5340752a8ae5c1b94d7b2a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cec27a06611ec27bf67e38e1225f52ed6a5186c7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "14dd54886e18b2ccdc77bc656129bb0219bbe990", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f21ace028dde0334b66c8fde46f4e38c51fa5a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "050d41ead6d44350c820149c837224fc72e018f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ae4a576fb5becb8ee4bf209814173f387a0fc43e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6257b216cc765fb0a906d836966647de2fb9cf48", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e2f201262877baf0ca592d092b40e87f70647c38", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "844defc67f46b7a68d9b05c8b54e44c541ca462a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4b167ddeb14b5c75f43f992db4a7368b71acd0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79e402f57123bcc1f3fd951b5738af31c3b6f703", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e7f32fc7fd711aaac90fb3efa0712870f2366bcf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "495a9e45e55377f282113419ca2f7d6ca00c72f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d928a796838e2de4095d25a5fec219aa3fe6c321", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "74699afc32049b7b670660ac6c0626d40129c388", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a8b0cb9ad16b89a778407598179e84a65d49825f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6f8102beb2649588dac8cc208aa25ef006c2d224", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "285d215d0ed401c2a2c899035e5e262c9bcd3087", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9121eb05e94d9d707b0f6b7e100610ed419a4136", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e083d888b303a393993671d749436e068fa5d88f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "723da9214f860bafd4f5624e68c9e47f213b3396", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72d4fcdde058f0ad3f96a24c39258a18050b9e0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48da0af8c2cb8fe26194db6cd42c81f21f19af68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dce05da38bae3991072a2be4a277b22102378f3e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8337bfb00d08332051aed627f5b8d10958e9abb8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d4f345ea04051e14eaa8a7365338b57e3da496fa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0fdbf1cfa7c30d06c9889ee016567c221d9426b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b4f7aeb9863a2a6ac9ac464728c1953686bc9c1e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fcb378fd232c075e8afe594ed851386ac0359b7e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30b63154d508ae5504e106bb885113aba62244e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c89ad5927caa369268b653a4c5ba748f9506521", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd8aae772f6f71e32dacef69910015d803c526a4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "126813b2b4f534ad10fd075dc73c73cdc8f260a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "925304207d5361c4f2abc2b58f3d89bdd3fa2194", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c42c674be8150722f0955f320750f2420e0a0071", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01ccd69dc126d63f748f16cf3c002a0ff9217dd6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "82c899706e4f5d83695d1f0e5d9ee99cf9942401", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4eb02c02be1c082dd9c6c18ccfc6be212f5af59d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c612f7a308351c65a8a3706ca2be524c018170d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "aa013398b92759981c823e8807d3d1a05a6c47fe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "23a486b6951b346f4e71e5bf68957ca658c40a9b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3171fa768a41ded2145472cb2619b39b04219d0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c1d216ac268302f05b3aaf20546d5c732aee9e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51dad07850fc6959879f22af5981c0a32402db1b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7a8b2687135de4ce826751d3316f28949f175565", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "504b915b8042808e558a09d5b5482a65128e3129", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5e9ad2640175cad613505c41a5d795ad81a565d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4762046a4decf0f7db0b85ff3e4b58cd52523b9a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "90e3bd9c1b232ca4aaaa383d8b30356713c734d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "330b112acc3fbc13f70581237d52274e3af211a1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0d7cff6c0842fd685e1032df9c5d86b43c4a40d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c93a0e0796618bf57e779d3914ca0a9c8fba220", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "eac31901993523aeee6cf9016d16aa99ba1fdaac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e351609ecf2f9f65ee9aef2ce04740e9fc16e2a8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3c90a615c26ff976143168fcc17e06bb7e42faba", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c53a3aa33f629c9e8798e2ca6d886399136571e4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe607cf915393b3cdbce0b7799a78afa0842ed6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "40907074adebbcf2e86773f9e6262c4a28724479", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b5cdc3528a502ac59f346c2faf069bb86dac1b43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5d22b77cf5c715ec5488d9214d813d3908de63fe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "865c9279dc1a327ac55c0fda3a3860612227f23e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b67b53eccfd1c8121337ddf54e3a0bc567cf9ba6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "95ef0d3ce97e196f185a2caba43117689f087eac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d6f9112e6c835633cbd77c709855ee25c785832b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6703dc4403b6c278f5942833aea79bf6885611e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1bc00147f1d4a918832c8ac59f640e6f1ec1016e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "684891d8589d161f2e2049e83b457f3212c24469", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5b17c8614e3b50f9613d7972275895e3552cf6cf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7593923db57e61ae03a751b8a12b7ce0b05f658", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c00ecf5b4ccefa8c45baa12f31ab09bcf041492b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fe4f049e20528458d06a619036995e9fb6256a2d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8807a1fc79b3dbb1f22e5789beafbceb0690360", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da27c0438542e55716514e05e869ad8ee72b4f30", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4bb65294825918b6fe9dc32a4878096d96c3e1f8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ea9646044d9de2793e9675011d78b13635d457f4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c26beb59446b6d676a23a18986376d43429cd601", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "237c620456b02725e0194025f34a391f40a66bf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30fd6619cab2549e643f1eaca3d0cd20de0e2af3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cccebdf095724784f8c1e167cbb4f0c2d7db2d3d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1be06ef53d3c46a7e3cc4861709b2b065d6e9ebb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "298d6cfbcf938e2faaf908e332d3ac9b0d1b4155", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c7b90778539fcdf0d4561a101e46876f90b2d5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24f685e27d66cd9223e005a2de4b90fe47549599", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "69458e31daa1a8d25d42339504475ecac88c51fa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9956ff28e4f94e680fb0bcade0831ec371219f5a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bb6632c2e98f407b91c900a94eced6f122236caa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "65cefaa2bb108c7d0c91d4b7ee1d66cca02eedd2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6f3380f039555201b0d4e4bc31a7febf58452f3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bc7ebd19edfc09350ffbd9510995833e47e129b8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0b73958481a0e6d694814b86b27dceaa80b1a14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb7667568c7d0aa5cc8b2863ca9276171de1ae91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "84b564195cb74429185b69532457d1879479c39f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "90a04f0b5fcc7d792e35e429ae9f14ffa24a04a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3b074d9e9c811cd50707238f3bf036189001cfc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9b8f8de2fcbfc3b79207b69e3ab01256c6d25141", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7e33feefa46ab390e35f87cf2e166ca74e70de1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b99c3a359a022c5b6fbd31bed45dfb2fa92dce7c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "58128e3b47cfc856031246851af325e8a0a044eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89ee876f240ace603d10664611aa32eb4c2835d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "460f3f8e7851d63e924db933872951b87df49f17", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1b108f8420a5957c67dea8440d7260fd616b9671", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3eaf1813b6fbd1f254ce85e0b704e020a72fef4d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "743958f640cf811e1551143f6850b102967f63d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a20e014ae7bd9bf23a177c0b00523a991c0c9700", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dcff14155900814dc4dff5df7a5ce3bb8290f2ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2cc09fe483bb23873095865f0c8c24fa85a28361", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "574dab6e9f1363a9c69fb4cd1ca840efaa00532a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45d9b5121939e14de880fa33f742c0b1cdf5ac85", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "565f8fcefabe2be1687b48c93bfbd2e45c1894a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1d7c39709188b3b94acd9d40595f60b5c6eb0a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30e158ff288262c93c01812eef547b0583b8df88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ebf56e951662b6529bc315d4bf15c2d15169af57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6e4761ea12681ec5dbb1bbed158021e591b2f9d4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3d690f0d31ca5498f55b6ede5f9e77c730deef73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cdce9db8cfbddaf0217e5e632c54dae442a32a6d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f05bc839297771be3759df80725bc21c9f6de26e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "940a3779379cb90078051a345c6ce2d6c5ef963f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a5fb52c7c5df77efe9fd34332b5fac88145834ca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b2cf9e2920a44a0c36206115ca9f0c0b00d72ec4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "150c9d5223557086705b74d3d6e1f4951b698fed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "350aa15b25c0d00ebc1960831e3cb96341c3141a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68b2e4e9c25eedc8222a0fca15a9dc2640167190", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd5da1ad807c045d5b157f712a88527abccda931", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "758abfc334853243d0c58cc39cbe58f4ea7f9888", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8ff1ccec44c10cc2de8bb5dfa200b3a5aef0d3d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5ff8b955da6ee0c281270a58a65f665b93cc907e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2024c4619492180c7cdf9faf4c8e39c9bf443edd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b9dcf60c84925bdde7eec7c761280faf2b8755b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "508b23dbe4302e6b6dabc8e32dd6ffaca474421e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "af5aa43fcdb38fcaed7a7ede0b028608537fdd60", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "834edcc26914f1b99fd787252e1aa3064683f0c1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a79fbbb453e09c6120ded1539738a654290f1116", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bb34ab4e6744a09602fe221adbd4b4aac35e227a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c607fcf1ea15d41066935835361aa1a9960ad61", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4af3e6d8970031f5159775689e30408d8a4bf39d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42cd75816d5903a58f5dbd1f5fbcd30cdf04e1bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ebfd3dd61de4598c3466d0b019fccfa2c78ab8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10b66d9cad4d8853f9843d559bb7f6688bc60008", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6f15ffd29a35fbca144c408d94b4dc3f85e6e6e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5adc85aed1a220eb6efe6a3a501790f2d909c39", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "beaea0f55d9a6c832d63ac525a38f77c4ec72051", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a0c213dba4d035c486697b2f7d404041e4bec139", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2579bfa12eac89ba373890d9a3049697a0da291", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7d87ff9353b7e63338db8ebaf643da0521bd0dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f75da9a7ca6fb4fd50b6a677282711803925334f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c04953e0194e7b546dd27f251a6252f4eca2b942", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd04d3b9017f01d3035c8b961061f1887d9e8bc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9b4eec05a7b42db7870dd5d74d51ce03ed543e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "648f4928e88489e03d36e7b632f5949bab3766a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f8195d8755bc27f430bf53238a2b38b6a4fb7bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "444322f0ebe6e2380b1572f30fb8bdd1ae0c9798", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "34fa963311c5177dee4dbda9f7aab9dbcb8637d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c085f44a4f178be6e61a2790906567d61fedba89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4cc31dfc3828f85e82b37a28b5126410137b5dc7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0f3b1d075b98e647fc0ffab22b81a2c3e2ce168", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "335ee543ebe8997c00c12b0f6d264aad79e7908d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a41a132107852921fe4849c62174f9b3a57c43a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f2b934bdd3c594555aaf9ed14f8f04a5bb57105d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aec7a0babec1bd606486799b3844158a12ce5f32", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec64682a1b5cf26f099fca98de95e4a6fc7d2d88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "74fcbce6cc8892f22e542fc7d1b63c30ecd2ea7a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6006790c1517a6f357636ef02a91d7d0057f665f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d7ddfc338162af12bbff5c2604795df3f1b83b8f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "39e6cd02757c1580c86faec2240e6923bd72d9ac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "91ac72a0e58ae51820fbf0afb7fa1f74bfe82681", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e08cad38cf2619cbbd9ac47eb0d7b8a5378c2123", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "45424ccd3307ca80176b89a81231c7d4a82502a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "825aa850aa63ec4dcd6ab96af2506a91f7c8d6a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4da6357ee7e7cba849811a8e49338751b8c08d51", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d233503fa9bdc624db8ac78a5efd6bdd490ecdb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f3fb23137b601787ba90bb4340c992f75d5916c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "183ce17ca2167b4058461f6ff87e1a6e1723ae80", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34e798afabff67d7b50861cf23fea9c2749ff1a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "303ac209d43b323783a4f8e1aff1f505feece122", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "41a21d5d5edf44aa121d98d277c855ed0916b5a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9618d13d5ffd649adf8b6a0d8c7e6acc7ebc6580", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0e14eb2ab450d0c4320495114dec682b5c10ab8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "48cc97fc0478408194418b817d0d7bc245c08beb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "662bbc334da25d6a225f20289c5f4568f00a9ee3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dcc673cd3142cba535b145ead407bba352bf9e88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba23b996fdd241c9714010cf11894c0d46f441da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f4d851000f19dbe91e304232a0bd58e1af09a2e8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4760a6b254961f632d732249210f8b2c42b18142", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e4efd3d11fc8a8c497fc4a85b8c99e0d8e05097b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2f9b2600b511ac1a9ba0fd74722fcb2c618dceb4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ec53bd7f20737a3692f38296d2872c6abfb97edf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4acb3342eee3e12aeb431036ece0ab9d211c499c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9351a5fb137a92bdaea42191831df8bfe43b50d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d74466bb7c3b7f270f049e766a67655631915a77", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "405bc3f839a0a33b2e58ee37e594b2430624186c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1eedbc1d348a0373ed2a456ce0846575901f1249", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b791ae7b4b2823d97b109cfd9c02ced54abd199b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "adcedb61141eb31150906c149101e640c0b3588d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "78673e5f818cd28f51e3bbf837457ec78f1350b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4475452f096fbf0c602e8a87fcd075dc401fb5c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cad2fb4ee341a4c65f3499f4ece68c4c2ae85e3a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5f26470dd951d1312693fdac91f07f1399032174", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7fdcaecb275bb9f8793e777d5b64772ee1e6e479", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9964d5ceb83220945eeb282dba8afe2490d178ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e0953769fe0842473956e467f632f807a4d9b7a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b9c42de5fec7735fd63b5aa590c080734aec45fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6b207bbd49f96601484f52a3f4a4f63be7b9e89a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0fb5462611f8bb529a4da8e72e431dd2d5251181", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b4d47b0a38eceda5aa8d5d600d783d293d24cb07", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "376c56ad73e952585cea0245e69119235adffbe7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "284e443b430b7d4085cc6352008ffca2d77193b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6625e4eded9b1b09dd6abe6421423c20495f0e08", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be9d76f5fa707ced7bc7afd7209a59125134f175", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7478f0fae59768be1370e619dbb271c49a39e787", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b281d1b6efbd0c7def72186761cfc080807c7876", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "200acaa6929a418fe8517e3420b89bbdeac893a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "287d70e21163b0916ffb8a707a899c8bccd65275", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fca75102fc448414631c66aada891531733035eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0a4defcc66ce0f878446eed0adf1a01885296640", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "90c78b30fcde62e6904b803f4e8ed327794461ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76e711c80a8637a42792f8b79d291dc9b0bc7636", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a52f73ed4a8b1d5364d3e58fb8b24a64ae56159", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9df1e273f5e82e66df3d1c4e6830f9ba798e2857", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1ed672468edee07fd84abd93f33234f556bd137d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a6c2663a3a4f1e32621abc74a90af3555fef276c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11648bb7f955b8c9412966be194ede0b86a92c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10a8ef488dd24a5bdf99a12fbbed31e81b705b0f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a2fd5451fdfed98795d1125b5f0eb2677dabc539", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89f5786a6d06dc07b653ebb8784df60bfabfdd0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6ca69e46b960dc852c58989785d05db08b00a21", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "665f6022ba8122bc6e89173deb277af8752a48f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "660cce14b242b71fe33e80186c5eb3aecbdb0f11", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45a6f125d8db239914d35bb37a10807d20fa3582", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "183bffdb31ef479bc9c4746b19afe5463d7b6a56", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da58775217ab42bc10d0c80f04f912a941968899", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ebd4d9829c937e62089d957a09dcc04ab3a207eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3e054fc6e627b93e509e7400ed7562b768df941d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a90a34206d6bf47e878802729346bcf51f65ab8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3f27ae60180896eb37d86e13bbc9775422dde78", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "579ea1fe2c5a79146a2fe27e061b1ae96757d032", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7ef579fe9b5067c70fbdceb0d6077a22ff28690f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50e0981316d8ebf3d4407d72058b5e99b0fdbbc5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfbc151dd0601eaade814cdd556ddb06e26d2e72", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c8eec2449f38068ad22fe2bf94fe683240b3add0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "35001807a7565914cca399be133e494b92f01279", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd85f266321966af88dbce51a9b86b4779cb865e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "48c152b9fc9d6a972eb496faecf6ce39d8e2a9fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd792758c3884d5480ccfcacea1df30f89e55ed4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6216d94520e80cb744e6762d42ac72a9effae516", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0ebb7db181b54cb0d41e4985031093b87d9c2443", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa56a9f31929d2b2cace1047d0f4c4a11840b23d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "54563fa30aeaed04aa788d59a3d3f4eb24c1b005", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "825e949aedfd346a3a749d20fda073ee4c3e7037", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ead04f50ab723ed51d547d1235c678579e957de", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5f83f28538c5f0a20169886d733f10f36b17cd24", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "280cb145eefa0714305b06a8a3b723b4809c4f88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e223d6b6301d06e893fba7fdfae89d6e4fd70d84", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce9bf290f85b6605367c8eec7a250fb9de426d6e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ad9f5b4f9038539f040e56ca7a8d4301fa184940", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2072bac424286d44c31d08c207896a66fac6feec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "272b81be1e3e9b316043e11aaa25df28178ea2b5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a88d86d248e123818aa1da1f4bd67c1c3509d609", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2fc265c9776e7192b998865fd2b88493c7674d63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b18ffb395f76bae9562a5a95096251ff287eb487", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7a811bde0f76f7fd770621101c059f6ec9f315a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "859cfd9ce1c745a47af2e17f28e9beaf4a7cd1aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aeab2c323fa24bc426c410a3a926296f97f95e21", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e350185e60a947062e752b8fbe2042283d78919", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a4241c4c97e3766972646f17f48a469ded2d7f8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fba6c4cac42a740f0aa2c837ba94e43aa2fb074f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "981087eb1114d5a759c4b0a880b396af25b82e99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "94e94ab6bd2fa036273ba57e7542353205adae91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "604280b647d738c29eeb1eb7e23d469c684d9692", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "56be0954a64ea5f3ec28f304987c67546f5213a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d813780e59ebc7e7ea9284e4344727f619167456", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e545b08b224344500d89abb6d49408ef3d2d3e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5fda4b9132f19fb9010a1bc5f97175fa9d39014", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c787baf986d9a2a0fd62c89c0107d4f913f3dc44", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad87872e3252025352fb98f15c972c152f5ed837", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "80f4578dc4b1039b6329ed8cd3253dd1807167a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4441a8598017dca1c23117d4c8b99c00b60b371", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "229350d2e651905204d1a3d4d20bbd61c41f39d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "017a988e9bc58921ac9b64db1ad78e619716b340", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "77803f8c9c80989846b295acfbb9f27f216651fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0071bc30a6fd190253db802fc3a79fa1abc58e03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "88c56121342b365b3501d8157c25995f3286127a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eade9fef89579bfd53255a99cc9374681782cc73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "95a49e7c187f6c932aa2dade5f69985e0b019389", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f7803dc55a86d70be599b9cc7c5c35caa2f04c25", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6b84cbaed14bc783ff4fe0550085386b3998ff18", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a7062c5d915212f30f3dab1a1d324eb4746ba2ac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f52bf90840e34895ac5623ff69cb5829f6f0a82f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1082bccccf760d6ab43f029cb1607a8ccb83cecc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "00309f8b25c05bded1f44af748ded07025d80f92", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ac74f74c496cace98bdf9eab88ea993ae66568e5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0565a6ea12b5a2a48e0f52dd7e93fd35aaacd852", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "82d39de6e997e8935d9c53143f6b648692ed5b03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f3879bcf676cbaef448d854d2b5d5b5ef7aaec08", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d71218c23f7298f291acf956c96e81dbc15f9ae5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bb6fef2192691510b8e5c341d33085864db19cf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f95b3f0ac8ee1cb85e8a793bd71cf704d3dc2da6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dd6017f3bef9dcf7060d2b385629c13955343a97", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cd35e6d6d3f996c1cc7d936e25387ed7ba43f7f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6c399454c5d9395f22c299bd1d47851e07c2540c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "02f8fe32c8bce658e2a1da2b1b43d3e5b354b39b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "670e2f4f537a28ffaecf45cfaa50f92220f78bdc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ee9cf1b70dfa503d0b170a1c0e74937b605179f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8c529c02bce2841ad451315dac156bb5b2789abb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bcb3980e326dc1ee6c98cfbc4046edc2b5d6c06d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b3257f052ad53fb554305ba743ede0abaf0ee6c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9831aeecb24f52ddf82e9fe45e649b3c6e6357bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5176c3bebbc28cc4495acf6a187806576bef0890", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c0a9107f5657da183f9f6d3534f62a5f950e2bc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "932423773c2b904d0df4f71e33fe16b27e6c295d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d37cfb8a3a4da0196b313e3e0f35a921df2fa179", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ccefc01e110fead40dd8a27ac1074b14ee35bfa0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a53303bb59924f9df6d6bcd4643cbbcd52b3944", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "42086a9f29d90a0069de86f64042ae0f0ec72488", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed5dce2baf55f0c27a85497e6a0f02f6aa921544", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "128e23a13c3642ee0c53c45b0f99651ae9fd9a83", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "43ae7715b8655b02156747616ede4beaaa00b0c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4790dc14f12f050b6eb043105a889398112df4a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b7a8a8d80ac0c4415d19dee90826d2b80a4872f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6b2ba2c618122b614f6e3b53f7c651b704b3de17", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0ec28e8df1af4a3402ad5620c02d2448ff396e91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "651e2ba9aaad5ae533f44dcc4619e64aa71fb5dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e1b9bee74e8ca6007bed628c3a7c1d974e923b3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3c8a2b849b3ae013e4ef41d144cfe62415344ef", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a52fb6c19ef3235e10d9634617201bff8c8c9969", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7b94dc4461126e5e49248bfe5296720a5b4b3f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd7711e1b533bf770b658048e0a5922c356dd5a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d05112ebd1fba1efeb0163363e3f655aa4c4135b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "34ef4cca6ae727677d50f2a2c5fbb041d5dfb79f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed755bb0d4e16b4ddf2aa5be95476550277c983f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f7015487347c30ef34efade1eba11baa1b3aeac2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8c1f5568b1351c4f54b9ee5150be841645f7dc43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5d5099432eec5e8c6bc92783d2c94496c0cd2a74", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "632f5c1b31f631ee57ed5a0cbaf3ff39b62d6260", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0fdb0fd390e35bfb004fccdeedb83a77121c606a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b12b76bf3d7f74da43b7ff4c23b4072f4abaa0c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a7caa76f7a43190a80168bf634f3a9427577d679", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aab12667ffdae64e376cce3192a5047c741d00c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d56c054bd516b618a1c9ea5bfa3d0750cec2ce9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a08b1040acd3a12e70a2274b012f8c4f74913f7d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1dcc22b1116daf6dfa9799995ddafa665fa2e07a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34864317dbbcd682c06aeadcf54a03941a17c772", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a91964f3b47d2fa49e4d40b13ea78313389aac14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f7ada4f272d97e988996d1a1531770cb9c31e860", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "addf3637a6f8137dcd8629c451f52d386814feda", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d8e6465844941211530633a696b85b4cb25aa588", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7bed72563da75f07ca5c47c2c0be951acdff9386", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0eb612f37fd3b75759bee17bde9f088bdc9426c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6c6f093df04bb7973429ce9924d0e6d2b39f1a3d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b3908f824954c6eaa9fc8a548841eeb8c4a24518", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d939a7b210cdd6094fb400d67ac29b76f92c92c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5419272485a91d5da052b88a1cf5d71943a9323c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0b56fba245c7cbce409e145bd4e1436e5ba04f63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11c0dae0877b626a5e0709a8d98b2dc79814ae8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9beeefaeeb535e780fb094c593479dde6023cb31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2035c0902213fefa41be9c31f0877ecaf0f1823d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "15da9afc29a3cf0ca23b4981bc8953d474704f54", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1ab4f37aab9152bff243e20611785f369af64352", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9432679f702731bef16c314e8180e18656c1695", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af7b807684241161bf6c7e76f990b8069dbccac4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e0d09a348c085e48387642c596a8e975bed8a844", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d1bce2e4f220f17c8cdb7f5d8352be0f4d0d564", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71b7f8095dea5c9e86081460e0cfdb0bfc9f553d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58b001025e4991cbeb646363043694140b24a784", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3295163385dd939b49ef626c7c921ad1e76dfe88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b02ff5aa69b8b09079031efc44b89bcf018e194e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5690f8eaf4db52984179082cd754c43b17ba1ac2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3cf4921291e1ac0926f7043994ac7edde1f10488", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c4fcc34a6cc8c070ffa3308804429c2f5e728b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f844f680ffdfc6f7a1a17a85cbb6fcfa4dc35d65", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5ed260e569239e092be82ae13939882c68476ce0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12f2487b5b0a85a7f9323b3a307486712e5c2b7c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a9bc835314529b4fa6824d83cfeec78caeb00c9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a692c5f08e80c07fa473eb76924d225bc6837e4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "29430398b2f99c4e5e8fa2bd5565ef1f562f8e01", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0481242196f46f72d77b6442b4513d3720cde2e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6fa996275d6d9fdb2a41e096a83e2e8db3711fb6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7c4a22bb94d853abc2793c5d455bcf4b97c09c1c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa641959d856821a02c24b57e7bc886001f59ab2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "97f02a4ded3dcd72a763cf559da7ef43e2c02c4c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6dc7c24867d7840fe6a61627e30cf7901d32aad0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db91c60a6b7cef3b54517c9b38705201d41acc03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cadba66e32fd21a3422b92f57a5bc5a19a480c27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0034d20b4151b9a0c943ad154efaea7a79ea858", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "28f23525c72f9b3fc593c5ccb519ad7163d69742", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "474a9801e4022f9944b59e393abd5e1cdbc9cd45", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "210eb72cda27b7aec0ae9003f3c5ac45875aa26c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "780599b565a560dea68c7dedba527b5ea350bfc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1c1e5f4af114760a772c742e7dc39fdf1f45b5ff", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "967d7de042a2edbdabf5448ac4f93d17c7ccb91d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70c752b60c64bfd0be17cb6397fe184199682957", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91191ad27028c1e9e0ab1dba0df1e43aa055c895", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "07526bfe3957d116894c48b9e3cc20914a53afa2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c88a67113b6d64cfffcd78dc63f038c9ba848309", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ebcded0f5c56c6b34dd39375ce06092ecd2dc6fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f380eb5c2bc573fa7f22afe591f2cc2d2864f286", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a819958ab27fffaae1f0c26a4f2ccf2d99bc2bda", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2430017131f01db3c5180706333f5b98f6752d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c25a4f7c309f41d2fb2aa81df3ff75a83be0c43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad80a3c84ccd69d6f91c25990163c07d00fdc5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "834d0aaa6bb8bc3f434883eccee0392ad6fb22ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed305f5c8495fa5cc6f7a35adfed091c3cbf6001", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6ec9d73e310e0ff0b900e8f15dada348563dd528", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5397d3b8f2fdac7578b8b6702f4c6797a7c9be62", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bd0d9b17a3c8cb959949f64fd03c975ea71a2898", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "02ed597d19c749b5b15de7a07d5925aa25292b79", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e61142ab3b65c48e257bce860d7654fa7864b6ba", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3db1c1d9a1266b44ffc036f53a47c4e0458a4e36", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "219e385e5bb4966fd89a9e431e1383405505ed68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7874c880bc511878169c130d413d19c7d67c1d99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "459d63fe949b3d85410a5b876f3a25649c669bf8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c823acced4efa79c7ce7dae2a5435bc5751dba0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa45721333e24222ab958d600de4e1a661889f8d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "493abbd462a9a3e05211ac551ae3122f7952f3df", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3ec2e4d16254b51c0fad4766edd76bd6c64a44c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "edc0a3e6618ac920a943b97dd7a27dba4c706834", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9e80fd7935eba39258678afdcba4ff4f3e46be6d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "31b92ec0b4fb2f12361beb58834a700c9598b24d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d5c5bee4c36329923e77ca1e897240e27c09a2d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f4f49bdb293e17f1f186a8f604c4d039ac0659f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d0413bb4f6dea20cea787e9e3ddcafa8194bd3fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0bcefe6b6bac3bfdf55747c3618aa1b9e552a926", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6e8d269d5164a3491b7cef2f679da2e0a5dc4bc1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a4548aee40eb57d7d69d9997f945d97602048ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4ab798de581bb89e72748c55ff356d93374f32d1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "82b629581bdf27f49304f3b9f3caefe54d07d01a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00fbdc620eaea332861bace2e5d254e5c4feea28", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3a3974efafab3c6aca8f5f3718950d2e39956b43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8b49f43a0b36d17c54d08ec5c10a3963346179f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f8680cfd2a5e42fe662708a4ace5ef9df9341a94", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c15818522cc7f8ab8be306f9dc95e34cc93c5c70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d82672eaa3ab2fec8c4374a09373cc71aaf09036", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ccde5dfe51bcde29e88e183dd24c546f323d166d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "373ac705bf5bf3731a8f629e8ce97fb89d2f3c99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "964f9f63a61d003bbd153a4e5eb44767d77691a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0636a07c2afaaea2a75518622868c95b82f3df7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "45117cfafbf1246455102041190cec2edf1ec267", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de82749a33a7239b0516a001131488d733ab6206", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "62e26872d491c51200dcfd10488d8a8034bf176c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2a651383fd5106a149caf67ed618b1474b70404f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c6b61a28890f8cf39b7206d92f297f27918095d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "339099f36f39ccb091b9d145c887687586f309aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fae1318edc938f7e9e6aef368a2bdf2a2c02e395", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b36eeca07874824503ddc028af9a9f6d88055c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b0d2347da62f5e4fc064a850a354da0099d6d31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b8e30d18e4e3f5ab76e0b46f45f812701cc82685", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c7947e4c46b1cbc8278421b00434f615e5ff9b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b82954d9ff4595bf2c5ab2333387a1ea91e66c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "462378d6d245cac14627eba1098b7383979df4a9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f51c17d1e1a78ae5731ecb0e13cf2494b8938c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b599a979b784fbe3e3dac0cae3a1aaa9049cd74f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5c636cf57598bd1c080009a4e950aeaaf7eff23", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2d31709c8cbc1b6445f486e52d3d27463933a95e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7e6d3dc3ff269a24333003a694eccb10329892a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c0d56cd31b6901e918e4b2e64fda4128026a02cf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "15e9e12e0b81f234f2e7e5b09c44ed33796376e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1be2cbad3debaa7a1775c4c72dd5355bba0a8f93", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4e3d419e713cd912e26083be6610d2b39c67aacd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "436e661fe845fdb63d9ea991cd1056fe8e08f484", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0068850ba78a7b8915994e9ec1556a373079501b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e402b29e657d81ca5c96216ba7692eaeec30de27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "85b6455e2c5a5e56e79ac7132a62ea6d463f9bc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acfbb37fd82727b4b5c0ece0b51d16d6dcfa5a0d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50d18ceb935abc0e73629ed9c8c7344013957510", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "844ae5271a6a1c7e5c2c2083732c58a4d6f54bed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7a865e5d1809cbc2d5420b6c4e57eb790c60d68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25c084636ddc2f1bc8b6931c06efdc36dbe73f15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4d17dc943fe735c1cb72d7f88ba697f782b706a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "56d8d24888fe44b9adf06b542802ffa011cf9a09", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5b07d210939197aa830d922061c784e07a49c830", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7233f18705234aa1ab369aa2c1053afb57cd7bc0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0e4e34a17d90d6d03cb4f13e2eb90c9e979ddfd4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e0821607b6175efe88ec9260c40b65396d1455aa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3fdc40d3137494fc1d7c171eeb5fedd44d64fb0a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b139da1dab08c143fdc64ad2b782004b16856b9f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6aa0066e5dc794c44f6abb7d1d633307d1d200ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "db1dc86eb0bba8e0e8cc4a3941ee0e300ec5de2d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da1b83d0dcc9f714ba31abdb814407338971cb83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32e71124e06f26b829c4a1f4fbc848733ebcd8cc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92533b03ff791067f0ea0c2821016d7b92ed5a39", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "743a3902f39ac0b6a5e4a4c6ce8194a7cfad957b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "297941e9aa2e8cd23707ba6d13644abee92d9b86", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e50076e68eb0deda15427484220fba501cae5c7c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2f9a257e4c197067492e014aea614f717227aed9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3851d748724fe49e3dbb2d6c21ed513437dbf548", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f6cc7c3f64c36330866e376b0775b4a3e1914060", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b065a603da89b1840fa99c29815b474fd79105be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6870b31de1a683afdce2ffc42b53e3b953072efd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "926b5d303cc80ddbd34e7ebcfbbbbc14a3b61e53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "11b8ea9769b8ae9b5dc1d90481bfada4490d0b45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "95c0505eef8f6e0df538c69b72dc6e103e43df38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24457df22d9d79886a0ae37b795995c052d5084e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fbef4f1cf7c70bd1cfcb9ba670a658b85ba7f351", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "79baa1f64bbd1cbba2726b7af51822b4781266cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1e48d4f1b5676f678aa00627f8c5e3f178ab185a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7221ec0353d38055be2407dfdd14d1c1dc0aa2d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ceae0b0201e939fe999d7878746d5dd944255a8c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cb93f3f43e7b7bb2a5b539d937cf634b1b650299", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4aa062f683940bc8a7840b0ae38b51c8191d9bb0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "173e8ef1c9f189cd5dea9a3df2c4055152d85203", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "614f844a380673b5ac0a9ff47c19dc31c859662f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "89e67bfddc079fc1ede50dcc42abb3f489717aba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "58eb86aeadb1b44ae09088d6b41795de9f4b4099", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8349e3d5569a4b83b11eb61c3c580837e1003215", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde168373290a8fff0ef2733dbcbf75843fecc88", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b419e788958a34e870c8445ce633ab77103845c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c6d97136b23ed34d42d809f8c7442969024644", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4bf0bd46b42e133a3817d682eb6dd31302de8e13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6a43e39eb3e6161cd107cb25bf0cfc1cb22d1f23", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fa3bf8466faa071fbe6552fc16935c8c57c701f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "230a4a9f05ca30cebc6732ac6bec24d1f26da13e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26298f6624cfde73db1d598b34a315e17cc79e20", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "193e597212978cf521513653b38e496a61ddf454", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03f1be8ab32c214a6996c689015400ba4c0926e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e299bf2679af363be777f4d79f6caab798c0493f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84f8e28b4d162f33396e78af5474c4f3a852a488", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a7cbf4da11645a85ff7ecd1d934511fee0b79c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "64f42b26f74a51fb45d5f6010dea37c17bdb62e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "82e448bc5adc2e81693fcd1c2495b95d82be2330", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e804ad660614d1ab67a9fd98f09db05faf681817", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cfa0d535fe0424e5307799fcb9d075a409de579", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "679a399dbd15bc347ced68d6c05ab51668f26c51", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c9c1988d0176ed9e534c6e6fe81dc8766cfe0b7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "eeb948dc8aac468a4b0b032e8fd1b20fc2721c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "984931517b0a0c14344155cf799020315d117635", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f145ba1216cd10a782fc87b8766b3d65303f30a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f29a51854456d61f71e1917e626501520e792787", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "44831ed1342ce4f5856f5b55b40caafe81f6a4d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ca56e26fbe760b669fcbe36506e039325a803a97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0034cb5fe86017b41cfeb88980abade1bb26c71f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "048fcc6b144605b59d8dd6eee00a9251b630105e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f7448c778731201ed513ed77ddcda635cad3d66b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bfcc6afe54b17eed6436278c6ab0a66345e3c571", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4f4352f686b4a825be8fb8c60d885d2721b659e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "293843153fb81b3b1779a78fb9b6a29177627a5a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6a557950bafce4b812dcf5b6e74877f6119518de", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4ea0a2013b13d2841b68887a19e0ea04a6d16c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1df51717b9f361a8df67b8da5d687004037f7373", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c62914234596ec86b020febfbfa16618113e764a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7c0fee0541f6d8a7ceca0d34a2b85087079289ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a614323d414609ef0d52b2c46d545c856eb4051", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a16387ee29f95d53b1d7750afb62b5f5c711419f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e457e3dd97b299e0c6baae61fa6957df70a2346", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bf8d6dfdd6c9e0fdc3b748bce4fb0b77c5d3852b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c84fe348e3d11a25a4e8d9a4d8e91a9a884244d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "970e453082f0f110f83213a8349f644018528c70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f684b54121691b75d3e955b1aca496b3e2f8799f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dee1ea1516d25c9eae9fac05bc073fc1dd5c36dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a327abf0b004425693e0b0152005975314596a97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebdd9a923a80cce7684c32f41d0f530eaa4eba2a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f2c99e616c460daafeba284a1b35a2ae189874d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4b0eb7a6efc4fe5948cd623bef14618b34157209", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ec35bcf8fb86d4646becd40cb414997f1b5f4553", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b4e2a503e7e628418880d79c086ff9105319bdae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "924c146fde93c468df123dc2cf8dbb2f411a3eef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "889a137e5832765b20d5ce818d3e7ce695b483d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98bc0946ad8e64c2b5046d74b5c09716aa75366a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cafce887a5f972db5c912f17ffec8ba1137ab88e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "052fddac0191ab52b8b3255d5afac3f54f5de9f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d5b8261a14c45249e2b048bb21a84c091493959", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "12629472bb42c0a0496515d5d14c903b2bbc4d35", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "45a4692d8deb7f890032799ff98410ad69797ebe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3a53112d9b6db17e0f7ffee62d53e16025866da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12de68555ace53e66a79b1d13be462cf87bc7ef4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d95217e700cebcc54464de7722498dc8b74e85e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6903ad2a87541c964fe70cde72373f66358576c8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "555d7dfb493ac839fae1ff6c15eeb37953025974", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d74283fb7e91438a5b6d6413dbab9d36aa97d1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42390480d84ecda84f386bab1efe403dc4a96c38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f765476564a8e2bd05d48331200aa3b15fa195dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41ae8e6ad21b549611d1ad11109d718a6721dd24", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d80d7c9913803a5ab09fa5c647b335188609eb70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cc697ec09347c5201b619d0d09c2155d44df1914", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "df5b45af79fa9034387a1068be2f50fbcf3d9615", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a0767abedcb0e374efecb578830047db46e448a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9f8887414270bbcb65a26ebb3594269961f5f4d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0ef6ba376f228f3fed444ac31b71053834c14548", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ab5939b3bf37e542b6ab38c5e0411a5cc7441da0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "303cdd4d9ba4adefdc4e750ccf567b8ac9114382", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4bed10ab6b216e4f36618eda4ac5eb61fc956da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1648dbe841bd58f8e0878b0f41dc3e600ce2e0ab", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f4453cc06595fb90fc73c61e48f6a57ec13e404d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00d2cb98cb712ef75083f290b3705c42520d9345", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "522af4509ad708e07cb0915abb7f107bd964f23d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b69d6a9efc7ab48672c5e80a91e9e19d49077642", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "383f8b81d926841e5ba9f1e8f373230283520cb5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb4c3fd060b5560a6a71ce2f3c2f9ae1f3062777", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "534f6bf2ec42bb072d50962dafd6263128ffd0c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3b88ed282506834b199d34fa926fa17181a5c50", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "78baf51e8f19979b319e68fb2195f63260052788", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4e6c2fc9b7f53b8e905bb9c2ec6bbcbbd70bc8f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58d8fb6dec2e753d3719706008af5eb3898ace96", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2540683c194617f770f907e1a3c38cb5b7c008a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9ce221f4b21d7b501efe2128b79704adb3d97e95", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ae475f550cc4a3f717c77a1d9cd5a7d5d23b955", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4a8ce8cfc83f1d87733f6c55351e0fa0fb3e2cf9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "659f758085737e268a2d5df3c3e67022e5324a82", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "008945ebf5771ab1a970ce064175ef7f47a3349c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "18b1c3705a7f621b2566fdf9658ebcefc42d297e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7e704cb7630e0c5d5491fb659963415e455e89f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "602312a4c005e7f3fd3bf4e975fb097d3f1e91c6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c31767232d2f42cde9029ffdffd41ade0867dc66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "73c9b0981bc3cc5610c7ac2e85f51ffbf51c43d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e070dd6c556de1dde2d11c3cdda719c3a014b36c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59025840a0c8d845a52b372eeaeaba180891d122", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "16957ec12312ec64ef74a68255f28f35283d7aa6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ca68021baa50da4c2c627bf124f5f76887c6cfc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26d65bfc817aa64a77919923563c9bc5a12060a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "006eda3e26d2fc1d92fffc40c8a56cd868cd0b09", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "407db691daf348e87acdfc20c12d31257a713146", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d40e847936fc83a512abd4276f2ff30b9cfc224c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eefcbbadf1081db667aa82a1e1d263da1b567435", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde98a5fc7a15154c303c696151e09aee5f6792d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e813bd6081a74141c30867f581e14e7a9e04f526", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d91afea8edb601dada038098c1544c05d2d36df5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c21c0d0e5ee87bba087f7a6616c303b5f47164d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1a448549a175b15a4b69abc6ad5aa3fc18a2b275", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86a69ca50e2a74355c457f84fd7241cdde04d46d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7738ef48657c1671adb4547bb8c075ad93530098", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a3da9a6c7fe42da268d90f2be6265dcca785c6d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "708073c0ac1b97dce5d605e5d9efeded7a092b1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "194b87bbe36406f182720241f549c0c00cc6fa2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0e1505d0a28dae145f18404ae590ea2d60450c76", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "aecbe6da4c804e636393943bb7e0755874840792", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e4c15e3e17e46f40f508010541c7d7c2ae6c3de0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f89a980ce4c32d1a171d3b29c01f86ef45dccc1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9b72700a9f3e7decb0cf12dd351ab4f1248975fa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f344b2ec896ddf100a1c7367b6570825d14fbe5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "96e16da7f75972996e1810ccf3679f1399d04a34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e1bccbaffcf74a2c07f4d59c456ddf6de453b739", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "331d593886d69c1281b0f1c8a050b98c3e984a96", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "093a618a85ab2c324dd580297cfa1a29f8d82974", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "44e6cd67172dce6ad9a50c2c7eca3f4504b9aa47", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "188f1df87400640bc99f7853fd8c7ac60fa0cbe4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7c2e8d9f11401478fad16b21a9643b23cdb2819", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "02d3e25eb0ba6842c38ec0fc6fbfdfce26e6a357", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a457977bd101dc4e2fa95097bfda117dfb61c3a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7d786eeed501818c6e168e6f84f2c2280b9e4eb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "30f74b7273812d038fe2514076d35e8ed43a55ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c743e3133cea0b1be80ea7a32ee94c90fcecdfc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6ca5040606b5edb7c78dd8f475eeb88861ea9da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a7bc5374515f5e80744cf91859c2c8c90039d3f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c8e45bde3138ab398f4729ebf79c727cd3878d7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e063894f01812381de61b8063092e708532a9c54", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3697420da1b58e5524edb25da3c484127e34f48d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "409e721aeab4151a70996ae7d060b78176d8e8cb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4d1de90d5fab7d759d8291a216658380c216d61d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "94fb1205bec5160e080327123db0af950c024f18", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b9108342f043a4c68edfe9e0fb59ef3b69483a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3db072ce7fbfaf879a07b798feed672a5dbfbba6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e74650d64b3783e22e5602b0b6575634f3bd0be5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "711ca4efff0120fc14ebaf5fc2643dec8abc00d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3489c478c89a34a2fe858506e0b2449725374702", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a04f3477743c3b38a2198135fd06761f14e646ff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ca9622dc42c1481287ef19c6e279a9447d7f61b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f317389ba5780ed79a7b975363d36a4541279097", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "096ac8af03c30cf8eca32b07068fe57eb210814f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ee61c9246364007b363e4a8a79ec82a4d949a57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b175769fbc3677acc79a1033076812d950cf4aa5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "400d7485900e61a826f3cb6248441040f74aa1a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38f76bc973167ce751602d408343f9715f9aa578", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d249a7d6e143e78a24c191a6e9bb2313ba07180", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4b0eac029b846d4de41f6baf1e8e088c3a9d63ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "baafd46592ebe4b8a2b41e5054071b7e29bd545d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38d07fdd74a80182b41b4208dc799f95e641ddbb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "13645f1b6031f073d96931a9d593aab2c2a89cda", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "288cb5e615013717617db2e996951f59a10fce0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3fde324e9b715e1607963a90f8ff8202ab8967f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a4ea234999ded589beff5bbcbf8bd5c76ad6cbe1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8aa567e3a0bfdbe917adc298e29c9a86c3e53224", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ac52dd2bb34f50c4062f4f97bf7e3d7c09d25422", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1e4b6720240db3c209764691382050c7268aefcb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eaf9009a0c66d63037640e74f7bc458879d2a835", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9dda6fd6abca5858d7a52ea6b8ea372c23aadac8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "314291c7e2d479476d02f17d5d23b0166ce50890", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4623821f023c45b7f44682d8870abfd134a67f6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4bf506f12e8cac2ed5df92a535da636e014a92f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7932253cd2e7e01bbf0e816e0f41730175cd76d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0d4b3df557d04de9b9327834012fa52235443e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3209e11b0510fe51e2fcc109d048954a242885a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ee1fc009f984559ee057e8a1c6a430ab72d2f4ff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ae37902c5fdca4dd410723fec993dcb60768e64a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d233df0b61559b035f9817bdead36f6c4af80211", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b8a0d8622fb8a691f11a621f2bb3892334d9f14", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "feb660995429be2ebe98ccb17962513054085cf1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7c663a889237bc437ad8dbaf78d59b997debe4cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5eeeeff88c8419458328da5e21d833dab0e0d8d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8f0a3d75e1b2a5f4a8c704760c5af99894b81ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0fa7ebd4ee6223d9cd9bde8af8fa343cab7c0c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fbd2e61cdf442e27904c1e7595c152bd3a2020f4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4e02eedaf2e569a70f7e6094dd552daf36a039b5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0338370e2a883710d5f72fd622ebf50a188e0d43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b37dbadecdd9175a81d895e8a7b64d31f935e66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "38edf5ab3263014cb8b46841a8256198ed48c551", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9fb0e43e084846c9f76b13a0ea45dce19914f2b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6283e9b5bda6fc781904f816c788c231f5f28240", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "82983e0b1a09eae9eee25877a23ae81243a4f645", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c02efd205871c879d467aae27efd63427288dfc5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22904e4546a37200c4f77c73978855b7d361d61f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6a2e9a84bbc25d1f7c8957ac500b17afde5d72e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f09123d1ce65fdc16d617416cfcdfe2d599e4774", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "065d9f3f4597e55edfda77e0ecdfbc8aa7461a1a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "73e2ac1a97259e50d54f8402bb479549549a2587", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb00e78cebb562f6c8711f6c57b8cdced90776e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c0c7f7989d42112e8ecd287bb7c5567a0b01c13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5992109517edf507b087822aa059c61a9269b836", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "823ee96cd78d6b25bc0924a6fc236406ce996df4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c89af936bf7b5e777fd501e37f8af6370c2bef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "91a5bf221474c1733f4527148f64710904042963", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2f4bb3488afccf418573c10620ccaa0e4c6c6eec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "37dfa7fe1a0300bd78034764a006b885179faba1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0f8dfb63ab3de1608f1b0fb3ed74564545b540bd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "47764ad5b72482910cb155fe07fe822969db83c2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "addbd0187cc7f8e011d8d29645b09a2ef7b9e7ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dba34c14974782fabdc17e5fbc0faaa0aa62b64", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71b73440a7b36213c0de838d071e2986ce81be1c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b79b4d6150cef96b833d3a8753726290573ada5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1097c38c6c9f9033ea502caf0954bedfa0c94ea5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "203d0dc5bc09c0498870b5940b2b7e8a24736649", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0f80cb70887baea11a5caef94f4ffb7118de6d80", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "018be153bd961e3ff35345c4593bab1da806a466", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7363a09edd1fb3fca70c57f0b06c1fa38da56638", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6af0f03da1d8c3690e3505614db919c3fd027ee1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a277fceb40d8442f48fd281dd578b14d61e94d34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "567f05d80c0e1ea2b7f93b91578d81137f9bcda6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "138ac6b7c09297f43acf33decaf6b9f96d00bbe6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "51dd941ee02bb1c19c3a9018675be26d3a783f1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2da27e2502e31f6597446bff5288ee1b7b3589f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5c39f3f2458004c7b55d9829dac125ae3f9d758e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9fb9f1ba81ae9eeb7e69424bf3c6a91193f55c94", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41b7885e06fad9447bac193c3176e3e696d73e71", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "98fb61ab66089a958c1aa158a33aae96749a89bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "84ff00adef1d65d868be933f6b53babeb6570efc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "df06239e3938991f062041c207110cbaa32173ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1f3e171ec7840e992456bd23e6f525ec5fb9d8c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f2d4df9c8ae632d0675552fb4729584c461348df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f11179e2b7fecd78b101bc760143f41504acc903", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f85f78c5a8dddb612ab41ca03e736296334322b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "88b851ef2ea690d62402ae2edb8ae05f1f0e1d05", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5ac0e1b6b2219ab07bf56e8bc91a615db0ea9c5e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb86a5541e233311fc8fcbd5f4b299f41411c17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ed0fd8008ecc7eccff18bf9b59a3aed3cfdbd08c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57d7ad3952af59f4e32e531dfe9875e1400b7928", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d1420bdf3e6d46d997c62abf0b3a5fbbce38e633", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8806b8162acae6192ee019003e3141f0caf0e2f1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6d248c70586e9ec1842f63035668c16a07bdd801", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92b54d0f5f3c54bc720a6ea97cc26869397fd993", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0013174c4b5f4cabb94b818aa9d11f5b2014d732", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "14e07a71ad4efad431b14e225b67f5a18af77d93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "94c99d1611d1db479bdcf50bf0a4ce4e4d633c18", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f2df18fb512f34b2dc3a77d947ca8d1ebc8a64b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc42af735c6081551f975a41c31b1eaaa4039f2b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1c836cf5ec12378ee0b3dfdf9feb58c2b302fed8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c29fc857eb18377f0efa60bc84a706befe846c40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "49ad8b375ed60c867b8b3361c35e489798271a5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48a2b6cf78144175ba5f6963349111a1a2cea541", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9827a915be1f9f4a3e0ae61126ac7c1a34b190c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b25fc24754fa3fe634b077ff121c69a438632c7f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53b74ac0333c274fa07bc4636dc6a0cc4ea69774", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3b3dfcaca1d036ce28a5152c0724fa8e850d1041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "68fd82a22fe252bcdb7d18827559d15cebe58f40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "68b474b21d963619676aa1183bc35987669e2536", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "999fe51cf80857e6ba5480d3859558d871888614", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "039a2aecd2cf3a0adc31d17786b7717b0fd1407c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8ee9b2e44907cacb35af1290a1486d536fd657c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7fdf544e5c4370824398959c935dfaedd2b79bbe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cca77f0d5a3c9165af31885e389a6e3a55f4af57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e1ecdc21ed8e1fdf1955938ede3740014f08003", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "132f0a94e76aa03d0a39ef67d137876144299718", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85860e1e11eab5cb14ac212defb6357beda2e0e7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8a3dad5482a31bba2ec22da4c2d06e2cc99a2eef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2b57f20f5c4e0880f47b0a85b6b306cd43b2b30", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "91b1e48cd006acad781df3b08a1631debb549a63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c9a8d6a11b732b75ecca3116ba298fdb8e240ad6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fcb4f96db91249d3eb5456d3d3a0d82847592b30", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4732c8942e86d0013eafc8625cdbcb4a6083db71", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1a607481d17b6abc0bb8cf4cc1c8bef5e6422e0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "44f077fa1b67f7fd84e7e27ca176cc838d852b2f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "448ae143fb32410adda58f094b17c263634e4477", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c5fd17d735280e239b60dd0d11aa291d65103919", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5037c06c8857debbff930b98f79a0e6b77ba015", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "abdb84585614b7a963c7e65a49921f2f1d44ce5d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "843eae7b49d6ddc9294487f55d364a1c54afacfd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "deb0a96e75ab804025269c74c99242d5e4ef91c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31ec5d361129e6728a74002912109190b76dbe1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a5181256e7bd35d86f737a022254eacb69136d34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0de6f90544709e20e8b4f3a7c5c6ea6298336bc2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "485abd56a66788469ebb63a8fae4da5257e1e775", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e05b2a621b8976e4b58b0b987db40273105e19d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c854d15b09f5c662637084c88330a4629c8acf4e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e9e990c5684d9383b9e752511a9d5f1c85ddac08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b7eec0d0f55dfda10ed3eb7cedf296b643facf7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fc19dfda201ddfccfcb9cd41c2c69082038ab063", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d14e2df1c69807460ae4db8452813aaac32465da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2a9501895727d022508609ce09bf88aff3d1875c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8837a6967432426766b5c4d9c703fd60409efa56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "41d433864ea15aa1c7b909461b8e872ddaf00b0e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a917cd2f72f725021e09754b579d5c15cc8dc18e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4902b6a67d371e68bfb65b0af8e96da924e6c89c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "79281e9cfe75d3103b2d50dfda5344999f15c6be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec9d7be11b87a6f7ce2587337f834ab5ee9cce3c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3c13bca25d6cfa5418d5f243c107fa6d4ee8ff90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df2ccd716a7fa55ddf9b21f991c971d86465f54a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4c97066800bfb9bf9fd531425888317d8807659f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "40512284098a40eccebabaa59c2ba1b3166d9618", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "641ef46b81e8eee1d5aaaaa0687238ad6388b105", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "363ef01a2db8e7d5bde422bd53d046e3958c9b6b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a940e3c37cff8c175a98f6b56ed2c95e4013905e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4c78244ceaf558355bfd272be94a8a7c737c41a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1b0cda89606c2725a3267f721a04d9db1d4dfcc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cb1e93fda936d9b49808b5532f6c3445ed316c38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5778bb217875e7583b7e75ca133be11b61470ef3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1085f7215034d83af5d0393dbc92b1746a967e0c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7ec1b3f21a1a2904f515c72db544b111ff87327a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0cb6068c2a200cf2bd61833921a02855cadca1b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86068e7fa9fca28a59d1fd7e10768e2793db5c1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b1f1881da2c0a66dc10fb0764cdb90ae5bcf82e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fd4889336642eb1b5c6fbd90d48c869e6ab016d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "025eb81867676752797955ed61694e7e5aaba0b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8fc1fcda3e6bba38ac1823a88dc1c0277e9bd949", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05fbbe98a200b3e9d920f8493f1b0b4907fa1f61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b4f11116c986a9828ccffb69ac7ee2285bdcdc7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9230aba4e41456759fcf7105da4da26e26cefe1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8a87fd3ba3463d020cde67d364f35b9814921773", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "898e7a340c2a1b3e94844476768e8d40f6467d47", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8311c4a69214975c21fb3072818ab9667ac3625d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "56d72715b6d7afd82c686e27570677cddbfc4c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8f5d11ea9506dbb619f42700f1cea044a5fe0844", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "739809721db3f8d721b83972bf0810d481ffb49d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb723ffc22269f8311e882434089e1c6f4195c04", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5e4d69c6927042e6430db2e51271b40e61c5ae5d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9964b1c068da02a9904b7871dfc8dbab9960e80f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5150f512a493902ea4259d15c77f1bdde122e1f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "462ab0b5e865116ceec973a987a2a881512bab55", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5e87970121e2eebdd0035e45fdc4d4aa4483907a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "675aff8fc69357b0e3fa11a371ec1458d65c5fa1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb7210abc27655ddf486bed051947b34b78530b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ec5e3a79acad7d6f2ffc7de0f2fb825f452d5a17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42f74aa4dfd28faa653359dcf6d4092bc1d7e31a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4902ecdc2a7f5e8274c2e3f0e73dbce66ea35d01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ab43b39f468ac294f7b31ff87a040bda0af8106", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85f721fb85777af313e842262c2c7febba43f851", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d11192c27ca66b1d32c73403b5b368d4b6661e36", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9173e74c71c4cd75846adf917295ee471866cc10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d6091919a4d4bfa2d9df95d5c31ad09e9272596", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b0abd4002e037d048546a282e02f25020e9a5ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ec207081ee5b24f6924f9897cfc1d2d3ae813c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ba80476740bb385471fd1aaf9063b602c8bf564f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef73f824bc2acac5346023c3e5da2ceb9aec1dfb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "65e4c5f73cc7be7aeb3c58b7854751b3610230d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8f30252147ebed2f36790e49ef5e35394831b3bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2ee8d35552d6de58ee2c41b22ca0b51cdff4908", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d9726d3b6069ea839a42e091179df00b4ab7ab38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92bf3b69964f33b6fe8e2f73ed42a8fe769a4470", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b69fd0aa256578bdaa4512baeff66a45285a075b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c5c022893995ec9572dcbdb699493624780e8d25", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02acc169eecb5cfbc73acbd3b86825d30d4ec525", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4215ab97b483251efa4fea22deb7dbfa16e1dacf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7ecf58da5ec8accb23241e242286063d70b8f379", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bebf9f9e0906815d781415b9f4b8613317d13a98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5e2d0badbd99087c6c19a17c43f3eb65d889926c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5528ff2beae0526701ec92124cb1367e7b501468", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9b5c08bdc04091796abae4eee7798fc1ac9acd89", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1139f619764254c331c256b9b29ee6a764b0fb01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a8bc2345efcc7ab7df9baa4e9ac95c2467b9693", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "77a4c21e8b584ebb1a9207900458780fa9398efc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "321e59a875c1edae53b6d06785ff234051204624", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3c215733c2fffb0e29852f1b9ed44d324af0f3ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f90059e812d40df7b69277fe6d051423b6534522", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cc60fb4685b0ad805c36d78f4472737e1cbf110a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4ca1b27cd5ea956f98db08b28add50aa34f6bec4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d0a0219f96c3b0a57efd0152b6d6bf856eb8d26a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51c7febae7db3d8503a6b1f2755fb84a0a8810d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "670dff959243aadaa97cdda65467403d1a912ccb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "81ae7f9c8bd1580a9957d83a487e1c4993f975d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "42af5acc21e5f485e5a969f6a9cb392e1742e9df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "be116b4b3d7fd0f4496faff4fe14dcfa123c95a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "76fd191400156a24fe813c9052216824e120bac9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "202851354c7ab2094b62b3e14f001bd993bf0484", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "100bdd3aebf5f61912f5723bfb8e0b775069983c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9221673d3a87278dea9d30deedc3454bfd853d90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "60b76201a390efc269fcb5971193f34fee629eb3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "db8507f32ec6412c097d82773498b554667eae7c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b90af6b34adda74ee5cd07ed3ab3f8fa1b36865c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf2d81f2eaec4e6bc86945dbd6ba88d305d0154e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a3eeec2d2b2267cf574b5eb14425caa781d2efce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f072640214268546c1ea298894bffbba86f16769", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a99967a89752e976851ae5386edb9346627e21f2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d14dce54f21c1160b62d02c8e3adf87b2bdefc27", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "227b08d2734bc9fb782f5097d62bbccf83c311c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5cc56e3fb021a5c741143cc53a0957cc7bbc712d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7f1a9219664153dd00d0cfc61968709c3df01e92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4b0ec414ccc748bc79bdb07abea2965661e166a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ba59554a3234516cb4238420ddddf4e3beb4172", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c12e6444cbfb78a545799615d24e2702f0aab85f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3d37dda729c41d49a30bd20949257c4a3b7bb75", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95fd1ef706ec58d382ac172c18c6822f605e4d52", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7fea1b11ee22193367f542c3826c717561eb600", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7043e480f7f1a97a478577a2c982865eca7f0fcb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3acf4717d6d2a804908523e16644bb3271e07a93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0f892aa04543b92d44a80b9f179ebb753c2491e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce5c034757efa93b2d92b05b31c4e2d89ff4b336", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c5d3820a96c570e6d7476fad2d1079a2a9278ba4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "06d56418d4267e3b55cf8d4e138fd57e579d170d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2aa4e3b54af9c17dc1b9eda728f77eeabac8e943", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4a09482b7192d3d43a4b777db334a8db5a12d89a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ce3c5972b5d779bd97e6ff7244af09853eac01a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3b581641de2b5ccb35edfd916cf9ea362b575d1a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a087b9f281a4971fba34b288636e926459e43c82", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "325652d1b0793910899483a10a2ddeb02742875c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e0f792b7e663160af4eca618d5959eaa6475e34c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3ae6c8ed675c17b7628a8633d5cecdb0ace4fd20", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cc4e52ee8f85755b2d733c840a163a9b34f8a98a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "276084e1dac530458cb3e82fe041f0cc487ff44a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7448a22821ffb1d6163c25e44c28c3b013e8569c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d9456ed4d0552ffc702b075b722e8a36b712e0e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e2055e9310593780d02b3b4786ff77d408c214ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "658cfcfac3ab281300fa2cbf0a08a898e74ae362", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90654c2034b59b43ba30f359b510b6761d760d10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6dea553601b89ac8b88499e661c2e256338923fc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf701290b3fffe4ad1f9f6e16a2522d77c15d004", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d663faf8028c9d4fa87203040dbd5496bda8a4a3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7984a4f415eadd9da8ad636b6bf734774d3928dd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2bc32415710bc6b15f7a507a552421e69cf5bf6e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "daea957a3da23afcc835330a9c71617b8421b2bf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "078db8170f0c01425d7954975856ccb1b869a295", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f5ac38a92c10a05d2da42d58ea80b543e4e67475", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "348b3cd6fe35d64bef2b41a6ee1f3f2339facb2c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5677648d6115d5983f64df1c66292c2ddde502d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4b3f41239c4a6933123755d1751f3b71fff53df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3d25cba7f7d85842195a5936a5977b32d71e21c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "72a5358b8905249ac53f11594fc5f50a17d685e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c0e39164e52d90c32a684185c4a2077c5c6e5ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6f75bcc601ce0bf25bf533ab9bdee680679821d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "975799d2abfb78ed51524b2b5cfd5a28384d3c85", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "99eba6199e21055485d65ee523cd6ef7278c0149", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e616eb59291f6b7755dc2ee0484e81b6a670128", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7686ca58031b8dd1cd2f890c0645735f9f4d122c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c9b813020a8980d7a57314611f1f7506d1759266", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e19b5eca553c6c76caf56b03079473186138f4c2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e427a7744458d3db9835bf24be17c441fbc1d9b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fc6206ffe2914639bad3ad5bcd891039b496cb83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "33808b9393735b2ed2e16be22f80308a35fca168", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c9d331ef153d8cbad59af41d8c7333f34f30cc13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "499e1ffe6941268a78bb1da4278f4aa92eab5007", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8c4e6d711c6e6e54c74cace9f0578b4d49e798f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "617eb3e62f7fc5678eb50b48db12844ee1356ea0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a00a707ecea052f7077970efb69c90e838cd7391", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fae0ba1cb0e12ae5da73f2a04a457e5350019631", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4f74966512410e358cbafeac4b3c4ea525a4d83f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "09010f0b2a04ab03c56046ca1e01fbfbfeba34fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0394c7f3b5be02fca70b7d754376e5e3afc2ba57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bdf349cea84bc5fa9b1df387c3a84f9e326e8fb7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d24c7c0db9bdb57bf1d134f61cf73f57af538409", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9148ce25f5f094fcf8cdbff87ba7741a07c96306", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d8fb21189eb4b98fae4ee5ea019858663254d0a0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ead8378e9de7aee41f4d7805b2cd1f9aa5e46d86", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e01eefb32dd0584cee9e7920b7e44fcf412567fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f106cc6b4d8f34e8c85df4e896cfcea2b7d15b0f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "586af050b45a0e15e375eab991fb61bbeb4296e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4cac8853103555e29457910078fc45d981d3d041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26ca47c461eeda66843bafb9a9852a7a89e2b1de", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9cd7746d912c178112b52cc73baa8ee3a40f5e43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6a4ff13049810fe5fa11503bbc2890b90c5f42cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c7fe90417ccf6a739bd739c87930c7a9391cc842", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "55cf23fead50ae39ea82d2e898824b33defdc265", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "34ac356536723f78b97d860c2adde4c69e71af79", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ab09c6386d33df064c99ae4ff2b972c1e7274bca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8fdd0be4a05d1af4dacb89bad94e939ce9bd02d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dc4677390387b611f9045675aa62f7b32bf84e92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c4735292f9cffccff68ead3a987eff627210f3ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "37e0573988e68e647f1118f0fb5c7d0ff20d6674", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "897741ed420e40167183aec58bc7ca76df7f5b56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "956fcd1600f1aae60e8c51852ef2bff3bb58415b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ebabb70cb26def447c386b7141beee5b70af3870", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f484e961c9fa4577d7ca986241547ee8166e65b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435ab0fd237fdcd6a281777007cc9ac9f28df2c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1d8d0f4d30a9cabc2aeda69bfbf4e6253028dbc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "02ed3a86a61660051e0f81687caf5a229cc9ede6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "adb4557a10489713f9999ce9ba10bbbdb5feaf8d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2df74018eb8b7eca556a1a4679e4ac1cfedf5c94", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5418eec29a7359ae2bbea196fc4a6a2be4d2c686", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb090c5816ae5ef9938428edbb501e7188d5b2f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "222f0e5552224f63351a63b86781149300bd6595", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c9cb32fa9db3fc1c44cb32f381392f7d9ecbd95e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "637885803020dded969a58d2e27d775837529cc1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22e5fd5534979f4f4ba63e08fccfc3ae3107e833", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c4ba17768d01c12c6a8b06c5b0b88ab0ce337693", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8847c3ebf2c1bd322ad7d0d76db3ec20f7eef4a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "051dc362915d357dc142b07a123242aa251913c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f8aca421661617da6dd7f63569adad76f36153b4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87ecdff3ecff63ec6078b5e67d7b1a87c1ea5157", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "37ac68f5a278cbc0e06c8f86f060a6dae3084c0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "56232dd1ecba8646317e96bb94cf0a720080dd61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4aedc35b7719942c6bf8211992c9d45bb2fb53bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1fb1ea4880d69e34c11c0295c62d1305b64dc67", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97863c5ad8998b279a81076a0dfc36066f0d604f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07ab9862fa4bc7be36632d64ae45678cbd801c6d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9a4f064d3a6285e41f67dc404b05e3c2eefd9822", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0393b3b8723cf860dd42e9cbd8c1c9f5c4fb2dca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d69b730e7bfbbefb6ac81605fa5f8cdb9dc8c53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dee998f0fea607a86520e3867a972c0ee219fd93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "346a0e6cb23fb2052cf0ce22a824f077bf6efe97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53257b763f54b9b4141cf45eaf3e699d747e3922", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "640a935847da0171977f752d0c3548765b7eb51e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c7db10f023b5a31a5e899125a4c5fa8ec221d9e3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "604ca362bf94215df92c4b519d2fcfc3a782dc83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3e56cc0a089a935c0308a42b1ff788df3aab041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "697e3791ba07aa7ca608477c62f02820c8658784", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "608806b751eaeed2da3c4a23cabeed9f533392e8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da22a8a9a4ddc217bc40ab516d1768446bbbbce3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c599538f42aa47f8493d3ab8189c4358e8ec014", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "809c428f74aedb573dfde1f98f633341dfb7714a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "102d55df9aa1bea3489044a00758f61a350df8b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "11477e506250c9b5b387dec4c5cdebed75967670", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6749283ce4f62ebe4384e2cfc18c7fdab18319e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c521080e315deee09d60098b3a604536182463d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0270fba97790183a1aae3f29cf2c9bb8f32d3894", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "363b7dd627f2599861496a8e278e44b0362d9116", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8e020dd46e010cf5b1cd0c20b9e0aadb45f1ffaa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "df42cc3f276cbf68174bb507974119d4a5d16190", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7113d3a96011e6a3ce7b4b9e4f49c2450911cc7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ddca90582628aaecd1a1a5197253682d8a2913", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6f29889ade40bd57caf159b14725f5428cfa8d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1425441af3e90e6fe4cf420ff5c6db1473525560", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "734519212cbf0e73191a5545331d8b1fa8a6be08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57885d2cba5f7612a707a225e4f53238a635e2ca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a7debd552b2f24a8f855f7fb5c8c58baf41272b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dbb078292e25eef12cb613ebb4639405d09d9631", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "616f374cfb9062dc1bdfb6b5d8f074fdde9cb0ba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6c40f0fc969d0834e1e9d2c9ba2d2f840aea7b4d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fb36d150cdf0ed1a65869491f353a6c395d101c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7229893f00da58db5658c986f33f5f1fdece90a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "958c528ab60806546ff09c039121cba0171b2ec3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b647bb88454125e1ae1b4f5a951193db56d7a91", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d5bfe1a1580f3e3c9e4ce8bc85ba6ce8936a038", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "55703d8c98976b5853e5107f0bafc16bdbd3193a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "616a0c7483f7c4a67e15306d7cce7c61ecfff597", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b7ad1f4cef68ee4e4186215d7b0f399dceef7ec9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "76589474874d417b4f25cd22ac7a815869578250", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8eb6e5454eb4914257ab2f85d57f40d83595b6d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c398fbd96e20ecf443956ffb08761c09b649bfb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "257375abb969986d4e5f75d13875983e99c7438e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1843a9c9ada6a0e1a6313471e141c798fee40000", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "03b6d18f9df33440c9191bcaa4c01c8a699f12ba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "359a628f736a1320eb2b9aa9db548e949c7bd884", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "95f9c13d561bfc39d2572cb0db15e4140908e8a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "935973f3265cc8d480f3b80c472337de2ffa9ebd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "870448ee9f63e1f095903dd8245c3edf1a261bdb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "635996c9c6fa0e11d8f1ca251e42a8c1e8d05f01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b4860a67bb6ea19ff9a70ec07c070bf8d256d77", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b02612f9da7252f596ab8176091beb850ee97c2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a6c0000747b009dc445f65065cb82411679c692d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c4ad32e0321e8f607adace9fa010ef32958b8267", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cc607d44a679f3f3c92b446e3ac8cec6a29f6871", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7bfefe1ba3d4de77561e3b4fc8375b7769753ad1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01a612c52bbe65b7ce804985418892f93a6f4ded", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7cf281b95deb9051b9a4758fc40e03557f56bb1c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ff0d0e362913ea69236c440bb8ab80992e84a04b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "670241dfb803767a6fdeea7211f906daf3033eae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2738befa6a04860d1fa36b8c3bd82f425c2aa6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d7adea35d4866c7e7819e5063f14c199ce8c9d63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f0f4d3d34786d597e0feca349eb4103c049465ac", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "456b0dbe228d37b82c10839f06c9b4a5157aecb5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4243658cc9456dfcd88bfddfdb75977101f603", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cd0a867ca844a9750b986a87c57611a6ed8d6c07", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "be614aad0a10c08010775e3e772c94ac2ab27a06", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ff176473c8b90af9a53cb433b4bdb9f45684a12", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8085896404f50701b92d253b8ae9e0189d670d9f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d586d83a6f7a1d0a3a99f00ff2d5e49ddb8a01e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d3530574f542dc95df09a21b7f3835e6d569a193", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2277329a4ae6a40df3ac01f48817badd16d9602e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2b3d0b84fd80e7c24ec39e8938c7b88bcb513547", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "10423b96613dd238ce83c184820f088b4de6fc38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "85cec5454030e91ac306cf81752daf5d72603817", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "64b110045046bde309464c4bcefe076ca073a7f9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec4650a0eac8601a1546ebabb0030b5b1d46f7d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e6bb3eefa15ba92175bf8fc709754d09afc9031f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a96588a26fdce67ec6e80e7c637595eac29d023", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2daa849aaea244e15bf1ad922489f061104986d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67bd9d97ef07b8c1d72624c22b7090a4dff74c6f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "75e1ebf46f099c86ef466ca58e7d4231825d5730", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df263fad8ce8b1f7af46a39ae8adf934dac32dc6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "57cf4c0363e3c81a74eb69d955c435cf77037461", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "16cd196f42b3aa8e6565f0a6194812bc378e01a2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d3e153b24679249c3ffa2a3da1bbbb829228cb10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5101b55eb7b54dc49d9358b23eea395d29c86514", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "39fae79c20a82803012e140aff15912b99f4b336", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8df058f405e78b5277c4221a3d0c860561759fed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a8ed996d76dea3209ac7ab4228c67568a64da05e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "39394203703f63e93520b00c7d20fda3790748be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "219bf8b815d1551f321ca39051c03dafa0b699c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c341a52bd0589f157d70bbdfc500864fc18d04b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "68cd92c56536a1d1e971a532067ca089f7431bf8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dcec286f612da7eee83fc9a3d310f69f87c9e9e9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b1d0c5952c5ca1098d3fb3d7e36656a1189c8af1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "505458ced49573a7015f268185bfa505e4ce4905", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb4f1ffd58b793b922e47b2b6b0dee7abb1b75b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0d6fca10916524c12e8d4a119c90b4d6c852e6d1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6969f0bffe55fd0dee96e5ef5ce7a320ad3bc89f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5899b0290deb94735c9b4a331f8dfbb8bdc9af9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a321e7480223a209190b846b7911492d0cccfc8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "00f88ffa37d354701d925d676cdd48b5cbdc2247", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a5211040787d01fee61330117f11b457ff7e36c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3353a532c86d6a21a03407e195ac946c68cfa43c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f627ec6f053fea22588c69f347d946b9a1b01427", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "297ac2d87df3bcdceb871862580a74eb534011bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be9191039a72c54e1cf3563033569e3b2f530a7d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "126697b7ca474b1935690eadcf39dcd0b2ac5d40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "26c40a88186e0bfcc56e0b41aa5e38cde3ccba15", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dd5d5cfe5e84875c7f0651c09eb98859d95d8c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "78baed114253c5e3c9e728117f4379ab77d20320", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "709785e07d2c7f958bedfed44840d2597a914ac3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6e7658a0770f01081974461494aec41768b24a98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5408c7d98a69486dfa7af5ee90005e0f56bac6f2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f3b3d8d1f3532f4bff824de35e848fa556a1ae42", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1845053ad032cd38e8c8103d62b990e3ac2291e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7211b8280ae6e2fa606503c7a41fe13797a7cbc4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "543bd4eee33cd7f2dbf7dea8a8578217f23d08c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a043fd654b696857ffb95f82c03d4479ab23f38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1df121b75a8d331371fad37f07be24d29fbeedc5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b93e5ced4da5a366ff07962870c249c2e0cc0c08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90846ddce292bdbe8b49cd3f7a5b327502d206f3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4aeb9d0d37a362dfdcb57d22b9aa09ca1ddb9e85", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "16d7bdf16f5d7aaa6c11fc640bcea0bcc7909e3b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb10ddf246f95a767eb64539f25398c907306e17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1291a0374b54cb93ff008ee8e5910069476aa9f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb510df5961501e7596ba9a915eb67c4ed0a351b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef1fce6e41654377087648547839041b5a1ab850", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "be89451a26c6994970097daba401c4b6dcfa5d5a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9bf34bfc6dcbd7b1019e7962bdaa47fd04520e43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2177e137f207cb3d4f43e8eb96126300b7d4f52f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6ada1b3b9dd790cf0227202d1306673bb3d07ec8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "096983fae7a9909a5d1e290bdc3c75b83a238b9a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2cddc0faa749188fe1ff6729bf45faae8059b0a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d5708736bbcec9aff6a727b522406691338f9e87", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b8f9633e64c6af22ec0205f8ad0e4918dae2d53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6a7e3893fc850ca916641021c095498c50b376b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "640669ec95653cc4ebdff8b54a4939f1803ece57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4b3506c6f8277a104147f2d7a9ee99c90a55f15", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f50450ef4c1cecae264f79d45f0acb6622607060", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c31d2924235f26292365be9f0955ab00be65eba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e6842dbc826a42cd815652d00bb7b152274529f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e9208886626d708b694c732c5f553e77ba762362", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59fea27cf190880f09f06092d35eaa8c46bb8196", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37e4636c54abdd9ce849b9c52357369188b03d6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fd93ea28ffe5109523c40d14883584afcabd0968", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "89bd2ecb5ca244e779170e941468abb4cc6ee853", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d1e8719b6bc7ed7558b70c9270765b00f7e8dc40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b0d65f7eb9237ba6fab029a497f645e58cee59bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6e13c350958cabdb4a0f00d594d1e817927d121c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "486c314c450cab5556b5a0289f85cc2c477e521f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3153a26af2d42a2655184a9b6a9f96062019497c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f08e3b0ec91ce467d96e8156c0e254a06d54072", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8e55567012043294fe7aa8768df3671b5f63a18d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d496bc1d00f28767f618e9adb1f2deade182a2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "642aa1d411956b3b3e9411d780049047ca9abf07", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a76e07e98180df5500e1eb41fc7f51538a0307f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e56d4d1ecc284fd3ee10baba9abaca70d2667c73", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "563bb8987af52841c114799a994fa505bab77123", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "55fd10dfb4af8d53b939803977cbb07d3f6b5e90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "724c96fe85d2a3c4444d66d9358d2f84f3bd5193", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5252448c917cf10f69519aee2f30716529ab0242", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33446fb39ca61b83c8aab311a3e59162c6670990", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c36fe94860e02e109be23c1299f794e7e647ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0261e323a49b3ee3e59eb0b361de30262fa8dfcc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e467c7a016c64ed85bf3bcb56f1afaf72501131e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fb9f6bf42e0d4b17022d3260e60db423f1d5e5f3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "039e48714ce2935cc0a1097260044d7ff79a2ddc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a345a627588a9690b963458a854d83a870de0cdf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c527ed78940ed05fdd699e129f704af8f2faf48", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "102cf43e0195c9617a3605f8c541c303d8391fb4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c7e977d018a9ce259f6497c06ec485127930afd7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4a13e2355406512e92ac1dd0ce183586f591a6f4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fc762fbd790446c7b41cd2c975508cc55cedd62f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4727262390b1727a0ed0b4dd1dfd73dc5eef9f43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9f0b26f27251ed6d67880ddc99a28d0ea43407a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f550a29caf0069188abdbc82fdfdef7e9b786ac5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "684ba8c59fc5aed9c9b25e01a8e586b777dac9ed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c95958c451d3287bea51b07a423f9c01b16f302d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "06f8866dcac5276f9d30083bad531a15b65d204e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4ffa5d0c6292d3d5dbc67d7cc083e9297496506", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f5e79816f94d167036a18250bbda23fcf47bea79", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bd29a347d140b04bc3d5fca9c3f0b93d2d1faa29", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b028123f8a882ef40434b95857e411e4f123a51", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f6aa7e1b87a017cdefa07e27226ba026bb940ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d1f425efae7227f82242d0d421bac24b37017b45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "664f2139029633f8781a1d5a84b5603749ddb066", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76ce0973654f62a50d80afbf442722de9434787a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19313920108be0d31e8dce7ffc15921c69364a31", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c2a35a7cfcab0c761a88683cc35b6b512e14f12", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc8e50289d153a044479e16766e3823595ecd654", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d72bf99e961a8a5d49cd71dab949c3a1c0843a26", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "67d740294ff327b9bc6bb11908c1615e76121ba8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "71c8bb0cc7caeeeb7dea817890398b0c66385a8f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "52b35f54506180d04dfe50976fe27a8ea5f0e518", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "91ed24039bf8425b6903f7cfc5116f34f1ceec65", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a13c3f1bc8ab0827d01d2e912db50a069799df64", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78e38684fc65d0192bfe87e383bb3d0b8ee6407c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "237448f767fdc0721c98c8b2b30cc4694f1e938b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "815eede64aa53bad18747bdda7dd7cb657b6f5d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ca0fe4645feb600a2fb8bba337aed850d72551a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c67cddd9435ccfeeecefe8a465d165bfbf18bb5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "efc3c3a6145136a00ab9a31c42cd876ec28f5ae0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4f97d4d7b77ef9120dd195d35fae56b7fedd6622", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "637a6ad19c95807bd7171da23ef9d7381b16a784", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ace741deaa1a2a9fe8fb0b6ddef09b42ce3249bf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e731bfd7240819acb70eec9e1ec5fb53791f2d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4a44af2814c831420bfd715d1baa92040fd025ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37845c54043b38186fd0c508b9f373062952b025", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0012ad3a73ffe58a6623858853f8aa1c6306293d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f5bfd3fa053d6528d74a5e3447d2dd513335c050", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "46820285766c12e82b9f03a6360a92e9686e5e7f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c1e6961d3a4477d24f254234e50bb753b759fd8b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b0072761a58238c3f14e0ae184b3ec33abc9b965", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30a6427b35934e2268182eb72ecc5b6fc1b2bce9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f91b5e0c0f3742813997495f1e751fc8d9bc94b2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c6f034c6a530d382fee5efa0f7d4171b575167e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1f9e3b772fc8c3b39a65807d0905e6a68b2bd95b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d66b81f11d80a8fc9653dfe313f33037f2898dc1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ad55592e4ce7aefe5573a43e37c9b22b8bdfa165", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db1d778db40993ea2e701e9f5e1f7fbfa4d9bde1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1f8734721e9e3d873375b30f8439cacea615e3d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6478a5cae6ef7675ecf2f926515e8d9b5b73825e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "09fb9581dcc46003474d2dea58e691dd5501f1e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "678f362a78065a5c3c9775d84e63247b302a8785", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "57b6e102b67dc2831aad97d5aa8aa8922d191faa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e971522f687defa4c1872a890e2000480a688fd4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1bf91fa4290419c83ec846b1981278e73f52c237", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "20626568bc96636d69933996f3591585cb82307c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "56e1a08930b3467f060a2627b38086427bee20d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53276ed4aeaaad94e78a15595380d10c06713035", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3e78b552335b522cdf79ade327f04d46b6f8b1a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c37c51ce4cd1731fcecb65a6ece70a46ccb505c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bd5731771dc14d2ecf274e21832fc965aa29e54b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "52d7de6018666a0d52d090ebb68f01047c77e90f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "89471fcc0dea9656d262d28f896ddfd07b122ba0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5c7decc7c1f0499f29652b8a7d060f3a8ac2aab5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b6239f8720e386035be2547837484a226c1fe2e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "983c00c4d77ebfec99b8bf613e96f0e7e0a3f184", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "87f114ba3706a7cf42514eddd61cf262f1bbb117", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0923ab190a1b644a9c3764a4e6177004d89de7f5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "5982c62bab116806b4abc11030e9fbf70abbe8dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8722bdf241cf4fa4f9d557281f16255e0a7417d3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f55beb5d7635f24a22878da238f6406ebb0c5373", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2601025747a6544486512235c3221153d5581eed", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2601025747a6544486512235c3221153d5581eed", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "970bc5944f36ab57a8d10192ad00ff34a67d4551", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8430db206112733f1d19963d61cb6c3385ec07c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "520ed92481b0ad020d4c0d715a865d35820b4211", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d9e664748d0ab1a0eb01d0796a6333621d080395", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb99fd9f52658597705658c49a009b98d7540004", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb99fd9f52658597705658c49a009b98d7540004", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "11e2fa6d67ccae5e868c398188160d6f7ffb7b6a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd6139d17af91f22e7d564e45f98c91a443b509e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aeb5ac9863b7a426ef1a873fde743481691ab2d2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7603321ce42d82b1c3394cc79814a282d9916e51", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ca7b9dec043445ab28bc5ae0fcc2dc33c5768d4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a8baf9c3a92154e6d7122cc1621901af58e1095", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "091ac89ed20b9c2c24df25cb96bd9d5f69a352b7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d2cf5726ff06c9ae16cf5526d5c6b430f08e0eb8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "627e93009c2be2071d2d4f33a09aab6a313caaba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb98b2b60b2320b4a56460a3088f2274853446dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fc8586eadb9c2a9d2b2a2a9921b5f3a5c8b84bf4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4680ded5751229652852e6866e152d94253c6de7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c76d386c68ea3389fcbb0dc75b3ef6d7b34fe14e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d0ad90be41bcd288bf4a9263df25d8e77d578cdf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ddcdd238591108401ed123c45216f83f26f6fea6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cdc936f1db53c66771db6b0e2a2b7da32236662", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5490bf5ef30a1b843c49b84ea10b1afb95104374", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8934181ac5fe29d478f7bc87248b57ff70521554", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "18c44662815062668acdebbf04c638c6d63b29db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6c551d428fb4ffc5f8af2f16ed44137cd604e506", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0d02cdccf1a4b490aa9daf897459ab1794326a6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0c7ba1cc2253f8775cd1652b3ec48c739d974cf5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ad4b6b6e08c828a9924299dbf13838dc5c6bc4c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9ac5072059796b5f41898e488de9c5f6c8b9183d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07e984b1b4adc33cebfb67d92269ac5046293267", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "583bd2f69f3fb8337f16f6923104ef2c46ac0459", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c8b2e61a340d3087b76f8be99d92b0ee8737f5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b03c14534fca446c084d7ffc6a3e422f761fcdac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ff9f75584d0571add77cbe4622f25ae2de30d02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "5662d7d19a111c27032bfe56c529a8dc03b18aa5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "f47de5de3fa44961b2590456e2f71c79df0c677d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "be174811a60465eca33a2d7176fc850e81f5978b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f82251b4168e8a4eb0df12e767c86a6fab2ae65", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "75ea904ba086d884f81903d50f267b2385782f2f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "03ae253e8c47ece34cd887e5ac93a8eadfd6ea0b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "087e61b0ce554fdf5ac63d9db6cca45ab756813c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd9cbed08a8cc566867947d28df896ac05c09628", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d5fe04a434fbfd234fb311217cef45cd610e47dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5a28726fef6f268cd6c4cb73f9b12524f439738", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5112df01d1b4dbc3d97e4aefe39e584d81c31161", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f0d765b0ea7ee0ed306f4fcbed348c961d47f82a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "94369cd7935ba77cfb1d5a020d718e7b708dee2d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d606b8389362af7ac8661e1f73bf8b862939aa91", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "276e2ad5aa663a63b4f245c87dd4029fe516788e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e32964fc17d419f8ce8eabae55af3bbe815bb934", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a099c9678c45ce18bbff9c080a2cff5af9292869", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "81249f0e8dec5878f6b09731002636ed2e77b190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d9cc1ac72404b840283421720d590f306d521a9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c6592b91727b7d1e298014b49155568489a5a3c5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a5372dad4701f035ac562715ab8c740574d1418f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10475f1402bf32739f4e0b3ac1b7a5693ca46693", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1afcafa485450994fe7d6b9f11e58b898f13379", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c384c064386f04725fda74fef28f087135607e64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "34b2b6a7512fa41ecbf8c93505dd91f0e71f46b4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0dd02fad44549e7298d42ffecbe3a7cd6e0ed515", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "8541717cc2a586c0c4bfbdbc95d59cabf391b676", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03488e8b609e5c28d4c69beedd2f947af2bce8c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "609a7338d68ff41832889da49bbc6c765849a9a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "78e0793e1ccfb3ba3dcb95b555c921d95aea0172", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67d66ce9d8b196139451988c050a17df17a83887", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6b41ca80e7a1c105d59ba5fdbfd2a156d325b36e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "176d6fa421bddbce258b8101759c1d428ecd5a34", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "de7ad4893b8f7065bad1433f1ed93371ce682e3b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "74e978ee342c3293e1bc3e02fac528c4432fcfef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "701c25515ac58353c44da0cf1797d0018ae20426", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6c4458e301f881929c548672cb744ad8731dd49e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "08222f019ffe810c7eae7b3ee7be44b3cf4eb4d1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "97225e42f0c290d30ef7b755f62bab1084695dfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "360ae91306bf2f6069fc955ba247e0237a3d0aba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "408f63ea79d874ae4fd57b7c5b2772e1c27af93f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b94e8275f157f72ee63dc934e2cc676240c8262", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f2041443c5c584621ea6fcb6f825d19a0b80633d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "05c32cd7c3f99c6013fff3a31da57e72ce13dbf7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3bf4b8cc0f6f0df8d56db93bbb6662716e4444b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ecaf547cf761226d26b02121a83e62b32eeb4656", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f40aa03f623e3d16a2bcdec750babbb5696cd470", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "6c732f1b69d3b3a1cf711cfd64feea43bef42f08", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "acfc487f8751093675a7848d0e13436484dcd992", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "72ec2284a5a7d7a31a4c96c1160df6b0d2305bd0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4882b7a1bb734bf4aba91716560a006b3f6f1f93", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0e376dcbb5390d7293d7bd3e2ebf38bc272fac58", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b808bac761403635d7cb85322fb9d877fb8cb088", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4bd8e4cba8eaf73d51117f28ec0cf9b1bea35e84", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3f48ffee7d5f7e133fd33a63065937a61cde17ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b3a764c5222db74b585fe9555335f076a7cb44e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eb4623d27c7f969a52ee9a6715382af050c6ee78", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ffaab18133450814b834a3cafb11acf8302e9ae", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f16d057f8610ce4e1d665f426322e8c41fb83467", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d265a639bb791baf1bac6ed3c3e851ebb2fed95d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "642fde1405d8be917678a6ef4736503089669ea3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6f3af341fb4b448a03b82b1d943df800ecacb0b8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "dac0e3ebb7b2004a1ed444ef228d44c79d5ba74a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9a2df3198ce5e9e6de4b21eb5cc57ad88b21d4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9bc19fc502b1b816003dd2d1224e52e92d0a623e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "35f1b5759f19230333560056f2cd26c515e34ed3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ebd1f5c251b24298cbf4d7a97428e7d54b1194a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19a6f1b8daa70f6b54fdffd93b93484fd836e5b2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df19b8c9df9ca02c9d8f5c141a9dd0a81fb5e49d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "46656ccbd49b565785d4052c09b3cecd4bfc8e03", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59f3f907d1e1780c345357fdb33fbdf6f67577dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3fcc86df64840352479023ea27151da970090d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "55aa61c00c666ca67ba1a01a91e95b51d15bfdf8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "4f71ad5510f53d70cae32e94b220709a9c0d80a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f32d0cab8083b0c53dced2f468abc2a29b43b8ab", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "093d721348ed704e9a76bb891e37507c6a1122b6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "510c7114e757747d7761b8ad586e4f7c958183d2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b8ef6f258d151f7e590a91de314d2d6c50c05e3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97037b1ae6737ab91721d378d530d79f65118568", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "806cfbb973326c71487aba3876034d0d561e0a27", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d1b62da86c553a13a4aa6f566ca9dbfff156b7c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aea237f9caa42f270762af9825c78ac4f8cd74c9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "33582cc654c89cf6e584e081d7e5bd710ff075b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0cbceef00c744475a42b21d9de8feae93d995b38", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "9275bd67f5efbc682e431488906a37013b01e265", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "aa9ffc54b7d06d24c6a30fb52c92e9676052b419", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "a9aa587a6b3a46ba3b7e2812194fd2831959ac75", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe2d335b41c432f26899f2362c8ab88e59a72e1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b32cbeb1d5d8160c811893dc59f51b80a6ac2400", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "53626a17aca93f7a25944d42be00d7d5a0747a92", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "abfd07a147179956149021724e60e3157333f5fd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ce1cf304aa7c985218c27571edb15775506dc5d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ce67ecc032cd31c7ddca402c42af68222e6316ad", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "08d625e452905c3ae81702168eaebeb0ae1c2f37", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7a57fdb03c52a1d00ad57143a0339d9aabae5253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "2b57084c7ebdde966a43cb045be3a042eede3431", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a401ac6d9c12544c724365ac5e31f2d6174323d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6ca865a0d1285b4fd7f3e92281b713cb9c26e8a7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f8f40a30150bc944f96f07c98064ef2fb0b73044", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e42cdec827d2bf575e0686a7d9de703b944c54ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8c8a75d7dc2950a1aece1b8246f32e085774af83", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2e815beb6f3b3295b58c937867c1a15501174a4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e78da3423a3460ef40da4cfd84c1769939caf414", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5d4b654fbe5d09e6e52aa781b5c787366e1aebd6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f59471e38eefc7aa3d8361c023d20a17ed0730fb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ba1a6395c338cc82d7b1368903d72dce3853a6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "827704d8296d96372ed713377054b9cac099539e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5becde8434720749d0e0af01f72ede07433890a0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "78f3645467177d2fc9217635a19340ce0176ecb2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "70ffd1263ce9cc1017aa0f8d198957ddad024a5f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f44df82f6bf34005d4c6b10b8c434deeb8bd4f58", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "14636945cd0600abc201976df0744b46777a8991", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e3481bd99973eac0ed90771260a4dd58ec0dc9aa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7979b33f2ec6f3d5b1f981ee32984eae161be65f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "128890e95fffe15910bd0d240b725d3d6c6e71a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9927addc5e51bf771637f03d4d8cc5a346b4f44c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9c2d88436c2349b4be253a600a1f50401fb185a7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d97c0caefd07f05369bc61d6648a4c683e522ab8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d645b00a8e0fe288faeac65e813f622a7b1f322b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0761b768581d1247129d16deb43de396355732a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fce70d53c9d06fae4679cffa2083656924ae7924", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "1db02704d0ea6371c14a2247252cb7218a7acd6f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "040400cb8e65ce528d42e3d201fb022d9645e2b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3aab581158846fdf8a01dc4b1604535e1897ec1d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dc46119ece681d4e5bdc84082f3aff5a33d30cd8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c10b9abfc1ac56909831ce7e74d74c17577bfa82", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a628628c70fe3ca9ca226b61c98d1c1100af39b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d99924c0cd4b5c1c538ecf300dd6f88d77d82f1b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f0535b3efa5e18dffdf3fbcee3994abfee6daf2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7c9b327fc533a33f266b76b19d9ccdb796dc74b7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5f64762e5561c8a9e93c9da9b514e98e7484b4e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3712124602836ece0a9e835d9463fd0405e1407b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b9c7a85046ff2ecf897572634eec9b3805d517ec", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "473bf676401ad11d945c509bd0c253b4d60584b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1f0998e05109765a63a23962caf7b82d571298cc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5acc191439850bc4e4835ddd90ea5c4cef175dcb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "47faaeb14152e60a950e9302d86112aa5b57a109", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "36d3a0dc41556fec7a946fe7ca52b2ba17d1bac1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ae83fea09067ec9e18e771c37a5124b97d9f616", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0627f62d112cfe03f5bc5a9fea137e76da83bfe2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b9dc3821d7e474045164b0fbbd1424c150771fc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9e5881a38fb21b644986fffc4a67cbf9b0698622", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "10cc5fc94c2cd2db14d306925d24f9895a377443", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "4255dd28fbb9566b635cac7170b44d0e47647c18", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "ff77b89f6345a8954495c4290dd66db11d7fc4f1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "a3daf2eaa6990c2d5912d5cfe23422478a84c71f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0fbef5e81cd16db61b8202f50e3043421947df14", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "72922b82804d27d002a21244866bdc63a70fce0d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e2757c7dee24aa699c55962975a003b3927259b3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "afca6419401de08ec8b85922477ba0978da0215d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "654d7db49d8077f080997307a54fe40f7b01c956", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7db57b9eb5e6ab4d9f6f30b3ae5f6e8430fdc3dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a75b5ab64c33da921461311c4647c3bbb2352a30", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8bcedef6194970e8cbb017de67058895a4aea78", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "045b16599d916ed86651f9cbb7d25bae512c86d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "99639865d65c204f34fd712cb7d3f1b99d11bb42", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e26742256371eab228635b6b6270f5f62e567987", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "885918f70231a93b1b71d873b0184511a95eaeaf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1585fe59283074d565e46691d487adc593f3a77d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "af6916ad3ce0b1546cf940a7889dbb87e0a3ee4d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3f0a46b7f9a2e815a13cbe3e03d1a854f2070096", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d2f26bf4653c7c090f87b1285e640dc1f0de7d37", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8bc3567461ded2e0fe2ef8220f150a205f729a95", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5f108493d8b3719f348acade168a86dea0aa7570", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7f26c889ebfc2429d6ab3a49da4f1dddeabb303c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cf04e6f4e9d3f904df4a743e1cf017f70b1744f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "27b5324009503a97c9a79df57c1f51fe35ed2d81", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "cc590642dbbf1ac80eb21178cfe3336ff73a4f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fd546de64311f3a7276384ad1b090a3d4ad0a2b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6e1a64df10fed04f32257c0eeb228763caab2220", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0cf161efac428d13682601c140214741e0646462", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "49d1e146257306215a28c69e4b4ab16619166115", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "804f1109a8ee2277551cbb8bfbf00cc47e05faad", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d659628ac21393432c23525131a0277fc01a99dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "423585c2e6bdf570747d6ea0b4c39bc5aac60bd1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "33e66af1a92f639c427d46f88d31bac7293ac220", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3a9e31cfa64ce6ba6aa374722bd8568ee7c6c8ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "901b5d40ffef7f7f967a2a2075c1197114415698", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "21ddc9500d45a2077042204a57b7e179f19328fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "29236d836142172d5b64c8a68d3a2f0ccb897924", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "15b674f99e54bd4e439b0b59c376f4a7c192b5a1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "2113324ff310d75a4a97c7a19c9ad9635c808305", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "821438aadca41a9003bc3f30558c180b22868bcd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "84d2a633d458c17760014edbfe7911aef03b0962", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a235bb40f00542bb4f31425efd5bb320acc62c98", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5b1d02843a072d2a2b3edba549d7295ca0256e28", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24083d902b1a8d4f628345584528481513a3d6bc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba891548d3d9da3d92b07fe137d121e5171a752f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b8d3cd9e0220549821daf0878f9e83165b9e278c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "168b771ca8e5753b77bee7a0c8060abea29d1cfb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a546ce08d20a0e105a18314c0c8cad561d5612a1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f63d0427bc5f962f1e15ccd95fa43b98ea919156", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6a376ac1a44f5f0503f42f7a8cc47ba957ec73a2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "267e49a25bb6ccfaf4012eab5dd7222a40d0049f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "7ff78c463bc5201e39da3e2d59793937cf9dd61c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2217af463c0d6e53e8a0d85aa5dcf23742677b9c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6a49d7acc18a69344b97edd762c475269f727eb3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f60cb2671b4cc932cd15dd7163a4ce6d3f02e1db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0c69edf6601e8d1f9e3e82a2a0ca33266031ad39", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "40a70d296217b741d30ac18b9e9ea2845de0d405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6030e8c318ecba9d1c6f0ad3427d200cf9df1147", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e072653171e0db6790a69f6d874d039303688227", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daf4923ab01224a8e283627782bb4cca539c2863", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3177dd4b86b426d4625f9c87020a4a8ee373885b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e8f23291cd4fff12d22ec443db3067fdcce360ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "94613696fce40fa0b3deee8aacc8a6d757a0725a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4fb1c4f38b69cb19f8ea35274977b0083b05b9d6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ba798e65d7904578c84d648a7248480088d4d2e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "093afed531bc180351f3373d1a6f745b2003881a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "216e34d5d831eb16c303585cdf6951b105c36c11", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c835d2cd1b181524c6cd429187fc2b6d9884a48a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "deebeb8cc0533302ca48a3ffac8200f37bfaecd1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "39f83d46d15f94960b08200f8d6b7acfbe611040", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d77ae13eb3da2fd33955f1e980b2618440cf0d97", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cc21e686adee03fb8e38820d1be346b614645e3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ed3004d98509f77987da266a6c66247f12b0f0b2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "0097bc26cc780da13eecdb2a4e2e5e6aec593145", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "b624db88004355fc40da04a2de16d0492fac8917", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "c6997259966330a6558d05d59be7611c149e841c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7adc61fce405582e52ad70383c9aebe785890150", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a26bd24b77cd16fc7bd7dabfa35796b8ece33eb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33da08feae68f95451f1009def1ca516dc4d4835", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d5746b1d04e1075dc330bf93b7ef4bb35035344", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "60b5505110646c1bfe7a53e0d2c47e27c449f5c4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d99145c70aee0418c26120580b4ef70fd39ae9f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "caccc802083a7e965022e8a3ffbe187c3c293875", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "44104895b363699de2ba4328c52b74f86cf3dd71", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e936b6931f20ad58461b3baa93dee2a6078a0513", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "3b2552806acbbadf4db944b280e6db9c8c1e4e06", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c1c260a17c08fdd2f29446f406a339e6154c510f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b286e3ff478c822b6617a73d63cc35936581588f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cdbfcfe152487305ae195a897df4c3c64305d890", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8d45dccc0318595afa007d15a97e8fc73eadbf5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "364a3737702907843ad0a0e7a78dbff445b66b9c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e464bcf3cfa9904bce229c31b7e8407d7a4c9ac0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d" +} From 957179dac4f9179483e8a3cd6e915e64a65e50a3 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 5 Mar 2021 14:40:21 -0500 Subject: [PATCH 28/76] Update the way that expected output is determined for UsageChartsTest Due to the fonts on Centos8 being slightly different than those on Centos7 we needed a way for the tests to utilize OS Specific expected results files. We first need to know what OS we're running on so I added an `$osInfo` member variable that `UsageChartsTest` will attempt to populate with the contents of `/etc/os-release` which is an ini file that contains information about the OS that is currently installed. Next I updated the `chartSettingsProvider` function to optionally look for an OS specific expected file first, falling back to the default `expected.json` file in the case that one is not found. I then reverted the contents of `expected.json` to it's centos7 values and added a new centos8 version. --- .../regression/images/expected-centos8.json | 3778 ++++++++++++ .../xdmod/regression/images/expected.json | 5492 ++++++++--------- .../lib/Controllers/UsageChartsTest.php | 37 +- 3 files changed, 6557 insertions(+), 2750 deletions(-) create mode 100644 tests/artifacts/xdmod/regression/images/expected-centos8.json mode change 100755 => 100644 tests/artifacts/xdmod/regression/images/expected.json diff --git a/tests/artifacts/xdmod/regression/images/expected-centos8.json b/tests/artifacts/xdmod/regression/images/expected-centos8.json new file mode 100644 index 0000000000..5fdd439f78 --- /dev/null +++ b/tests/artifacts/xdmod/regression/images/expected-centos8.json @@ -0,0 +1,3778 @@ +{ + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "57ea2b45f0800549366e393578bc563ced54e482", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "59a5c2f2ef0e9ea6cbb0f3ed79989be1a48ed902", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "535ad0a1b6ad6424f0c387aec893f337cb155922", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2927fb6b1ac59575cb81a7a6cc15d82ddddcc213", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e1b5a70cc2d45326321ee394bdbcdaf4dddd229", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8c042378d66bf5e2cc75e9e048667df2e1527bea", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3dfacaa40acd7e115d8cec2539d85a882a2faf45", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "608a34d5b090b3a7e5427fc2cae2712ee03a89ef", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "83eada08183b7c12c657416a51184faca17e8da6", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e4b88843f108a188e40edff932dca0eb247e2374", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2ebf8c8c7965793f11dcd77c3456943e7cf42910", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ea891809d81dfb5603688c89089ec8fc7fbbf224", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5483d333d6df4bb545ea4ec298960aefd6a22515", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9a46f4c516b393fdc7d6b96548823ea7ff7a5264", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b7298c6a9f95b798a03eeb189e1b882d51a6e827", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b04316bd7b32181f26632dcc7dfae02609f3bc0b", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "39ca724b311497972c75692b813de9134dc3a503", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "e6c7f7a18b3190c6639972b385bd73fbd662ac8a", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "23e38109b4a04a9fcd5d9c558530d227be44a459", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f7a6314fd0c22788e8b48f56e658c596d01145c2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "54b8c9a4e1c72a9bb422e9b33fd64946747f83a2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b5d16b7c9310547d008ac1eddc9e36d51e496589", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "53f47f92744d85567f5f6de95dd01dbfd43ca1b3", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8fca927b1422fd660ca13d6cedfe3e7b9367f403", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "18f1eeb9c25fd76d9d21636c27602dbab6d87df5", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "21c36de0517cc6ddaa14300aa8badc6ac2010592", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17fd64e1caf61c1a09aed41eefabc5ff8bd971ac", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "33e2d456cb6b1f2f18f9560d8e81331e79c2f26f", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "18a27aabb717bf0a417ccbb352f6269a407a4433", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "70a99146e8049590d47a8ef655fa467b40cbe1b8", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f0a5fedaafb3d6dfe0568e4c3a3dbc00b10a5915", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0cc6765922a9e537698ea11ce227580ac670467f", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1d416380d59546a9d02f9a1fe1421e292a52b8b2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "05f3cb522a6a1b1888b1c9866eff9b2f8d0aad3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b2fa9e1bef386c1518bd21fb78d63fd740a62fe7", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7272118fb1a06f23dc29d78f647f544a3a34cfa8", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5867f5468a2716d37986af1aec44f6949da3a421", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "436c7237e3431764b9d796efe1384357edcd17fb", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cbcabecdb611d56e1541781053dc11ca06b3f3e6", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3eee1d52d4a1650ece3120dcd134c7f502531efb", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e08c93fa09d85e1aecaada86dfcb41eb44ab132", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "ea6d2a1d3466f724f6bc06467ec9a914ce683214", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "abbca34a138f557c424731ae1a61d63addcd5a56", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a44f957fb1146766b45bfc435aed9f062e3928d2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "64421655ef11bbe25e418651c0a3f61fe5d8c706", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3b78ed2c2f9ed9beb3f03b153f32f5e8a92c12ce", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "096647801389f1756264d8bc78377931284bae4c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1293c69641859da72886a8fcfebc825557594832", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "50b1cc28d0f3a46c0925f46b2eceaaac8fdb0bcd", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "430b06630ae55489534fd84bf4df31eaa4fefe29", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "36b7946c2bcc0eb248d077e8b6738e8182f268e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "36ca62314e7cc3f8b550916f861418f0af228707", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7fbb9df6c4b1d2c14dc09422a6baed0b5ca0b1d3", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cdbb56f35de7504a85acc881f95aa16c60da50b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b549e96d62ea594892ed6c5436655754e3c8d954", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "888786cf3a09ef051a51d4731f7af5f6ff0e3b51", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7dc579fce58f9b1281a6efb47dd89e3c43a4b04b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "8f32eeffb8b53809fe56e60ff16a9144ec13271c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ddf1d070f28b20a7e294c1d4846ea7eee071b95d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b2e0bca49ab8b9fae5d4077b5ce006512a14c64b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b1d22edd6d29df091232126ef64f9ef7c433a847", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0f2a73b5013b846469ebf922e76f5dc26fc1f2a2", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d61e92afd98d27279efab281f74a227e3eb2d25", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "39fbace779ef4dfe3a24807f04e3c97d47bcfcf6", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2c0401d3b38f3cc841b66b2804835a34930b8680", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "74eb933846b9216cd079a460a3dfa24b432bf7fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "74528ce9c06b963334cea153c5e9db030066125c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e36e105501442404b56e71611c5a80b9f4a57a2c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "29c4876840d0e92208c7f733ace3a5d26e76fa12", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2dbc7a6f5a1af73abe25995c9a12a48499daff7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f4ff0836ed3aee1412199ddbf4d98c6ad38a444b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "20227792b0faa22e1bed4f0ba0698b787291be4a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "03477cdbd5cc2fe842c244a8ef46196dc155da40", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1927ea2d550713e7ba8c464540de2f9c1585aef5", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d30c426027f9633f21021ff99727eb38dd735559", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b0b3b19907ea8e8f2fea32e2e4ef799b37c0c70d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "70bb704d4f2353f10a6bf7afaaf1e94caf09c08a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c629c3fca2789230d1fa066dbe7bfd8749133202", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "90dbadf90c5704b0ffce0f1bf6056cc0b9a7aaf7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e7b656f74f6902fa0c3b1d15c4709704e5dd8a00", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "43f0de931135c5af6bb67f1d18fc6921a03dd09d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0faf0dee8d110da9e98f5199dfbe89c467bb2fef", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "961039f332dabb61c2c7b66f0c56c3fbb08047a8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9ad720c2338173629f76310430cedb3bae8d4e78", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ebb791e1ce38e15704137f75fab2b53b29bcb482", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fef73797af7b1239f0aa00d52eff0c2ec8790c0f", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "95170cc93e781912a0d2b1957973a541f6dab74a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0535437960cc8b1ff08eb060cd81cd2d57928cf8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d345d1e0da3781841242247d887b64989c8b2aae", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a9dbaa127c090f2cb67611a44ca256cb1497ec12", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c1610cdc743e5d30a39c690106b2a9a8a3be1289", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ff5a69d90505a5d42505c55f4b3323beb871a58c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4a86d0d8c2e53bdbb75e3632efe74d6d79a007b8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b98c9db4e97837c0de1eaac97200d4689e232f26", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6062861ebd77af88ec2fc950db0e8508ddcd8c8c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "966babf23f06514dfedc4b24751a32799b4f2d35", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4f9fdcb1be0ed9183ec13155cf8daabb73bc9a46", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e7fe2b4678941a2092239f5586672857b39c9e7e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "01b49edce49e492e2c9d46b61b03e9d8ee550019", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e9c714d5f2ba4ebb203d8245ab033a32afd264bf", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9bcf879e82ddcf050430ab62e32c86f92ecfb4c4", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5658835f1f9f8e6ad4addd4cd6ffc7bbae9b4fcc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3f408ce9a702c0792e10d1e4715d95f37593c13c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e0580f9c4d6fb3e14ed34053d7da25dd85878ebd", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d3d1ae935c50b54c858a0b6be0bc566fd50291c1", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0a9d57d514dcc325fb479545812e22159abcccf9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b34104a26159d4895ed3054dede2b7bf72f0887d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d2b7d807c0c50911b0eaba2ce31cc65b64309ea6", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9cb8db453ad3521268919e7734673da1e72e25b", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "860f3fcd60d6773e6fe3001a5a02ce68d265072a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5a98a81a53b139b8dd29e2cd9e047592eaec9b95", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "129b40cee67c61a2d709169f25733e5573059de9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bf96ea7fccfea6b616cf90af9183cbe6e48f236d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1bf70681a4880756f72db4a5b356596d6dbd8e1a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c0b447d923a75f3a5b17d02c2b936fdc6f07d121", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "09a601c78cc07280b92fed9b3ce275dee4c051a9", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "292b7f595675c9b2202badbdfc41b11e42479d9c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "832f175f67f786ea1dd3d2d2ae9352469ebb7a15", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c30b558102f25c2c21915d5b72e407e547fbf634", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "18e86ab3e93d8a61b3dad80377e3de45e62aa4af", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "cd6b0f2098daa66589a74c7092bebe214ba1cf92", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "ccecb290470dabc947d136090b07383396f4ac3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f7b26da71ced9d8a90fdad88eaede591be581817", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52e2747457d0966d8c2c8ad6cf68be37b60d49bc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7ae3e734baa9560540421e604b037698bb2e4b5c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "024d964bc0aace504baeb00148c428c67fd50313", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a6ef1a520000f9cb78dff670d42203f62081ce4e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "db5455f31adde419a4b5a48b36fccd87d1486d0d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1a08f3c9a3b09d2ee96aacf4958b98a2f14074e5", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "bcae6c775f75de8a64eb89537ecc9dc3c494b880", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "3e6a3d03dc142272a944e25f6fd4c47d5bc0f667", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b35e7b15b94c8d9076232741fd872f9cd1e434fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f9da99240bef4a807f06d8ad1e7c66462a79f64b", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fdaf87638ed33cc1108d37238035817ed9bb41d7", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d362ad00fa387420bcdb3f7e088beef0fb6daf3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c66410ae48a2073a729e62ba0bcadba59a96151d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "dc674dda2f449370bf3d28d5528c1b7d98dab484", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d746128cb11fc730754f0b3f009344c39406bf68", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ce37b540eeb5fe8804eab42cdbbcfdd089402850", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4eccb3e142e82a0ee52139843807458a81f28b02", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e405081094c863bc5d02823e7ca82d021356f39a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "58bb0036ae232b5cb4b07375cba60ab2d4a15819", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "794b26c21e336d9bc2e306651f02ac7ced93ed9e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "65ea0a6c9ea796af23ff2a906cd80a25d0aaa9dd", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a7650855f7af4f26ccbe520858958ccea15f277d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "eb72318c099b9058111f31b646723779033f8159", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "4049890e81422504030954e686a1524d1c04725f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "398f19c230fe17ffc4714eaba6d6a379224d688c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bd14d7c5a7051a99ed6a32a2fd62b8fb7843d0ef", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0f11ca6b54172db0caeba830c30f92d95ba73250", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bbab6f2364d64156ff5e855ddbae0813744c2ab7", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "acfae08dccadc16ddf8d995adf3d1b24c8a17aa3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a1ecbdc651d549ba22fab2c71cf2f5d745fd6fa5", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f44fce4545ba0525a5511b8bb52027046ac120fc", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ccfef3d54307858444310ae9609e8ad9576eccaa", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4aab15b1359f52a5987c4f7aa3a31d80aa86d586", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "1b424f24f990c688a6bfe2864f6623c5a6aa1cde", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f285128a4b44c86bad4b265474b75d4ad6759945", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "efab62ec84449ab8b0b37d1ddc9f0bb0f86c82e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "58a64e1974deb7186ac455b81acfdb58f441499a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "15198fe0f81f2f7028e57fc9d1694e3a755ff462", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "2ed30caa5edd75a48924737e27fcd6675850758d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e4f790a1e7c55f936fb5ae5c9b0ed46cb79278f2", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "099e80b05f6a430e2a57a79f106f25729999a458", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8590f2fd9c13c54dcb75aaa4e883cef206dd45e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2afbf8bbf1b31f8493adac0b959c3b7e82384288", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24e10751c781f3eb9c13272f1fdd10fe00b798d3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "944aa9c5c3c64d8be09e3e167386c385501bf579", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "301aa475ffd2a359b384e7c8019bb12eb709c8f3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd8f9e6691441752971e1440d9185d8ddf4797a8", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "962aec26f428a66ca746c2cf2b707df0922c8dd6", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "d8b4e6c2b3dd6a88fbefd005de25dfc99859222f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ccf55934dc02cbab58d60c490f72f7f1eecd7710", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a06d9137468d13be52f9c2ee88ac2134e20064e3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5dad88b9805cce5c9a5ca0a17ddb8d9a9b7d9423", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4a88675c1a92019eaadc69231c1d3e2227bbb32c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bba458ce0d86a5bb3011b388484dae8a65b1243e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "abd94b2bb4ea8a5ad15a00ba8749c4353fa0f08c", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b0222adac2d0063531492033ff41cedf81c469dc", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7884fde1d460016bb03ce6d84d9aaf9ec59e8279", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3cb83eb4a131cc2759db5295309ceeb5e6d8a074", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2adb1367b00cdb8d17cd9d57b40a56560bc11a99", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "8302401d1d0fa6b35d79b0f03076bd51f0b6d03b", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "127e79e3173a722cd995d54b513419095a23ed2f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "69aaa4c7f9c3a231d9a13e1296eb2142fed9e259", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7de637dacd0f632961e4543f15ccc9e538f99bd0", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a282bb9bec8de7a3ac8ea223a3696a5380c71d2e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "419ac886a65fb3f9e5c13b35cb2fc499e89377a7", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b292991859338887faa3706058443fdbd32d5d1a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5cc1caaa3ddb128a87a91f50eef6972061f5354e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1e8c8c4f8e48bfc5c3ffc5fcf4f5f265ceb0c96b", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e4afd4b07d3f9f0c96613dc8bb5dcdbd5f40129d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c4ac8f1d419d157f83b4fcd7d5a199bcf46e77af", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd99f8e1af3188d0343044ceb96944ae05fecf2b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e1e99eba4ab7d0b47665effa72fa73a6505983b7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4a97ed7ea6c3103aaa4ac47f579024d4828d0fa5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "80f99e4ae6a36655a53a8dad288415539f928cc0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0259798f682a6db09ce9f43a00effda1879de914", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fe2ac8cde46acd052811caffc996ddfd90dfa8e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d304755bd482a8c27ad62c7a0f2a191aa9b78bb4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e4c048310816474fd12b44888dfc540d88e7b031", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "038895ef673abbdc7ea2361d1b07dfb29a23126a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c777c03fb12d62f3dc1a006c4f66b7ea7012e8e1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2c55e028a61d9778e56eb389f4ef292bfc6de251", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ffa1778bbd07fd7be7afefed61ab9d5007a3249c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e90539eb82f598e48f454d6edc62babb3f091fab", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "78b3c5ad6d1e38d3a9493372c98997bd03be8041", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9b570252647ce11c5bfe0407046d7f1509e8dc13", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f78de19859710b5175ddb9758a41254086b97006", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "44093e98a8084a74c303ddb718c5c05bd0ae3c35", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ea81f7d68b521bb0fe213b9ad267e3d074c89d13", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fcc4d66ae287fe3b3b0bd8177529002da5fbc748", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "98e35f87a99cd5b33477ecd757d79ecd1d2230c4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "edaafa1cad1d27eddd7b313145c7a8ac0a6b4fbb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "63f64ef0ea150897a39d2b10214fbacd18888c03", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e643265ac5792f3d7f51cdee12f842198b774f9f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "89f6324ab8dc8bd11df551ed4dd5731fe9d07a64", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e57474896c6e0be370b2f4645950442d4d14a715", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3d557acffa627a49f4d1fc2242659fd4d1f85503", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1ecbceec1c6e3a8f0ce6ad3d27f91ebf40021276", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "206dfb66f5110ebd1cc301f4b6cf2c716ab63c7b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f9a96140779d659c469c377a02008842a77b47c6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "29b48b5d62f4d0db2ff141a35b45f20370a24c0a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "34f14517fe3d5bcbd010da9b6c4088d867534310", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ec28b76e80dba94a2a1bddeb17d2d919143bacc2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d85a9cc97712a0a6013ad9a6c468e1c2a6bcf74f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "621c28acb5acfb840d5b15fe3a376778269d958d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "76ea607c09cd6ca6e91375b9ec6afb3df29f7879", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5c9706e217e5f95ce08bc1a1cefcf257f1b92c40", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "6554623d984ff4f3536af5a93bbf339be7e251f2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "10e8cecdbe4aedc96633fa95c85c8261fedbaec4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dd8bfa38156867c38b33a66b9bee74758fa638e1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "312b219fa3330710664de99ce44b2bf491b10a8a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1eb8741ef9477fdc3d01f36dd908e73ecd190a9f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3005db0032ad55d6f1b59b38724ca070ab2e82bc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3c439735ea0a02f6e8fa89f5d9d9db9c4ab7a5d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "86d12a8290d6254ad5b79bedf9584598ab5bf703", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "7b7c72a558ff52d9511dfed68f2bc35055dad21e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "65c627e9d8d81cdd896b8056fe776c9c52cb4fb1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f9cf93d6f0ee068ac6fe113e44015a31ab1b4cf3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "debe21ba7af574906ef8684f913040fa5f5af12f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "5cc1cc3e15f780acf592252a8048eb77420cc749", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "520aed56b41d6a18f2d08bbdb8542b0bf74d336d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "30f9d4f49b85ae83929222dbf76f1a46bb0e12fd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "119de37307da6c72bd4820533ad3ace7ae708b97", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "de7895fa131e1640c9ebfd9129d4f0bc96485df0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dfa100a124d44e9fe0cf346fdedfd1824dcf8676", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ffff4e259ce9df973f25fdf6a478ab94b3d99097", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3de730ed0c7db986f668cfac012547430ea0c95", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "44a646eca14d0daee70e479228a8610fb5f4e3b4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f685bb31c9af585f6af60f1f00d517011e10a425", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1fb355e91abff098ef6c5b53a78c550c37094e05", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0656ffa3d45c334643bf0500012971cf44017a91", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1321f359e0733a9a0d3d1f9a420be164bd6d62b7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d5d6bdfa6e6886f952ac51922d764d87430bbbfb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "53bfb36ae2e336524c06f7a5496640067c6da9de", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7747ef5cfd64de76a273a8a545706e6d0e421172", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0d55ce188940900cefacccb62eb0e4c485435042", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "661592c93dfdb328c8cf6e257271d64ae4213f71", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "052bdada9c29fafe9073fae58b06129ae401f1c2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d076ceb088a8c86598f5de6b2fd60d5064ecfc5a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "fdf8c4ad67d85f418961678b40715f93d86e80da", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ec3ff37ed5198fb6462d9015b00b80b2a5eafa70", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a8428c7f5a978dc9d4015a9f8bff34ac2d298ae2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "40d794a0df3a8276fcfe14b721413050620a8421", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "bcf7e555c33b286ff0a63092b792f20556c7953f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "047e2acaa985ff01340d2a31cd22824af655a875", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b00afab23f4c6d3539feb087a9836d6ca0dff564", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1defa8927294c15dc9afa3a515c2f8ae54055dee", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d71c3f0e5b3af307cf9d21b6fce4fb3697345838", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a05359224d6618828d1dd73f223da76575f5a3fc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "7b72b7c3dc100000ae349bbcdc2a65a4848cead9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a2de88fac1bcb6610d948c4beffaef893c71ae84", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "126077185d0cd8f1c9bb6f63878d31ae077dda06", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8ad943422594a0038d63aa55ff13000b9c876382", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f3264598d9e0c91b72de9475b19c1c59344e2ca2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "6d80c5c1f1fa3fc3279f66ded577d3562089e166", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2cde57ab6b3f3d65e32a439a21053deaa1f10837", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "19ece94291d7b3544a80ba90bb64ac51c12ed974", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8d9d9304bf34a754b2e74892186faf8cbc9d1063", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e5cd3d18a96495df6a80b9b8c000fee3122528de", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cf4203c688cd86c7968d25030874a39c28356fd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bd0f80624119f3eeb20db24deed59a84779fdbe3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "c29e9d4e7ce05ddc357b09abcc3b6be8f0ed0dc8", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "797df0afdd69f0bc7d10529ae4fbbcff318af607", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9fa4310ac6de31e856c47c31d5ba4da2fa68d05e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24f1773c9c46489a2d51605ebbc3708f8b38c13e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d6887f6ee340b0739ea4894fd2b71b3e9d8b35e2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e6d27115ecf07dde265fc2a2d282cf2b1a48db96", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a8a7361d9d7557ed3c86a1fcbc442e041882591e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17a4e745f46f32d8551efa9d6867078ade588159", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dbc2f136f452602a193a62c0eb6932a1e7b77387", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1aa4f244340bacd6fcf09ecd5842f999bec98dda", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c61db6e13d09f4dadf48b874c3b326623f147cc0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c18378a62811d3cb95d32bffa2c85119ca4d6c48", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9af204c3e5ada5fab29019f265f66199529c2fe5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d92675de7bca54b0185acec693dd6bd837e031e2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "04fe8d33c89dc796092edb9f569c8a2de08f838c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "71bf8ea72093d0512f2f3afc46c453aee31edfc1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d769382d172405517908bd5d1fc6ae1c61ab7bf7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ee0e680b040c42b40e539c142761f2dbbc4440d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "35187ed660f8e1488187a7ce55414b26dfa3248a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7f31813bdf11e19637ceeefa216292698c405b4d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95f66deda7f3173195381e48ae72820e97e9d887", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "751c26044f66e2f5f1ecb81ddbb8b161d4ddbf55", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1d0277ab05274d801b7ab20b9e5205cad4a6646d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "97313a72f873d6b8e5a00af0e198d8bf97baa0d2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "99841f88d608256763805c9119a804a41f8afe07", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a4863eefadef8c596c845ffb5cc60ea5fc7dc7a6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "de258fdd3820559f76e93ee8841f7e039b9ec1d9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8f1a5610d793c02fc10084499fb8a3807b5405bf", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "97a8abd14b005a2f6b343bf66add034e62a0bdec", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "db4c7d03918c0afe786396416f4610569aec2df2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "09a096a32e8b5c257f19c03cb817d5166fd006d1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "559ce3db2598994fda022550ed137feea22edc9c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c1e4129552c830e9a03b42beffeec0a08420a9ca", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b3332b20339d246ef5cb3f107a8dd57a288661bd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5a1a88f4110c12ed0885b8b90ba053ecb02b67a0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4f2513c54de89b04b070a74e8f5775ebb83f7c54", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b1ada4e018c08c991b822628f330bf4c81d68f64", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6e9f53f373993b50d4917f1bc6a262ddedf22972", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2c3b4768d00500a8a3c876956617d1329591f5a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6e76ab3bb6e4e13db97f95015d4cffa1e557daac", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d4adb7174c322152c932e6b962092f77aaca5db4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9567dbe15aa1710cb40ff2f5fab10eb9c111a62", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "653ca3c89f8159e3e41d39b4f2f4cbe629e430ba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9a6212de07083e561a4cb9eb943576e0b800b144", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "69dd4b59f1235bdf73db9d09b8246e3f46a5d4d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ecd784c9ee1e36e3c03262232a8094efa96b14d1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a50749ae3aebb5abf7a01d1295ea68c3c8488f98", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ef55737414c49d0517370d1905aeb6f469351b08", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dd36c46c64e535104fd33feadeed8306e7a4f47e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f0ca3015a22c23be6ce5b52107b7c2e1cc73fc48", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "140c8545768eb62fe9c811bff4ccbb939b8e7216", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a6939d50eb4483f8ca64509c22c2b6eeccdc5f52", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "eaba6980e5771530cdc96a58fcc1b5eb80e2f387", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d27da6c1a8e8ec85ffd743fb1412a30af5f372e9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4bb251cc62073eaa93207c66e8723400be7b88aa", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "20e703fdd8cba63978795b82d4df1ecde65dce5c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e14171e776c7e63771de4c28de515465aeaa864c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ac1aef15e13cfc4ea49e1cd7176b65fe9fce5fa2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7701743adb8410f60340488a231ee06036e88e32", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6b4075bb4075e329fb0a72b93c5a652f75f3a72a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca05b8c14d3e32327b566d79603d372e2d90de0c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7db069095dfec4f16294878696b1934e8eaa7a54", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3da98f720c3570f4bb186aedc377489b1162f250", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1fc07f1e9b096d0a661e11a965c4e148cd11b1e0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "08e9b78fa03ceee74dc7be70d52eadcd037d75d6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b9e08b9cc57e2dedc61900190503f49006005411", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b102606a9f2df2fcec988f6455dd07c9274e8a26", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f1b068af9d7d24ac1051e164bba50113eee26995", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b474cc0202a1c9176a3fb392470c7bc60e513eba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c0007caf9dc5050bd9b588f65ecbe6f8816c5666", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f58b021179a1f08fb2040181b3360e89117cb3d0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bae421c9c0866eee2820a28a9800a81834a27261", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a065fdeb4ec4296d455a0c2efdfed367b5e19300", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5b23691db3dd6474b6dd14ebdd7c22f06c475a12", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "86a9dc6f28ab73eba4be9f9e59caca50e488c5dd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "babefd5799ecc2ca0511879f2b797b4122e165d4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "79ac9cde375903e7b33fb0079c5333ea7025df30", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b189b8bede8d5f9c7ca8db2a9fe4ba51fcfec7c7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "76d773e216276fbc5a900a572f9c3c6449bfea9b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "af0665686d3695f1fe2d5223ec7f81fd5aac1c71", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "745b239cebdf241ac169b53fd5060fd71344d68d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c5b0bbbe1e013954a5e42d9a14e3a8727f74e736", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "cf017a345d819c6997768512e5a1bc283def137d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f93f9b30382faf57254a09f3adb2b8dcbdf62055", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b6ff0ea1e9b608705f7d73b8f10a44c67c2be48a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c4ac1b013f9a7d6f9bfeb6f685636e9a11691a34", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "232111b3aab3756dd207d5915c7b1be62cf0f658", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7491ed771fbf151c3e12b5d0cbc57b0576d75088", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "aed75bd00627d1c2b4a836741c8c3e84b6fe10ef", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "85e6c00564f063e7bf8d1fdd59a276413ed3430e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "85594c329a03c5f39045630b32a438885265ff05", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c28f7d31047da053236021cb71858adf397a960d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "24784830f953b3b737cbed39530e42a4adc69517", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "99318ff4bbbaf6d39535e27f01bb662401d2dccb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "64db1dac251ec17520d4f28cd56ff87a1cdcc6bf", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ac4a5497fd2285ab80df8f88ad739d6ad6d7faa7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0ffd59db16a300785cd41022e450fa433bdf2173", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0e11aaa2941689ec67fd5d1d43d0e46b5b6df11c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b95225956713411fd2d4be98889f6de4083ccd12", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "80aaf2e0aa9bbc0c8d691dd48ff87d6ea10b4bb3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ba54bfb6aacde7b3cc5bdeae7ebd4009da0bb01e", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "776c63cf38cc05b617b0b471a8a4fa8707662734", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7f8739633f3ec0b99fef194f793852dd4188d365", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7ff51d665d99d94f7c3c484432a79a4f2d209a10", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8386ec476a5569e58d158e81051e1bdd352b7280", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b4fe60e2d74d4a524607c74a6943cc1dd982c680", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b54aa63c72b8d6fcd5a339b89acf635674c11438", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "38371cdb7693d29d3ff2af17e946e453251b1e70", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dc25250bc27decd229b169b1c012964056d042d3", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "35309f3f61d6c0864d9cf2141f79b2bcb4908438", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d0d48a47884a2f7a3e6ed7a6a6662c9d8b98f6b2", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "15def4c04d881a5147a69ee50fce48ba1af11dd7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "954bbe0adfa460bee809f71844be12e690d68f48", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b5d74ce13fdaabdf4bd7c5cbd4964560d36c4716", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a86c47171735543be43333a5efa6eea3d8f6dba5", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "343e98d3fa4d8c89e87c75e3893a14f3f8217a47", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9f1ade6be22c22366e3a32d0658080dd3cb36b59", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "89c841cf0ef0310ce786332692d56abf767281ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "6543962577c32ec443ef62ba00df31031bbcc131", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4c9d782ffd027105733afdf931b338e5fad99860", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "264a8007b746db82eb32c0d961ce280ee30b1215", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "93015f6b3fbf105d31933cb4ec439d7ad76a10da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a5bb1a9eeb251fae664e294bc1dad300c3c40adb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7f8857137645ae8eff5d5cac96f1c2c7c50c5fc1", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8e0205685534e228db453ba105aa26cbc67ef024", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "27e53460573be2f71665649f9d9146a1f87d5228", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e22c7c9253e125cdfed3b700c1507bb796c671da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b67ac669a909328f2d21930b8cbd950db761b7f4", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a0808720f08ba941d95fd2a378718d645041c457", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f3bc8533341435a39651331cc1802c55afca01e7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24900accf9c53a67d52634a72d1feaf43501f200", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "02921479aa4867b425004235c829d965d2c97516", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f4022c5f5f9929dc4b3a83bb476a544f4e0e0abb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3ea75cd4b7506445a45d4ea59668e4a318d2fcc", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "174b388bf627f4494cb0916e68041602501c0ecc", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b3817c3374e14eb0dafa87aa8369de24da90b615", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2ccaa8fa4e74fd89c828f8ab779cb0babad8a71b", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8cddca52359e0c47bf7c65f5956eea06d7d78316", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a1fd29dc4d741eab051f3b88ff0a252b1c058251", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c1f38b86a6211d63b75dc1cbaae0e91e098bf128", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1771b3361349db37f21041ae3ccdbba68990bcd6", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "389224885a3c05282760b5faa684673cdd19ef61", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "71ee3f42d7e61071d318fe711eaaa6b07a44b3f2", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "511fef4511a076f73f7ecb8e76cc8cf75ecaadcb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1c3bb7661dc6f600d21a9e08e294f5751ff46073", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8cc0d3fd0d2ddfb453b0b6e74cbf13b12e62f34d", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a173fdc57f3e89366d1784fe1e80e6cde46a3644", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f0d5bcdb0c5648a3bf5e5f604e5b5e246429f668", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "3002776e921b0eb708e5d9ae02718770a62f6114", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "39d94f462c614fa27ecad1664a78426abd55bb59", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0c876db2ce447b4fb32ad01b645cfd5f2c49337c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e4ce46d39fb302ccf3048b9ce2206bd24125716a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c033dc4598dde235cbb648d54587af26b60f91d5", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b112622c7a71c272b9782b2db4d19a228ce383a4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0690567a63140343ab18269e9003d958f79d3ba0", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fc1f484695bb9a9f844abf16bb222b970a2c1c8", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8d41a8899e6f738837837062df3a76f35054fdc3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0d724e6fd1ca883057f00270a9da32cfe06dcb18", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a53be95d05465e1cd0d52c33742749143648db9b", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c9051c0418743dc9f445a9c5e1cda835344a6085", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f17f8e6941f28e602e5e9696f2a14e360914286e", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28f6f570993c56ca29275be17f2c97e82a4efc68", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "c2e0c9e7fa3793f2b71224e4aee32b22fb8d74ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "dc9500690c5cd3b32ac31a0957ec31a5669eccc8", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4783f41c015b50b8f6ece463c3bf86347c9f3bd4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bb922194c62500eece890af777897793b742724a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c017dd4a6fe3cbeb7ddce43191f4f3c28e0b0812", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4ff7391eaf727956010653fecdfdd484c72312ad", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "af5d34c083a93d2d2f6bbe03045929f91f9b4c17", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c2db6692ef05b732b2d4f29ef4d58c0c9d06d6b9", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "6af62fb3c2f7e618e8bb12b71055ab9ff02cec8f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2a8a73e7f2ec7f1436871c54329993308b43037a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "98c8fdb9eb6b08cdf6ad8383b656dddd6dce5670", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28cff8ea9488cad522667b526f6b902265b109c3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "3d4a6259279cfa5fa6bb8dafd3491c622149721d", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c22bad9d13271755bff445f62f4886c75b55496c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52a486f827d91279574ea070e2a28f39d75d196f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "4a0155afaccf7224914164545460b1caebdb66fe", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5219331872bf1c037dca508722a33c990272af48", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4d09124f40fe3330493938a216cf627e89dba26b", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "bce865972c2f2505bee68cdd23e0274e74f6a984", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e3e5399599c2190fad2f959ccdbc96d8a5113c49", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0553b15e3e6971fd76ae78afb1542c36df4844a3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "38d5b4bf10affb110cdbab2078e5a376cf5b5193", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a1024832d330aab7cab6008b8929f3e32eb42540", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8ca47e8c97b71e0b7e871a2426e8df98fea8b293", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e3c87d18930120e41de3fed2ac53719d32b9a70d", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9546cbd4daf1319b06cf91f9b7943977a8fd867f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a7f3c4886ca66422066b988afd775866e17505b6", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "54adbe9a6f8874268b8b389a66c54f926a39a23f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b9dc63876b291f7e71e176643c8160c4b10ad815", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0004d0bb2fc578158e72f9635b56e347569e8258", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3e5a36f822d3f6da97d20af6f0c8dd82bfeba270", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "602f151028cf7a42b595d2cce2f0d51aa226b4b7", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "37203d6d06d912ca43d6df489e083c60ef9188cf", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "68fab2202ff3ddc4d23049e25e1757f229d27564", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4f86aa64ed98d7a73bd3197e48bc39b5282fb533", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c5a3b35556bc838db6b848e0cb5194b92c225628", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e2339662a95300260ed39d2ba05b1c58d860d89e", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "15659f6fb463b9e8412032980741e0fdbddfc7c9", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0aee932afe2d41bd25cb595c17609fb89a4f6f20", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "0286d6042ce744ca02efd5f2c653e924e02e3ec5", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8ddb4aa93d06115fe3555a0ddb2d22093b6fe528", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "06fb7cedf0c029e6753f96f40504085ff7dbc40d", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ae22bafc5a6de062c4ccc8c3a30cf651f0879192", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "abc54b9d34db0747b49058ac9ac159d058e42e9f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f3f37b999ab3ac8292b9fd4a028c82a0c5a1aa26", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a189258639a0fd8df4d164e603c8ad7992fd94ff", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8c6ca75d83af0b7cf3128638daf6b5b14115c10f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "76e2c6cc34de7638c77c0be163592329940a954a", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0e7d4c5d023b753cc177b9b1d59bd5b48be86211", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7304eb5cee9784fd343137a30635ee3d503bb097", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e6a67174cd202691ac19f08875421dd7f6a54f6f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c8cd5a9c47f6f6d2ebebf1d920ab30e94b761041", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24cedf6101549d81b826b2d8e21754396eaacc8f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "012bc0ae1cf1aa4525682c9469ea9d681b28e3c0", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca386251af37a49c402deb3d82a5d4b7b76b0a62", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "987c687714a79a8da68531c66fe5a8d16d16360e", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "41bfd3d1619c08269687be39f0d4b77475826866", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "acd0b9404ec3676ffb16fad3225be54bb2461b7d", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8791605baec68b82d22e3b66bc25962869cae665", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3c5b17458071778ac6b6b05f17c538ea9d486b68", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f0a6e821cf48678449a90c657c8d104c96a50edd", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d7825238083654ba7ccae115b60a231a448cf608", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "fb995f3dc40948e7d736ce1a228d6f8cbad7c1c5", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "839f825d0c4329160761246e9bbcd79e42f36f40", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "338ffb18b25ffd670f26384eea23c0fd7fff9814", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "19c72e446691abd0704c282fa87eb92142d91434", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "44f44dd8299b926707f0f8cb074dd49526d28779", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "cf2d4dbe0183d78f58e71691c474dcea2e016f20", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "88a75c23c31ab059298799d14a4a8e56aff53179", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7ca0f2521ff5aa897beaa3355a710d892d040da9", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8284e3c1fcc4748031084464e380fd0be3bb3e8c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "56ebac2dd0ea78d9730e65fb5894867da683417a", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cf4d24760b3811b7b19d74334bace397466323c4", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9866ea8bf8a9108d75949eca6d1411b93bc9f42b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "bc2519a04ef4c9572375c93f9e48ce01c65a6d82", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3f0d8ab99150cfb8c677d86f4b3996699b8c4191", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "baad6123b083b67c73445621e929ef8ffe0e4391", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c27622880eb0ed9d2177e42a8c7e4afce22bf732", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "2551d04d94936f9cc67153a51b92bb224734f675", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "2f2df97533397effeb2e3cb5a04039a47b05360c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4f37c67ebbe5516c3aae066af3c59f36cdbc71fe", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6d26876a784648c073a89005da4c8abc031a227b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "252e0d0b2ddcfdee8828b6b236cf599010cc584f", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5922a45602859ece99a6d70c28b32e6cfe044077", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a435ca92ce08d20bdac5c80956f6657f770ae71c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3af64e4a2279ab2828b69d86ba8046e3900efe50", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dfd1eb200c8d371e545f9eebb274013395a2f19c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "30cc636ce063fed364f5e7eea12256e4b3f3107b", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8043c23d7c1802d14601ca3a6642c65975e4f2f9", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e27edb43f0bbe06d2a3b0a11e75b310a940f9c7c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "46d4bf5278e86612f4b93dbb662d54075e27e09c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "db6b22dbed33100535df6f6c22bee968ce9cd8df", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2949ce5ea8a520f203b3b941438205528e8df793", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b4e0d9f83e780ea747242ad719145ab34a16cb1c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7a28f6a5a63f6e8e7edce73d0a0165182b5432c6", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e30c5c71964a8bc4664451c0ab62cdfb03465ddc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b0648393db6659af674026b5d9b5b0c640069c37", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e6ec0ed73149444b840a2315a6199f50f1e815d8", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "20aa670dc82ba01e109f57dbf4ed51e3fd39dbdd", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3c703bbfd705db7066d83bdcf5c5e68c4bda5798", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "60c1c9ec148e29806930b371255ea515363e97c6", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e7fca60d770a94a567cd2de71f49a3a1795af33", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d2b94ade19d989b2ffd3ce51e3e8a830e501d2cd", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bfcf371aa34f6eda4ec95344aa47875dcae225b1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0c45c5d07f4e120c7ced1c4cdb9c9cdfd5957e10", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b758755c9b8e3020f74a442a313c4ece5f435a46", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "17454f59974671f8bcdce38b0caf25d2147e3898", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ccfdb07646435d9b43d291914a4b3bc568dc459", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7c59c23603a8b9a009ca94fb1f1225190661b3af", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "63b4f88c2405cf433f45cf013026b70ec46a798c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4640241bda32cacf122bd468e70132f9ab4c98fc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "209b6a596af8731c31a57543699038c247225cdc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f689367296fd72e3bca10ab94a86f5aedc1f2912", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b49fcb91f6f57ab031d0e914458c1c1fa741a675", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "29a7f20adeedc35b015e37e3643d1441015a1923", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1bdec72eebd57a21c5840174f182470851596689", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "23ae1c1adb7e71490ac7d1fe3993c8a2b566edbc", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2e8de1bd8cb77087dda0377c95226fe2094d3e1e", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b5443b299097c0ccc1810e6f0db7390505bde2a0", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3a3eb5a38b95667a0f2b5cd59b3599a9ca7ae6ed", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "189ace8d04b8b7801978cc49b1530ee423302056", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "128918c3fd96fcf4d1a9cef4c9f13c4a035dbad3", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c92463dde3dbcd09b061f64ade3cafbb6d5e9021", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "baf5685f41161a0f92543c78c334d0a14c4cd114", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cebea162f2ab6b3a8aab272845664453405c270", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "de9f2ca92a9cc93e96fb8022193ab9fb02d6c532", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "cfe9bf722a4611313658b9477f1e7ad2662c7dc8", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e9712da83e6df4f5637997654e0b3b848bb5f257", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e0c8149e34a0f5e52f0076fbbecfedd2b3a591d1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "51cf1adba46d1ee3b597c8e5dc26307a9c03e361", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "c2e0f14d960d7be1e558a43337bccf13ee239028", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "3e3cda1693a67e476721db647e6c360d0074c00f", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0908c35795eb643f950e5b6199b80de74b51a2cf", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "51e8c95a6bf172605e3f878ad3f182edf46e5b0a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9c8c03c113bbe773fcd41c5d2a40326d82f8668e", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ceb26d8a607ea95001f05015b5347caa028b160", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "460b894b06851b88b6b691b5f0b9e29f050a906e", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1d36a77fbb01f461ea0ab8459e400011bc776bb2", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "09fba755565fdf3cb7226bb94686aec716f857db", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "536b15041e5432102fb024b84e813d9602c320a5", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bdb33861d3b25bb5f3da6dd18f7cbb4010e57803", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "dbf0929131b87b3f2b21654002a87f4123daf142", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "aff6c4429dfc7e8b11e30599785f2e06142ce0b3", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e21ac66c75f3170d210432fdb8d6160b17ea5a14", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "e05b76d6a8b01cbe0b08f2a2b75d69c60351266d", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fddffb8c3330cf9b9ad95a1ddbb805b4a558e21", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bdd0289a567096a7b0066260b980b62694a60921", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f8982be7c749f5c6ee3bb0b5b3f4c25832926744", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "41d41c3d7a683cb8feb4cac123a0883024b07eda", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bb288b96b26b63c450c3aa3cf662e909f3b2d619", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "3d9d243414d135208bedd60b4944a9b6ea7c3053", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "17601bf966708b6ec122b18d46ab535bd7fdcf89", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0334e4d10a9803f48adac5628fdeafcad9b75406", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a19acde60178e1cab20cbb6567354075322a4d26", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "532023dd5d1502c2ede815025e77ed09f9af73a4", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c838bd0f1fc445b5e7e22e58c6e569f2412a0ac2", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "593c239ca19ef8c635daeacd21ca37d91597888a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "160552e3c51da477662fc1fb0f18c4b67c9736cd", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "a443516584755ca0b9f4847c893b19c8ccca3cb6", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "161280c670110924a328a5c8cb947e30832e56d9", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1c2e5419003ab1e134af7979773dd213f27a69c0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "bced9aab681423935618aa0d8de9e3bc083885a0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "44f46bbb262632b89b5cf3289c5e589e09a3e4b0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "c10f8b57d8d521a4928c1f38fe421d48840ce47b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b13773d32c0dae1a6d77f0ab9ee56c483abfccb5", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9407aab9ebcc334ace09e859279e953fe2acdd4b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bd4d80b6963266f5ffcba8b0c7623016207beb88", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "116d5d1b497db04ff5a7e2e452ef022aa7b546f4", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8674a126e57aa9d1547882fd2baace8742bdf28a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "16e69bc415e2c24e1fa0817b12a2a885e2ba737d", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f5a8c02b284666ac8741cff63d925b4c3d3fa3b2", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bbb6e1c68380e8445070672c7ac3db6e1e1460c0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67560009d90efb3cb49b2db68c85d016fed6efa4", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "175fdf2b5a5de66f2559564dabefddc213e7a267", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0fee6d4cad93267c3067c4236baf5417aa59ccf6", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "74af599c5f8cd0915352a922b1041a12593299e3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b969dad1a32e08d16ab99a7d276bfa9841803b19", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "811182d5cc6a0cc99fa9f9c7e64923edbe982b21", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "eb03dc7aa7778771bc22f97aa5ffe3d6d2d98c9d", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "53941e23b0e782d80669c6e773dd6566b026b97c", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6e06d3964a19644e0d89ca3ea50635ce1a747bdf", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "de41cb7a9ec3b97c5952d5e197980b753d87efa3", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f1dc35e679eb0c7d7ea0aa55100eb34a5c153545", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "d2c82c4af4acba1ad7ec1863d5acbc728a419168", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e8f7c8a7d06e59692d68caf2b73c11d1fb00c95", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "9e67d2e9cfac06077402e6784440381cd2217b7a", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ff78fedc03fdf6b31cb0054fa4d5e6ab2b73b739", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "59de6d8d7d14871f2d6fe2c17eb0b89811117283", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f175f3ac67ae028d30695a57774a0465716bd829", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "011fec5402cd2d34acb208a12ee46b6db44e91b7", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "26a926e40e6201aceef00cb6c3638ea4b57e1f6d", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3f435007087726731fd144c7395e5912cde77ac4", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f4e171665880358fae519800e2312ee147530d8a", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "1a6cfc49528c379287bc9a2eb9f1701a49dc1b6e", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "0e330961bfb774a516b8869c93cdca06fb4720f6", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f44b087e487793066cd290083dc971f1d9551ea1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1a7febefcd287e796ef629cbaee5b93945ab0d1d", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "18aae8de5d165ba83baa7e508cbefbe4b38dbdae", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6704a62692be1acfcbaea924bbdaaf2a560a315c", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "34a31a6fbb530f0874a0b720b31335fc7c17c916", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f58b6653498b6805f4ebaed2f8970259880149e3", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "a354703988739eaf70c229112f81c2d6f88497d1", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "01a899ee1f8483be50e250cebf29f34c56efde35", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "b18c5f1971e59393ee7e8cd47368707c04b6276c", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "6ca95b0b046d0c7139e1354d54705ea47f9ab7cb", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "27117b635e234a5d0a69737cad7438415e6d17b4", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b97716488f91fb40941138fd00ca1905c583707d", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "292070c0a71e706f803903bfd1f291c8e7b8be61", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c753a69964bff3e1bf4de6819155a16d0547d98e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "66ede86f8fcfd7946fd5041c112d7c17b9f1133d", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "7e3a92a2287f6d7588b99e54ab5e1fbe75f2ae49", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "df95baa35dcdc19e2c76a723ef774b2a084b4795", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "bd53c618a9b37207ad9af1a4dfc5abd36bbc7338", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "1d437e7808412e699486301afa0ddcc016a1bbd9", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "129ce0fedc09cad23d9c57cd1e5f8f7a40ff586c", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a5d09d84d3663360c1ac7303f4fd32cb2e2bc8c7", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3838c3526366ee924ed464f7f2638ee55c3f4e26", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5bb54c54a59357049c8376cdbc8340e876e1c095", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "88e198efe1b21b1eac88b3bfd8e0b075c2f8dc1b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4f5b38f2d8267265243befe9fb66d7371b270a14", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "1922c52ae7d1490ea95602aa5908c7b8744b1ccd", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "51ea1a6f1bc14e5f8bf5b6d2f58325a58c6ef924", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "246fd39f2a273e56d668bc5eb1fe619dec42191e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "bcf2531608fc90da2ae025d46f4b5e8011a44de0", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "0b355dac5e691ebfc23e806a7b1dc26f66a73d0b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "2032f434bec6c65184f496b271823df20bc83c5b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "91c09253a3fb9fb8cf3daecfd41a09959d5958ab", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "17ad4cb3165b386714f672b6d29aa725713513b7", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "445d6b6862f37ac40cdfa85605b663490117da5b", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "04b0695c9f2179171fd695c3a7e19c358ce37d23", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "89443aabac584d817b931a01d8f7a4c8eae9c960", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d63c9f4dbb36e749874963b58927626f9523f3e3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "412990068838fa505415b3cf756ae4c9b4dba3c3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "095413cf35e3cbdbbfeeee1b7e4903f8ef82ac0d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "17e39dbc3fb3e86b0e437b79dafaae1fdd9826fe", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "fa21dda73bcd12764a7deb0571e066559f05ede8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0cb17090a562cd4ed642ac6ddaf8dde509c51a2d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "11af70552db87b8650d02081eeffffeffb16ac9a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "c6026a0319f15f23f36ea28c24a4ac90d620f8fd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "eeac8c3fe4f47f17c873aa90a3d12137d40d6601", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "fcd9fbb20863b6d589343363557eed99fc3a6389", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431f87309dea4c5b07f35bdff86489ecf60adc97", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "0756af3c588b84723f499c92fceb7087b5abca09", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a79e24c7951a6f07a3affa7389061161362aae4a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "de5aad1b72584f1aaa17bcf2204f340db4d57535", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "f2c2564841f04f59a0d0bd2e0253ba0839d638aa", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a1fcc445689a15a82c4df9f755d46f50723be61c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "3475070ab0e46455f7874c24c1997e507f558868", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "7876b59facb70fb5ede7f30d6694d99dda8bbf5d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4c6af30c3f53941bb30d4c00c4afffc9407dc937", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ef973c9962e27b9c83cd5bab638f7f6b53a0bc66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "97c58ed9ce9921568871ed28716c159d17d09cec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3c9f9d5f892481a5078dc720c3643d8499617ee6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "5bed7f99681f02d5c35aabfb2bde10a9a8ceeebf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d8ab030dbb1b371502e7fa5c9bf29c11ec0a1a7c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "cadf7e4b87bbb7fb6a8d87772ff8d1ec5e8166e4", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "205a6774d0e649b7b525d8bb93044a2efc6f07ed", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7aeb06e3d0001522de265c5a6648da2d5f62f4d1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9fc86543de41d30286c74feb2db534e9769a3b12", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e7cbb85858e0f2ed5ee4e608a98a519f2feb753", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "804b9cd9e4f9edd62ac83cba1fc7e17d4805253a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "d6a09564f465d690fa00eb040a7e68f056e2cd22", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "f304f31244573a74a4c6389a23b2e57e26a48934", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "43fcb143a3249e75afe6e82409ebbdb4a070cdf5", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3ff3820aaa8bd5cf2c3a37698762c3eec23a97e3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e6de007e90c72f4fb2b616994b3fff8ebc509068", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "af71b7e508a49fab5b4826f5e4ff3dbfdf9ff1ed", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "a6add7665c88aacf7c06f151c1b168bf8909c26a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "8011709ad7c111546751815ddd559b47141f8c94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "746217259b1c2a6238dc46c6990c75e9d0d8a65c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ecbe74554f6ea5105fd86c0c48bd2396d434ece5", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67b004657708850275760962e2fee30bec2cb382", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "168d22b5c537bb38bc8f3c9da1db9afff2a4c016", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ea1f79d2354d62288816c9d77a5c866e95a37aa1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "9888bb6f3365acbc92870ef7d25eeb6f5e7cabb0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b3b9ffa7126bbf4f961285bf9a503e594706e7dd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "655a1f09363621917bc07a598ef061044a60ba97", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e1874eb530e2d0a1ee146abafd5858e20465cfbc", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78e453812f1c5550854410ec6a64aed71219d562", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8991a85e19dfee788b36cde87180bdab5aa46c68", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "7401974128c6c71675ea02d8e43b13b82a481cf1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "16215730a73c1414f62660af4fbdfd13e8d46a63", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "8e8af219e392931e68ad43275480eaea16b3a8e8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "6687cc619ddd5b2be7706c58695c209ca201521c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e90902c0e6e7d0b03fe72774bd87b2d907f82c8d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "746d6363edd580ef4e764424ef20f18ecebc0294", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff04e6bfb5443ae6052bc6a4531546e1bde1db47", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "011fe50b37f1b10f11b107505776ff5feed21cf8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "212aa84378b52de758b5f98c4166e5d21059b0c8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "447c9147b9b3cf494287cab0ad1f475cdbe7ccdf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "37d884da9c8e83dd3976667a7013c1b7e9583a14", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "2f419d5052264d57fbbfa83afc62eb9a52177de0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "02e2c957d9285541c516ce6f111260f2f9c37e12", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "62448f16f8faabd9939b7a484139c5a730588296", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "5c662b551a7f8064c8ccf02916d5d28f24b0e04d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4c2a5b6c2b029ec017619b9c0cc854b4d916297d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "366b320b1c7f44db4ef53b3a27d52fda834022de", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "405a43ef841055b29f8693a290ce5742dd9c011c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "864234687bed141c8001ed005af1160336e90199", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ad90fe4b68f57ce9671312f37e3781a9f0dc2049", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9a1a44966c9f968c159809f695667b4ab702ebaf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "343bd2376f682139981613fe219f399928f16814", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7050d48c42d2053b313bf463ccf50b5bd5c96922", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "893f37d035a3a11d6b846be4e4daed6408bb7d3b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0db95d1c595e20bf83fc8ce656bef3836996304f", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ce3003484955dd40d5846bef857c2ec8f9b9588c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "de6d2e37dd1d110457233afc11f916d0a23e7b3a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "b03dfb3dbd72b33d5ae23a2ff131342a3e8b2ae4", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "770badea789590456594b9ea3548da6a53e6eaf6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "f38f12324f5c0ccc56255ffd975615a38e25e7ce", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "fdb718cf5c7b3b2baa8ee1cc51c53170747d7b43", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "6e4e8a5d41bc831196920555cb6236fe32995df9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "295efb8619612e07cea2fa436b4bddba3def3628", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "ac2444661daa6598914be406c2d33fd8da564886", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "2ecb1cb4832c9f6334db545e4cee1c0259bde3c6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "df647ddd06ba2546af4b559f3595a86527eda66a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a2fc526cf8fb0802807d608db0b3b0d75188a635", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "79008ae4476e10cd9eb957e03005abcefbac2727", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "86b852c131366f1f872b54bebeb3b8c7425d32b0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a968c0c9300c167b305c23789d28fef77ca9cc11", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "837c46d65f88b6d0713d571066c896094b493580", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6d955df0f1d96bd43f40d5e5bfccde41593bb5e9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4b0949118a55c19bcba32d8591ab6df07058cec0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "5b8c6c4686e06faa5641ee4539e64b905759be6f", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "d189e3c3e423712d331fa34533a5a61c429978e1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e457d605e0ab3c05fee40cdad546f97c81d7d1ec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "4ea44c8781147272086cc3cb594ab70a340bc307", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "0636199db87c71bc4db2f51e8678c713a8c6965b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7165d89210d63aab27378870e13a9e43736ff900", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d893218fa8f95a026f96e5a4339a15082b2399a1", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4844eb45840530901c344e8ca76e1e42b9386620", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b186ad8a50094f3e5e8603e123b6d6c5690c2638", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "201c0f357ab994c70f10bc104a6663a45658a701", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b780721874c760500a5f2bbcffd83b258f2cdaea", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b1c8b115d851fb3d46c5e275541e3d4d5824bddb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "5c048015696363ffbd4ea93432315b3634a7a8fb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "34690f020e8c90f69a008fa62ac88581fed450f2", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a690fc25b5faa49042ffa7e6a12d72194958903e", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "44747e4b3f875f50a8f58c45cf3a96f9f5480a83", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "09c72f56a283080e537365af847c019f116def39", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "9ad27e9cf0dd4faeadcd2e33eb4b11a056f3c03f", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4ab557ad42ca685227cb9c3bfca20e797e4f9a15", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7571e48ca6be6a720129d6766b1b344633fc271d", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "2cf3458749be9b37bd4d1633abe7bbb325a863fc", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "8d50d42a0063908a59e10ee41e51f59d09731276", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "2e426a9c1a20ee8bf9c1df38d3cf49754f9e48bc", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "67a65dc2585d7b2366ec7d4f704c1786b6a94f5d", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "dd914430686e256e3d4a488e2cc7a1be377774b9", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "7be4b535f903539dc4fd2697e09b968d109fba42", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "856274ead67052374d1dae766ffe2784993803c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "61c2fded86a53b4be36b073f62db5d0e999697d7", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e03b4c06c01af5e76d580c0a65321a3222d38f27", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431d54b2411b63712163cfb7ddb0619f10f419ec", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "45114a361ba9dd05a32fc7a2887c0f6fcdedc80d", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "ad51e19c7cde5f7a799aac9fa529c085e9b1e8ab", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fd7e403a0cc54ee7342349002bf7ff3b6acfdad", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a245edef0529144b86989cbc5c756bfd88e12b29", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f2d8d15cf5889504fa8e6ed2e613fff8e487ab4b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "75603c1f207cd9964a83246f58415d2655bc7fc8", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "4203de969e074aa324ee3429040b16c076a14be3", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "21858ddf722a49a8e844d264e8ee7c4298c72933", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "8e8de6a28520b0563739e9176efcddd5443035b6", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "fd33d0a458ace666bfe52dc5a0bc98609652df26", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e47824676561787f4062187c206b003fc9808dee", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "1a9358d1f3b75755b49dd72eab32a6ef7a4416c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e86be08b33f71e5a93fd000a17af3e95a308bdb7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d080ade5facd69276b87c0ea3837bc8f16206b97", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7ce00156bde91d76e8a71576266ff42371bab089", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "17e31c6cbdfc735b58f2b8a4141c3d669dd2d8ee", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "d7b4385e9e28d169f5e9f1e3c8f8b3ee0150bcca", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "5892628027b7c39761c0f92ade9f18577458fe40", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "3246ec2d0624121a4f0828386ea64dd3e531b671", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "12fb50b2ad1993cba9e88669d3f60aeb3f9866f7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "cb2277b2f2a7fedc2c53924a0dceceb3e1ae7fb9", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "75807ba7749d18ac826d1214b17e05ed2868cb3d", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "62df967c0106d621ce1fa078e31547b824b32952", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78db51827d372e07c0bd9f356a7367e290bb7ef2", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6325e6d9820d68583d733eaf32606fabd7f309f3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "9b249632a7106fa2bc52858fdfd63f8f29f80939", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "44a4bd99f3fc16d2a83c9689abcb84dcb65b3c59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "619432e927130e09241d9976bbb572e81c061647", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0c65ab7092a98b407cdfcc268eb0d6ec7eee0da6", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "17976f8258001c50ce6a3eb3bf8ce561b84c909a", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1ff1fb5ee21673e24330b2c5c3a1e40db495199b", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff6471e7d267dd05a77f6e5c0cfb533496b15fb3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "00f55b3542b083cc698e114be9a4818a10ae6559", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "15fc68348a03b55ffb37b65a2f2def0b9cb15e77", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f74468bdfe6e2c588574c382aeda5002633b54be", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b27ce5a4101df2c57859626c8219c8acfa727947", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e96493f18d48fce9865b31593a81301adf534bd3", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "f7ac0086e5ee18347a32dc322e6c712d729e48a8", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "67c163f0f8536dd301f48473a6fce9cf0aeb1166", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "eae3d18c8df51ef6e8bc2d6bff93c2a13c93c0fb", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "76d8f641fc6da8ae783c4d8db9c230614ec6ce00", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "952ed54f40dbced103365f78f42b40dc272a7c00", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "98cc47b845534e3c402fe460704729fe9825c670", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "d90c8fcef98c97eba2972f7965aabc889c2528c0", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "69773661c23463843aee07b136a4f2f981a4e9bf", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "f0b88b29a7359607478e4d5daec773fc0ce1df59", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e0092ab686173cc5c3250d908c5ebb7c69d3194c", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "9835ff480ce7e86064e1feb88d71404112c07ad2", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a021b377c5c7a9db521dab6ae05765f77756436e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "04ec9140627d053712e2afc40ee161da3c418a12", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "515c205194cf807e9bb74a1336f641c09e0ba485", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "e8682df3de2c35ba6c9bf1912e8f65a831ff3f57", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b5970640edefa58962ef4392ecb9e7aa0651e37b", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0d11bd89ef700ff108c284e2c47c3574dd516775", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "f42065f1ed4dc8f4b065999ff8a6fb470eb92c44", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "99f9f12cbf0ab877b5983b94d067e71a732b136c", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "01bb780f92ad4a2765c8f15cf397d793b56a7156", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "93175c3517c809a74cebdb7ddba5c11279129803", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "d0db5535751bf727f3615d3eacace9a64fbd3ea3", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bb94d56bdf9cb259159b703525b1f7cc537dcd62", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b790b4be3f75e677861f56d9976d2b623127d37e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "c87b2051b9d324e3ff7d18aec458cc7380b6ca0f", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "36f81f5b22285c5bd3c15efdd3fb2538af0d048f", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ca1568c40206f804569670b858887dcf222ecb00", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a935813f645a0865df8659cd1d882cc0719227ec", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ed0a6fd65ec0e872e2aa3498c53220353524eca", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e7c9b9faafe56823a8a62e11b9660da4f1e61b01", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "85408da94c92a8b9814668a82f8e5440c4ece4b8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "733b6a6261ff3442ee560ef7cc914bd522796ab4", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "32ddb1dfeaeefaf1b0ca92a8b96add25dc882a5e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "cc27a4ec9d517d0b4dfe73e0f42da7548249724e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "5f1c4096c2cda8d8cabae81dc02e8d268c71c220", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "8cc087c7e693d70544013c99c29d0d13e4860f3d", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "91399af11a4a66cf48ca4f6227d3231318931a70", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da402b696398404aab0e60497fafb02ec0f22a5d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f1dd806cdc1ecfdae0c004e27e1baa9910be694", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c06bc88502ad01830a783418981e6c015d73b82d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d7694b177dd6e2796a24cd175296f29676eedd6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f92e3f09143c92d32e7fed764d6f88658a3398a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0e5d8b1666fa07e63f15ea35f259cc9f8fef511a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7656d6f849a98861a7adc1fb4502020890c94e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b14c58745bcda2c0b06cdfb3b37cb956ee4b9fb2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "000598aadadce88a69bbba553afe3c51fcf9259c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d17593f8fc443ddd9b50f3a47fbee3721f9cf958", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6a70dd3ade3832a0ef9908a26286bec5f066edcb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226b41f939caea8c27ae192486343f0bc06ad002", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a353d896fee513b9d51f125607d529b8be3074", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "acdf6ba47764e2308de67dc9a5bbaa853d0eea24", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6976d10aa3d64f078a93e1df491f3f8eec2f3237", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "faf7edb93d09a794ceab111272b3c3f671e4017d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ce12a2a034880557e39d5c36adda9439927074f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e65c1d23e16e3c4049957ce9a7d7a84f37331d5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e16667a88b974bd20d9ace67b45242635d61dd4d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "32c453ffbdd6e72785111d51d7f603ae91612af2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4cdeb771777033f95cd261e46f31b64196617c16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec5f8a3622145ed863e7c86587921d9bc1ad2d45", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "014b9ea913d76bfc2b8dd8f0c59b1acfa49257c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ab6524fccf38a658751dfd0ab0c9e1d803a9fa2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "797056be4b5ecb9bfaed9336778b9ee2e1bbbaac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "814115357704420c44a7557a91d2b131d975d311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b40a43f431d6175d7f65ef2a8340ad90f623782f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5fcd14974bd381c4a1773150cc2797bfa85c0bce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ac6f1ccaa4e4ceaaef4e9b95d6fd21c204b4e5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3b528ff35d3f4a544106ba7f2c8bb1602ca6c567", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e7586b795bd2ef00545131fd148b36912c8d2df4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c3415ec73d6e6b6b65eec3b805277146de7469a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93930366454c53eb3ea66dc6d42221d23073a97f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2ba13ca7b591dc861cf3cb3e3b4e559d1d6cbe87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d45c1237d13089bd29f1765e0b5a66d4aff4184", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec8826e17fd13f4b434abd399138f04b705b1d71", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6042943e7d8a9c4eb25bb8e00571a9c0ffe9b529", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "115beaff180f51a45d5dbe965fbfaad76ce25fb7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "244ac3a3d23caed2dd65ad03abf9a8903341bfa1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1722114020c03cbff084b11bef5e604e024c5e3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90b4b8e984b7b36c527b774acd0160fcf0faf3fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "28812ffe2b8e1719f56d5b58f6b1b5aa1e523520", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d8e68f3e2bd12ebbbcd52f5f7416252745cb65d2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8a90f751582979e5d07a661d8aed87d20d0159fa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b99dd94d8172cc55d6f589ad70f2b9fd73d25721", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "153b9a2538748f02de22f6c049e91d4d3f0acfff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf3c98b89d0c66ca38af89458e3ee7ed0f33b78b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7470487a6753b46d6d385c1597b9aa576ced5ad6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0b5d93eaddbf6442453e94f44dba595287ae6c48", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e62f6c2ef2a2ab88946adb90f930acf219b70388", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "545c43e3c2d84f99388f6c636d2fb23031d2a99e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b2203bc0e834ce60a859aecaf1e6ac3334261a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "49fa3c567496fc7d52601584af20357fb23df106", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8287807f923093e0aa11c14985592cbf3d341c59", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0e1c2d27ddc1ceeeb8545579f871a4845d279707", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "985d064326a10040fab5a5d0bd131fd4339c8c53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f037885f4bbf14f8f05995038d069360642606a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0298199d16fbf1fb599b8e928a693642a80452f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "661939633a265825948e34f763b98d3916b8dcac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d90c8ec191fc8e4d2e58dd883d551f5849e20eeb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "00a4cc1f9b713b68bfe747d6e8922d7d6fb2ebd7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4e388e956d1707b3e6246878d251a841e4792246", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f63aedaa3281e170b0fb7e2b438f8cdbd6044f1a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "69e3188f47203ec65fa21404fc72b3c6b2734805", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "015ca6ff87307b6e11b825ebaf53663b8a63cc54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90e9093d85e58b39a4347c5e4c91ca5e94dab3d5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1189483bb8b9504b097e84a842fbd19054e6dee1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1e884af089dbd61d747541162d6d787098e3a623", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5788332a60e16fe324d51ad19ae59300d7471956", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5ee3f6098016504dfbcd42d3522f61a0a56f2f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "33b3d45ca935595945d623272c7df9d03de227b0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "12d4f1347d2b80f6168db6bce83ebc7c0da5b18f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2cd6b42458bbede1fb6122fbff48c920d3b6ce89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24fc35873621b88063320273a6431f488048bf16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a567fa225bf7580925298c7b730384e0c307ef1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a9a42201ca7dd80548ada42fd7443e3bcdc1a980", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "129ad21a6de0dc824e9291f3b7441714ef9e3462", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0f75610337a4aa1a47f5cf5abcc9598c29f2fbf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "97f31a6e31b8c0e7910d7e05ace2f71a9e433945", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "20d7d6f43afce762d666c267f0def248cc7d001b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d7707c8133f49ba01cf7311e5362b1dac5802bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9861cee5ccb21ff5a52db6751ef6f715149158a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fc00dd9c45fbd54341375f13ad4f83fb50e34f0e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c270cec8cea9a41a9f032c9f33a193ad8c62b3d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c94cd2dcb2226e4bc1f9a4a649fb452e4221ca0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "545b2ebbe10e4eb5b6a80292cae59e8f1855b5e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8a45dc4cc8fab52c2e828c6bbfd18fa7a1972855", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "558aa93b827505d2123b0304551c8807c06c2afd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a107ceb57205d0430aed53af4e8f942ae9347283", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "01deaad39bc527b65b7284190aa6fa6c47bee615", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d695d1836c503e5975cc078c0cd901b8fc15bdd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "787a2a8249591b8e24e331f25374af023813fbd5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5935e991fb9380e397d1d6c549ed771d2b5fc5c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d682f03db622689b62cc330cafe529b56a73c1ac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b497690ca05cb983483fe6b6f076d0e615275938", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24a821167928c4e30f2807c89a67ead5575ad7c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0010c1b309e26b6eca51ea57d4e304518720ca8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "238569fd8f94d82545b3820e0f2698dd263fb27c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f105dfd879d752f8a8980c345420a3886ea6521", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c8965e334a9d3dc4bcb8c671c0f4f43f1c4f9ee5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c9200dec87d17eafb64c20b11ac7e7dcd35bf9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c48612be556dd0107f385799e79910d225247fe8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37d7c4e0c07788bc7fd3f8a0b452f89462645a9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eac6fabdb1203e9e50f40d3a049a154cb2c8663c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ac79a69c905dcd0a12900fc611ce83cf25f9a5d4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89834d6d6fe0e4889528bdb9157449adc3935105", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c74c2b78a174820b6198f9fe6faea7398952de0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3506d79b517b6ced51ea2d54393d89d97b4edff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6dcf9d9df37c30895fea35695ec26040b8b0e572", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "974f2b61a11c5f2cc92dd76077e7c50c33195b46", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "450a264ac6e4d113c26e69cbef77399108745d6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86897709a8f5f26dca0afbeed1844b570211d6af", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da8c3b45b587e207058018033f6ca650edbd63fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2d8ce784593fa224e917fb0dd22a1a51d433efe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86073321555a6f991f30ad6c62af057cf46ff999", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f719c58a9d685c88155b76e9c5d657a8ee6f26fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "08eb30e669f5d5f2741b9af798e0d5004adf2c89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "82a5950dd5369b538caf0364b8c3aa95e1a36af5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5d36be783f4d1470d1985a2d94428c4f18111157", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "83aa202fcec76a2c763108e57696edddab78fe15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d6d5f3254d462ac5d2facbe0626d2158d9ded7f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2588a4fd65167ff334e77d7e0d3ac6ebb3092f64", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ada29f7844ac4c5fe4700d55687d73efdc2a22fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e60c6ed4a26afaa471218a95a354ca70ba7eff6b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ec4720b4b39cd3b37679ce3d6a3a743637a95f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9ad320cc967f66bbde44e4a5d6d95242ac804df0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "139d55252318abadaa35d968e5740f5eb6392100", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e75b06bc5279a5832f797e0cb490037b0afb3f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8729c06f25d63c642b0675b935fdd30c0499c882", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cb39d638134e2f829e8ba2352bb850c64b267e72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "852035a6df0dec42eff52d5a16f194545fcc63c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "221f2f566ad57a5607336d4f71831b96d4b9447d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "893788f27ebc6cddf55e81d58dfe7799757a1897", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9d70ad2dd261c8ca8e1e70f337ea6e9a5fb973b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2f8466ab3be58f77d2f830fff02a558efa23624", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42cf100c1d0b220647e5c43dfe26b8667f2bb577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc2db7872c003b81352363f1d3a3da6fd7491b8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c47b7c0bad80e6b6cf54c472a5c2d76942578ecc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2260bbe5f8ff54c754749ec85aec2ed7b7572c6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "263fa669ab2e3b6ca1e46058ce71a61b8e31c728", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c050c0243a0a99c9b8ffa64c90bb8a63e09593be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578e3fe24dfea24e9f3388ea480e4c7135cc57a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "68368b37d9b96ac55c60f048bad764e758ef4de6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "299b70d368c96223a24b70b6cd0f297ca04bdd77", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e2232008aa62e17030e63ad65c89dc39357410ae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1dd64174d5ed0fe42985efe5c18b1724c2ebef2d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "671cc1f50fa3362452d8d087b385d27622880437", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "06c9a9082916be971eb8ca31667952ad41400ec1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f42b1e829915be924a36f27b5c0544d8ceb790f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c0f8c66978eaff2ee82099faf625ebc509bc67f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "623021d88345ef7c929c011f41005a65b166a9de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4b10c25792d8510cb808d131fb82bd07b031f4fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "626309b2d8d6740f20982a4b4695175c3a10d0a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2033421b1f4d42cc8e43cb72267dba142d1268a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ad135abba16c91f0b5b9c2e92c1d8cc2f9c5a3c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3c96afaa4d1b84b164061b7d4904f4d4077306fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "44bd6ce9b9b0e11c34714caa4173cf2ecbf3bfb2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2e3359e5b20fa7c79ada98d0733d55bb46ba9089", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d771e682c2eac1a406766ee1c684099e9b6c253", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9b7f0fc05c26b6150df093b86337081ecf71b42b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f4e0e2695c863d82fe1000c1d9b96cd3fe77e0f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4e6c4a54fa09927a8b1675c08346914ab7075096", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "30cad0d16dc0a7e9774c202ba3b328c77d834bb1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c85212f90619ed1cb589f01a7613bf4a55888be5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "275fa48ef152b18e055819ac727108d0f93435f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af08f83bdc51edd41a7e23c29985b5737846687e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "55b599df156b2d792583c315643164a7b52bde0f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b6bc91e983a96f1a35c42a4ece7af52cd9357b80", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dfdb22aab883bb47d671cf8be67944551e529083", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31f9fb56793eac6a09ba538a6671e249cbf70dd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "449868e6d26ac66d9fd1cc89440250883c485ee8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1194f582916faf9e5ec2aaf67796263651e1afd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b42a2b9f9241dd70fa5c8dfe899c97424aa89b9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37aaa65942494cf23d89d37561fc97f34f5ffb63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9122057f884d61568de43abf193d4fd5ff30a0e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ecdfb7ec28bc6c34dc076d807b13d26636e33d73", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8e55bb9f805fc466a1176111c95f12c602b5bf87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fe46f702399327f8be767b0213ffd786e3f1d189", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "87e3933852a552062c736a64594280423ef9293d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a1db27e3a7ae74a522b59bd23be02a15daa2c075", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c51703f1002f04b8110cd92e74d685294c052cee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90c215a36ea2413295f78c5d69cf42b9de6dd08d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bcce0adc3b6732d709eaa102e7f5aed5f1d3fec8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c987d7e61f32a9eec5c680d134c19fd03a064a3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "653a43bbdae444b7e820a05190247cb576461fd3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f28b2970875b7bb3583bec517a7cf9fe28cc825b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c4779ee8c8e44ddc6be19e768668e9a4400c8e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "744aa92dffb0b1621b4aa29cbaaa6cd8ff6ca318", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "783f5e00b48762877068feae225f239daafe0d6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e28ce86c493057882114a5e107f8694e74605a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dff315df45564111915d4904d6557ccd8baadb2f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98ebc5304af8f424118d879c18a8ca364fd34954", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d3d0548f26010091e90a456d9493847759fc82c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "15cea54d1a0e6ded4ad6392fe98a1f897f898577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfe1f262eb9aef6b6e8933185e0e72c3d3548643", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "801da2540be5a73edec9f92e5f925048567b3efa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cef44837e66cba0d456bbac950222fbe4ff18009", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3dd1a5c8b82a34cb86a001e6569bfd8613c145b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a0a215a16d456eca6a6a5abaaa675a0237e1a25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e430365226a687562541221ec1d2e80779063143", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "180cc3d2675b070d871e90c57943d288255d7c78", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ae2825dd373dbf04f1b46eab3751d2394d49f96", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "79781b9c21fcc6b8c4c1777dc74ef260c1963062", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "25906a255b984fe09668fbfc6280fe255b6b3d46", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a14cf62a3051e82be261734312c1a81ba49ffa0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ccd4b21fa0d484aa12e95ae556b2302b67deb65", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1dd5e9d5b15efeee55d748b731041ab3fd5687e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a90fdee0fd6832f1b142d18a7d13bb3d50be1d9f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8e382a8a46c0b04fedb4406353ca26d0f3127bbd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9285faa0f3f37fb46ae3b747b7b355e3d0548a0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1ca2779f6f3a02560def756ed873f34caa0b9777", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8a344af9c3f691225cd99f2f191a9c10bcdefcc6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb8a1c58b55da25b1437bda085809801de11acb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "91417592b10e262a487373abaa5a782f6bbe657e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6bee539f1db61e2510bfdba27a656a8122783028", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cb7cd7d0f7f6597891a52905b05c5fc2038c752", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed5911ba4128f0c32c377d99ae468233d8636d6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "002bad6065109663f6162ccbe5b21d4bc099b1e0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12605a6629b96d701f04780fa1cd20ace90ffe07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f3d2ab3aede5d0e34c704b9907c6cd39203c2411", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a6fc683a304ff7070e411e00a397f6374da57238", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61f6df1f195f28985da1458a905885bf7c37ffc4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "70c67327c3ce98cea818ceed412a8d4f2041cc69", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e83db220e19a0cbcfe42cbbff7671c28183309b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "63f0ef32f0543124a03ef9b7f819767cebaccf67", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2ec773fa8d5d55c8c9af21f38949863512e55e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8716b9e4c25df81c4d8793b80a932567b4c1610c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "795db4818e4e9bcbf5458c90d7ffed334c194469", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d66a3cda3d3de32040138a51f7bdf9bbba2df7a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1821dadb987df353f96e864624bc59d1642d807a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d271bf951de2c7652a917644e4b3da9a75a3b7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a335080606136d07d67b0d9d0f87e779b6843387", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03537e61c267824b36130bf5148233dacf491b3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "14e7d57b2ca909e6f2e708e69156a0fffff226be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "708414ed9426b17b7c93c2886e5fa811e93efab9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "810d33cb9f35f45a3c439dbb446dc1fffe07fdfb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8739f42c60db148a3c5158ce4b2c5d0e52815e31", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7ff34c3aa5b9910c31d941b7b65091b1ef3270fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90d16315c21d6f689d845f8c69602006e3bef175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c381c76dcb019e7a52235e21dd6074decfc8de1e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "771cb73a2d42b8c231ac8ece1445637c1368c32f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e5fbabf4eb1be579a94f6b74c9ddcaa3e2aaebcd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1ac0f62b701b104e228f49b3e8eb9f3c049cf63e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c2535b7e964d90a8156d680fc14de0df2d517ab", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f65ed2da90dcb9e89a78227ddce7031987976ef0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb860094387709092737b45d242d3d1b204d6db4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4f194a9b38a6a3b2edd16c225f2912eb8e696508", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fac4bd420d54fb6e384d8ebccaf82b5152568353", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f983520b8f3c32b4fa67950ce5c65524061697b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dc999de36bd2da8184a2b43b4e605f5433a7800b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f40d9e2310326811125d7270a6f34d43d8cbc132", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1e7a75d061aca0b7f9fba55a8f02e22649813e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0fde5b5c4046bb132ddcf5fb5d4467f729262e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6b75f49cced9982ef08326601d4b01123b7b3531", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f8fdb53daf0f03c6a91a91a36a34dbf6abede2b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "162747760b6ddf807b5ccc80f46866e16e7b0c6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a887d378ec600f05b1a884f8bda0e3aaa619addb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f785be9131b0b80754075eeefb987d08af8dba9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1262def1f35561aabc2500456123ad18328ad16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38ec5104ea0a87a0ceaad5ab9a463a6d5baf6c10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "696b1cd5ebd35626a67e46765d26ffff3080fc0a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "778285e920a71891fffbdfa6096e6d59543e7fa0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3f0bfef48e59ce9ce063a241d47a4926dd86996b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "eeef56381ae39e4fdbf51a204200deb128913a6f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb384d15bf03f3e84fd7aa800734393a8e9e9845", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41fff2993b2c7400c093dad8f7bdfe784b9e1c7f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d56193df9d6d58d2435f03974cea4af7958cae0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6230ac00224734bb0bc481662d3f5338d38ffd9a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8621faedaa151827037d369aca52ec4e1c9e7732", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "50bf9abe6629eb309303c826fcde4ba916d19302", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ce26db0d01746795360fc6dab70b1c3a3cb0103f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8b9f6001210a10f0dfe588e78d1777e7764715bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ee10be7217383f841958f54d62b80c5a7d2d3904", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4d802e11d3539acd9764569d28c7b6e52792bcf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "286929bff2c386645578c1fd5dd0b296e0ce10d7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1488d60dbf401adc78053423eade4a2e66c720b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8895de3b92b7ae353061ebf5ae41f186f3224bfb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fb801dd26f6dccc173efe46c5d429e1b075bf5b3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "65326d9563a342c8fb7b4716c782d15fb9945cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "85e7529cb6458720547425afc845e198b62f450c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ad9e5ea8cf4f5a856ef369abb3d04d9d627d4ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "52ec81bbcd2a5692737c2d92466a41c08bbeb6a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8c60d068f401a1a9c8c0cf591a145dbdfd7ca088", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d451d364e4e699a9ff6b20b28397758db9868b9e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "69fb919964bcd1bf0397eb9690b0aeea4e957c13", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e96b3c86e9eb21bd5bd628bee3aaaf5795c56bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89eb63d9c20e54ff561b8ccb60b28a20eae11ff3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "60b0af8578bf3d1cf50294e561d1e5e835231523", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2a3c3df4b5cb7847347d2c11bd69eb4b2340d52d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "69c03964d8a0ca044194f03d6aa5c16464472262", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cda8e1d26d0809c33423f5826cfa8618354b8ee2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0f8bd061962900f88f42c449b6366cd127fad2f2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e08c9e0d13263f000982b9b08e7d07cf7bf67cef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b85efeb731f6910e5cf19a19c2bf6c64d8778e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2060735bccaa37429c5b514a8d210eadefe26b16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e3ffa3164fdedfd49d4c00cc0660ea740f1b30f3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "981a39bfb056cc0515227634c2313a306f8b2f0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a11c96be22de3dd8c9800ede81c168aacab68b07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f6595d6df876bf300cf8af983b09e6446591db8d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8be3a7ada000f18c6cfe03a61469b8aedf531635", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e50e13e3b6abcedb95a07c24ed4bb4dd2ec2b296", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d46bb7c0458391c5a4e59d1e751428f57946d881", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ae02c66d52f87a20dec6260f73f2df0b20041b30", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "af7b1533144e347c424c83fa1d4adb3c2910b083", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ff5c73c802a062d66987281b5a958841fc176f24", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4b6cd69b3bcd47a0cba2a8aff03c6a8870898a19", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb20c3940c3da082eeb6d87641742df04376d2b6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ad2b3a7b4a468507a9301005d4c69d43a39c87d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cd6ad36228c90222b0c72eded8d262d316fbde7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "665a08c1ce448dd5867014b69e3aabaa8d235a1b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8849a73db58cb60d7f804b3676a2e8d6cf8f416c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90d99df21d501f331059819f8502b5a3a42d143c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "75b087b92ae3da2a9be69f36327cec8044e5ed77", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ea888734c9576d234a4fc1e60a65337809b07802", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "68cef029eac29c817601c98589ebe99f155c8484", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8af419a1d845ea3ba9887f4f4f4b19dc1ff84e54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a1d6eb8ca2e8f4834cbb2485ffc7a2a699c08a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a4d7d251efea2e4945ada6681481e2e630cd1364", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cd63cd068941e8a1fc014f3990259b9bb9af5cf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9417d6015dfde551d84ac55f79a8f158b78d1b08", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "271b24eed28e238628757d6876c01f088f1c95c4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68a1165b2716ccdad75f7715516577ca45878293", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "665ce9f2d6f595dfa85d0227669e95bed6ebea6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb5f11f85c4dea46bcb7fe5d0bac0016f4d0e581", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c78c9efd02ee2c361da1d6445f89bc5bdea18e3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "654e7bd00ac990cd5fa3a26b4dfbfb17e8b5b46f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c55d2b1996c3cccb3ea44af513f580c88224f1aa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1d85291d1f98613db67e0f7d0ea4970ccae5580a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66c0b23efb4521a5bc81ce23f9e24792214a0827", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5817707884c76cc8baf5ee30ea9d7132c0b14168", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec1d4644d2ba89bb45f13b038138840b25d95607", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a1a323cbcc3396ed8ed21a0336b74803e807e069", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "74a5d71454af0944f52b18545ace30863dacc652", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "258f4b98a8d0110aaa77543ead46e3569cc26165", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "df4e9955008c856915bdd8542af5c32fd41345f8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8999e3fc920cbe7a31189f5aa710bbd448f865ec", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a788c9de279ffe804d95a3caa46b78f5348230f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f6695f9ffde388e489f14d1319e9d78cb1603d87", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "44fa565242b4a12e46335f726c31b720639f59e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "be66dc48ef9801a322d75ec9f07fee36a7758997", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2be52bfd5c773f46bd8c77f1d904c3171764a121", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "067a575d45c4ae0e12d14d9ab760d708938aa81a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff93a0c6120700813c7f888f325d249194de1168", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5c77b88ea49d8690cd31a3d347e581fbd1ee98c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2b5de7325569f6e0ca86170a0032e91a759ca079", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1cc3f936446963e1c74f7f30c7b90520aa130a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "48c6d3a29ec688190c7052da0aeb96510c8a4617", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3d09725a8d344b4e67d773a567e3d6fbbc4edb9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "618ef626d7572238f8ed06d72f8d43181c85d2c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "384c733aa68f990f2e1ae7e3534269a5e12adf86", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "470377cc9205e9f36cedebe920970408925227ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6997d00d05bed4216306734660b83ed2d4be2820", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c51b5cb8c79478460aa4edce4c6969f1427a0cf6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72c67fe0fb007b09b299c59114bc39e8a0f949f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "08d19166251aaa890ffdbdf33da49fdc0175cbf0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "791f37ba128bf2ef0b76c3121ca1ea18709ddc61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c5069cf512240002ec20ec65c4ac348c646247a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "626dcdca47d201aa2d1c53ec48beebc6562fc5f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "35584fe866f023282507652c96b06c3e07afddbc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9243bb0a66ad8f7e65b7c2291cdcc603855b706", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e559ef09f68daa17d027320716bedfe527332b88", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "314527d3dc84ad3a7bc4c1b80fa87624fd5acbb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "403393741ed6090b390e709f7a88d6ee50e975e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6e735fd53b8b5c53af00d2f2328eee5a44c1ec3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "96ad35ebe73732847b7129364f434e075a5263e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d786621fc09fc6c95bbb67358f2cc5f00bbb00a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2f04880b037c8f08346bbdd4726f765d9b430964", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bada64eae1aa760a8e359301709fe2c5c66d4d67", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1726cb285de968bd84a2451279f3bd9331d82bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eac05354c4c4b5773f9dc6114613e4e1605432a6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "906a9a100b7775670f757186dda787e215c85484", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08110291cd9a5a905498b41a1b9d274712372144", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "368b2ba415c7e413a6d1a8543807791953011d3c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e7233d459d9c1bff8b3a5da9a7bff2da542fd54f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfa31748f3c71cd01a851cccec447f4c8bc9b656", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c269f8965a513c8997cf15f7553fbeec0a01271", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ac4f866c623012737e08401bdf0505e29b7fea2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "82fcfbc2074b0d6e20740d0da6d00426c2487276", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "74b5ed9eac40bc037742c260905b8518870184c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226496fa513d0549f0265c346300d727c9065423", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8f6422dcfe1f653dc8621aa6c6556d91d2b01af3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9442be83932d16ebd8e7b9dec5ee8bb029f4db15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "81f63c92ee044fc78c4fbbc42940539c789aa5c6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1ab33b7c1d696cde2688ca585448be20217b80a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61115aeb86ef147fb35ff05f0566d07d34636701", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "52c6733b524ac2059aad511ed0acd1b493974cb4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2f91d42c7e91d78005940b09175b3fa3620d1ad5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf70e427da46f20ddf2543a45387abbb9c9fa355", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1e75a20e6ba2b205fb41302aaa531cc54f109f2c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d69b2c365e00bcfb2e573c7406143993a3f3bc16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "88b8c28d5702420432d4cf4da5c6e130eb666504", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b79bb11cfbe68baf5579dd1ba9293cde06512594", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0529e4d851938aac7019604aa23a026964f2a07b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "888f83abe7b47750c77d675dfb70f0a3b22a7fae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ee260a6bc799752bfae17d814e8c5d5dd9bba655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6549adce1069638122b8e75a039f3b92ef2d5dea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "33ee283757a977573ade2ce739ca161cad7cfc99", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "38e4316c9d74b396d2f9a2b610db5e16c842152d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0605ecdb0d029eaadb69de073c84b3686745e693", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a2c32a04e739e766f97d571fbf96fe98037c48c5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1bd7b6f26ccfdea0fc3d03d9883d0ced27d7794a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05a5e51b927f5f58e54994d58274c879b62d759e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3de246dcd2ee05f4fec9a7e590bd598b9e77b718", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8980d9775581ba5f04241a09331161b176f90129", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7a79176a310d5e7871ffca2646fe48bc501e18e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "415f27ba54f917656a60aac5bbecbc2e3a8ead10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0490f0b00cfd1e782e5cefbeae563af9703dc846", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3169ba29239a9ba3de4b38944a89fb2b984555f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d1c1ee773ddb28906064252ea38268a8a46440f3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c040552a848a51e723af2688b141b3e883ab3b57", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e821506d449e3bae34d29f7974b2377ba1dc612b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6cc96919c45da1d8cc78ce3bee99e1f6d4f38bde", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93312dd48bf01fd59fb85ecba9d4330c67d55389", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a7cd1a13c312bdeb24d6d862454bd0ed17d8825", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c9631175a4c993432a11adb09727f31b13bd522c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1777b4f70afadb86654fdbaa7969df554f1489ae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "218f9f48693bdf739d7de63d627e045b8e299e58", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c2ac1bcbd5c76520d3b85ef1b309bf7768ba258e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad5edffff0a84a436bd56be3e6607149ec3b4570", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d3f8b4151a55b7386a84dc8131c639f07ef512b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59bd5875c771d6d53129f9abd6c10246c03e7a2b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b6fc06337addaff60972ad7825d4f6ac001b2fc7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e9ce0078cb8dfd40153bafffa038ae6c043752f8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "823cc6dac5a69d8dbcf46eca248f3d033d63a8b1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8d1550a16cccce8ee7002332cc831ff859e305d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57e3de35bea1c6b18c4f1bbf206fb4dd5c1366ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21d429647d610e067ed5317ae06d9bb686da5845", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d1ef6d142adbd7b6e6fd4f3e0cb7a6d183f841a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "43d6f71c5297693d02dbaf6b9691c2f1baddd54b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "28b5f7be39ce2bb223db02e45d38a9e1482d8136", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a72372849c06f879600becd21d08f82cf296033", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "826c50614d985568a9dccc871111f4f59a6f7f4e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5cf409bde29e5d94508df1823677ac1660d0709a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "68daf74d6dd9b5422676c97fd7261ffa78005561", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8ad88f44117f5d733cebf572c05ef8514105b29d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8e2116badb158c89d239231f215da6ab70a5fd66", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b70fa90b61cbc4a70dc4ce30d8086f53dc1bfa8f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e4d77e90d3cdcf721cbc3268d657037f046a0b97", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf90ca5f7df12db9164e57042b6090edb060a4bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "446887fab80f4b41a234a5d567b197a7c13b208b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "30497b01eaa5530c5dc3857b8f56def3b7fdf9bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23f27f87c0f9a7b46e8ca09ec3d17c33afbcd95f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cc5469d7f75e4a0b3f8a7fea32e27352c8ab802e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5ce214c83edee964b220c73418d14db67627493", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ffa06d91bee53d83651d865e7fbb0637995f5e3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "573f14befb65a1984f37390a053590163b3014a4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9c38484d03c7a022cfe1a4ff211b4a387c67e2e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b30d1ddf0725a027c3df3e3e29c5a60d20476af3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb95de384d61ee7d59c94b58b3ddaf5c089f9383", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b4681e9c24a04d457506680e875ae1989887fc3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3582effa12ee29f7710fb652fff8813507230197", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7bc0b16186ce376c0af103014611d935fa6609ef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8743a3adf403ab60b1e97a6aeccb12505a835438", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "caa7277cb0d68062dc0640de29a54b6fcebebc4a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5b371813fefa59ec2368d252d38686fd1c8ef72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1f6b38b2ce2f1a665992f946a4221c5ce375d71", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "040725b9db58602a2a09f00c68c972dd7a3b060a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58ad233a99b68c67d2c0af3aa9b8b24c4670b2fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93d748ada56ade7f81036e51314afa525fe56d07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "45def2c88747193a42f9e70fda3f2a2de4e024e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58487672dabdbde10a50c7add725a441e69f8532", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e54bab17744ebd81a0655c8f26d3872140563ea8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ea1c98a5d10bd1fd8318a1df4547ca5f067bc642", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef6e1b797a28202de3dfdc28116d6edb79acd782", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5873be38fca2636ffb96c037c6b2e212bda6f09f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8b49a6d623fc7fd8e6044a34bfcf1dc6e743ed84", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be60265b00c3e9731b5a78b4311679223d9d8e54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a94fb7cdd9615decffa716d93902c939945d40f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d48ffad6f002dcd00a6898536f8fa8596ad2dad", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "742a9cce05112f55d63bec4fe6c97d3d13d192e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3197302ed741354e6e878027b1223063f25a8e4f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "504625f6dcc0ebb10b760fafd576ea602bb52ddb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2e5d71efbbe223931e4de020343edac5cd82cbd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c3f031bf798e16a82554edf7190a2e582a39f6ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f7d4bda0d5d1f5c957e1a617fbb7209e4266545c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ec9779a499ea78912abd5c18eeb4b79a94efa98", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4dbba118a13040d40778c1b8b2f82e383e8f2cc8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b549fdf117dde2e6e52443ca8a88703c68ef11d6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2a9ce89f8b96c4448725bf58dd7ec80c30df2cb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ce160d29dac1a3b6f907546fef67073bfe5ed80a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7ca82a813ba2bd7b07755b56f0fc771184f14626", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bbf803e5b154c61a4df8ab80302b9e6e764c83cb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0d8138ba01c952aa3a3d076ae0ff1256e278a8a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51d323af79238e9330515852f28cccbcd0409d59", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8def42ed8f2bff8be19e85f3f85330ce2eae995f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4957c4ed9d7e92f196dc0112cfaefdaf29094b25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca3ecee591bcc8b54011e695a52bbb6b635c476a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7afcd99093820ddd14ea186229a53d78d28bb3c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "36a4594ab7da528114382c1e5846fc203625272d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c50bad5e11f9e3c519ec8089ffb7eefca2888eb3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b378fde58f52ed4671fa8e6afbefdedc094264c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0dfaab6837be9aa2e304e9eb17d1c423c7e6a1f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3f1bf217a4181b5a81a6ed3312fa4f76947515f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dfbd904e89c74d35891479f2b2adc8b1d322be3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7c0efdb5b6b7430f0a4e11aeb216844825c38b61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6f3bbed369af858c512429baa0f727af8e7fae6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d42a065be4a9eb1c9c4397384c04bd6b4d14b9c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86e148b3810575fba6a2628b5f978f7243302b4b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "83bcb66fe1aa795a47cf83823dd1dd12ad09420d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d35c300937604a53b0e7a0c4690e5c801b21ac76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c68b1f949028778a9ad7e736af9a3ce42ac9931", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ef110feef67165c1bd06671fa27240af9282b914", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d1b9ce064bcc93527045d3dde12c9a87f3e0b89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "81b5163925bb27f810e72f96573a02724861e7d8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83fb05d9cd787bb4a48d9c7e8c997870444ac711", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9126543e077b0cc68b7b8a4118351b7326978163", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "88d05998eb578595598a2ae6bbaeb82a97cfd40f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf629cc5cea47af305260d957d782c96740fb594", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6e1a0288e21ab3a4f77ecbf80622a346ba93512", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9204a9d21d74a6535ca8df2deb65de7adefeb20d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff70288cb126ba5faad934538d1644ca84b05274", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "63c4e6524b575a31ee4b30eb3e6bc645c67a3f01", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0671716007c6e6c6f72b1e59aff5656ba84bab11", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b6707a84369341fe0d7ff038e2e0526a699f0b9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c7e090dd494a0b08306cdeeb536f796e6c997d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4d7534ec4d47483d9de5ffd85c10864f63c25c0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ece53fcedc7c1d55ab1ea0af37a1baa92de1956", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ab9f23952c81adbe0a7e3671395ff4d05693cc53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b5b81a1eaf448fec9d2034ae792858ee0b1df384", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2320cd0a449c24aaf2aaf869b6fea47a2ce15ce0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5b479cedcbd414a95e2036fd2ee830879b2e181d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f511062160c9c53ef17ed5d982e96a3902db48a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f6d60c193277ca3627d29bbcf1b9dfd07cacc712", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "90beefd48596b489fa18ddb18e37a1283347d2e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c7c9c03f0e63ca934232d7ebdb5bb96c90dc2d7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e6cb06d37671feb41ce778836494a67ffb000928", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9f973be4eb309d100284c7dc8b222b8f3d54ff6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5eaa6186b72793c0a284c2ed8fa1d635acaa55c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8b86078ee7f9734ceedd9838017c7205d1a8535a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "260cc4740885f42ce7bf818a06f43dcedcc2fb75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "637ba9cc3d38a5333dbd3418e5e938deb7d826c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "565e4750c4e9553d17202c73bd7b1ab76469a4a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "753e5b14f3501f1aec871989525eeea42fbf8161", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cdc3f4263bc3887ffdc8ee49e761f585e9307ad9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d9f7483161e4462d676904292eeeefdc35daa593", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4b017305f56c9b73da72b3677f6e080659308f05", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0db9550f15a9dd43c3da40ba2994ae6edd0fe744", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e28f08d63fed07c482278f725c87efd571016c8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "27ef81f43c8a214ce3454be7fefba241437b0f66", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fd72398e76decfb1456d91249903560dc82f5f75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "02feedea2c3ceaa775f4589d65714cef2c7a0228", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8bc485e2a18e9798221ca95cd38c1e611d3e2bea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93e5be18bc94f22a206c69bc48e0dbcb08ff34ca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9f6bb7f0f4acade7671472d6b17eb7c378a0c72c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1fb1e39f69ad43f7675eb63a74cc7b2a7f1ee295", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61561de93c26d87b04928df3e41a2b8e853879fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "340b23484440fcdea4f66c8f789d5104911a7537", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2d1a38519440e1f40341cfe368437a8d17e74055", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1fce36a62ce56a400430cfe1e4fb85f7a6ef4ae8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0c0ffb0dc38ac0e03a60ccb977bcf63b604f5eca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c0231aa7f9c2722c82839f5e1ceabfe73fa590c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "111d09d2edf6298892c3310b5f5a64d41fe10492", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99e70c659d458c1e7ba0bdfb4579cb1aebac8baa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "46f3f69be78d9c22a194c4ecaf73a2ee1713ee8a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3706d55b1c829dd57ce07cf33466328aeaa5bd75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "81f16d939fa45fd34474ea87c3c2d7c5fe315208", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ad67908249e06b746b3045531a1932296c22accb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24294257cd31b4afdecfa37a28b3edae18f7c434", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e00363db5658bf4d415e3ccca8070aada10ea601", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cae8d35da8fe69ffe1bd27a007d465858c08e15c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92eaadf85af725cd466c7f5ede58e63d6e19b4b0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dea49591f96221ee95ac4fd4e363694f5e67fe05", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "568acbf509e76647b5fad2f1ca671285d9de49e7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cef76d2b3dccb2a0e88ab5b1f877da2f36489e76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9aa5abbd2632495fdfaf4b31da3f05f6e3e9c501", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8da7dbd0d5b32d35602de86f5034c4f5691a73a7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f56f48ffeceb05995ad2fc4643c1ec1dda40a2bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f99ee09b3f23daacb6d78617833130d33a292a0d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0607e6ba0dd269376c633de5f286196d25da5657", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23917328d13e0cf4ac81ebbce82a180aa94ee577", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86c7f78c3ecd56e6dcf687bd6de7b7d6dfe8b88f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b8fdb1addda8356073c7ace033ac91616a46a741", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ea7a77c816ed32e272aec25d26478e3869323b3d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4cb16c150ff8ebe2a61c8989526eb81eda60dd15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b62d60278975b9611af931746f390ecf3ee6541", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0f9956cffda7931a0bfd602cf88db113bbfb75ba", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c2afb38e53c49d17e757d5686b0722a1c8d9c565", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cae0a7d00f52d2b63111a55cdb54feb6522e02bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "11302230a77638802c7a882b2dc8ef932fe4d040", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c4295e02a747130bdd50bc26aba68134a2b090dc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ef6939c382c401fa22ad784dd686ad3075ca866d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7b89aa4a91be70cbcbecf99e306f8776d119e786", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "95f40d8a017b8bd303c68c68b8cbcce59a363c25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5c1f5772d6dc5675d1a96a364a1026efba098e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ec36c26496819267f369269818784826ffbfd4f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "19def09ea3f7e9d2c0380b955df3091466f7d4e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "eec75bdaf815a44b16e2d85f80a70502c57e57e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05f3b0f95eaf700a27746d6b922b6903e4764e72", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f002ae877a2239400dd30a2ba39eb9805392ea89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "baa3e86f309f5072cae42e64c43aa3bf2a460504", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "70a38bc379409128e9611d306daa480111c6e7c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "951f6aa908ad3a48004c8da640a4e50a23b4f0a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ea8d3845159bac9ccb3c46b21f4e39af681404e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78416ec5108443d8c7ad0e698cddb0fe79c14344", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b68b59195be50366abdace78e8545ca185528090", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c4a863c3de9dd6c54d4fa960289de0a04b5a0788", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7d6e96a029a51fc91ea390d69597406ba0bb654", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "08065baa6c8353a1bbe9b5637b113376fb028175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a926f6fe12c257a5bcc4acefd2c65df7a7c6f65a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e779b297ccc67da5c6dbc357554e0c82784e53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b84be30e59082b2f6f14beff08265ed6192be341", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "47f028e4dfadb34ae0e354baaf96ae1ff22e11d2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "389f83f956daa896c7284514d6f48ae5ef63070d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "03b578a9d3e81549c93b40a54a87008441531757", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "79c728194fb886d9fe6ac1bbf41a36fde14797f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f1d6dae9ee906d704950e76cc30a71ab4fd9c339", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e6670e9dbea66f1a6cad1798452884fabfc6d518", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f71fd01a5bf99d478bd45e53c32b7f86cb17b983", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ca92dee8f882527fe493b75f56616b53f3f00ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "94969f98e281a1ede6945a90777227d8111714f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9729a47c49130e3436bd08b909cf577aa0a36a5d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "630b1057c6ecf415ac181f825e3bbb259dd225e7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1ed5376d68747b577f35249c4092644a3c266f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a587af2a585825ad133f3cdebef9ca5f1e7773e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7943fe79a9ba3945fe14b8e309a129a51703b2a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "485d1de68d5484f203b57c86b091bf75c3f5e57e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "24bd2fef0180761f8a79f60af0efe9d417aca92c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "adaac0ff4a96091f951a7802e52e5b13aa983cbf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf44af787a8b6b00d41dc383c3cdd4ada6b6a017", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de8adacbff8135c837052edb20eb496bef189d93", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a9637c25a32f31de9eaae75520f79774f82f3912", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f60ec6122d20df15bad22bbc194633c1217efb5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f8cf9520930e5f1e36dd635061998b6d3bf14e20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ddaedf9640d2e5112c99bf73deac63de8cc0636e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b5212dab075ea17a1de95383850a243b2ef0384a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "49e393f0a1e4bf55b3e71a7130701319311b2cf4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03b50102a61a2082b414d6a1c645dbbc3ce3aaf0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6ade0abab4581222ecbfcdd122c7f7e271f73c5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bcd4760a2fc9b2fd982693806f4744b2850ecbbc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fa2d9603a69d78b81324ca69a5f0437e88c803de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b87296ba079d82a726a57e07c147f2854b8a8e53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "484454949dbd2da10c7aa1b939705e9e3e579875", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5309362e7aabb1370c0ab65e62bfa5befc520e63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53d78447c87397107b3bef4b4eadf8e129640e82", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b27ade7bbdfa4ab9f4d004b876ba95e89722fcc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be661314d339dfa57774c042c83e4b6f576ce9fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "569c74739d332cf1471e7023985f244834addae6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bb90a6f4d2810bc4c74ca3b44ee356c559e4cbd6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "da8b132f7cbfe7b64ffc8e03622165b79c7f2d53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cb01cf977ecaef6ef24287272b61acc368cf7f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a95db4f9446c6537cc155071d8d411f6f3f52389", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78bce35ac9bb1638cc5fafd788988014c94e49e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a742c270a52ee5a24b5b2e1c8686cd5bac63520", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9796440fbbe35d5c8c7be9f77bbabf505fcd0cd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "000c9c393b13e367f1258768d68ccf17c146f2c7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "32de5572c19ac4f2334aa603e9d0943559c252be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "210025bb7090f30d3e67a351a5d15694c267c530", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c0ec6d19d7602ce55a617ebe23bdb138a396d3ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e2615b14c3574d2bd99c37069f97dc048ef34ae9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8817bfe50679a02cf97e16f28871251ea8d804e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "75dcee8f4093b667378ba3a5adfe0fd8beecad64", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e71f08293d89897ae9daf3dd2acec20f90cdb311", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1567bc26eb7eeb81422bd8977b007556f2f15a58", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "390345f5b960987f14e2dba425690ffadcc43e45", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b578a569d2c8a9f5cdf95dadcc26eab32de580", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7ccb19a9c6c5876357897ad3a09c0c83789f7f5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5be47fb20fbe12b5b7ecad649d16f247d0b576bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "aa76a51c525e359fbd8a10494b9a6d658afb9144", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d58038b788ec8ddfe01e9555822cf3776832357c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "087fd988a63d9c0f8977a2d2d72c72dd3c8b89fd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "372e60e98d03b618f726d2a076184e24e2f68ea1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58e282d204f2c969fd5269803cde6c0e473e7d7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1b4ec3057e53f83926298d75059726fd53903dea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eab4ce0b390731ed919f23786c05d1687aeb9a1a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "34fd2bb31739160f7c237d83d41f7b05e59a0fac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8a74be149b12bc22aa904c10f46fc931450e04ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9e033bafd61cbdaca25bd24148ba590ce6d50f63", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "31ec4ec0708f055b35132110b0c3053a243eef7e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7f9c894b10017a19d202cc5aab1be0691c46596", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5442a68eaa06a4a0acedb69d523b96d5d1e94768", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ada0e9c3154d354b4f906df2e40921aa4aefb58c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02e6f6a24325ef5f48b2a6e04e8ed6e9d78299b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "79fbcf039ce2c7af780b9ad56b78d94c50f6c514", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f42c28ef60dc155e178500278c9bed43df0722c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "02c836ab4c99463cfd52751989526b925cd57710", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fab43c37d96b418bdbb49ddbb3608494732a6c98", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1aadeb19c27d55a085f74edbc8b0d6c33ae79820", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "63252e9faa1c7b6e46326a997b96b0042e287213", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1452b623e37ee4e119f95f331470b4ccf1927bb6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "468a6cb58e00e35d8c9e342d553f64a7efb4e515", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5009271df6d2cf41a29032f9455bcced8a270848", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ae32aa672487ed5db69ddbbf89541b189af39e4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ae34b558f91f6fb7a6477ac6007ef90013033bc7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d826d43a726f878c62ce73b3263cea321d293ad3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a08efa5901d31c8324efeecda22be93b9a20bc7c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "921dc161c5507618643153dfd6eee420bfa05d20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93ad3232c14fffee09321887f99faba58ffe74e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "09875cfac689d25dfc0223241654f1ead8dd749b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1c1106ac3be07131a02775c3d2bd27b4a56c9ac5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "04dde7b7da2f20463ca11bf4aefffc9ea2e94c14", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d17d098c61bd8e5373881b2f0f87bf0757c3d224", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a0602552676b78061c4ccc1593ab41975cad9c1c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1ca07c4984afe4942ce67565ad067ed1fe3c10e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71efb0c48d7c815e8f06bcefe9283e7e339dc5ce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24d94bf770d2130cfb28f4426e775b0360d835e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "531300cf6b622927c9b83eaedebf3e7ca18c1db5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "955832d977751f948c74921e1e0afcf23f5f485c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f3b67051dc269c8d23cf298c1cd75be07c14e4a8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03cb2fc9d0608d385dc695151ae06c532954a882", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f0c91b3f71f1176b47712a420aae6e2ab720450b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f5430cb8f736ffd330a7218049d0c73a0b825df3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3edf7d2e77a34388b0417de6737c4c14e6319149", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2c47b37f133748004a05d636c962a3fd8ea80aa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de35f88f1b00ded17e0edd89d14aa0e8fc260daa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0585defe5df0834b9bf5553394f4bcdc417183f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c8c4c7a351042039acd74e224396af174bfc75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4547c2eaf86a5c2ac06c6899eff91122689e21f9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb809401270db26bf48aae76c6bf210f9ec2520f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c5429c226e44eb40c10f7d3b96bd73f903a975e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e3de8bf7f2d22480fb30b826398d93934a9c72eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a9b37f521385c7d12c7c7700efbe08cba4fc11e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "857653030f3b0571f49a9502a5288b6035bc1175", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9bd1c7dc475b3e0a4447ec07eb152f966a94f5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4daa2a0df0399d8df1cf1e9c0079fc7b21d339d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5af81f84992f5c538c8b3219fd67b08060160d9e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "465917556b1a1c1698107e33b9eb334bf44c2d9e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aa95b2fd9d6c4b8399ebea34513d5787df269582", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d392dbe2ff0f5a0fe8d4e285c626cdb51cf5b78", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24b1af28703cdf0dd973a99fbbfccba7cc058580", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "69bc74c25cfb6c4d25e217995558172dd2becda3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2dbaf301b5898a6f0e9fa218929b24e232dbacad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa6fffee6555f0b34dbf7369c5122cd2ab06c193", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7638170ec1a79e4ae1ef7cc6a788ca39aa4ac32a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "655b4e541dfb56a9b07382d4fd7db832562ff624", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3021402c85c7b14e9d857811fe24baaf8d5bf271", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a38db2c7db027264c607ca79f8942244ab3b853c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51015da9e0b60581677ce64fe88ba2e41f0b39fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dc1ef5ff25ed63bc170b7023434a70b89e161432", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "94cfa47652b62ff07f8d7cd00b332835662c5e70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b2a742e880986517ebb9d87f0ecd82d4fd379d85", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4a916ec1b51f5e83fdc3ddbd2426e43528e20e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f058e1dc1946166f6632deb5561ace172bb3ce3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59efeee37bbb918e7b0b83da74d5f2cc28bc8412", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b8084c4f78e648f9471839c3686718596565f3a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7a6b96521fc242415da6a43082afe549d2af6b13", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9c8d4730504d52d568ab3b3f2a24a0d017b1adb2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf63271e808a803a26892314e95d5963958db710", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a85bcd00cb0917ed52b02bc464b87e008056d773", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9ccf1fd3bb118044efc8c45a679b1cc4fd39ee4b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d5046149fc4e54eb044cccab177bdf816a907cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "83300291c01e1b9dda57795bc44d8a8dda572686", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "88fa824b503a767c4713211702a49bf783ebeb28", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "698ecaa5f765be89f6b0e5eb6b9e6837e730a8cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "068e5bb17743305b3fa2beceb43c0525c4368144", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "84976084c3532cb8fb3916fc2820f19e19a48b5f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "23703f66496f120efd6d6ab90128db2b12892280", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ff46aceabfbd95c85b3e316efe49608a8cdb6339", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef5435497bcacb087492146115f7be440a7fcef0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "413c18f7ce1ed94c3f3f4bb955e7a88ee493a653", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8342f33d0906f95076529cc9064b515437d97e8c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "de8c664b42bd2004a58582ca32972819a1b5cb80", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a62bd5dc4adf3d36a32401dfac50597e63fd5ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a62867616418195d0cff4db469101908b7689b0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fa60a4216f544c353f0347943442ac19d3513e4b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b45d27aebcdc663c155f94f08820f35e5d1e0b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e416678d0ea32bd5a72d9eceb657fbd1aadfd5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a62968faf191afae41d18a37eadd888cdbbfc2a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "903f997c631cb093a5310f5f0f1e1fb39a33325c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "77e4def5a76d5c594e26ce52f8815eeac9800c9d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e521a87e2378b549d96adbdd1e60fe79a5cfe12c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7cedce6b430233938072c11a127aa4aaefebfa7e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b422c8244970d2221abf8da3da12eb55249d979e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51e0badc7e09cbb0e7c5c35ded7a00b0e598f446", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "734985f741961be120a8e97befa28c435ac79bd2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "528af16cd2ce96ff54d2d486245b4cdc5cac8dbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d80d3b6bcd3be698f34e5d8a8d9c1146c22815c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0baa31dd065df00d72ec7189caa8cc9ace1474aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "45eb8776a24c95a14686e7818191c5ead8b61acd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3a2153ff010970fd3f8b3c9db4a36218c25a784b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "672c26c7f0043e699068a11ce44c3e9d4999df22", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8affcabf80b69662e4595598bd96c90a9decc31a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9dea0aff4769116bdb006009911a25942c98489e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bdcdd99149c6282255300e6a301ca3e86c91b7ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9006c53d3ced07e21b4efb0d1f0107dcbff417b8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f89476cf96a0dbef98a65d305777ea70a5b01d41", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df5feee0a75505892a0db0ec3ac68ab5067acf20", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d4dc1ba5d3804532df7800446229812733f24338", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "08d87002621fffa9da36bfa5d607f8f6f2966053", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3982ef8b29d1dd05442a9b1b176ece1baea35aea", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8074c20b348a92daa7ffab6ce4bc0a669bfafaac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "554cfde3dfedf6907232552a39db0e46754252ab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daaec162a1ef2873a03575fd7f3a95bd53ffc5d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "45aca95271f218ef4af32a0db7c6028c70d16c29", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e10924935449eb206ee3da76b28629ae898eed0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "119f72a083cbea8eb8dbc66ab931f0f98a6b3891", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b345d3d0e24c4ea651041101735da36345c1ca31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "728fc89371ef40bc197c67fe8fcb9ddedf6cdf95", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a6422919be8d565675f9df89d38285590cce6e77", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4aa1d04672e1f26dd082d1137addc6502fd4a84d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c13ee1afe1caf411a72133a937e3492dbc103e45", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "142cd13a5da5759a852a494334ec868a9c3d0358", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e21acc0d8700a4814513d9e7cf291bbaae7120f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f408e1cd9f88641824317676450edf08f091a330", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435571f8406d18d7fd7349345a1f45a8bdafdfee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c26aa6588c0fa980538ce62bf443fb7898b9a905", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ba61fadb1a110e7dcbd3d13c6cad11ca168b8c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d92390a2f1f31a799bb7f11bfaca897dc98d6bb9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cfbf100e3d3433ab6b8430c0d7c726d78ee172cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4c4753cd8bc0417f3d563cb0b57db97047c4de02", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "837b6022083ddddaafd3ace7b203c317378acc68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92c4d224330671f679a9132e3254708d9f897029", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7be22941e0f7dad3a520e031d4e7d38b290788d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2df6c212053ed53569deffca7de9e3d6fa4a64", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f89d7507d5a2246af3eaf39a0fbe6dc2d34cb15f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9df0b97c20c18b9e9004ab8f0b442eb3fd90c20e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e8eaf265de5ecf7fd72999717856348a21b613", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f790dcb221d6553738f75926805e67251f9284a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cc8209d6ad5233b859fbd74296960da9d29cf93e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "390198d073a933fe603e09548fd45252c93756c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "20c507272a72e015c7c4e5aabac309c99af5ce2a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "67b7f07728b5391840a35192661aedc636f4a809", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "601d8de00acb6b7f10affb9329989f7acdcf71ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c96b7847f57f3d4605e9e0ac69b93af21eb3d9b0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eafeb9e74bd210cf9e7ef448a83bbe46481e9aac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35fe64db5c23f9dca7ac43264d219eef5787bc2c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "549d620a9d2718c96f6a01d9707ab520be207048", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "907c81298d1bee675c2cd761588ed8b88a11908c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb61fe8cb5448da8c375a2c40e886633ef4fe094", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f79632ab843bb232369e2bd3818e96a50aa27cd7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9c48dfffb9b5342bd71cd1a3c2ea30189349f5b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12ec3fe6f41a37f94723d79702c0d055b632fefb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ffbbe075e7beccd5fc3511cd34546028bf717248", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a73599b90d8229ec35f80b72108d1bcdd127f8b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aadc1f48733224eae4844d8365fe5229f059e273", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5f91ca0411a855ec09e32b298284c6d54ea7348c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1bf2d34da49592dc4fd22483a77b67ccceb6f0a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fcd9edeb76e1002363acc6f14bb147f179ec307d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ce9fb8871889882ad737dce3feacd32a26dad4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "92b53ec4128a5e913c84d7a022c79b9964a06922", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "517ff3bee6d8da1d54b64553efc8955f6104d0c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ec8ef1d9c79b2a3f028427edc26a2aa72fbd2989", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "16f0c1e50726951a4804dff86d2c61ad3d6d0fed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5879b76781a71f53a94a4b46639131b2c206bce1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3faba478ac72327ffb475ae32c4a66cda979f13b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66a8892e05bc6f32baf87b3d0b998ad5cad2ec27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "668c03caa8f9ceea2343f3b091258b3386b5aa37", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fae1d48dd9686fcd7e3cfea529ae104eb59b32ef", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2f428c46aba489fa1e651edb69d7298448ff12e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a7474baeea5aa69c85db2ec03a97d138e29426", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "523de103001c68abeaf14760b1040cbe7676b893", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3375792cba17008b80069d44c8c23d8b63211520", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "326f6e8b75c1754f30d68e0634cfa6fc00786eec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "53272602d489c937b9d770f31ea8f954aa5ef7d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "40b212e9eee0b1491df2643ebfd844afa7dbd7ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "15faaf3beec07a4c25633e8e2cfee1bcc7abc4ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "66212ce71da8b7ad24399dc46ca3b7c0560f1765", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f437d6ddf3b3e93c34c35efba5f8c80739a58ed0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e84461ccbb7afd96846e841803f8a24c62f2156", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "657c52476bcfccd94f00434a1f0c654c6e5b0396", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b541cd44fb0b2ccc57590b8021ca13f3425d916c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "af1931e15b21727efd043a8e3cbb07f3ab2b9b25", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bec0b83a2ecc577786c0d340c981c7f6f31437d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b77fc548cf2c3cf531c70e59ed9f5c92dc920a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b25edcb155407ac3af0e1ac5c0e3f896a26171ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "90b01700a464289426b5d7dcb301959e0f50f408", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d1a0c2d8904c1626123f96e555303a84d7a0d638", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8d3b2435509c7f4ce78b9f27556d0330147a72b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "966d7070bd08d8e0969092a5149ddf95c174923f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1082dfed29855abc490d191086e84ca80f3d146d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80f96aca094b78e5ed084b2a8835a3e25b496763", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9a0f3f1f6f8cd0873eb807641453827e9910f0d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4af5bc4e8f3af26fa48e201f0c4b326dbb8d7a4a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8da6b7c3ca4d90157511beec31ec865014b48e19", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5f82bbb4593514ca2e2cbdac22812692b697f19c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de294c8658cb89ed6b592da4143f0f95a93af01d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37284c4de55e2e880de08b467955145db5deab31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b6be0c17e709f3fbbf6e4c5f8cdc4da7caa00c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dccb8734a5f4893910eaef517a69977191b0c2fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1a558e8beb4a1498b3ee96d85b84954489916a11", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ceaaad8ddedb88d1fca93e02b43fcfceb96bd8dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ed7caf5b7562fa3295870fde0687532a13054d5b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6e9495261e622fb0e66d21f885616bd36a5ab51a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "403d0713def93d0f88cfec03256968327c9f0b1e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e82113b355ef8eb29e782af5c2e30daaf0af6489", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ac08c4f30aa777901015714111826410b4de95da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c21e812a9e6c14c0447710b781a3bba0585a364f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "08ac3906780d97e9b71538038d3b0d9d71d0ecc4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c24b016f0d815303f1af42f4e7faa7d4dec546a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "122cc4e5217565d86177e2b66e57b1eb7e343d8b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4ea67bda015159fd16dcedc629f12a11eeb34da9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f0b69befe4fb18b2e5ff07cb0532c0a6789abce5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e8136fa995086742a5e2ebbadc4d66766abc458a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3893e04b4922062d2a229ba176d0aca13b93228", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5da9ebc2dffbad8a5591860d42e112eea303040b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0a12544bd857dd4024805397f4a8abacacac41bb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "edd1bd8e064ef2690542df1dc6433c766fd15c30", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bca68667e8f68ee1dc858862fa43179e42415c75", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8b52fe13b6c8472ab161977e0b2635e3cb891807", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e772ef3362b18ce5fff11e81944de74249612bc6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "923a99400302aa69bee8caa3048baffe66dafd51", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fc0429ad3f3838076ae58d1a9577ca0c9f57444", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "64e113eb3aff3f90ea8d70297cb662e246e3c358", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6bb4cd88cc71904c21062642b3dbf2931fde6fac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bdddc62baad99ab5dad540272b6337854d598ebc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5842e6b7595ec8592a62cc5945344e177aaa0a15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa32e2db3cdf9c81482577d2d6d1df23ad0fbbec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4bd8d6917e43b8163aceccbb60037eb7e7274b04", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4b26af2d5a64ebb58d4e353ec4200aa3614aded6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "155fb65bc9b422b510e7bcd6d37ef6e4fb6c164c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5cbcbdff1bd304f2c0c59eb48ebe0619a5c01bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eaeeca29bc2ab9a2433719c3283487d3e94d7c15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b65d98358454f01f11633e6a2b59dcc1418a06ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cf507ffa15f1591e54549eba6430d5c158d53a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "920d5681667407f3a83a35161cd6773660d2499d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "80d9be3c952f7d243c3574647fd2b33bbe8a48eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "248e056a13b84c5096159c64a6e69d9fcd1e2bd5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cce5d206230307aca411dc5e5276c25347b617f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "229a8ee26af6b3e85c5c904b7a4c36b8cbf84e1b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2aca3d3ef11d68fd2f19952637be657f3d92847a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b686175b064380128635ae6b7af66cf1dbd59744", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71a1549f37be25f8aa3daf0be38995a322f6d972", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6043e3f4cd69ce3e4ff7216440406d111bf5e29e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a464dfcb01b0f6d6ceb8681a5633677656b2d235", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5eafd450709f71e1e2069b6b4778c86f2b5899d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dde6279cbaf592842127709c20d0582ca84c8fe1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "aeb0bb19d8e0c8f58fb4654dca053f125aa468bc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "341c28a48b9a5f6eed5340752a8ae5c1b94d7b2a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cec27a06611ec27bf67e38e1225f52ed6a5186c7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "14dd54886e18b2ccdc77bc656129bb0219bbe990", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f21ace028dde0334b66c8fde46f4e38c51fa5a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "050d41ead6d44350c820149c837224fc72e018f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ae4a576fb5becb8ee4bf209814173f387a0fc43e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6257b216cc765fb0a906d836966647de2fb9cf48", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e2f201262877baf0ca592d092b40e87f70647c38", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "844defc67f46b7a68d9b05c8b54e44c541ca462a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4b167ddeb14b5c75f43f992db4a7368b71acd0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79e402f57123bcc1f3fd951b5738af31c3b6f703", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e7f32fc7fd711aaac90fb3efa0712870f2366bcf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "495a9e45e55377f282113419ca2f7d6ca00c72f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d928a796838e2de4095d25a5fec219aa3fe6c321", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "74699afc32049b7b670660ac6c0626d40129c388", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a8b0cb9ad16b89a778407598179e84a65d49825f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6f8102beb2649588dac8cc208aa25ef006c2d224", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "285d215d0ed401c2a2c899035e5e262c9bcd3087", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9121eb05e94d9d707b0f6b7e100610ed419a4136", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e083d888b303a393993671d749436e068fa5d88f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "723da9214f860bafd4f5624e68c9e47f213b3396", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72d4fcdde058f0ad3f96a24c39258a18050b9e0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48da0af8c2cb8fe26194db6cd42c81f21f19af68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dce05da38bae3991072a2be4a277b22102378f3e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8337bfb00d08332051aed627f5b8d10958e9abb8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d4f345ea04051e14eaa8a7365338b57e3da496fa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0fdbf1cfa7c30d06c9889ee016567c221d9426b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b4f7aeb9863a2a6ac9ac464728c1953686bc9c1e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fcb378fd232c075e8afe594ed851386ac0359b7e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30b63154d508ae5504e106bb885113aba62244e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c89ad5927caa369268b653a4c5ba748f9506521", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd8aae772f6f71e32dacef69910015d803c526a4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "126813b2b4f534ad10fd075dc73c73cdc8f260a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "925304207d5361c4f2abc2b58f3d89bdd3fa2194", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c42c674be8150722f0955f320750f2420e0a0071", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01ccd69dc126d63f748f16cf3c002a0ff9217dd6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "82c899706e4f5d83695d1f0e5d9ee99cf9942401", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4eb02c02be1c082dd9c6c18ccfc6be212f5af59d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c612f7a308351c65a8a3706ca2be524c018170d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "aa013398b92759981c823e8807d3d1a05a6c47fe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "23a486b6951b346f4e71e5bf68957ca658c40a9b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3171fa768a41ded2145472cb2619b39b04219d0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c1d216ac268302f05b3aaf20546d5c732aee9e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51dad07850fc6959879f22af5981c0a32402db1b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7a8b2687135de4ce826751d3316f28949f175565", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "504b915b8042808e558a09d5b5482a65128e3129", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5e9ad2640175cad613505c41a5d795ad81a565d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4762046a4decf0f7db0b85ff3e4b58cd52523b9a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "90e3bd9c1b232ca4aaaa383d8b30356713c734d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "330b112acc3fbc13f70581237d52274e3af211a1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0d7cff6c0842fd685e1032df9c5d86b43c4a40d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c93a0e0796618bf57e779d3914ca0a9c8fba220", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "eac31901993523aeee6cf9016d16aa99ba1fdaac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e351609ecf2f9f65ee9aef2ce04740e9fc16e2a8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3c90a615c26ff976143168fcc17e06bb7e42faba", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c53a3aa33f629c9e8798e2ca6d886399136571e4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe607cf915393b3cdbce0b7799a78afa0842ed6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "40907074adebbcf2e86773f9e6262c4a28724479", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b5cdc3528a502ac59f346c2faf069bb86dac1b43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5d22b77cf5c715ec5488d9214d813d3908de63fe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "865c9279dc1a327ac55c0fda3a3860612227f23e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b67b53eccfd1c8121337ddf54e3a0bc567cf9ba6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "95ef0d3ce97e196f185a2caba43117689f087eac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d6f9112e6c835633cbd77c709855ee25c785832b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6703dc4403b6c278f5942833aea79bf6885611e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1bc00147f1d4a918832c8ac59f640e6f1ec1016e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "684891d8589d161f2e2049e83b457f3212c24469", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5b17c8614e3b50f9613d7972275895e3552cf6cf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7593923db57e61ae03a751b8a12b7ce0b05f658", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c00ecf5b4ccefa8c45baa12f31ab09bcf041492b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fe4f049e20528458d06a619036995e9fb6256a2d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8807a1fc79b3dbb1f22e5789beafbceb0690360", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da27c0438542e55716514e05e869ad8ee72b4f30", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4bb65294825918b6fe9dc32a4878096d96c3e1f8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ea9646044d9de2793e9675011d78b13635d457f4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c26beb59446b6d676a23a18986376d43429cd601", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "237c620456b02725e0194025f34a391f40a66bf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30fd6619cab2549e643f1eaca3d0cd20de0e2af3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cccebdf095724784f8c1e167cbb4f0c2d7db2d3d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1be06ef53d3c46a7e3cc4861709b2b065d6e9ebb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "298d6cfbcf938e2faaf908e332d3ac9b0d1b4155", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c7b90778539fcdf0d4561a101e46876f90b2d5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24f685e27d66cd9223e005a2de4b90fe47549599", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "69458e31daa1a8d25d42339504475ecac88c51fa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9956ff28e4f94e680fb0bcade0831ec371219f5a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bb6632c2e98f407b91c900a94eced6f122236caa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "65cefaa2bb108c7d0c91d4b7ee1d66cca02eedd2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6f3380f039555201b0d4e4bc31a7febf58452f3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bc7ebd19edfc09350ffbd9510995833e47e129b8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0b73958481a0e6d694814b86b27dceaa80b1a14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb7667568c7d0aa5cc8b2863ca9276171de1ae91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "84b564195cb74429185b69532457d1879479c39f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "90a04f0b5fcc7d792e35e429ae9f14ffa24a04a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3b074d9e9c811cd50707238f3bf036189001cfc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9b8f8de2fcbfc3b79207b69e3ab01256c6d25141", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7e33feefa46ab390e35f87cf2e166ca74e70de1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b99c3a359a022c5b6fbd31bed45dfb2fa92dce7c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "58128e3b47cfc856031246851af325e8a0a044eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89ee876f240ace603d10664611aa32eb4c2835d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "460f3f8e7851d63e924db933872951b87df49f17", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1b108f8420a5957c67dea8440d7260fd616b9671", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3eaf1813b6fbd1f254ce85e0b704e020a72fef4d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "743958f640cf811e1551143f6850b102967f63d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a20e014ae7bd9bf23a177c0b00523a991c0c9700", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dcff14155900814dc4dff5df7a5ce3bb8290f2ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2cc09fe483bb23873095865f0c8c24fa85a28361", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "574dab6e9f1363a9c69fb4cd1ca840efaa00532a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45d9b5121939e14de880fa33f742c0b1cdf5ac85", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "565f8fcefabe2be1687b48c93bfbd2e45c1894a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1d7c39709188b3b94acd9d40595f60b5c6eb0a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30e158ff288262c93c01812eef547b0583b8df88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ebf56e951662b6529bc315d4bf15c2d15169af57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6e4761ea12681ec5dbb1bbed158021e591b2f9d4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3d690f0d31ca5498f55b6ede5f9e77c730deef73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cdce9db8cfbddaf0217e5e632c54dae442a32a6d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f05bc839297771be3759df80725bc21c9f6de26e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "940a3779379cb90078051a345c6ce2d6c5ef963f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a5fb52c7c5df77efe9fd34332b5fac88145834ca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b2cf9e2920a44a0c36206115ca9f0c0b00d72ec4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "150c9d5223557086705b74d3d6e1f4951b698fed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "350aa15b25c0d00ebc1960831e3cb96341c3141a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68b2e4e9c25eedc8222a0fca15a9dc2640167190", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd5da1ad807c045d5b157f712a88527abccda931", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "758abfc334853243d0c58cc39cbe58f4ea7f9888", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8ff1ccec44c10cc2de8bb5dfa200b3a5aef0d3d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5ff8b955da6ee0c281270a58a65f665b93cc907e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2024c4619492180c7cdf9faf4c8e39c9bf443edd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b9dcf60c84925bdde7eec7c761280faf2b8755b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "508b23dbe4302e6b6dabc8e32dd6ffaca474421e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "af5aa43fcdb38fcaed7a7ede0b028608537fdd60", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "834edcc26914f1b99fd787252e1aa3064683f0c1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a79fbbb453e09c6120ded1539738a654290f1116", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bb34ab4e6744a09602fe221adbd4b4aac35e227a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c607fcf1ea15d41066935835361aa1a9960ad61", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4af3e6d8970031f5159775689e30408d8a4bf39d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42cd75816d5903a58f5dbd1f5fbcd30cdf04e1bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ebfd3dd61de4598c3466d0b019fccfa2c78ab8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10b66d9cad4d8853f9843d559bb7f6688bc60008", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6f15ffd29a35fbca144c408d94b4dc3f85e6e6e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5adc85aed1a220eb6efe6a3a501790f2d909c39", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "beaea0f55d9a6c832d63ac525a38f77c4ec72051", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a0c213dba4d035c486697b2f7d404041e4bec139", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2579bfa12eac89ba373890d9a3049697a0da291", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7d87ff9353b7e63338db8ebaf643da0521bd0dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f75da9a7ca6fb4fd50b6a677282711803925334f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c04953e0194e7b546dd27f251a6252f4eca2b942", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd04d3b9017f01d3035c8b961061f1887d9e8bc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9b4eec05a7b42db7870dd5d74d51ce03ed543e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "648f4928e88489e03d36e7b632f5949bab3766a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f8195d8755bc27f430bf53238a2b38b6a4fb7bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "444322f0ebe6e2380b1572f30fb8bdd1ae0c9798", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "34fa963311c5177dee4dbda9f7aab9dbcb8637d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c085f44a4f178be6e61a2790906567d61fedba89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4cc31dfc3828f85e82b37a28b5126410137b5dc7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0f3b1d075b98e647fc0ffab22b81a2c3e2ce168", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "335ee543ebe8997c00c12b0f6d264aad79e7908d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0b890cf435a01e21f26cbb44df6872dc9830ad12", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eb833093510da15f18cf06ce7c772431360b1e14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a41a132107852921fe4849c62174f9b3a57c43a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f2b934bdd3c594555aaf9ed14f8f04a5bb57105d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aec7a0babec1bd606486799b3844158a12ce5f32", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec64682a1b5cf26f099fca98de95e4a6fc7d2d88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "74fcbce6cc8892f22e542fc7d1b63c30ecd2ea7a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6006790c1517a6f357636ef02a91d7d0057f665f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d7ddfc338162af12bbff5c2604795df3f1b83b8f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "39e6cd02757c1580c86faec2240e6923bd72d9ac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "91ac72a0e58ae51820fbf0afb7fa1f74bfe82681", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e08cad38cf2619cbbd9ac47eb0d7b8a5378c2123", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "45424ccd3307ca80176b89a81231c7d4a82502a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "825aa850aa63ec4dcd6ab96af2506a91f7c8d6a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4da6357ee7e7cba849811a8e49338751b8c08d51", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d233503fa9bdc624db8ac78a5efd6bdd490ecdb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f3fb23137b601787ba90bb4340c992f75d5916c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "183ce17ca2167b4058461f6ff87e1a6e1723ae80", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34e798afabff67d7b50861cf23fea9c2749ff1a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "303ac209d43b323783a4f8e1aff1f505feece122", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "41a21d5d5edf44aa121d98d277c855ed0916b5a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9618d13d5ffd649adf8b6a0d8c7e6acc7ebc6580", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0e14eb2ab450d0c4320495114dec682b5c10ab8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "48cc97fc0478408194418b817d0d7bc245c08beb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "662bbc334da25d6a225f20289c5f4568f00a9ee3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dcc673cd3142cba535b145ead407bba352bf9e88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba23b996fdd241c9714010cf11894c0d46f441da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f4d851000f19dbe91e304232a0bd58e1af09a2e8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4760a6b254961f632d732249210f8b2c42b18142", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e4efd3d11fc8a8c497fc4a85b8c99e0d8e05097b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2f9b2600b511ac1a9ba0fd74722fcb2c618dceb4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ec53bd7f20737a3692f38296d2872c6abfb97edf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4acb3342eee3e12aeb431036ece0ab9d211c499c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9351a5fb137a92bdaea42191831df8bfe43b50d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d74466bb7c3b7f270f049e766a67655631915a77", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "405bc3f839a0a33b2e58ee37e594b2430624186c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1eedbc1d348a0373ed2a456ce0846575901f1249", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b791ae7b4b2823d97b109cfd9c02ced54abd199b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "adcedb61141eb31150906c149101e640c0b3588d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "78673e5f818cd28f51e3bbf837457ec78f1350b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4475452f096fbf0c602e8a87fcd075dc401fb5c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cad2fb4ee341a4c65f3499f4ece68c4c2ae85e3a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5f26470dd951d1312693fdac91f07f1399032174", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7fdcaecb275bb9f8793e777d5b64772ee1e6e479", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9964d5ceb83220945eeb282dba8afe2490d178ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e0953769fe0842473956e467f632f807a4d9b7a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b9c42de5fec7735fd63b5aa590c080734aec45fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6b207bbd49f96601484f52a3f4a4f63be7b9e89a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0fb5462611f8bb529a4da8e72e431dd2d5251181", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b4d47b0a38eceda5aa8d5d600d783d293d24cb07", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "376c56ad73e952585cea0245e69119235adffbe7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "284e443b430b7d4085cc6352008ffca2d77193b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6625e4eded9b1b09dd6abe6421423c20495f0e08", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be9d76f5fa707ced7bc7afd7209a59125134f175", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7478f0fae59768be1370e619dbb271c49a39e787", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b281d1b6efbd0c7def72186761cfc080807c7876", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "200acaa6929a418fe8517e3420b89bbdeac893a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "287d70e21163b0916ffb8a707a899c8bccd65275", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fca75102fc448414631c66aada891531733035eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0a4defcc66ce0f878446eed0adf1a01885296640", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "90c78b30fcde62e6904b803f4e8ed327794461ad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76e711c80a8637a42792f8b79d291dc9b0bc7636", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a52f73ed4a8b1d5364d3e58fb8b24a64ae56159", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9df1e273f5e82e66df3d1c4e6830f9ba798e2857", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1ed672468edee07fd84abd93f33234f556bd137d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a6c2663a3a4f1e32621abc74a90af3555fef276c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11648bb7f955b8c9412966be194ede0b86a92c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10a8ef488dd24a5bdf99a12fbbed31e81b705b0f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a2fd5451fdfed98795d1125b5f0eb2677dabc539", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89f5786a6d06dc07b653ebb8784df60bfabfdd0b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6ca69e46b960dc852c58989785d05db08b00a21", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "665f6022ba8122bc6e89173deb277af8752a48f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "660cce14b242b71fe33e80186c5eb3aecbdb0f11", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45a6f125d8db239914d35bb37a10807d20fa3582", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "183bffdb31ef479bc9c4746b19afe5463d7b6a56", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da58775217ab42bc10d0c80f04f912a941968899", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ebd4d9829c937e62089d957a09dcc04ab3a207eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3e054fc6e627b93e509e7400ed7562b768df941d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a90a34206d6bf47e878802729346bcf51f65ab8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3f27ae60180896eb37d86e13bbc9775422dde78", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "579ea1fe2c5a79146a2fe27e061b1ae96757d032", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7ef579fe9b5067c70fbdceb0d6077a22ff28690f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50e0981316d8ebf3d4407d72058b5e99b0fdbbc5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfbc151dd0601eaade814cdd556ddb06e26d2e72", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c8eec2449f38068ad22fe2bf94fe683240b3add0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "35001807a7565914cca399be133e494b92f01279", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd85f266321966af88dbce51a9b86b4779cb865e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "48c152b9fc9d6a972eb496faecf6ce39d8e2a9fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd792758c3884d5480ccfcacea1df30f89e55ed4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6216d94520e80cb744e6762d42ac72a9effae516", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0ebb7db181b54cb0d41e4985031093b87d9c2443", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa56a9f31929d2b2cace1047d0f4c4a11840b23d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "54563fa30aeaed04aa788d59a3d3f4eb24c1b005", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "825e949aedfd346a3a749d20fda073ee4c3e7037", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ead04f50ab723ed51d547d1235c678579e957de", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5f83f28538c5f0a20169886d733f10f36b17cd24", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "280cb145eefa0714305b06a8a3b723b4809c4f88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e223d6b6301d06e893fba7fdfae89d6e4fd70d84", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce9bf290f85b6605367c8eec7a250fb9de426d6e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ad9f5b4f9038539f040e56ca7a8d4301fa184940", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2072bac424286d44c31d08c207896a66fac6feec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "272b81be1e3e9b316043e11aaa25df28178ea2b5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a88d86d248e123818aa1da1f4bd67c1c3509d609", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2fc265c9776e7192b998865fd2b88493c7674d63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b18ffb395f76bae9562a5a95096251ff287eb487", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7a811bde0f76f7fd770621101c059f6ec9f315a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "859cfd9ce1c745a47af2e17f28e9beaf4a7cd1aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aeab2c323fa24bc426c410a3a926296f97f95e21", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e350185e60a947062e752b8fbe2042283d78919", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a4241c4c97e3766972646f17f48a469ded2d7f8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fba6c4cac42a740f0aa2c837ba94e43aa2fb074f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "981087eb1114d5a759c4b0a880b396af25b82e99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "94e94ab6bd2fa036273ba57e7542353205adae91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "604280b647d738c29eeb1eb7e23d469c684d9692", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "56be0954a64ea5f3ec28f304987c67546f5213a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d813780e59ebc7e7ea9284e4344727f619167456", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e545b08b224344500d89abb6d49408ef3d2d3e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5fda4b9132f19fb9010a1bc5f97175fa9d39014", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c787baf986d9a2a0fd62c89c0107d4f913f3dc44", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad87872e3252025352fb98f15c972c152f5ed837", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "80f4578dc4b1039b6329ed8cd3253dd1807167a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4441a8598017dca1c23117d4c8b99c00b60b371", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "229350d2e651905204d1a3d4d20bbd61c41f39d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "017a988e9bc58921ac9b64db1ad78e619716b340", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "77803f8c9c80989846b295acfbb9f27f216651fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0071bc30a6fd190253db802fc3a79fa1abc58e03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "88c56121342b365b3501d8157c25995f3286127a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eade9fef89579bfd53255a99cc9374681782cc73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "95a49e7c187f6c932aa2dade5f69985e0b019389", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f7803dc55a86d70be599b9cc7c5c35caa2f04c25", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6b84cbaed14bc783ff4fe0550085386b3998ff18", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a7062c5d915212f30f3dab1a1d324eb4746ba2ac", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f52bf90840e34895ac5623ff69cb5829f6f0a82f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1082bccccf760d6ab43f029cb1607a8ccb83cecc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "00309f8b25c05bded1f44af748ded07025d80f92", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ac74f74c496cace98bdf9eab88ea993ae66568e5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0565a6ea12b5a2a48e0f52dd7e93fd35aaacd852", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "82d39de6e997e8935d9c53143f6b648692ed5b03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f3879bcf676cbaef448d854d2b5d5b5ef7aaec08", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d71218c23f7298f291acf956c96e81dbc15f9ae5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bb6fef2192691510b8e5c341d33085864db19cf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f95b3f0ac8ee1cb85e8a793bd71cf704d3dc2da6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dd6017f3bef9dcf7060d2b385629c13955343a97", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cd35e6d6d3f996c1cc7d936e25387ed7ba43f7f9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6c399454c5d9395f22c299bd1d47851e07c2540c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "02f8fe32c8bce658e2a1da2b1b43d3e5b354b39b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "670e2f4f537a28ffaecf45cfaa50f92220f78bdc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ee9cf1b70dfa503d0b170a1c0e74937b605179f0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8c529c02bce2841ad451315dac156bb5b2789abb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bcb3980e326dc1ee6c98cfbc4046edc2b5d6c06d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b3257f052ad53fb554305ba743ede0abaf0ee6c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9831aeecb24f52ddf82e9fe45e649b3c6e6357bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5176c3bebbc28cc4495acf6a187806576bef0890", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c0a9107f5657da183f9f6d3534f62a5f950e2bc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "932423773c2b904d0df4f71e33fe16b27e6c295d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d37cfb8a3a4da0196b313e3e0f35a921df2fa179", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ccefc01e110fead40dd8a27ac1074b14ee35bfa0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a53303bb59924f9df6d6bcd4643cbbcd52b3944", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "42086a9f29d90a0069de86f64042ae0f0ec72488", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed5dce2baf55f0c27a85497e6a0f02f6aa921544", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "128e23a13c3642ee0c53c45b0f99651ae9fd9a83", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "43ae7715b8655b02156747616ede4beaaa00b0c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4790dc14f12f050b6eb043105a889398112df4a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b7a8a8d80ac0c4415d19dee90826d2b80a4872f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6b2ba2c618122b614f6e3b53f7c651b704b3de17", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0ec28e8df1af4a3402ad5620c02d2448ff396e91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "651e2ba9aaad5ae533f44dcc4619e64aa71fb5dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e1b9bee74e8ca6007bed628c3a7c1d974e923b3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3c8a2b849b3ae013e4ef41d144cfe62415344ef", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a52fb6c19ef3235e10d9634617201bff8c8c9969", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7b94dc4461126e5e49248bfe5296720a5b4b3f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd7711e1b533bf770b658048e0a5922c356dd5a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d05112ebd1fba1efeb0163363e3f655aa4c4135b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "34ef4cca6ae727677d50f2a2c5fbb041d5dfb79f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed755bb0d4e16b4ddf2aa5be95476550277c983f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f7015487347c30ef34efade1eba11baa1b3aeac2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8c1f5568b1351c4f54b9ee5150be841645f7dc43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5d5099432eec5e8c6bc92783d2c94496c0cd2a74", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "632f5c1b31f631ee57ed5a0cbaf3ff39b62d6260", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0fdb0fd390e35bfb004fccdeedb83a77121c606a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b12b76bf3d7f74da43b7ff4c23b4072f4abaa0c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a7caa76f7a43190a80168bf634f3a9427577d679", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aab12667ffdae64e376cce3192a5047c741d00c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d56c054bd516b618a1c9ea5bfa3d0750cec2ce9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a08b1040acd3a12e70a2274b012f8c4f74913f7d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1dcc22b1116daf6dfa9799995ddafa665fa2e07a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "34864317dbbcd682c06aeadcf54a03941a17c772", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a91964f3b47d2fa49e4d40b13ea78313389aac14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f7ada4f272d97e988996d1a1531770cb9c31e860", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "addf3637a6f8137dcd8629c451f52d386814feda", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d8e6465844941211530633a696b85b4cb25aa588", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7bed72563da75f07ca5c47c2c0be951acdff9386", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0eb612f37fd3b75759bee17bde9f088bdc9426c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6c6f093df04bb7973429ce9924d0e6d2b39f1a3d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b3908f824954c6eaa9fc8a548841eeb8c4a24518", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d939a7b210cdd6094fb400d67ac29b76f92c92c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5419272485a91d5da052b88a1cf5d71943a9323c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0b56fba245c7cbce409e145bd4e1436e5ba04f63", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11c0dae0877b626a5e0709a8d98b2dc79814ae8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9beeefaeeb535e780fb094c593479dde6023cb31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2035c0902213fefa41be9c31f0877ecaf0f1823d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "15da9afc29a3cf0ca23b4981bc8953d474704f54", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1ab4f37aab9152bff243e20611785f369af64352", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9432679f702731bef16c314e8180e18656c1695", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af7b807684241161bf6c7e76f990b8069dbccac4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e0d09a348c085e48387642c596a8e975bed8a844", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d1bce2e4f220f17c8cdb7f5d8352be0f4d0d564", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71b7f8095dea5c9e86081460e0cfdb0bfc9f553d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58b001025e4991cbeb646363043694140b24a784", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3295163385dd939b49ef626c7c921ad1e76dfe88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b02ff5aa69b8b09079031efc44b89bcf018e194e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5690f8eaf4db52984179082cd754c43b17ba1ac2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3cf4921291e1ac0926f7043994ac7edde1f10488", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c4fcc34a6cc8c070ffa3308804429c2f5e728b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f844f680ffdfc6f7a1a17a85cbb6fcfa4dc35d65", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5ed260e569239e092be82ae13939882c68476ce0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12f2487b5b0a85a7f9323b3a307486712e5c2b7c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a9bc835314529b4fa6824d83cfeec78caeb00c9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a692c5f08e80c07fa473eb76924d225bc6837e4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "29430398b2f99c4e5e8fa2bd5565ef1f562f8e01", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0481242196f46f72d77b6442b4513d3720cde2e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6fa996275d6d9fdb2a41e096a83e2e8db3711fb6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7c4a22bb94d853abc2793c5d455bcf4b97c09c1c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa641959d856821a02c24b57e7bc886001f59ab2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "97f02a4ded3dcd72a763cf559da7ef43e2c02c4c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6dc7c24867d7840fe6a61627e30cf7901d32aad0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db91c60a6b7cef3b54517c9b38705201d41acc03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cadba66e32fd21a3422b92f57a5bc5a19a480c27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0034d20b4151b9a0c943ad154efaea7a79ea858", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "28f23525c72f9b3fc593c5ccb519ad7163d69742", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "474a9801e4022f9944b59e393abd5e1cdbc9cd45", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "210eb72cda27b7aec0ae9003f3c5ac45875aa26c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "780599b565a560dea68c7dedba527b5ea350bfc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1c1e5f4af114760a772c742e7dc39fdf1f45b5ff", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "967d7de042a2edbdabf5448ac4f93d17c7ccb91d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70c752b60c64bfd0be17cb6397fe184199682957", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91191ad27028c1e9e0ab1dba0df1e43aa055c895", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "07526bfe3957d116894c48b9e3cc20914a53afa2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c88a67113b6d64cfffcd78dc63f038c9ba848309", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ebcded0f5c56c6b34dd39375ce06092ecd2dc6fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f380eb5c2bc573fa7f22afe591f2cc2d2864f286", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a819958ab27fffaae1f0c26a4f2ccf2d99bc2bda", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2430017131f01db3c5180706333f5b98f6752d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c25a4f7c309f41d2fb2aa81df3ff75a83be0c43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad80a3c84ccd69d6f91c25990163c07d00fdc5c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "834d0aaa6bb8bc3f434883eccee0392ad6fb22ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed305f5c8495fa5cc6f7a35adfed091c3cbf6001", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6ec9d73e310e0ff0b900e8f15dada348563dd528", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5397d3b8f2fdac7578b8b6702f4c6797a7c9be62", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bd0d9b17a3c8cb959949f64fd03c975ea71a2898", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "02ed597d19c749b5b15de7a07d5925aa25292b79", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e61142ab3b65c48e257bce860d7654fa7864b6ba", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3db1c1d9a1266b44ffc036f53a47c4e0458a4e36", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "219e385e5bb4966fd89a9e431e1383405505ed68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7874c880bc511878169c130d413d19c7d67c1d99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "459d63fe949b3d85410a5b876f3a25649c669bf8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c823acced4efa79c7ce7dae2a5435bc5751dba0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa45721333e24222ab958d600de4e1a661889f8d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "493abbd462a9a3e05211ac551ae3122f7952f3df", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3ec2e4d16254b51c0fad4766edd76bd6c64a44c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "edc0a3e6618ac920a943b97dd7a27dba4c706834", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9e80fd7935eba39258678afdcba4ff4f3e46be6d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "31b92ec0b4fb2f12361beb58834a700c9598b24d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d5c5bee4c36329923e77ca1e897240e27c09a2d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f4f49bdb293e17f1f186a8f604c4d039ac0659f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d0413bb4f6dea20cea787e9e3ddcafa8194bd3fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0bcefe6b6bac3bfdf55747c3618aa1b9e552a926", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6e8d269d5164a3491b7cef2f679da2e0a5dc4bc1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a4548aee40eb57d7d69d9997f945d97602048ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4ab798de581bb89e72748c55ff356d93374f32d1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "82b629581bdf27f49304f3b9f3caefe54d07d01a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00fbdc620eaea332861bace2e5d254e5c4feea28", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3a3974efafab3c6aca8f5f3718950d2e39956b43", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8b49f43a0b36d17c54d08ec5c10a3963346179f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f8680cfd2a5e42fe662708a4ace5ef9df9341a94", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c15818522cc7f8ab8be306f9dc95e34cc93c5c70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d82672eaa3ab2fec8c4374a09373cc71aaf09036", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ccde5dfe51bcde29e88e183dd24c546f323d166d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "373ac705bf5bf3731a8f629e8ce97fb89d2f3c99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "964f9f63a61d003bbd153a4e5eb44767d77691a6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0636a07c2afaaea2a75518622868c95b82f3df7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "45117cfafbf1246455102041190cec2edf1ec267", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de82749a33a7239b0516a001131488d733ab6206", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "62e26872d491c51200dcfd10488d8a8034bf176c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2a651383fd5106a149caf67ed618b1474b70404f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c6b61a28890f8cf39b7206d92f297f27918095d7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "339099f36f39ccb091b9d145c887687586f309aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fae1318edc938f7e9e6aef368a2bdf2a2c02e395", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b36eeca07874824503ddc028af9a9f6d88055c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b0d2347da62f5e4fc064a850a354da0099d6d31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b8e30d18e4e3f5ab76e0b46f45f812701cc82685", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c7947e4c46b1cbc8278421b00434f615e5ff9b6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b82954d9ff4595bf2c5ab2333387a1ea91e66c0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "462378d6d245cac14627eba1098b7383979df4a9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f51c17d1e1a78ae5731ecb0e13cf2494b8938c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b599a979b784fbe3e3dac0cae3a1aaa9049cd74f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5c636cf57598bd1c080009a4e950aeaaf7eff23", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2d31709c8cbc1b6445f486e52d3d27463933a95e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7e6d3dc3ff269a24333003a694eccb10329892a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c0d56cd31b6901e918e4b2e64fda4128026a02cf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "15e9e12e0b81f234f2e7e5b09c44ed33796376e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1be2cbad3debaa7a1775c4c72dd5355bba0a8f93", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4e3d419e713cd912e26083be6610d2b39c67aacd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "436e661fe845fdb63d9ea991cd1056fe8e08f484", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0068850ba78a7b8915994e9ec1556a373079501b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e402b29e657d81ca5c96216ba7692eaeec30de27", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "85b6455e2c5a5e56e79ac7132a62ea6d463f9bc8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acfbb37fd82727b4b5c0ece0b51d16d6dcfa5a0d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "50d18ceb935abc0e73629ed9c8c7344013957510", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "844ae5271a6a1c7e5c2c2083732c58a4d6f54bed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7a865e5d1809cbc2d5420b6c4e57eb790c60d68", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25c084636ddc2f1bc8b6931c06efdc36dbe73f15", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4d17dc943fe735c1cb72d7f88ba697f782b706a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "56d8d24888fe44b9adf06b542802ffa011cf9a09", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5b07d210939197aa830d922061c784e07a49c830", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7233f18705234aa1ab369aa2c1053afb57cd7bc0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0e4e34a17d90d6d03cb4f13e2eb90c9e979ddfd4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e0821607b6175efe88ec9260c40b65396d1455aa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3fdc40d3137494fc1d7c171eeb5fedd44d64fb0a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b139da1dab08c143fdc64ad2b782004b16856b9f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6aa0066e5dc794c44f6abb7d1d633307d1d200ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "db1dc86eb0bba8e0e8cc4a3941ee0e300ec5de2d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da1b83d0dcc9f714ba31abdb814407338971cb83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32e71124e06f26b829c4a1f4fbc848733ebcd8cc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92533b03ff791067f0ea0c2821016d7b92ed5a39", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "743a3902f39ac0b6a5e4a4c6ce8194a7cfad957b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "297941e9aa2e8cd23707ba6d13644abee92d9b86", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e50076e68eb0deda15427484220fba501cae5c7c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2f9a257e4c197067492e014aea614f717227aed9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3851d748724fe49e3dbb2d6c21ed513437dbf548", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f6cc7c3f64c36330866e376b0775b4a3e1914060", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b065a603da89b1840fa99c29815b474fd79105be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6870b31de1a683afdce2ffc42b53e3b953072efd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "926b5d303cc80ddbd34e7ebcfbbbbc14a3b61e53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "11b8ea9769b8ae9b5dc1d90481bfada4490d0b45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "95c0505eef8f6e0df538c69b72dc6e103e43df38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24457df22d9d79886a0ae37b795995c052d5084e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fbef4f1cf7c70bd1cfcb9ba670a658b85ba7f351", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "79baa1f64bbd1cbba2726b7af51822b4781266cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1e48d4f1b5676f678aa00627f8c5e3f178ab185a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7221ec0353d38055be2407dfdd14d1c1dc0aa2d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ceae0b0201e939fe999d7878746d5dd944255a8c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cb93f3f43e7b7bb2a5b539d937cf634b1b650299", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4aa062f683940bc8a7840b0ae38b51c8191d9bb0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "173e8ef1c9f189cd5dea9a3df2c4055152d85203", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "614f844a380673b5ac0a9ff47c19dc31c859662f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "89e67bfddc079fc1ede50dcc42abb3f489717aba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "58eb86aeadb1b44ae09088d6b41795de9f4b4099", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8349e3d5569a4b83b11eb61c3c580837e1003215", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde168373290a8fff0ef2733dbcbf75843fecc88", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b419e788958a34e870c8445ce633ab77103845c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c6d97136b23ed34d42d809f8c7442969024644", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4bf0bd46b42e133a3817d682eb6dd31302de8e13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6a43e39eb3e6161cd107cb25bf0cfc1cb22d1f23", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fa3bf8466faa071fbe6552fc16935c8c57c701f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "230a4a9f05ca30cebc6732ac6bec24d1f26da13e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26298f6624cfde73db1d598b34a315e17cc79e20", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "193e597212978cf521513653b38e496a61ddf454", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03f1be8ab32c214a6996c689015400ba4c0926e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e299bf2679af363be777f4d79f6caab798c0493f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84f8e28b4d162f33396e78af5474c4f3a852a488", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a7cbf4da11645a85ff7ecd1d934511fee0b79c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "64f42b26f74a51fb45d5f6010dea37c17bdb62e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "82e448bc5adc2e81693fcd1c2495b95d82be2330", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e804ad660614d1ab67a9fd98f09db05faf681817", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cfa0d535fe0424e5307799fcb9d075a409de579", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "679a399dbd15bc347ced68d6c05ab51668f26c51", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c9c1988d0176ed9e534c6e6fe81dc8766cfe0b7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "eeb948dc8aac468a4b0b032e8fd1b20fc2721c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "984931517b0a0c14344155cf799020315d117635", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f145ba1216cd10a782fc87b8766b3d65303f30a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f29a51854456d61f71e1917e626501520e792787", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "44831ed1342ce4f5856f5b55b40caafe81f6a4d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ca56e26fbe760b669fcbe36506e039325a803a97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0034cb5fe86017b41cfeb88980abade1bb26c71f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "048fcc6b144605b59d8dd6eee00a9251b630105e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f7448c778731201ed513ed77ddcda635cad3d66b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bfcc6afe54b17eed6436278c6ab0a66345e3c571", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4f4352f686b4a825be8fb8c60d885d2721b659e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "293843153fb81b3b1779a78fb9b6a29177627a5a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6a557950bafce4b812dcf5b6e74877f6119518de", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4ea0a2013b13d2841b68887a19e0ea04a6d16c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1df51717b9f361a8df67b8da5d687004037f7373", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c62914234596ec86b020febfbfa16618113e764a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7c0fee0541f6d8a7ceca0d34a2b85087079289ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a614323d414609ef0d52b2c46d545c856eb4051", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a16387ee29f95d53b1d7750afb62b5f5c711419f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e457e3dd97b299e0c6baae61fa6957df70a2346", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bf8d6dfdd6c9e0fdc3b748bce4fb0b77c5d3852b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c84fe348e3d11a25a4e8d9a4d8e91a9a884244d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "970e453082f0f110f83213a8349f644018528c70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f684b54121691b75d3e955b1aca496b3e2f8799f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dee1ea1516d25c9eae9fac05bc073fc1dd5c36dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a327abf0b004425693e0b0152005975314596a97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebdd9a923a80cce7684c32f41d0f530eaa4eba2a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f2c99e616c460daafeba284a1b35a2ae189874d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4b0eb7a6efc4fe5948cd623bef14618b34157209", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ec35bcf8fb86d4646becd40cb414997f1b5f4553", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b4e2a503e7e628418880d79c086ff9105319bdae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "924c146fde93c468df123dc2cf8dbb2f411a3eef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "889a137e5832765b20d5ce818d3e7ce695b483d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98bc0946ad8e64c2b5046d74b5c09716aa75366a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cafce887a5f972db5c912f17ffec8ba1137ab88e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "052fddac0191ab52b8b3255d5afac3f54f5de9f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d5b8261a14c45249e2b048bb21a84c091493959", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "12629472bb42c0a0496515d5d14c903b2bbc4d35", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "45a4692d8deb7f890032799ff98410ad69797ebe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3a53112d9b6db17e0f7ffee62d53e16025866da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12de68555ace53e66a79b1d13be462cf87bc7ef4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d95217e700cebcc54464de7722498dc8b74e85e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6903ad2a87541c964fe70cde72373f66358576c8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "555d7dfb493ac839fae1ff6c15eeb37953025974", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d74283fb7e91438a5b6d6413dbab9d36aa97d1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42390480d84ecda84f386bab1efe403dc4a96c38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f765476564a8e2bd05d48331200aa3b15fa195dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41ae8e6ad21b549611d1ad11109d718a6721dd24", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d80d7c9913803a5ab09fa5c647b335188609eb70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cc697ec09347c5201b619d0d09c2155d44df1914", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "df5b45af79fa9034387a1068be2f50fbcf3d9615", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a0767abedcb0e374efecb578830047db46e448a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9f8887414270bbcb65a26ebb3594269961f5f4d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0ef6ba376f228f3fed444ac31b71053834c14548", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ab5939b3bf37e542b6ab38c5e0411a5cc7441da0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "303cdd4d9ba4adefdc4e750ccf567b8ac9114382", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4bed10ab6b216e4f36618eda4ac5eb61fc956da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1648dbe841bd58f8e0878b0f41dc3e600ce2e0ab", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f4453cc06595fb90fc73c61e48f6a57ec13e404d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00d2cb98cb712ef75083f290b3705c42520d9345", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "522af4509ad708e07cb0915abb7f107bd964f23d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b69d6a9efc7ab48672c5e80a91e9e19d49077642", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "383f8b81d926841e5ba9f1e8f373230283520cb5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb4c3fd060b5560a6a71ce2f3c2f9ae1f3062777", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "534f6bf2ec42bb072d50962dafd6263128ffd0c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3b88ed282506834b199d34fa926fa17181a5c50", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "78baf51e8f19979b319e68fb2195f63260052788", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4e6c2fc9b7f53b8e905bb9c2ec6bbcbbd70bc8f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58d8fb6dec2e753d3719706008af5eb3898ace96", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2540683c194617f770f907e1a3c38cb5b7c008a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9ce221f4b21d7b501efe2128b79704adb3d97e95", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ae475f550cc4a3f717c77a1d9cd5a7d5d23b955", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4a8ce8cfc83f1d87733f6c55351e0fa0fb3e2cf9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "659f758085737e268a2d5df3c3e67022e5324a82", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "008945ebf5771ab1a970ce064175ef7f47a3349c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "18b1c3705a7f621b2566fdf9658ebcefc42d297e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7e704cb7630e0c5d5491fb659963415e455e89f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "602312a4c005e7f3fd3bf4e975fb097d3f1e91c6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c31767232d2f42cde9029ffdffd41ade0867dc66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "73c9b0981bc3cc5610c7ac2e85f51ffbf51c43d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e070dd6c556de1dde2d11c3cdda719c3a014b36c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59025840a0c8d845a52b372eeaeaba180891d122", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "16957ec12312ec64ef74a68255f28f35283d7aa6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ca68021baa50da4c2c627bf124f5f76887c6cfc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26d65bfc817aa64a77919923563c9bc5a12060a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "006eda3e26d2fc1d92fffc40c8a56cd868cd0b09", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "407db691daf348e87acdfc20c12d31257a713146", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d40e847936fc83a512abd4276f2ff30b9cfc224c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eefcbbadf1081db667aa82a1e1d263da1b567435", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde98a5fc7a15154c303c696151e09aee5f6792d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e813bd6081a74141c30867f581e14e7a9e04f526", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d91afea8edb601dada038098c1544c05d2d36df5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c21c0d0e5ee87bba087f7a6616c303b5f47164d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1a448549a175b15a4b69abc6ad5aa3fc18a2b275", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86a69ca50e2a74355c457f84fd7241cdde04d46d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7738ef48657c1671adb4547bb8c075ad93530098", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a3da9a6c7fe42da268d90f2be6265dcca785c6d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "708073c0ac1b97dce5d605e5d9efeded7a092b1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "194b87bbe36406f182720241f549c0c00cc6fa2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0e1505d0a28dae145f18404ae590ea2d60450c76", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "aecbe6da4c804e636393943bb7e0755874840792", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e4c15e3e17e46f40f508010541c7d7c2ae6c3de0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f89a980ce4c32d1a171d3b29c01f86ef45dccc1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9b72700a9f3e7decb0cf12dd351ab4f1248975fa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f344b2ec896ddf100a1c7367b6570825d14fbe5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "96e16da7f75972996e1810ccf3679f1399d04a34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e1bccbaffcf74a2c07f4d59c456ddf6de453b739", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "331d593886d69c1281b0f1c8a050b98c3e984a96", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "093a618a85ab2c324dd580297cfa1a29f8d82974", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "44e6cd67172dce6ad9a50c2c7eca3f4504b9aa47", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "188f1df87400640bc99f7853fd8c7ac60fa0cbe4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7c2e8d9f11401478fad16b21a9643b23cdb2819", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "02d3e25eb0ba6842c38ec0fc6fbfdfce26e6a357", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a457977bd101dc4e2fa95097bfda117dfb61c3a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7d786eeed501818c6e168e6f84f2c2280b9e4eb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "30f74b7273812d038fe2514076d35e8ed43a55ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c743e3133cea0b1be80ea7a32ee94c90fcecdfc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6ca5040606b5edb7c78dd8f475eeb88861ea9da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a7bc5374515f5e80744cf91859c2c8c90039d3f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c8e45bde3138ab398f4729ebf79c727cd3878d7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e063894f01812381de61b8063092e708532a9c54", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3697420da1b58e5524edb25da3c484127e34f48d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "409e721aeab4151a70996ae7d060b78176d8e8cb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4d1de90d5fab7d759d8291a216658380c216d61d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "94fb1205bec5160e080327123db0af950c024f18", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b9108342f043a4c68edfe9e0fb59ef3b69483a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3db072ce7fbfaf879a07b798feed672a5dbfbba6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e74650d64b3783e22e5602b0b6575634f3bd0be5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "711ca4efff0120fc14ebaf5fc2643dec8abc00d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3489c478c89a34a2fe858506e0b2449725374702", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a04f3477743c3b38a2198135fd06761f14e646ff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ca9622dc42c1481287ef19c6e279a9447d7f61b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f317389ba5780ed79a7b975363d36a4541279097", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "096ac8af03c30cf8eca32b07068fe57eb210814f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ee61c9246364007b363e4a8a79ec82a4d949a57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b175769fbc3677acc79a1033076812d950cf4aa5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "400d7485900e61a826f3cb6248441040f74aa1a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38f76bc973167ce751602d408343f9715f9aa578", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d249a7d6e143e78a24c191a6e9bb2313ba07180", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4b0eac029b846d4de41f6baf1e8e088c3a9d63ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "baafd46592ebe4b8a2b41e5054071b7e29bd545d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38d07fdd74a80182b41b4208dc799f95e641ddbb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "13645f1b6031f073d96931a9d593aab2c2a89cda", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "288cb5e615013717617db2e996951f59a10fce0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3fde324e9b715e1607963a90f8ff8202ab8967f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a4ea234999ded589beff5bbcbf8bd5c76ad6cbe1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8aa567e3a0bfdbe917adc298e29c9a86c3e53224", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ac52dd2bb34f50c4062f4f97bf7e3d7c09d25422", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1e4b6720240db3c209764691382050c7268aefcb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eaf9009a0c66d63037640e74f7bc458879d2a835", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9dda6fd6abca5858d7a52ea6b8ea372c23aadac8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "314291c7e2d479476d02f17d5d23b0166ce50890", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4623821f023c45b7f44682d8870abfd134a67f6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4bf506f12e8cac2ed5df92a535da636e014a92f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7932253cd2e7e01bbf0e816e0f41730175cd76d4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0d4b3df557d04de9b9327834012fa52235443e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3209e11b0510fe51e2fcc109d048954a242885a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ee1fc009f984559ee057e8a1c6a430ab72d2f4ff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ae37902c5fdca4dd410723fec993dcb60768e64a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d233df0b61559b035f9817bdead36f6c4af80211", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b8a0d8622fb8a691f11a621f2bb3892334d9f14", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "feb660995429be2ebe98ccb17962513054085cf1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7c663a889237bc437ad8dbaf78d59b997debe4cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5eeeeff88c8419458328da5e21d833dab0e0d8d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8f0a3d75e1b2a5f4a8c704760c5af99894b81ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0fa7ebd4ee6223d9cd9bde8af8fa343cab7c0c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fbd2e61cdf442e27904c1e7595c152bd3a2020f4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4e02eedaf2e569a70f7e6094dd552daf36a039b5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0338370e2a883710d5f72fd622ebf50a188e0d43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b37dbadecdd9175a81d895e8a7b64d31f935e66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "38edf5ab3263014cb8b46841a8256198ed48c551", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9fb0e43e084846c9f76b13a0ea45dce19914f2b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6283e9b5bda6fc781904f816c788c231f5f28240", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "82983e0b1a09eae9eee25877a23ae81243a4f645", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c02efd205871c879d467aae27efd63427288dfc5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22904e4546a37200c4f77c73978855b7d361d61f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6a2e9a84bbc25d1f7c8957ac500b17afde5d72e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f09123d1ce65fdc16d617416cfcdfe2d599e4774", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "065d9f3f4597e55edfda77e0ecdfbc8aa7461a1a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "73e2ac1a97259e50d54f8402bb479549549a2587", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb00e78cebb562f6c8711f6c57b8cdced90776e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c0c7f7989d42112e8ecd287bb7c5567a0b01c13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5992109517edf507b087822aa059c61a9269b836", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "823ee96cd78d6b25bc0924a6fc236406ce996df4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c89af936bf7b5e777fd501e37f8af6370c2bef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "91a5bf221474c1733f4527148f64710904042963", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2f4bb3488afccf418573c10620ccaa0e4c6c6eec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "37dfa7fe1a0300bd78034764a006b885179faba1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0f8dfb63ab3de1608f1b0fb3ed74564545b540bd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "47764ad5b72482910cb155fe07fe822969db83c2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "addbd0187cc7f8e011d8d29645b09a2ef7b9e7ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dba34c14974782fabdc17e5fbc0faaa0aa62b64", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71b73440a7b36213c0de838d071e2986ce81be1c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b79b4d6150cef96b833d3a8753726290573ada5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1097c38c6c9f9033ea502caf0954bedfa0c94ea5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "203d0dc5bc09c0498870b5940b2b7e8a24736649", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0f80cb70887baea11a5caef94f4ffb7118de6d80", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "018be153bd961e3ff35345c4593bab1da806a466", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7363a09edd1fb3fca70c57f0b06c1fa38da56638", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6af0f03da1d8c3690e3505614db919c3fd027ee1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a277fceb40d8442f48fd281dd578b14d61e94d34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "567f05d80c0e1ea2b7f93b91578d81137f9bcda6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "138ac6b7c09297f43acf33decaf6b9f96d00bbe6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "51dd941ee02bb1c19c3a9018675be26d3a783f1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2da27e2502e31f6597446bff5288ee1b7b3589f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5c39f3f2458004c7b55d9829dac125ae3f9d758e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9fb9f1ba81ae9eeb7e69424bf3c6a91193f55c94", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41b7885e06fad9447bac193c3176e3e696d73e71", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "98fb61ab66089a958c1aa158a33aae96749a89bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "84ff00adef1d65d868be933f6b53babeb6570efc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "df06239e3938991f062041c207110cbaa32173ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1f3e171ec7840e992456bd23e6f525ec5fb9d8c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f2d4df9c8ae632d0675552fb4729584c461348df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f11179e2b7fecd78b101bc760143f41504acc903", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f85f78c5a8dddb612ab41ca03e736296334322b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "88b851ef2ea690d62402ae2edb8ae05f1f0e1d05", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5ac0e1b6b2219ab07bf56e8bc91a615db0ea9c5e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb86a5541e233311fc8fcbd5f4b299f41411c17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ed0fd8008ecc7eccff18bf9b59a3aed3cfdbd08c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57d7ad3952af59f4e32e531dfe9875e1400b7928", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d1420bdf3e6d46d997c62abf0b3a5fbbce38e633", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8806b8162acae6192ee019003e3141f0caf0e2f1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6d248c70586e9ec1842f63035668c16a07bdd801", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92b54d0f5f3c54bc720a6ea97cc26869397fd993", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0013174c4b5f4cabb94b818aa9d11f5b2014d732", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "14e07a71ad4efad431b14e225b67f5a18af77d93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "94c99d1611d1db479bdcf50bf0a4ce4e4d633c18", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f2df18fb512f34b2dc3a77d947ca8d1ebc8a64b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc42af735c6081551f975a41c31b1eaaa4039f2b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1c836cf5ec12378ee0b3dfdf9feb58c2b302fed8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c29fc857eb18377f0efa60bc84a706befe846c40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "49ad8b375ed60c867b8b3361c35e489798271a5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48a2b6cf78144175ba5f6963349111a1a2cea541", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9827a915be1f9f4a3e0ae61126ac7c1a34b190c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b25fc24754fa3fe634b077ff121c69a438632c7f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53b74ac0333c274fa07bc4636dc6a0cc4ea69774", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3b3dfcaca1d036ce28a5152c0724fa8e850d1041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "68fd82a22fe252bcdb7d18827559d15cebe58f40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "68b474b21d963619676aa1183bc35987669e2536", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "999fe51cf80857e6ba5480d3859558d871888614", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "039a2aecd2cf3a0adc31d17786b7717b0fd1407c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8ee9b2e44907cacb35af1290a1486d536fd657c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7fdf544e5c4370824398959c935dfaedd2b79bbe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cca77f0d5a3c9165af31885e389a6e3a55f4af57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e1ecdc21ed8e1fdf1955938ede3740014f08003", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "132f0a94e76aa03d0a39ef67d137876144299718", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85860e1e11eab5cb14ac212defb6357beda2e0e7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8a3dad5482a31bba2ec22da4c2d06e2cc99a2eef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2b57f20f5c4e0880f47b0a85b6b306cd43b2b30", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "91b1e48cd006acad781df3b08a1631debb549a63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c9a8d6a11b732b75ecca3116ba298fdb8e240ad6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fcb4f96db91249d3eb5456d3d3a0d82847592b30", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4732c8942e86d0013eafc8625cdbcb4a6083db71", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1a607481d17b6abc0bb8cf4cc1c8bef5e6422e0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "44f077fa1b67f7fd84e7e27ca176cc838d852b2f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "448ae143fb32410adda58f094b17c263634e4477", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c5fd17d735280e239b60dd0d11aa291d65103919", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5037c06c8857debbff930b98f79a0e6b77ba015", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "abdb84585614b7a963c7e65a49921f2f1d44ce5d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "843eae7b49d6ddc9294487f55d364a1c54afacfd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "deb0a96e75ab804025269c74c99242d5e4ef91c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31ec5d361129e6728a74002912109190b76dbe1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a5181256e7bd35d86f737a022254eacb69136d34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0de6f90544709e20e8b4f3a7c5c6ea6298336bc2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "485abd56a66788469ebb63a8fae4da5257e1e775", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e05b2a621b8976e4b58b0b987db40273105e19d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c854d15b09f5c662637084c88330a4629c8acf4e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e9e990c5684d9383b9e752511a9d5f1c85ddac08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b7eec0d0f55dfda10ed3eb7cedf296b643facf7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fc19dfda201ddfccfcb9cd41c2c69082038ab063", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d14e2df1c69807460ae4db8452813aaac32465da", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2a9501895727d022508609ce09bf88aff3d1875c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8837a6967432426766b5c4d9c703fd60409efa56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "41d433864ea15aa1c7b909461b8e872ddaf00b0e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a917cd2f72f725021e09754b579d5c15cc8dc18e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4902b6a67d371e68bfb65b0af8e96da924e6c89c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "79281e9cfe75d3103b2d50dfda5344999f15c6be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec9d7be11b87a6f7ce2587337f834ab5ee9cce3c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3c13bca25d6cfa5418d5f243c107fa6d4ee8ff90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df2ccd716a7fa55ddf9b21f991c971d86465f54a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4c97066800bfb9bf9fd531425888317d8807659f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "40512284098a40eccebabaa59c2ba1b3166d9618", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "641ef46b81e8eee1d5aaaaa0687238ad6388b105", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "363ef01a2db8e7d5bde422bd53d046e3958c9b6b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a940e3c37cff8c175a98f6b56ed2c95e4013905e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4c78244ceaf558355bfd272be94a8a7c737c41a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1b0cda89606c2725a3267f721a04d9db1d4dfcc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cb1e93fda936d9b49808b5532f6c3445ed316c38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5778bb217875e7583b7e75ca133be11b61470ef3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1085f7215034d83af5d0393dbc92b1746a967e0c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7ec1b3f21a1a2904f515c72db544b111ff87327a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0cb6068c2a200cf2bd61833921a02855cadca1b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86068e7fa9fca28a59d1fd7e10768e2793db5c1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b1f1881da2c0a66dc10fb0764cdb90ae5bcf82e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fd4889336642eb1b5c6fbd90d48c869e6ab016d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "025eb81867676752797955ed61694e7e5aaba0b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8fc1fcda3e6bba38ac1823a88dc1c0277e9bd949", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05fbbe98a200b3e9d920f8493f1b0b4907fa1f61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b4f11116c986a9828ccffb69ac7ee2285bdcdc7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9230aba4e41456759fcf7105da4da26e26cefe1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8a87fd3ba3463d020cde67d364f35b9814921773", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "898e7a340c2a1b3e94844476768e8d40f6467d47", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8311c4a69214975c21fb3072818ab9667ac3625d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "56d72715b6d7afd82c686e27570677cddbfc4c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8f5d11ea9506dbb619f42700f1cea044a5fe0844", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "739809721db3f8d721b83972bf0810d481ffb49d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb723ffc22269f8311e882434089e1c6f4195c04", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5e4d69c6927042e6430db2e51271b40e61c5ae5d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9964b1c068da02a9904b7871dfc8dbab9960e80f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5150f512a493902ea4259d15c77f1bdde122e1f5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "462ab0b5e865116ceec973a987a2a881512bab55", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5e87970121e2eebdd0035e45fdc4d4aa4483907a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "675aff8fc69357b0e3fa11a371ec1458d65c5fa1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb7210abc27655ddf486bed051947b34b78530b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ec5e3a79acad7d6f2ffc7de0f2fb825f452d5a17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42f74aa4dfd28faa653359dcf6d4092bc1d7e31a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4902ecdc2a7f5e8274c2e3f0e73dbce66ea35d01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ab43b39f468ac294f7b31ff87a040bda0af8106", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85f721fb85777af313e842262c2c7febba43f851", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d11192c27ca66b1d32c73403b5b368d4b6661e36", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9173e74c71c4cd75846adf917295ee471866cc10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d6091919a4d4bfa2d9df95d5c31ad09e9272596", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b0abd4002e037d048546a282e02f25020e9a5ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ec207081ee5b24f6924f9897cfc1d2d3ae813c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ba80476740bb385471fd1aaf9063b602c8bf564f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef73f824bc2acac5346023c3e5da2ceb9aec1dfb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "65e4c5f73cc7be7aeb3c58b7854751b3610230d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8f30252147ebed2f36790e49ef5e35394831b3bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2ee8d35552d6de58ee2c41b22ca0b51cdff4908", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d9726d3b6069ea839a42e091179df00b4ab7ab38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92bf3b69964f33b6fe8e2f73ed42a8fe769a4470", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b69fd0aa256578bdaa4512baeff66a45285a075b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c5c022893995ec9572dcbdb699493624780e8d25", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02acc169eecb5cfbc73acbd3b86825d30d4ec525", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4215ab97b483251efa4fea22deb7dbfa16e1dacf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7ecf58da5ec8accb23241e242286063d70b8f379", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bebf9f9e0906815d781415b9f4b8613317d13a98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5e2d0badbd99087c6c19a17c43f3eb65d889926c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5528ff2beae0526701ec92124cb1367e7b501468", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9b5c08bdc04091796abae4eee7798fc1ac9acd89", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1139f619764254c331c256b9b29ee6a764b0fb01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a8bc2345efcc7ab7df9baa4e9ac95c2467b9693", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "77a4c21e8b584ebb1a9207900458780fa9398efc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "321e59a875c1edae53b6d06785ff234051204624", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3c215733c2fffb0e29852f1b9ed44d324af0f3ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f90059e812d40df7b69277fe6d051423b6534522", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cc60fb4685b0ad805c36d78f4472737e1cbf110a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4ca1b27cd5ea956f98db08b28add50aa34f6bec4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d0a0219f96c3b0a57efd0152b6d6bf856eb8d26a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51c7febae7db3d8503a6b1f2755fb84a0a8810d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "670dff959243aadaa97cdda65467403d1a912ccb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "81ae7f9c8bd1580a9957d83a487e1c4993f975d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "42af5acc21e5f485e5a969f6a9cb392e1742e9df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "be116b4b3d7fd0f4496faff4fe14dcfa123c95a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "76fd191400156a24fe813c9052216824e120bac9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "202851354c7ab2094b62b3e14f001bd993bf0484", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "100bdd3aebf5f61912f5723bfb8e0b775069983c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9221673d3a87278dea9d30deedc3454bfd853d90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "60b76201a390efc269fcb5971193f34fee629eb3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "db8507f32ec6412c097d82773498b554667eae7c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b90af6b34adda74ee5cd07ed3ab3f8fa1b36865c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf2d81f2eaec4e6bc86945dbd6ba88d305d0154e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a3eeec2d2b2267cf574b5eb14425caa781d2efce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f072640214268546c1ea298894bffbba86f16769", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a99967a89752e976851ae5386edb9346627e21f2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d14dce54f21c1160b62d02c8e3adf87b2bdefc27", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "227b08d2734bc9fb782f5097d62bbccf83c311c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5cc56e3fb021a5c741143cc53a0957cc7bbc712d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7f1a9219664153dd00d0cfc61968709c3df01e92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4b0ec414ccc748bc79bdb07abea2965661e166a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ba59554a3234516cb4238420ddddf4e3beb4172", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c12e6444cbfb78a545799615d24e2702f0aab85f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3d37dda729c41d49a30bd20949257c4a3b7bb75", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95fd1ef706ec58d382ac172c18c6822f605e4d52", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7fea1b11ee22193367f542c3826c717561eb600", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7043e480f7f1a97a478577a2c982865eca7f0fcb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3acf4717d6d2a804908523e16644bb3271e07a93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0f892aa04543b92d44a80b9f179ebb753c2491e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce5c034757efa93b2d92b05b31c4e2d89ff4b336", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c5d3820a96c570e6d7476fad2d1079a2a9278ba4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "06d56418d4267e3b55cf8d4e138fd57e579d170d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2aa4e3b54af9c17dc1b9eda728f77eeabac8e943", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4a09482b7192d3d43a4b777db334a8db5a12d89a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ce3c5972b5d779bd97e6ff7244af09853eac01a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3b581641de2b5ccb35edfd916cf9ea362b575d1a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a087b9f281a4971fba34b288636e926459e43c82", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "325652d1b0793910899483a10a2ddeb02742875c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e0f792b7e663160af4eca618d5959eaa6475e34c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3ae6c8ed675c17b7628a8633d5cecdb0ace4fd20", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cc4e52ee8f85755b2d733c840a163a9b34f8a98a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "276084e1dac530458cb3e82fe041f0cc487ff44a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7448a22821ffb1d6163c25e44c28c3b013e8569c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d9456ed4d0552ffc702b075b722e8a36b712e0e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e2055e9310593780d02b3b4786ff77d408c214ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "658cfcfac3ab281300fa2cbf0a08a898e74ae362", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90654c2034b59b43ba30f359b510b6761d760d10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6dea553601b89ac8b88499e661c2e256338923fc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf701290b3fffe4ad1f9f6e16a2522d77c15d004", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d663faf8028c9d4fa87203040dbd5496bda8a4a3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7984a4f415eadd9da8ad636b6bf734774d3928dd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2bc32415710bc6b15f7a507a552421e69cf5bf6e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "daea957a3da23afcc835330a9c71617b8421b2bf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "078db8170f0c01425d7954975856ccb1b869a295", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f5ac38a92c10a05d2da42d58ea80b543e4e67475", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "348b3cd6fe35d64bef2b41a6ee1f3f2339facb2c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5677648d6115d5983f64df1c66292c2ddde502d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4b3f41239c4a6933123755d1751f3b71fff53df", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3d25cba7f7d85842195a5936a5977b32d71e21c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "72a5358b8905249ac53f11594fc5f50a17d685e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c0e39164e52d90c32a684185c4a2077c5c6e5ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6f75bcc601ce0bf25bf533ab9bdee680679821d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "975799d2abfb78ed51524b2b5cfd5a28384d3c85", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "99eba6199e21055485d65ee523cd6ef7278c0149", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e616eb59291f6b7755dc2ee0484e81b6a670128", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7686ca58031b8dd1cd2f890c0645735f9f4d122c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c9b813020a8980d7a57314611f1f7506d1759266", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e19b5eca553c6c76caf56b03079473186138f4c2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e427a7744458d3db9835bf24be17c441fbc1d9b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fc6206ffe2914639bad3ad5bcd891039b496cb83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "33808b9393735b2ed2e16be22f80308a35fca168", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c9d331ef153d8cbad59af41d8c7333f34f30cc13", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "499e1ffe6941268a78bb1da4278f4aa92eab5007", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8c4e6d711c6e6e54c74cace9f0578b4d49e798f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "617eb3e62f7fc5678eb50b48db12844ee1356ea0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a00a707ecea052f7077970efb69c90e838cd7391", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fae0ba1cb0e12ae5da73f2a04a457e5350019631", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4f74966512410e358cbafeac4b3c4ea525a4d83f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "09010f0b2a04ab03c56046ca1e01fbfbfeba34fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0394c7f3b5be02fca70b7d754376e5e3afc2ba57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bdf349cea84bc5fa9b1df387c3a84f9e326e8fb7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d24c7c0db9bdb57bf1d134f61cf73f57af538409", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9148ce25f5f094fcf8cdbff87ba7741a07c96306", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d8fb21189eb4b98fae4ee5ea019858663254d0a0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ead8378e9de7aee41f4d7805b2cd1f9aa5e46d86", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e01eefb32dd0584cee9e7920b7e44fcf412567fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f106cc6b4d8f34e8c85df4e896cfcea2b7d15b0f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "586af050b45a0e15e375eab991fb61bbeb4296e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4cac8853103555e29457910078fc45d981d3d041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26ca47c461eeda66843bafb9a9852a7a89e2b1de", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9cd7746d912c178112b52cc73baa8ee3a40f5e43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6a4ff13049810fe5fa11503bbc2890b90c5f42cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c7fe90417ccf6a739bd739c87930c7a9391cc842", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "55cf23fead50ae39ea82d2e898824b33defdc265", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "34ac356536723f78b97d860c2adde4c69e71af79", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ab09c6386d33df064c99ae4ff2b972c1e7274bca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8fdd0be4a05d1af4dacb89bad94e939ce9bd02d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dc4677390387b611f9045675aa62f7b32bf84e92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c4735292f9cffccff68ead3a987eff627210f3ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "37e0573988e68e647f1118f0fb5c7d0ff20d6674", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "897741ed420e40167183aec58bc7ca76df7f5b56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "956fcd1600f1aae60e8c51852ef2bff3bb58415b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ebabb70cb26def447c386b7141beee5b70af3870", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f484e961c9fa4577d7ca986241547ee8166e65b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435ab0fd237fdcd6a281777007cc9ac9f28df2c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1d8d0f4d30a9cabc2aeda69bfbf4e6253028dbc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "02ed3a86a61660051e0f81687caf5a229cc9ede6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "adb4557a10489713f9999ce9ba10bbbdb5feaf8d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2df74018eb8b7eca556a1a4679e4ac1cfedf5c94", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5418eec29a7359ae2bbea196fc4a6a2be4d2c686", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb090c5816ae5ef9938428edbb501e7188d5b2f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "222f0e5552224f63351a63b86781149300bd6595", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c9cb32fa9db3fc1c44cb32f381392f7d9ecbd95e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "637885803020dded969a58d2e27d775837529cc1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22e5fd5534979f4f4ba63e08fccfc3ae3107e833", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c4ba17768d01c12c6a8b06c5b0b88ab0ce337693", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8847c3ebf2c1bd322ad7d0d76db3ec20f7eef4a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "051dc362915d357dc142b07a123242aa251913c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f8aca421661617da6dd7f63569adad76f36153b4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87ecdff3ecff63ec6078b5e67d7b1a87c1ea5157", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "37ac68f5a278cbc0e06c8f86f060a6dae3084c0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "56232dd1ecba8646317e96bb94cf0a720080dd61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4aedc35b7719942c6bf8211992c9d45bb2fb53bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1fb1ea4880d69e34c11c0295c62d1305b64dc67", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97863c5ad8998b279a81076a0dfc36066f0d604f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07ab9862fa4bc7be36632d64ae45678cbd801c6d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9a4f064d3a6285e41f67dc404b05e3c2eefd9822", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0393b3b8723cf860dd42e9cbd8c1c9f5c4fb2dca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d69b730e7bfbbefb6ac81605fa5f8cdb9dc8c53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dee998f0fea607a86520e3867a972c0ee219fd93", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "346a0e6cb23fb2052cf0ce22a824f077bf6efe97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53257b763f54b9b4141cf45eaf3e699d747e3922", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "640a935847da0171977f752d0c3548765b7eb51e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c7db10f023b5a31a5e899125a4c5fa8ec221d9e3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "604ca362bf94215df92c4b519d2fcfc3a782dc83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3e56cc0a089a935c0308a42b1ff788df3aab041", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "697e3791ba07aa7ca608477c62f02820c8658784", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "608806b751eaeed2da3c4a23cabeed9f533392e8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da22a8a9a4ddc217bc40ab516d1768446bbbbce3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c599538f42aa47f8493d3ab8189c4358e8ec014", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "809c428f74aedb573dfde1f98f633341dfb7714a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "102d55df9aa1bea3489044a00758f61a350df8b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "11477e506250c9b5b387dec4c5cdebed75967670", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6749283ce4f62ebe4384e2cfc18c7fdab18319e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c521080e315deee09d60098b3a604536182463d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0270fba97790183a1aae3f29cf2c9bb8f32d3894", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "363b7dd627f2599861496a8e278e44b0362d9116", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8e020dd46e010cf5b1cd0c20b9e0aadb45f1ffaa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "df42cc3f276cbf68174bb507974119d4a5d16190", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7113d3a96011e6a3ce7b4b9e4f49c2450911cc7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ddca90582628aaecd1a1a5197253682d8a2913", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6f29889ade40bd57caf159b14725f5428cfa8d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1425441af3e90e6fe4cf420ff5c6db1473525560", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "734519212cbf0e73191a5545331d8b1fa8a6be08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57885d2cba5f7612a707a225e4f53238a635e2ca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a7debd552b2f24a8f855f7fb5c8c58baf41272b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dbb078292e25eef12cb613ebb4639405d09d9631", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "616f374cfb9062dc1bdfb6b5d8f074fdde9cb0ba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6c40f0fc969d0834e1e9d2c9ba2d2f840aea7b4d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fb36d150cdf0ed1a65869491f353a6c395d101c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7229893f00da58db5658c986f33f5f1fdece90a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "958c528ab60806546ff09c039121cba0171b2ec3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b647bb88454125e1ae1b4f5a951193db56d7a91", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d5bfe1a1580f3e3c9e4ce8bc85ba6ce8936a038", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "55703d8c98976b5853e5107f0bafc16bdbd3193a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "616a0c7483f7c4a67e15306d7cce7c61ecfff597", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b7ad1f4cef68ee4e4186215d7b0f399dceef7ec9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "76589474874d417b4f25cd22ac7a815869578250", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8eb6e5454eb4914257ab2f85d57f40d83595b6d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c398fbd96e20ecf443956ffb08761c09b649bfb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "257375abb969986d4e5f75d13875983e99c7438e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1843a9c9ada6a0e1a6313471e141c798fee40000", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "03b6d18f9df33440c9191bcaa4c01c8a699f12ba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "359a628f736a1320eb2b9aa9db548e949c7bd884", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "95f9c13d561bfc39d2572cb0db15e4140908e8a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "935973f3265cc8d480f3b80c472337de2ffa9ebd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "870448ee9f63e1f095903dd8245c3edf1a261bdb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "635996c9c6fa0e11d8f1ca251e42a8c1e8d05f01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b4860a67bb6ea19ff9a70ec07c070bf8d256d77", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b02612f9da7252f596ab8176091beb850ee97c2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a6c0000747b009dc445f65065cb82411679c692d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c4ad32e0321e8f607adace9fa010ef32958b8267", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cc607d44a679f3f3c92b446e3ac8cec6a29f6871", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7bfefe1ba3d4de77561e3b4fc8375b7769753ad1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01a612c52bbe65b7ce804985418892f93a6f4ded", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7cf281b95deb9051b9a4758fc40e03557f56bb1c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ff0d0e362913ea69236c440bb8ab80992e84a04b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "670241dfb803767a6fdeea7211f906daf3033eae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2738befa6a04860d1fa36b8c3bd82f425c2aa6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d7adea35d4866c7e7819e5063f14c199ce8c9d63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f0f4d3d34786d597e0feca349eb4103c049465ac", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "456b0dbe228d37b82c10839f06c9b4a5157aecb5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4243658cc9456dfcd88bfddfdb75977101f603", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cd0a867ca844a9750b986a87c57611a6ed8d6c07", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "be614aad0a10c08010775e3e772c94ac2ab27a06", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ff176473c8b90af9a53cb433b4bdb9f45684a12", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8085896404f50701b92d253b8ae9e0189d670d9f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d586d83a6f7a1d0a3a99f00ff2d5e49ddb8a01e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d3530574f542dc95df09a21b7f3835e6d569a193", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2277329a4ae6a40df3ac01f48817badd16d9602e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2b3d0b84fd80e7c24ec39e8938c7b88bcb513547", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "10423b96613dd238ce83c184820f088b4de6fc38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "85cec5454030e91ac306cf81752daf5d72603817", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "64b110045046bde309464c4bcefe076ca073a7f9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec4650a0eac8601a1546ebabb0030b5b1d46f7d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e6bb3eefa15ba92175bf8fc709754d09afc9031f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a96588a26fdce67ec6e80e7c637595eac29d023", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2daa849aaea244e15bf1ad922489f061104986d8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67bd9d97ef07b8c1d72624c22b7090a4dff74c6f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "75e1ebf46f099c86ef466ca58e7d4231825d5730", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df263fad8ce8b1f7af46a39ae8adf934dac32dc6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "57cf4c0363e3c81a74eb69d955c435cf77037461", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "16cd196f42b3aa8e6565f0a6194812bc378e01a2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d3e153b24679249c3ffa2a3da1bbbb829228cb10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5101b55eb7b54dc49d9358b23eea395d29c86514", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "39fae79c20a82803012e140aff15912b99f4b336", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8df058f405e78b5277c4221a3d0c860561759fed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a8ed996d76dea3209ac7ab4228c67568a64da05e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "39394203703f63e93520b00c7d20fda3790748be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "219bf8b815d1551f321ca39051c03dafa0b699c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c341a52bd0589f157d70bbdfc500864fc18d04b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "68cd92c56536a1d1e971a532067ca089f7431bf8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dcec286f612da7eee83fc9a3d310f69f87c9e9e9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b1d0c5952c5ca1098d3fb3d7e36656a1189c8af1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "505458ced49573a7015f268185bfa505e4ce4905", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb4f1ffd58b793b922e47b2b6b0dee7abb1b75b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0d6fca10916524c12e8d4a119c90b4d6c852e6d1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6969f0bffe55fd0dee96e5ef5ce7a320ad3bc89f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5899b0290deb94735c9b4a331f8dfbb8bdc9af9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a321e7480223a209190b846b7911492d0cccfc8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "00f88ffa37d354701d925d676cdd48b5cbdc2247", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a5211040787d01fee61330117f11b457ff7e36c1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3353a532c86d6a21a03407e195ac946c68cfa43c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f627ec6f053fea22588c69f347d946b9a1b01427", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "297ac2d87df3bcdceb871862580a74eb534011bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be9191039a72c54e1cf3563033569e3b2f530a7d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "126697b7ca474b1935690eadcf39dcd0b2ac5d40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "26c40a88186e0bfcc56e0b41aa5e38cde3ccba15", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dd5d5cfe5e84875c7f0651c09eb98859d95d8c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "78baed114253c5e3c9e728117f4379ab77d20320", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "709785e07d2c7f958bedfed44840d2597a914ac3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6e7658a0770f01081974461494aec41768b24a98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5408c7d98a69486dfa7af5ee90005e0f56bac6f2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f3b3d8d1f3532f4bff824de35e848fa556a1ae42", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1845053ad032cd38e8c8103d62b990e3ac2291e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7211b8280ae6e2fa606503c7a41fe13797a7cbc4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "543bd4eee33cd7f2dbf7dea8a8578217f23d08c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a043fd654b696857ffb95f82c03d4479ab23f38", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1df121b75a8d331371fad37f07be24d29fbeedc5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b93e5ced4da5a366ff07962870c249c2e0cc0c08", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90846ddce292bdbe8b49cd3f7a5b327502d206f3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4aeb9d0d37a362dfdcb57d22b9aa09ca1ddb9e85", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "16d7bdf16f5d7aaa6c11fc640bcea0bcc7909e3b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb10ddf246f95a767eb64539f25398c907306e17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1291a0374b54cb93ff008ee8e5910069476aa9f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb510df5961501e7596ba9a915eb67c4ed0a351b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef1fce6e41654377087648547839041b5a1ab850", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "be89451a26c6994970097daba401c4b6dcfa5d5a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9bf34bfc6dcbd7b1019e7962bdaa47fd04520e43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2177e137f207cb3d4f43e8eb96126300b7d4f52f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6ada1b3b9dd790cf0227202d1306673bb3d07ec8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "096983fae7a9909a5d1e290bdc3c75b83a238b9a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2cddc0faa749188fe1ff6729bf45faae8059b0a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d5708736bbcec9aff6a727b522406691338f9e87", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b8f9633e64c6af22ec0205f8ad0e4918dae2d53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6a7e3893fc850ca916641021c095498c50b376b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "640669ec95653cc4ebdff8b54a4939f1803ece57", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4b3506c6f8277a104147f2d7a9ee99c90a55f15", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f50450ef4c1cecae264f79d45f0acb6622607060", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c31d2924235f26292365be9f0955ab00be65eba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e6842dbc826a42cd815652d00bb7b152274529f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e9208886626d708b694c732c5f553e77ba762362", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59fea27cf190880f09f06092d35eaa8c46bb8196", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37e4636c54abdd9ce849b9c52357369188b03d6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fd93ea28ffe5109523c40d14883584afcabd0968", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "89bd2ecb5ca244e779170e941468abb4cc6ee853", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d1e8719b6bc7ed7558b70c9270765b00f7e8dc40", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b0d65f7eb9237ba6fab029a497f645e58cee59bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6e13c350958cabdb4a0f00d594d1e817927d121c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "486c314c450cab5556b5a0289f85cc2c477e521f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3153a26af2d42a2655184a9b6a9f96062019497c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f08e3b0ec91ce467d96e8156c0e254a06d54072", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8e55567012043294fe7aa8768df3671b5f63a18d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d496bc1d00f28767f618e9adb1f2deade182a2e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "642aa1d411956b3b3e9411d780049047ca9abf07", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a76e07e98180df5500e1eb41fc7f51538a0307f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e56d4d1ecc284fd3ee10baba9abaca70d2667c73", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "563bb8987af52841c114799a994fa505bab77123", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "55fd10dfb4af8d53b939803977cbb07d3f6b5e90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "724c96fe85d2a3c4444d66d9358d2f84f3bd5193", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5252448c917cf10f69519aee2f30716529ab0242", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33446fb39ca61b83c8aab311a3e59162c6670990", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c36fe94860e02e109be23c1299f794e7e647ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0261e323a49b3ee3e59eb0b361de30262fa8dfcc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e467c7a016c64ed85bf3bcb56f1afaf72501131e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fb9f6bf42e0d4b17022d3260e60db423f1d5e5f3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "039e48714ce2935cc0a1097260044d7ff79a2ddc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a345a627588a9690b963458a854d83a870de0cdf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c527ed78940ed05fdd699e129f704af8f2faf48", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "102cf43e0195c9617a3605f8c541c303d8391fb4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c7e977d018a9ce259f6497c06ec485127930afd7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4a13e2355406512e92ac1dd0ce183586f591a6f4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fc762fbd790446c7b41cd2c975508cc55cedd62f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4727262390b1727a0ed0b4dd1dfd73dc5eef9f43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9f0b26f27251ed6d67880ddc99a28d0ea43407a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f550a29caf0069188abdbc82fdfdef7e9b786ac5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "684ba8c59fc5aed9c9b25e01a8e586b777dac9ed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c95958c451d3287bea51b07a423f9c01b16f302d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "06f8866dcac5276f9d30083bad531a15b65d204e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4ffa5d0c6292d3d5dbc67d7cc083e9297496506", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f5e79816f94d167036a18250bbda23fcf47bea79", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bd29a347d140b04bc3d5fca9c3f0b93d2d1faa29", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b028123f8a882ef40434b95857e411e4f123a51", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f6aa7e1b87a017cdefa07e27226ba026bb940ec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d1f425efae7227f82242d0d421bac24b37017b45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "664f2139029633f8781a1d5a84b5603749ddb066", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76ce0973654f62a50d80afbf442722de9434787a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19313920108be0d31e8dce7ffc15921c69364a31", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c2a35a7cfcab0c761a88683cc35b6b512e14f12", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc8e50289d153a044479e16766e3823595ecd654", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d72bf99e961a8a5d49cd71dab949c3a1c0843a26", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "67d740294ff327b9bc6bb11908c1615e76121ba8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "71c8bb0cc7caeeeb7dea817890398b0c66385a8f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "52b35f54506180d04dfe50976fe27a8ea5f0e518", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "91ed24039bf8425b6903f7cfc5116f34f1ceec65", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a13c3f1bc8ab0827d01d2e912db50a069799df64", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78e38684fc65d0192bfe87e383bb3d0b8ee6407c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "237448f767fdc0721c98c8b2b30cc4694f1e938b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "815eede64aa53bad18747bdda7dd7cb657b6f5d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ca0fe4645feb600a2fb8bba337aed850d72551a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c67cddd9435ccfeeecefe8a465d165bfbf18bb5b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "efc3c3a6145136a00ab9a31c42cd876ec28f5ae0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4f97d4d7b77ef9120dd195d35fae56b7fedd6622", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "637a6ad19c95807bd7171da23ef9d7381b16a784", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ace741deaa1a2a9fe8fb0b6ddef09b42ce3249bf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9e731bfd7240819acb70eec9e1ec5fb53791f2d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4a44af2814c831420bfd715d1baa92040fd025ce", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37845c54043b38186fd0c508b9f373062952b025", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0012ad3a73ffe58a6623858853f8aa1c6306293d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f5bfd3fa053d6528d74a5e3447d2dd513335c050", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "46820285766c12e82b9f03a6360a92e9686e5e7f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c1e6961d3a4477d24f254234e50bb753b759fd8b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b0072761a58238c3f14e0ae184b3ec33abc9b965", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30a6427b35934e2268182eb72ecc5b6fc1b2bce9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f91b5e0c0f3742813997495f1e751fc8d9bc94b2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c6f034c6a530d382fee5efa0f7d4171b575167e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1f9e3b772fc8c3b39a65807d0905e6a68b2bd95b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d66b81f11d80a8fc9653dfe313f33037f2898dc1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ad55592e4ce7aefe5573a43e37c9b22b8bdfa165", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db1d778db40993ea2e701e9f5e1f7fbfa4d9bde1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1f8734721e9e3d873375b30f8439cacea615e3d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6478a5cae6ef7675ecf2f926515e8d9b5b73825e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "09fb9581dcc46003474d2dea58e691dd5501f1e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "678f362a78065a5c3c9775d84e63247b302a8785", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "57b6e102b67dc2831aad97d5aa8aa8922d191faa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e971522f687defa4c1872a890e2000480a688fd4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1bf91fa4290419c83ec846b1981278e73f52c237", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "20626568bc96636d69933996f3591585cb82307c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "56e1a08930b3467f060a2627b38086427bee20d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53276ed4aeaaad94e78a15595380d10c06713035", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3e78b552335b522cdf79ade327f04d46b6f8b1a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c37c51ce4cd1731fcecb65a6ece70a46ccb505c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bd5731771dc14d2ecf274e21832fc965aa29e54b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "52d7de6018666a0d52d090ebb68f01047c77e90f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "89471fcc0dea9656d262d28f896ddfd07b122ba0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5c7decc7c1f0499f29652b8a7d060f3a8ac2aab5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b6239f8720e386035be2547837484a226c1fe2e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "983c00c4d77ebfec99b8bf613e96f0e7e0a3f184", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "87f114ba3706a7cf42514eddd61cf262f1bbb117", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0923ab190a1b644a9c3764a4e6177004d89de7f5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "5982c62bab116806b4abc11030e9fbf70abbe8dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8722bdf241cf4fa4f9d557281f16255e0a7417d3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f55beb5d7635f24a22878da238f6406ebb0c5373", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2601025747a6544486512235c3221153d5581eed", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2601025747a6544486512235c3221153d5581eed", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "970bc5944f36ab57a8d10192ad00ff34a67d4551", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8430db206112733f1d19963d61cb6c3385ec07c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "520ed92481b0ad020d4c0d715a865d35820b4211", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d9e664748d0ab1a0eb01d0796a6333621d080395", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb99fd9f52658597705658c49a009b98d7540004", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb99fd9f52658597705658c49a009b98d7540004", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "30d2e758f8a726ea3f98f91b7bc15c7f3bc97c0a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6d749aa11da8827d63d3cacf35d305c50831eb25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0af0009f8fc6dbdcbf503044b67d5d115740ba63", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dfa70e248f080766d0cc1b98003fc22c25b1df25", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f581152054bf74b85605d9bfa1bcc623f580f32f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec359d22445a4eb684bbfe204094ad3c1b651f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "264d897cec8882930bdbb7f1b25b417514c221f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "2ebfe14608d83a3858d84f4b586112c2a634fc45", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0faceb64aee1ab88c8f389e48d191ffcf20ac61a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c27b9a2429b30d25e252f41814119196ac537e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "11e2fa6d67ccae5e868c398188160d6f7ffb7b6a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd6139d17af91f22e7d564e45f98c91a443b509e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aeb5ac9863b7a426ef1a873fde743481691ab2d2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7603321ce42d82b1c3394cc79814a282d9916e51", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ca7b9dec043445ab28bc5ae0fcc2dc33c5768d4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a8baf9c3a92154e6d7122cc1621901af58e1095", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "091ac89ed20b9c2c24df25cb96bd9d5f69a352b7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d2cf5726ff06c9ae16cf5526d5c6b430f08e0eb8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "627e93009c2be2071d2d4f33a09aab6a313caaba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb98b2b60b2320b4a56460a3088f2274853446dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fc8586eadb9c2a9d2b2a2a9921b5f3a5c8b84bf4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4680ded5751229652852e6866e152d94253c6de7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c76d386c68ea3389fcbb0dc75b3ef6d7b34fe14e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d0ad90be41bcd288bf4a9263df25d8e77d578cdf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ddcdd238591108401ed123c45216f83f26f6fea6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cdc936f1db53c66771db6b0e2a2b7da32236662", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5490bf5ef30a1b843c49b84ea10b1afb95104374", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8934181ac5fe29d478f7bc87248b57ff70521554", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "18c44662815062668acdebbf04c638c6d63b29db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "6c551d428fb4ffc5f8af2f16ed44137cd604e506", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c0d02cdccf1a4b490aa9daf897459ab1794326a6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0c7ba1cc2253f8775cd1652b3ec48c739d974cf5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ad4b6b6e08c828a9924299dbf13838dc5c6bc4c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9ac5072059796b5f41898e488de9c5f6c8b9183d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07e984b1b4adc33cebfb67d92269ac5046293267", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "583bd2f69f3fb8337f16f6923104ef2c46ac0459", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c8b2e61a340d3087b76f8be99d92b0ee8737f5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b03c14534fca446c084d7ffc6a3e422f761fcdac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ff9f75584d0571add77cbe4622f25ae2de30d02", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "5662d7d19a111c27032bfe56c529a8dc03b18aa5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "f47de5de3fa44961b2590456e2f71c79df0c677d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "be174811a60465eca33a2d7176fc850e81f5978b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f82251b4168e8a4eb0df12e767c86a6fab2ae65", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "75ea904ba086d884f81903d50f267b2385782f2f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "03ae253e8c47ece34cd887e5ac93a8eadfd6ea0b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "087e61b0ce554fdf5ac63d9db6cca45ab756813c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd9cbed08a8cc566867947d28df896ac05c09628", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d5fe04a434fbfd234fb311217cef45cd610e47dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5a28726fef6f268cd6c4cb73f9b12524f439738", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5112df01d1b4dbc3d97e4aefe39e584d81c31161", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f0d765b0ea7ee0ed306f4fcbed348c961d47f82a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "94369cd7935ba77cfb1d5a020d718e7b708dee2d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d606b8389362af7ac8661e1f73bf8b862939aa91", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "276e2ad5aa663a63b4f245c87dd4029fe516788e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e32964fc17d419f8ce8eabae55af3bbe815bb934", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a099c9678c45ce18bbff9c080a2cff5af9292869", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "81249f0e8dec5878f6b09731002636ed2e77b190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d9cc1ac72404b840283421720d590f306d521a9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c6592b91727b7d1e298014b49155568489a5a3c5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a5372dad4701f035ac562715ab8c740574d1418f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10475f1402bf32739f4e0b3ac1b7a5693ca46693", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1afcafa485450994fe7d6b9f11e58b898f13379", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c384c064386f04725fda74fef28f087135607e64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "34b2b6a7512fa41ecbf8c93505dd91f0e71f46b4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0dd02fad44549e7298d42ffecbe3a7cd6e0ed515", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "8541717cc2a586c0c4bfbdbc95d59cabf391b676", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03488e8b609e5c28d4c69beedd2f947af2bce8c1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "609a7338d68ff41832889da49bbc6c765849a9a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "78e0793e1ccfb3ba3dcb95b555c921d95aea0172", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67d66ce9d8b196139451988c050a17df17a83887", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6b41ca80e7a1c105d59ba5fdbfd2a156d325b36e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "176d6fa421bddbce258b8101759c1d428ecd5a34", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "de7ad4893b8f7065bad1433f1ed93371ce682e3b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "74e978ee342c3293e1bc3e02fac528c4432fcfef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "701c25515ac58353c44da0cf1797d0018ae20426", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6c4458e301f881929c548672cb744ad8731dd49e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "08222f019ffe810c7eae7b3ee7be44b3cf4eb4d1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "97225e42f0c290d30ef7b755f62bab1084695dfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "360ae91306bf2f6069fc955ba247e0237a3d0aba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "408f63ea79d874ae4fd57b7c5b2772e1c27af93f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b94e8275f157f72ee63dc934e2cc676240c8262", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f2041443c5c584621ea6fcb6f825d19a0b80633d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cfdb96a3b43ebab8a6386402393e0fc6759cb369", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "32087d9dd756e403685a58d0bc4d446bfd2209de", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "05c32cd7c3f99c6013fff3a31da57e72ce13dbf7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3bf4b8cc0f6f0df8d56db93bbb6662716e4444b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ecaf547cf761226d26b02121a83e62b32eeb4656", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f40aa03f623e3d16a2bcdec750babbb5696cd470", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "6c732f1b69d3b3a1cf711cfd64feea43bef42f08", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "acfc487f8751093675a7848d0e13436484dcd992", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "72ec2284a5a7d7a31a4c96c1160df6b0d2305bd0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4882b7a1bb734bf4aba91716560a006b3f6f1f93", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0e376dcbb5390d7293d7bd3e2ebf38bc272fac58", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b808bac761403635d7cb85322fb9d877fb8cb088", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4bd8e4cba8eaf73d51117f28ec0cf9b1bea35e84", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3f48ffee7d5f7e133fd33a63065937a61cde17ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b3a764c5222db74b585fe9555335f076a7cb44e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eb4623d27c7f969a52ee9a6715382af050c6ee78", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ffaab18133450814b834a3cafb11acf8302e9ae", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f16d057f8610ce4e1d665f426322e8c41fb83467", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d265a639bb791baf1bac6ed3c3e851ebb2fed95d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "642fde1405d8be917678a6ef4736503089669ea3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6f3af341fb4b448a03b82b1d943df800ecacb0b8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "dac0e3ebb7b2004a1ed444ef228d44c79d5ba74a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d9a2df3198ce5e9e6de4b21eb5cc57ad88b21d4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9bc19fc502b1b816003dd2d1224e52e92d0a623e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "35f1b5759f19230333560056f2cd26c515e34ed3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ebd1f5c251b24298cbf4d7a97428e7d54b1194a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19a6f1b8daa70f6b54fdffd93b93484fd836e5b2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df19b8c9df9ca02c9d8f5c141a9dd0a81fb5e49d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "46656ccbd49b565785d4052c09b3cecd4bfc8e03", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59f3f907d1e1780c345357fdb33fbdf6f67577dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3fcc86df64840352479023ea27151da970090d09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "55aa61c00c666ca67ba1a01a91e95b51d15bfdf8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "4f71ad5510f53d70cae32e94b220709a9c0d80a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f32d0cab8083b0c53dced2f468abc2a29b43b8ab", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "093d721348ed704e9a76bb891e37507c6a1122b6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "510c7114e757747d7761b8ad586e4f7c958183d2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b8ef6f258d151f7e590a91de314d2d6c50c05e3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97037b1ae6737ab91721d378d530d79f65118568", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "806cfbb973326c71487aba3876034d0d561e0a27", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d1b62da86c553a13a4aa6f566ca9dbfff156b7c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aea237f9caa42f270762af9825c78ac4f8cd74c9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "33582cc654c89cf6e584e081d7e5bd710ff075b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0cbceef00c744475a42b21d9de8feae93d995b38", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "9275bd67f5efbc682e431488906a37013b01e265", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "aa9ffc54b7d06d24c6a30fb52c92e9676052b419", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "a9aa587a6b3a46ba3b7e2812194fd2831959ac75", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe2d335b41c432f26899f2362c8ab88e59a72e1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b32cbeb1d5d8160c811893dc59f51b80a6ac2400", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "53626a17aca93f7a25944d42be00d7d5a0747a92", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "abfd07a147179956149021724e60e3157333f5fd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ce1cf304aa7c985218c27571edb15775506dc5d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ce67ecc032cd31c7ddca402c42af68222e6316ad", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "08d625e452905c3ae81702168eaebeb0ae1c2f37", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7a57fdb03c52a1d00ad57143a0339d9aabae5253", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "2b57084c7ebdde966a43cb045be3a042eede3431", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a401ac6d9c12544c724365ac5e31f2d6174323d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6ca865a0d1285b4fd7f3e92281b713cb9c26e8a7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f8f40a30150bc944f96f07c98064ef2fb0b73044", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e42cdec827d2bf575e0686a7d9de703b944c54ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8c8a75d7dc2950a1aece1b8246f32e085774af83", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2e815beb6f3b3295b58c937867c1a15501174a4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e78da3423a3460ef40da4cfd84c1769939caf414", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5d4b654fbe5d09e6e52aa781b5c787366e1aebd6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f59471e38eefc7aa3d8361c023d20a17ed0730fb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ba1a6395c338cc82d7b1368903d72dce3853a6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "827704d8296d96372ed713377054b9cac099539e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5becde8434720749d0e0af01f72ede07433890a0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "78f3645467177d2fc9217635a19340ce0176ecb2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "70ffd1263ce9cc1017aa0f8d198957ddad024a5f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f44df82f6bf34005d4c6b10b8c434deeb8bd4f58", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "14636945cd0600abc201976df0744b46777a8991", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e3481bd99973eac0ed90771260a4dd58ec0dc9aa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7979b33f2ec6f3d5b1f981ee32984eae161be65f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "128890e95fffe15910bd0d240b725d3d6c6e71a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9927addc5e51bf771637f03d4d8cc5a346b4f44c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9c2d88436c2349b4be253a600a1f50401fb185a7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d97c0caefd07f05369bc61d6648a4c683e522ab8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d645b00a8e0fe288faeac65e813f622a7b1f322b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0761b768581d1247129d16deb43de396355732a5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fce70d53c9d06fae4679cffa2083656924ae7924", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "1db02704d0ea6371c14a2247252cb7218a7acd6f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "040400cb8e65ce528d42e3d201fb022d9645e2b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3aab581158846fdf8a01dc4b1604535e1897ec1d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dc46119ece681d4e5bdc84082f3aff5a33d30cd8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c10b9abfc1ac56909831ce7e74d74c17577bfa82", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a628628c70fe3ca9ca226b61c98d1c1100af39b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d99924c0cd4b5c1c538ecf300dd6f88d77d82f1b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f0535b3efa5e18dffdf3fbcee3994abfee6daf2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7c9b327fc533a33f266b76b19d9ccdb796dc74b7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5f64762e5561c8a9e93c9da9b514e98e7484b4e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3712124602836ece0a9e835d9463fd0405e1407b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b9c7a85046ff2ecf897572634eec9b3805d517ec", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "473bf676401ad11d945c509bd0c253b4d60584b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1f0998e05109765a63a23962caf7b82d571298cc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5acc191439850bc4e4835ddd90ea5c4cef175dcb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "47faaeb14152e60a950e9302d86112aa5b57a109", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "36d3a0dc41556fec7a946fe7ca52b2ba17d1bac1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ae83fea09067ec9e18e771c37a5124b97d9f616", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0627f62d112cfe03f5bc5a9fea137e76da83bfe2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b9dc3821d7e474045164b0fbbd1424c150771fc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9e5881a38fb21b644986fffc4a67cbf9b0698622", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "10cc5fc94c2cd2db14d306925d24f9895a377443", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "4255dd28fbb9566b635cac7170b44d0e47647c18", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "ff77b89f6345a8954495c4290dd66db11d7fc4f1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "a3daf2eaa6990c2d5912d5cfe23422478a84c71f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0fbef5e81cd16db61b8202f50e3043421947df14", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "72922b82804d27d002a21244866bdc63a70fce0d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e2757c7dee24aa699c55962975a003b3927259b3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "afca6419401de08ec8b85922477ba0978da0215d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "654d7db49d8077f080997307a54fe40f7b01c956", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7db57b9eb5e6ab4d9f6f30b3ae5f6e8430fdc3dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a75b5ab64c33da921461311c4647c3bbb2352a30", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8bcedef6194970e8cbb017de67058895a4aea78", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "045b16599d916ed86651f9cbb7d25bae512c86d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "99639865d65c204f34fd712cb7d3f1b99d11bb42", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e26742256371eab228635b6b6270f5f62e567987", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "885918f70231a93b1b71d873b0184511a95eaeaf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "1585fe59283074d565e46691d487adc593f3a77d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "af6916ad3ce0b1546cf940a7889dbb87e0a3ee4d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3f0a46b7f9a2e815a13cbe3e03d1a854f2070096", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d2f26bf4653c7c090f87b1285e640dc1f0de7d37", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8bc3567461ded2e0fe2ef8220f150a205f729a95", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5f108493d8b3719f348acade168a86dea0aa7570", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7f26c889ebfc2429d6ab3a49da4f1dddeabb303c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cf04e6f4e9d3f904df4a743e1cf017f70b1744f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "27b5324009503a97c9a79df57c1f51fe35ed2d81", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "cc590642dbbf1ac80eb21178cfe3336ff73a4f64", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fd546de64311f3a7276384ad1b090a3d4ad0a2b9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6e1a64df10fed04f32257c0eeb228763caab2220", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0cf161efac428d13682601c140214741e0646462", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "49d1e146257306215a28c69e4b4ab16619166115", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "804f1109a8ee2277551cbb8bfbf00cc47e05faad", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d659628ac21393432c23525131a0277fc01a99dd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "423585c2e6bdf570747d6ea0b4c39bc5aac60bd1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "33e66af1a92f639c427d46f88d31bac7293ac220", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3a9e31cfa64ce6ba6aa374722bd8568ee7c6c8ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "901b5d40ffef7f7f967a2a2075c1197114415698", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "21ddc9500d45a2077042204a57b7e179f19328fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "29236d836142172d5b64c8a68d3a2f0ccb897924", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "15b674f99e54bd4e439b0b59c376f4a7c192b5a1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "2113324ff310d75a4a97c7a19c9ad9635c808305", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "821438aadca41a9003bc3f30558c180b22868bcd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "84d2a633d458c17760014edbfe7911aef03b0962", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a235bb40f00542bb4f31425efd5bb320acc62c98", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5b1d02843a072d2a2b3edba549d7295ca0256e28", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24083d902b1a8d4f628345584528481513a3d6bc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba891548d3d9da3d92b07fe137d121e5171a752f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b8d3cd9e0220549821daf0878f9e83165b9e278c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "168b771ca8e5753b77bee7a0c8060abea29d1cfb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a546ce08d20a0e105a18314c0c8cad561d5612a1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f63d0427bc5f962f1e15ccd95fa43b98ea919156", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6a376ac1a44f5f0503f42f7a8cc47ba957ec73a2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "267e49a25bb6ccfaf4012eab5dd7222a40d0049f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "7ff78c463bc5201e39da3e2d59793937cf9dd61c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2217af463c0d6e53e8a0d85aa5dcf23742677b9c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6a49d7acc18a69344b97edd762c475269f727eb3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f60cb2671b4cc932cd15dd7163a4ce6d3f02e1db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0c69edf6601e8d1f9e3e82a2a0ca33266031ad39", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "40a70d296217b741d30ac18b9e9ea2845de0d405", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6030e8c318ecba9d1c6f0ad3427d200cf9df1147", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e072653171e0db6790a69f6d874d039303688227", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daf4923ab01224a8e283627782bb4cca539c2863", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3177dd4b86b426d4625f9c87020a4a8ee373885b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e8f23291cd4fff12d22ec443db3067fdcce360ba", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "94613696fce40fa0b3deee8aacc8a6d757a0725a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4fb1c4f38b69cb19f8ea35274977b0083b05b9d6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ba798e65d7904578c84d648a7248480088d4d2e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "093afed531bc180351f3373d1a6f745b2003881a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "216e34d5d831eb16c303585cdf6951b105c36c11", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c835d2cd1b181524c6cd429187fc2b6d9884a48a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "13e1707fd83c7ab65f25948ac6efeae9a39c5d4a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "36072da10c138c61211cc63c3afa077e4a099ac6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c81adaefd827177a61d7781255b14627951bb190", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "18ab1c76db7da9d64e09a7fa20185eb14799bec1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "22a08037130678b5fcb6c973aeb02255477ff566", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "42954682d2ce98e2641671991852a3c423ebf357", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "deebeb8cc0533302ca48a3ffac8200f37bfaecd1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "39f83d46d15f94960b08200f8d6b7acfbe611040", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d77ae13eb3da2fd33955f1e980b2618440cf0d97", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0cc21e686adee03fb8e38820d1be346b614645e3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ed3004d98509f77987da266a6c66247f12b0f0b2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "0097bc26cc780da13eecdb2a4e2e5e6aec593145", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "b624db88004355fc40da04a2de16d0492fac8917", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "c6997259966330a6558d05d59be7611c149e841c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7adc61fce405582e52ad70383c9aebe785890150", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a26bd24b77cd16fc7bd7dabfa35796b8ece33eb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33da08feae68f95451f1009def1ca516dc4d4835", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d5746b1d04e1075dc330bf93b7ef4bb35035344", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "60b5505110646c1bfe7a53e0d2c47e27c449f5c4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d99145c70aee0418c26120580b4ef70fd39ae9f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "caccc802083a7e965022e8a3ffbe187c3c293875", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "44104895b363699de2ba4328c52b74f86cf3dd71", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e936b6931f20ad58461b3baa93dee2a6078a0513", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "3b2552806acbbadf4db944b280e6db9c8c1e4e06", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "c1c260a17c08fdd2f29446f406a339e6154c510f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b286e3ff478c822b6617a73d63cc35936581588f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cdbfcfe152487305ae195a897df4c3c64305d890", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8d45dccc0318595afa007d15a97e8fc73eadbf5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "364a3737702907843ad0a0e7a78dbff445b66b9c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e464bcf3cfa9904bce229c31b7e8407d7a4c9ac0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "3ce30c3d716b16aa411c93089ab488a5804b031c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5d718f33499b1101b1b60855805504b14247868d" +} diff --git a/tests/artifacts/xdmod/regression/images/expected.json b/tests/artifacts/xdmod/regression/images/expected.json old mode 100755 new mode 100644 index 5fdd439f78..9399bbe09b --- a/tests/artifacts/xdmod/regression/images/expected.json +++ b/tests/artifacts/xdmod/regression/images/expected.json @@ -1,16 +1,16 @@ { - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "57ea2b45f0800549366e393578bc563ced54e482", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "59a5c2f2ef0e9ea6cbb0f3ed79989be1a48ed902", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "535ad0a1b6ad6424f0c387aec893f337cb155922", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2927fb6b1ac59575cb81a7a6cc15d82ddddcc213", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2e1b5a70cc2d45326321ee394bdbcdaf4dddd229", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8c042378d66bf5e2cc75e9e048667df2e1527bea", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3dfacaa40acd7e115d8cec2539d85a882a2faf45", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "608a34d5b090b3a7e5427fc2cae2712ee03a89ef", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "83eada08183b7c12c657416a51184faca17e8da6", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e4b88843f108a188e40edff932dca0eb247e2374", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2ebf8c8c7965793f11dcd77c3456943e7cf42910", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ea891809d81dfb5603688c89089ec8fc7fbbf224", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c34a30d0bd45b062d19061e6e25a05927e847462", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "17b7bf18426f5a448dc9ce0b645a7b03d986089f", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d3de689ada06c4f295ef17b440779da4061f1fb2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "805708a023116d81d1a210097002485ef08ea39d", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3dce6af10d82c364e0af29a449be9df6cb459499", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "bc22056fc4e689b3d4fd6a1a5b7256f83e9c3a77", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "8c8048f8c14c8011bf6270f7b0ea959c174d7c68", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "797b00ae5d5da565cc16a50ec53a9c2d677af39b", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5cba13b34938eef998eec3967fe17612fd999f92", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "8c117958f5cfe8099b2336cc18b63c0a063a6b72", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "e20ba0d902e74cd174b3c3e3b142aacd01e8e1d6", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "c6d92bbdeac537e1234eb8cf459579e3cd3aa329", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5483d333d6df4bb545ea4ec298960aefd6a22515", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9a46f4c516b393fdc7d6b96548823ea7ff7a5264", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b7298c6a9f95b798a03eeb189e1b882d51a6e827", @@ -23,18 +23,18 @@ "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b5d16b7c9310547d008ac1eddc9e36d51e496589", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "53f47f92744d85567f5f6de95dd01dbfd43ca1b3", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8fca927b1422fd660ca13d6cedfe3e7b9367f403", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "18f1eeb9c25fd76d9d21636c27602dbab6d87df5", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "21c36de0517cc6ddaa14300aa8badc6ac2010592", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17fd64e1caf61c1a09aed41eefabc5ff8bd971ac", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "33e2d456cb6b1f2f18f9560d8e81331e79c2f26f", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "18a27aabb717bf0a417ccbb352f6269a407a4433", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "70a99146e8049590d47a8ef655fa467b40cbe1b8", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f0a5fedaafb3d6dfe0568e4c3a3dbc00b10a5915", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0cc6765922a9e537698ea11ce227580ac670467f", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1d416380d59546a9d02f9a1fe1421e292a52b8b2", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "05f3cb522a6a1b1888b1c9866eff9b2f8d0aad3c", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b2fa9e1bef386c1518bd21fb78d63fd740a62fe7", - "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7272118fb1a06f23dc29d78f647f544a3a34cfa8", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "eefdd141aba0936c6525bc0f63ff4733d383536c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "109cef4700deb83ac1c4138d15c2f577b7af848a", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "65426c15e7f6efda51a31b5050906078586fe89d", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "7bc5b0039be579afa6f41f93b31a4255406d5e35", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3a5bf3799fe3b93a482b24de4c4da1b6c2bd3ac7", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4b9b19a27a69bd513df5e58c09db5ddbe7a08a3a", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5db480b4dba44c56d12307fdf6e14e6246667ae7", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "07fb21cae81c14da17537b0a4df9db9671a33f6c", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "fa65b25c1e8fc5cc3b654932010a9e194630b8a2", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "402d412a40b79331b97f58845b33b27f38b6707e", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "052e0a33c74413b75edf362bb22a3fcfc5425b93", + "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9d4c662eba0bb958320aa557e325e0f30553c3d9", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5867f5468a2716d37986af1aec44f6949da3a421", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "436c7237e3431764b9d796efe1384357edcd17fb", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cbcabecdb611d56e1541781053dc11ca06b3f3e6", @@ -47,550 +47,550 @@ "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3b78ed2c2f9ed9beb3f03b153f32f5e8a92c12ce", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "096647801389f1756264d8bc78377931284bae4c", "dataset_type=timeseries\/statistic=job_count\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1293c69641859da72886a8fcfebc825557594832", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "50b1cc28d0f3a46c0925f46b2eceaaac8fdb0bcd", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "430b06630ae55489534fd84bf4df31eaa4fefe29", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "36b7946c2bcc0eb248d077e8b6738e8182f268e9", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "36ca62314e7cc3f8b550916f861418f0af228707", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7fbb9df6c4b1d2c14dc09422a6baed0b5ca0b1d3", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cdbb56f35de7504a85acc881f95aa16c60da50b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b549e96d62ea594892ed6c5436655754e3c8d954", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "888786cf3a09ef051a51d4731f7af5f6ff0e3b51", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7dc579fce58f9b1281a6efb47dd89e3c43a4b04b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "8f32eeffb8b53809fe56e60ff16a9144ec13271c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ddf1d070f28b20a7e294c1d4846ea7eee071b95d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b2e0bca49ab8b9fae5d4077b5ce006512a14c64b", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b1d22edd6d29df091232126ef64f9ef7c433a847", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0f2a73b5013b846469ebf922e76f5dc26fc1f2a2", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d61e92afd98d27279efab281f74a227e3eb2d25", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "39fbace779ef4dfe3a24807f04e3c97d47bcfcf6", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "2c0401d3b38f3cc841b66b2804835a34930b8680", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "9dc25635f5cc0d51767b6e1200051fa09970e3d7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4367d4a0363b20f6b47738e22129ad818c92e19f", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c9245243032f7af3602414bec217ba3261dfe807", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "17c0849162699e71f7e192d97e345427f7a90079", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e91c63d0f806d59a362ef003fcedb15b67417428", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "344ca9c6cfc021f2ac85f07916b7741d5c84ec73", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "148e6a7a4eda4197880c819ad167cf9918e17eed", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4171061a547c43f0a88213d5a7f48f023972c6c9", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5c340d0f8c77c4150ad20058d86ae617f9fe59a7", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d82cebdf8605fc50d5d60cc9270951c712f8978e", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f86d2ce82afefb1486903433a031edc71656b550", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e5248d43ec4d24e8f097aba7a83edf86a585e843", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "39d0cb5071d1d465f115ff0754753a90ed6915b5", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9ba742342755a9d2c8e871733c7443ee82b51312", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "2569cf3dcbaf32d815bea0c9d8e775ddd2748432", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dadad7ed4989cf3a4e0284d670c114c74176386b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9e6611981973097bfd0d760bd786a91b7568c0e2", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "74eb933846b9216cd079a460a3dfa24b432bf7fc", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "74528ce9c06b963334cea153c5e9db030066125c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e36e105501442404b56e71611c5a80b9f4a57a2c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "29c4876840d0e92208c7f733ace3a5d26e76fa12", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2dbc7a6f5a1af73abe25995c9a12a48499daff7", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f4ff0836ed3aee1412199ddbf4d98c6ad38a444b", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "d65e25e072cab20b79ff2b153bbabeb786d34b66", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "79e0673f3e73fb3dac245ce0efa2fc7f4809fadd", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a645143e7356f29bae7f234869200cef38ddc88e", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4c61b0514c87c2cc78097b56a27fd5430ac718bf", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "39ef1d0f6c14dfd1b55aea4e609f9dab5e05996b", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "20227792b0faa22e1bed4f0ba0698b787291be4a", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "03477cdbd5cc2fe842c244a8ef46196dc155da40", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1927ea2d550713e7ba8c464540de2f9c1585aef5", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d30c426027f9633f21021ff99727eb38dd735559", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b0b3b19907ea8e8f2fea32e2e4ef799b37c0c70d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "70bb704d4f2353f10a6bf7afaaf1e94caf09c08a", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c629c3fca2789230d1fa066dbe7bfd8749133202", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "90dbadf90c5704b0ffce0f1bf6056cc0b9a7aaf7", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e7b656f74f6902fa0c3b1d15c4709704e5dd8a00", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "43f0de931135c5af6bb67f1d18fc6921a03dd09d", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0faf0dee8d110da9e98f5199dfbe89c467bb2fef", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "961039f332dabb61c2c7b66f0c56c3fbb08047a8", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9ad720c2338173629f76310430cedb3bae8d4e78", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ebb791e1ce38e15704137f75fab2b53b29bcb482", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fef73797af7b1239f0aa00d52eff0c2ec8790c0f", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "95170cc93e781912a0d2b1957973a541f6dab74a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4386f2af444b87d8d587a95f208ac510b8f906d9", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "d9fef1001baa4682624431d69533ded1e4a77924", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "ab0ea966f47497ea7c2b41928b3aefb843e93204", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "6ede83c3d77a4b783e7e2b92f37b755da980868e", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3f981fc7f09dd108554f0c470c44ce3a0f45f379", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "fa81df5a338c9c253e2cb54b6917a1978c5681d3", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "79d0b976e87786ed3f6ad5ae992e52db2821461f", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0b1a60468848d5c4a4462acf7d62ce7049df0e05", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "58b08a4544e7f9c1f795f483bebc19d1ea4842d2", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4a8a18a59175a765e81ca7322e93e176310cb437", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "83f30e8d8c6f30876daa75e42069b6f9bb448a5a", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a6fd9140c378a2e417f2519a92a35f0cb3d9c879", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c0ccbb7562a8f69775a2850a851e5d4d8404ea3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "d07591cf1162f7fb676234d84e813798dc712ce5", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "250a8fb83409506181272a6103aff329d94bb157", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0535437960cc8b1ff08eb060cd81cd2d57928cf8", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d345d1e0da3781841242247d887b64989c8b2aae", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a9dbaa127c090f2cb67611a44ca256cb1497ec12", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c1610cdc743e5d30a39c690106b2a9a8a3be1289", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ff5a69d90505a5d42505c55f4b3323beb871a58c", - "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4a86d0d8c2e53bdbb75e3632efe74d6d79a007b8", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e06f4cf0bbcff0a3f3c6ec957adb79600cdb609", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "69bde9d73d34888bbccd2bf447b4c8224f36450d", + "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e371d257c1c56662f9cea4535a3702cf89694e40", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b98c9db4e97837c0de1eaac97200d4689e232f26", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6062861ebd77af88ec2fc950db0e8508ddcd8c8c", "dataset_type=timeseries\/statistic=job_count\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "966babf23f06514dfedc4b24751a32799b4f2d35", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "4f9fdcb1be0ed9183ec13155cf8daabb73bc9a46", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e7fe2b4678941a2092239f5586672857b39c9e7e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "01b49edce49e492e2c9d46b61b03e9d8ee550019", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e9c714d5f2ba4ebb203d8245ab033a32afd264bf", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "9bcf879e82ddcf050430ab62e32c86f92ecfb4c4", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5658835f1f9f8e6ad4addd4cd6ffc7bbae9b4fcc", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3f408ce9a702c0792e10d1e4715d95f37593c13c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e0580f9c4d6fb3e14ed34053d7da25dd85878ebd", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d3d1ae935c50b54c858a0b6be0bc566fd50291c1", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0a9d57d514dcc325fb479545812e22159abcccf9", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b34104a26159d4895ed3054dede2b7bf72f0887d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d2b7d807c0c50911b0eaba2ce31cc65b64309ea6", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9cb8db453ad3521268919e7734673da1e72e25b", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "860f3fcd60d6773e6fe3001a5a02ce68d265072a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5a98a81a53b139b8dd29e2cd9e047592eaec9b95", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b184ee9c35a0a144ecbb027beb80ebf441fa47cd", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1b0297d6c48453fd440e484c7fbbcf77fb4a2bc0", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c17fb903629e4fbf6e9dc91e126ac341a6476329", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2a4808f2e38815882f7c52ed5368eec62549fd5f", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "911c285ddfac4614581df29312e4c118f32343cd", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "80b37e2ec1a8664190df01eddfbd7a66dbd4509b", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "86e55d81f16ec1c5a0ca2029d508381d6fc96328", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "23f3c7c14ab9d6176dc16bfa4dd802b253d636e4", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "52f62018a2e8a8417613cf73118beeccde6e2ce4", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "68723c83b87e2710f125b124856059c5b30cd659", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "65e918207409d1fc5b72ac439bd48aba7f9880fe", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7128d39153e9d7b96328cc3c3068f98decaee1fb", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "873d4f0e2c50548e44a4e53ba7a52a209c1db387", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "137a51d53b06b70f361c6d6a4bf0a74c801e483c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "77328d83b025ddad482885d298149919f7b318f4", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "129b40cee67c61a2d709169f25733e5573059de9", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bf96ea7fccfea6b616cf90af9183cbe6e48f236d", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1bf70681a4880756f72db4a5b356596d6dbd8e1a", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c0b447d923a75f3a5b17d02c2b936fdc6f07d121", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "09a601c78cc07280b92fed9b3ce275dee4c051a9", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "292b7f595675c9b2202badbdfc41b11e42479d9c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f3c52528eaa331bac51c611e31d42d9882afc0ca", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1cb391152b23022dd99fe5d364a3143b8db92d30", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ed0ba9a390636667ec13ddec7b4caa92deff99dd", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "832f175f67f786ea1dd3d2d2ae9352469ebb7a15", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c30b558102f25c2c21915d5b72e407e547fbf634", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "18e86ab3e93d8a61b3dad80377e3de45e62aa4af", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "cd6b0f2098daa66589a74c7092bebe214ba1cf92", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "ccecb290470dabc947d136090b07383396f4ac3c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f7b26da71ced9d8a90fdad88eaede591be581817", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52e2747457d0966d8c2c8ad6cf68be37b60d49bc", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7ae3e734baa9560540421e604b037698bb2e4b5c", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "024d964bc0aace504baeb00148c428c67fd50313", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a6ef1a520000f9cb78dff670d42203f62081ce4e", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "db5455f31adde419a4b5a48b36fccd87d1486d0d", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1a08f3c9a3b09d2ee96aacf4958b98a2f14074e5", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "bcae6c775f75de8a64eb89537ecc9dc3c494b880", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "3e6a3d03dc142272a944e25f6fd4c47d5bc0f667", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b35e7b15b94c8d9076232741fd872f9cd1e434fc", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f9da99240bef4a807f06d8ad1e7c66462a79f64b", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fdaf87638ed33cc1108d37238035817ed9bb41d7", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d362ad00fa387420bcdb3f7e088beef0fb6daf3c", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ba811a39d01b7554586d9aed5dd3db31c3f13b5d", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "83b1e87614d34bac8bae1dab213bdb23c921a7ae", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "ab8b93bd683b4875bf16bb6c47a5420b55178e43", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "2edd527fa2f80192b8c6149ed54aa1d57b46222a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b6c642e61ee3e17c5321e5b233ee1e640b097601", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a3a45ffb59467a93796f872078523871977a298a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "7991d719a171c6f014549b54add81ddaa078a705", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4d06d517c359ead7f1ce625ed4e2bcb58ca381bb", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "15f21b20d32a6b19faa36d5d59c3ba2d6a80c36f", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "24553238b13e38e523b400eb8dfd9676ffc19a62", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6fab5118996ae640df910c2314215d9b2ab026ff", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ded71beb574e0cc9596a2f91b2abceaca4efc7ab", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "979ea68f1c6f035702e241b3b88c50eb8a4c3e4a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1497fecb4a7bf64ef8dbfbffb241a32232cb6b4e", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e3c09d6db1d325acc33a4178fbaa2a97afb3ec1d", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c66410ae48a2073a729e62ba0bcadba59a96151d", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "dc674dda2f449370bf3d28d5528c1b7d98dab484", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d746128cb11fc730754f0b3f009344c39406bf68", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ce37b540eeb5fe8804eab42cdbbcfdd089402850", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4eccb3e142e82a0ee52139843807458a81f28b02", - "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e405081094c863bc5d02823e7ca82d021356f39a", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "999355bfbab4b59061dba1d8f65e900ecf8acf71", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "09e0d5618e12d0066b73992a4dd5e6ce8ced66f6", + "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "32a0bf658ba79d52bed304e40a59ab9ba929a15b", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "58bb0036ae232b5cb4b07375cba60ab2d4a15819", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "794b26c21e336d9bc2e306651f02ac7ced93ed9e", "dataset_type=timeseries\/statistic=job_count\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "65ea0a6c9ea796af23ff2a906cd80a25d0aaa9dd", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a7650855f7af4f26ccbe520858958ccea15f277d", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "eb72318c099b9058111f31b646723779033f8159", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "4049890e81422504030954e686a1524d1c04725f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "398f19c230fe17ffc4714eaba6d6a379224d688c", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bd14d7c5a7051a99ed6a32a2fd62b8fb7843d0ef", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0f11ca6b54172db0caeba830c30f92d95ba73250", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bbab6f2364d64156ff5e855ddbae0813744c2ab7", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "acfae08dccadc16ddf8d995adf3d1b24c8a17aa3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a1ecbdc651d549ba22fab2c71cf2f5d745fd6fa5", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f44fce4545ba0525a5511b8bb52027046ac120fc", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ccfef3d54307858444310ae9609e8ad9576eccaa", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4aab15b1359f52a5987c4f7aa3a31d80aa86d586", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "1b424f24f990c688a6bfe2864f6623c5a6aa1cde", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f285128a4b44c86bad4b265474b75d4ad6759945", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "efab62ec84449ab8b0b37d1ddc9f0bb0f86c82e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b0cfdd369c3208773bcee468e88e9e5d85db3dd1", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "eebdaa06b760a294d366ff57f1dafe38d15049d1", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "182b282df48fb4bb9bfecefa34572fde7abc6722", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "6968e2a4d9cee6edae4899dbfa6ce7d6f46563c9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f3d5afa75db633253fdea3982962b42642d85f5f", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8c7c2e6783de68d53375d0c9cc806251caf26c86", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6f6152af1379233d11327ba2b2c9095aef0bc133", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b218d08345be6923bb4a2aa5440d3114049b0bb9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1a8b9e7c69f472bf7c1b3e34ab8bcaa93c96f3f0", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "85fc124bc51568e0e09bff137103921a6c18ef21", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f9e884f674c866364a1dbdcd54564bb52c4015a4", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9ac34c5d6ebf4bdabdad83f4abdbe4c9231cddae", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e9e433456e1e8ee77646e783220091c36768a3ec", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "347cd4283e17e68999dc865fb8b7b04b0bcc3ac2", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "a9b43949b63570ff5bae32d786321292153c9d59", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "58a64e1974deb7186ac455b81acfdb58f441499a", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "15198fe0f81f2f7028e57fc9d1694e3a755ff462", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "2ed30caa5edd75a48924737e27fcd6675850758d", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e4f790a1e7c55f936fb5ae5c9b0ed46cb79278f2", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "099e80b05f6a430e2a57a79f106f25729999a458", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8590f2fd9c13c54dcb75aaa4e883cef206dd45e9", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "be7ece24a7a36b1042b7998eb2aea238f56a3687", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a6d428bbabf1b72605042592ccd67b2c2f953ddf", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e56795d06d6331904caa4b8a54d3844f6253b3ab", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2afbf8bbf1b31f8493adac0b959c3b7e82384288", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24e10751c781f3eb9c13272f1fdd10fe00b798d3", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "944aa9c5c3c64d8be09e3e167386c385501bf579", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "301aa475ffd2a359b384e7c8019bb12eb709c8f3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd8f9e6691441752971e1440d9185d8ddf4797a8", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "962aec26f428a66ca746c2cf2b707df0922c8dd6", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "d8b4e6c2b3dd6a88fbefd005de25dfc99859222f", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ccf55934dc02cbab58d60c490f72f7f1eecd7710", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a06d9137468d13be52f9c2ee88ac2134e20064e3", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5dad88b9805cce5c9a5ca0a17ddb8d9a9b7d9423", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "4a88675c1a92019eaadc69231c1d3e2227bbb32c", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bba458ce0d86a5bb3011b388484dae8a65b1243e", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "abd94b2bb4ea8a5ad15a00ba8749c4353fa0f08c", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b0222adac2d0063531492033ff41cedf81c469dc", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7884fde1d460016bb03ce6d84d9aaf9ec59e8279", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3cb83eb4a131cc2759db5295309ceeb5e6d8a074", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2adb1367b00cdb8d17cd9d57b40a56560bc11a99", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "8302401d1d0fa6b35d79b0f03076bd51f0b6d03b", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "89ea9f6d84583efe16ca219bf9069da97c9a958a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "573bc69dc252a0365b81fd4a997d7a603b8a4879", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "48b374554c6bb3cde36b431e1e4b02d641e3b83a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3b4df5c591bd0b2c3feca003f9e6d70b6f80ef7d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3e2ead691c31ab97887234a413dfc0291cc35c99", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "882d6758c6f30464c9d20406f31e5f7cded316b3", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6de6382e1d94f23df07395835e8fea858b388a5e", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "7db3629820226ab749e0b0b4bc9686b156b5b3e4", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5055d983d0d5457d6b4adc08a5922fb10cfd28bf", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "730001c06959b450eb369292e0f7fae17886db8d", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "23fbc6e51323f6c9c1c508d485e7e6d9bb77ed79", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ff811d5b20e0825b157615183db65f826f22f434", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ac25452e164a6b89f204d5290f27353ee7f7f338", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "13d5c976125de71a7ddf5d278a7c762aea9a2f57", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "1d4f931cb3cb2478d22509d0e1ea0f2717080cbf", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "127e79e3173a722cd995d54b513419095a23ed2f", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "69aaa4c7f9c3a231d9a13e1296eb2142fed9e259", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7de637dacd0f632961e4543f15ccc9e538f99bd0", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a282bb9bec8de7a3ac8ea223a3696a5380c71d2e", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "419ac886a65fb3f9e5c13b35cb2fc499e89377a7", - "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b292991859338887faa3706058443fdbd32d5d1a", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "be348af679bc4f64b54308bb1a97f93685740b09", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9c9b1c5c73086cdf7726fe030842f487657b9151", + "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7a661950155ef0bdb1b76c78f914967dbfda672a", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5cc1caaa3ddb128a87a91f50eef6972061f5354e", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1e8c8c4f8e48bfc5c3ffc5fcf4f5f265ceb0c96b", "dataset_type=timeseries\/statistic=job_count\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e4afd4b07d3f9f0c96613dc8bb5dcdbd5f40129d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c4ac8f1d419d157f83b4fcd7d5a199bcf46e77af", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cd99f8e1af3188d0343044ceb96944ae05fecf2b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e1e99eba4ab7d0b47665effa72fa73a6505983b7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4a97ed7ea6c3103aaa4ac47f579024d4828d0fa5", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "80f99e4ae6a36655a53a8dad288415539f928cc0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0259798f682a6db09ce9f43a00effda1879de914", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fe2ac8cde46acd052811caffc996ddfd90dfa8e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d304755bd482a8c27ad62c7a0f2a191aa9b78bb4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e4c048310816474fd12b44888dfc540d88e7b031", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "038895ef673abbdc7ea2361d1b07dfb29a23126a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c777c03fb12d62f3dc1a006c4f66b7ea7012e8e1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2c55e028a61d9778e56eb389f4ef292bfc6de251", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ffa1778bbd07fd7be7afefed61ab9d5007a3249c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e90539eb82f598e48f454d6edc62babb3f091fab", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "78b3c5ad6d1e38d3a9493372c98997bd03be8041", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8b09d4a72f3d3e3637ca02d67af5482d180257bb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f540486e04d11d65238f594487d13268a09f81de", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "728e4381704ada08a6d2f6e88f56a15490c973bd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "f6b1fa849e539588e93bcc0ef1f2ba39e18ccd38", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f6b1b91c80bd5fb8b9d6111c404f2e4c45771bc5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "921d61fc27fa672011e968bf20f2a251b9e3f295", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0ad221b10b070485f6acde67f04f34dfbaa2af98", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0d26cf7e230e47bddc69c993413ca56040bbce64", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "111e5d27c8d4fd782e18f654aaa3910c0e34a731", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "baf901582d537727cd8d20ebb54ce062bf84cb4b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "98309a57450eab2e71f3521364cbf0bdee9bbd1b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4216237f2582807d95921fb5d00fbf781b367675", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f1027e7c88b9016cca31dcdc78c007c6f5bebd6d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "9fd02fb3b7c9ff35364164f8a7f7ca1c623d83d5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "2b67b56590bb0654a241c8afbd59f7f840244ce2", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9b570252647ce11c5bfe0407046d7f1509e8dc13", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f78de19859710b5175ddb9758a41254086b97006", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "44093e98a8084a74c303ddb718c5c05bd0ae3c35", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ea81f7d68b521bb0fe213b9ad267e3d074c89d13", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "fcc4d66ae287fe3b3b0bd8177529002da5fbc748", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "98e35f87a99cd5b33477ecd757d79ecd1d2230c4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "36d23271933268b6041ba7e20711f38342036bf7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f5a4901eabfc2fbd2d995d1a6911aa51a35be908", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4be311b051a075201715c93976e1159e02311a7c", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "edaafa1cad1d27eddd7b313145c7a8ac0a6b4fbb", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "63f64ef0ea150897a39d2b10214fbacd18888c03", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e643265ac5792f3d7f51cdee12f842198b774f9f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "89f6324ab8dc8bd11df551ed4dd5731fe9d07a64", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e57474896c6e0be370b2f4645950442d4d14a715", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3d557acffa627a49f4d1fc2242659fd4d1f85503", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1ecbceec1c6e3a8f0ce6ad3d27f91ebf40021276", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "206dfb66f5110ebd1cc301f4b6cf2c716ab63c7b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f9a96140779d659c469c377a02008842a77b47c6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "29b48b5d62f4d0db2ff141a35b45f20370a24c0a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "34f14517fe3d5bcbd010da9b6c4088d867534310", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ec28b76e80dba94a2a1bddeb17d2d919143bacc2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d85a9cc97712a0a6013ad9a6c468e1c2a6bcf74f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "621c28acb5acfb840d5b15fe3a376778269d958d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "76ea607c09cd6ca6e91375b9ec6afb3df29f7879", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5c9706e217e5f95ce08bc1a1cefcf257f1b92c40", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "6554623d984ff4f3536af5a93bbf339be7e251f2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "10e8cecdbe4aedc96633fa95c85c8261fedbaec4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7c925d2422382316d0f07de30a0e51ac01a47ba5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "d127037dd75586e5a74944ae9b20bd93dc53decc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "aaf349bbea0f24f306efce05c25df63b9f6a4463", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "280977a792640c5e4ca9fb46320a269a30efe3d6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c90ca29fb6a073d544db9b6dfb66f4aca7c99d0f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "40885c70d0ff2ee52bfb9c526001852949d93540", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "74e6673ce9d339c200d02830ee576bacee855c72", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "862708d9b89c03806c54e9ee0de5c272006c613e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "60e1700f00cd2603ce248af8ef04fa6188c06902", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9dfb47030606fe206598706c18a235d3c80a9bde", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "14a479fb3a35570166a431e6fb68ab49023a9db9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "65ad2c3933b6d5d6932d7fdb963148e9e42cc85b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ef6189f081425627f8fbd58ea487c61115d78345", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e0f333f87fa29fd5bf45cdb9360f2b56a1ad471f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d11979152faf483d4d19b6a056f6a298c4a8ae9", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dd8bfa38156867c38b33a66b9bee74758fa638e1", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "312b219fa3330710664de99ce44b2bf491b10a8a", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1eb8741ef9477fdc3d01f36dd908e73ecd190a9f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3005db0032ad55d6f1b59b38724ca070ab2e82bc", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3c439735ea0a02f6e8fa89f5d9d9db9c4ab7a5d0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "86d12a8290d6254ad5b79bedf9584598ab5bf703", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "76960002348c496acec6825d66ab5bd7e2cb4705", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e32193f719f3a50e382d3e5d97312f5e9711c4e9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f91eda7b6951ed1293b424f1a571d484d8d054ca", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "7b7c72a558ff52d9511dfed68f2bc35055dad21e", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "65c627e9d8d81cdd896b8056fe776c9c52cb4fb1", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f9cf93d6f0ee068ac6fe113e44015a31ab1b4cf3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "debe21ba7af574906ef8684f913040fa5f5af12f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "5cc1cc3e15f780acf592252a8048eb77420cc749", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "520aed56b41d6a18f2d08bbdb8542b0bf74d336d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "30f9d4f49b85ae83929222dbf76f1a46bb0e12fd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "119de37307da6c72bd4820533ad3ace7ae708b97", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "de7895fa131e1640c9ebfd9129d4f0bc96485df0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dfa100a124d44e9fe0cf346fdedfd1824dcf8676", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ffff4e259ce9df973f25fdf6a478ab94b3d99097", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3de730ed0c7db986f668cfac012547430ea0c95", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "44a646eca14d0daee70e479228a8610fb5f4e3b4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f685bb31c9af585f6af60f1f00d517011e10a425", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "1fb355e91abff098ef6c5b53a78c550c37094e05", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0656ffa3d45c334643bf0500012971cf44017a91", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1321f359e0733a9a0d3d1f9a420be164bd6d62b7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d5d6bdfa6e6886f952ac51922d764d87430bbbfb", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "bfa6f5aa89d7d53a837416b52057fda9e6342a27", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4fe8a621153b900119009378568c540528517c6c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3ae8728f58981a6013b6ac8cedfb1a11e3996bfa", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "5673116a04559958529c38f5cd5558d161d06ea4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d9f0de811ab36a474477ca3578cede5161eb86a5", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b0e8c00e1f0fc313cb190851b42c01d6e7b65e70", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "2c4252c2f6546d19332a2c3e3c664d619ec6c0c1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "334f0e5a490f6bfa75c3c428e0e29e6af24ef59a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7c7c2a8b5fe3cd77194b096f67cda0c53e5f3895", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "5dd9d008d359466c6c0903b10b86a533fd2820ae", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f6b2cf16d220c2393dae30a489f27664e024d4b0", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "dda421c7cb84107314d70becff6495b7ad5a239e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "117f316579bfcd2a49507cba50d4bbaab0d26960", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b917176282994cf5e46f1d68dfb27903ab600e93", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b0a10a83a08370f0a792d7414455cf38ce19fcbb", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "53bfb36ae2e336524c06f7a5496640067c6da9de", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7747ef5cfd64de76a273a8a545706e6d0e421172", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0d55ce188940900cefacccb62eb0e4c485435042", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "661592c93dfdb328c8cf6e257271d64ae4213f71", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "052bdada9c29fafe9073fae58b06129ae401f1c2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d076ceb088a8c86598f5de6b2fd60d5064ecfc5a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e9222fd935896764305eea5cd5482d4547836133", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "91b0cadf642cd01d8e5285a27917af7916ffc1e2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c49a286f3d6f4ee737b030eb0c49988d198a1baa", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "fdf8c4ad67d85f418961678b40715f93d86e80da", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ec3ff37ed5198fb6462d9015b00b80b2a5eafa70", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a8428c7f5a978dc9d4015a9f8bff34ac2d298ae2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "40d794a0df3a8276fcfe14b721413050620a8421", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "bcf7e555c33b286ff0a63092b792f20556c7953f", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "047e2acaa985ff01340d2a31cd22824af655a875", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b00afab23f4c6d3539feb087a9836d6ca0dff564", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1defa8927294c15dc9afa3a515c2f8ae54055dee", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "d71c3f0e5b3af307cf9d21b6fce4fb3697345838", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a05359224d6618828d1dd73f223da76575f5a3fc", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "7b72b7c3dc100000ae349bbcdc2a65a4848cead9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a2de88fac1bcb6610d948c4beffaef893c71ae84", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "126077185d0cd8f1c9bb6f63878d31ae077dda06", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8ad943422594a0038d63aa55ff13000b9c876382", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f3264598d9e0c91b72de9475b19c1c59344e2ca2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "6d80c5c1f1fa3fc3279f66ded577d3562089e166", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "2cde57ab6b3f3d65e32a439a21053deaa1f10837", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "19ece94291d7b3544a80ba90bb64ac51c12ed974", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e82b5d06cce7bffc2dd9d821709aa637b49c5e39", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "3b258fd1afb3631d067ae0e2d70e6b311b75fece", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "379c7c3d0575e4d8c4443a2c51724285ace4fffc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3f0ca208d2b0f4ffbd4a63bd5f92432773032840", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "83449a0b855ef5d139e6caf95dba4c1fef3bd130", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "85dc59c471b12b05a3d9b1529d89f865b4c8229e", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e4a987d4835f1b68764a7b2f758f98b08eba7c7", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "bfc54873d9b8e8d31a3b03b5f18b12d6e5dc28a4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "08de00599c5869696fdcac9fb3d4fad1f2465137", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f6ea2ec6441c115d3e543100950f09445f5bc418", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f4f324f7cbb572b319157ef29bc8ef80c41e90b1", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4f393323d202b20aaeac265be1f54de70a3eb29a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "838786e16a0cc868bdb69534f0e33740559c0937", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7b5b28e639f145484ec679b243a2d6393e38a8ba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "5d4295c60e412ac15ac3d9a81848a42aa55bca35", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8d9d9304bf34a754b2e74892186faf8cbc9d1063", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "e5cd3d18a96495df6a80b9b8c000fee3122528de", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cf4203c688cd86c7968d25030874a39c28356fd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bd0f80624119f3eeb20db24deed59a84779fdbe3", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "c29e9d4e7ce05ddc357b09abcc3b6be8f0ed0dc8", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "797df0afdd69f0bc7d10529ae4fbbcff318af607", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "20dea85a2f3e2d846560f22b5e690a6bdec4b460", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f0bfa90a9959f93bd33cc8121c1a9c562cfa8a2b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1d613c75b25b7bd1c4d22b621a5255875b05dda2", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9fa4310ac6de31e856c47c31d5ba4da2fa68d05e", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "24f1773c9c46489a2d51605ebbc3708f8b38c13e", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d6887f6ee340b0739ea4894fd2b71b3e9d8b35e2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e6d27115ecf07dde265fc2a2d282cf2b1a48db96", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a8a7361d9d7557ed3c86a1fcbc442e041882591e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "17a4e745f46f32d8551efa9d6867078ade588159", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dbc2f136f452602a193a62c0eb6932a1e7b77387", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "1aa4f244340bacd6fcf09ecd5842f999bec98dda", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c61db6e13d09f4dadf48b874c3b326623f147cc0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c18378a62811d3cb95d32bffa2c85119ca4d6c48", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "9af204c3e5ada5fab29019f265f66199529c2fe5", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "d92675de7bca54b0185acec693dd6bd837e031e2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "04fe8d33c89dc796092edb9f569c8a2de08f838c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "71bf8ea72093d0512f2f3afc46c453aee31edfc1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d769382d172405517908bd5d1fc6ae1c61ab7bf7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ee0e680b040c42b40e539c142761f2dbbc4440d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "35187ed660f8e1488187a7ce55414b26dfa3248a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7f31813bdf11e19637ceeefa216292698c405b4d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "ecbace837567f91627e9ff95f764ebf6e18b1879", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "6697591ef673ba9bcfcbceba51d372a6914390fd", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "24b4af4176f67ae93aea4947a3d7f85815f7be03", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "3006160a559d478d2b9819e20c06a15bd2d5ab0f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7ecf8c1634e99eaa915f90e6dad966c3210d55da", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "ff16e516102b7bed0a8d805563a1397fe8767668", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "906c4b9cdaef225fdd6acd4861e70725742ea9f2", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "355f145e1d0156ad2a21715e0372be9842782b14", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "57253d3272daacd4c4ec0bb0437090b437890332", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "ae16fb661d45238b106550965de1b010f5f0ee51", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "20937b9c2fd7a452f9a55593c0ae94f897dd8cfe", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "bbcd24101aedf2a23faaf4c6eec0aab7b6c6a858", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "dfdddc1b7f929a1359a82e82d337471726eb18fc", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "fbdf743d3746d2f65e66dff06bfefa5a1d4ba39b", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "758ba52b77b10209df01096bf6ede8a2ebbaf675", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95f66deda7f3173195381e48ae72820e97e9d887", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "751c26044f66e2f5f1ecb81ddbb8b161d4ddbf55", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "1d0277ab05274d801b7ab20b9e5205cad4a6646d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "97313a72f873d6b8e5a00af0e198d8bf97baa0d2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "99841f88d608256763805c9119a804a41f8afe07", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a4863eefadef8c596c845ffb5cc60ea5fc7dc7a6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5aeb98f6ca7362e85ac5dbe6e7e37c1ff3f54db8", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "41f560c92df5cdbdc64ed3f626216d8e67d3594a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e44dd9b8bcef0e5b5848de8db92b9758445092cb", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "de258fdd3820559f76e93ee8841f7e039b9ec1d9", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "8f1a5610d793c02fc10084499fb8a3807b5405bf", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "97a8abd14b005a2f6b343bf66add034e62a0bdec", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "db4c7d03918c0afe786396416f4610569aec2df2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "09a096a32e8b5c257f19c03cb817d5166fd006d1", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "559ce3db2598994fda022550ed137feea22edc9c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c1e4129552c830e9a03b42beffeec0a08420a9ca", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b3332b20339d246ef5cb3f107a8dd57a288661bd", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5a1a88f4110c12ed0885b8b90ba053ecb02b67a0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4f2513c54de89b04b070a74e8f5775ebb83f7c54", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b1ada4e018c08c991b822628f330bf4c81d68f64", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6e9f53f373993b50d4917f1bc6a262ddedf22972", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e2c3b4768d00500a8a3c876956617d1329591f5a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6e76ab3bb6e4e13db97f95015d4cffa1e557daac", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "d4adb7174c322152c932e6b962092f77aaca5db4", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d9567dbe15aa1710cb40ff2f5fab10eb9c111a62", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "653ca3c89f8159e3e41d39b4f2f4cbe629e430ba", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9a6212de07083e561a4cb9eb943576e0b800b144", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3f80464f835b7df180aa4c23a271be507f3ddd9c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "906df6d8ceb2302340a2a45ba7705b025a748e87", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "21350f6f8d8ae4b6b03ae8a9a9d310ec531460af", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "18d29aec4ad44a49eccdec41cc5315113be9f729", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7b328326d22b98d11f581dbf6b49f8fc5a814ac4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "219ae9f495f94866bdffab1bcc33742a097a6107", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5d45991b5738f546e1dba282cc921b8e99e3099c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "5da624b7584572e04f586330690be17b45fe5e93", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e69d1b5daaf2d9c3aeeef24a03b4d4cfa7d2efe6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "abac057bb68c7c127d2a2a1c93f6b4f96f94b006", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "077e91608143ff182612587b2ee4bb756c44453f", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e12314bf63c147c2fcc5d5234847f406a4a8a3f8", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "614f5c0f441465bcb5ed466ad97725542331a4d4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b38bce468a2f60878fdc852603cc10908ef37826", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "07a1b569bae04eabbb8c0e79b176f465a6ab2114", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "69dd4b59f1235bdf73db9d09b8246e3f46a5d4d0", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ecd784c9ee1e36e3c03262232a8094efa96b14d1", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "a50749ae3aebb5abf7a01d1295ea68c3c8488f98", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ef55737414c49d0517370d1905aeb6f469351b08", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dd36c46c64e535104fd33feadeed8306e7a4f47e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f0ca3015a22c23be6ce5b52107b7c2e1cc73fc48", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "527328d7d6dd45e2169dd423452e9569502dbd67", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8c3e04f05d61391521c8d2c24901c70b06a1dac8", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8c0afbbedc3401b771fbcdfc4161225cd68c16d6", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "140c8545768eb62fe9c811bff4ccbb939b8e7216", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a6939d50eb4483f8ca64509c22c2b6eeccdc5f52", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "eaba6980e5771530cdc96a58fcc1b5eb80e2f387", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d27da6c1a8e8ec85ffd743fb1412a30af5f372e9", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "4bb251cc62073eaa93207c66e8723400be7b88aa", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "20e703fdd8cba63978795b82d4df1ecde65dce5c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e14171e776c7e63771de4c28de515465aeaa864c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "ac1aef15e13cfc4ea49e1cd7176b65fe9fce5fa2", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7701743adb8410f60340488a231ee06036e88e32", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6b4075bb4075e329fb0a72b93c5a652f75f3a72a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca05b8c14d3e32327b566d79603d372e2d90de0c", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7db069095dfec4f16294878696b1934e8eaa7a54", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "3da98f720c3570f4bb186aedc377489b1162f250", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "1fc07f1e9b096d0a661e11a965c4e148cd11b1e0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "08e9b78fa03ceee74dc7be70d52eadcd037d75d6", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b9e08b9cc57e2dedc61900190503f49006005411", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b102606a9f2df2fcec988f6455dd07c9274e8a26", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f1b068af9d7d24ac1051e164bba50113eee26995", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "159156f2b5613f8a74f2e038f8ab28c2bb5032d6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "506fc012fece67f88cb730f9f20f2725c2735a06", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "516b40f25182109f78a203011e9c3fa67db19bba", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1620c6066b68fa3e30bc973a4bd29cf22660af56", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "a023af357870b9931175f7c9bb8da69dc3ecfd62", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "bb36b32aea43f624fa474ceaaac70de19a12c109", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "63c0b451d907b7b9365122c332446747aabe5a99", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "c0d1b888c081b44dd5a348573503ed6c3d0a3a96", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e4f254ef823bc77a07b732c43daff35db3bbd777", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "cbdb51b12e79d8e890f11693e07c092d5ced0255", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "4224e4f420aa01e6b5354d7ff7e1332f964c23ce", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f3e04bf605e10b49a7c02e775129861ba5a084b8", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "69c914ddb1c159c1ac1cd5f0e6e4481eb2d1f1f4", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "d41617f3785c49c14fa144cdfca691c082a2aac3", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7bec053ed6f7322e9b3b2527b3301d779cf8b732", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "b474cc0202a1c9176a3fb392470c7bc60e513eba", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c0007caf9dc5050bd9b588f65ecbe6f8816c5666", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f58b021179a1f08fb2040181b3360e89117cb3d0", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "bae421c9c0866eee2820a28a9800a81834a27261", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "a065fdeb4ec4296d455a0c2efdfed367b5e19300", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5b23691db3dd6474b6dd14ebdd7c22f06c475a12", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "d2fcbada633a7d2ec24ca629d71aa024d6e93a75", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3ca07bd537e02ceec9c44f42f2ab5d1574313256", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1572d2a6a116ccb0a346d624f0855202476e601f", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "86a9dc6f28ab73eba4be9f9e59caca50e488c5dd", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "babefd5799ecc2ca0511879f2b797b4122e165d4", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "79ac9cde375903e7b33fb0079c5333ea7025df30", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b189b8bede8d5f9c7ca8db2a9fe4ba51fcfec7c7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "76d773e216276fbc5a900a572f9c3c6449bfea9b", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "af0665686d3695f1fe2d5223ec7f81fd5aac1c71", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "745b239cebdf241ac169b53fd5060fd71344d68d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c5b0bbbe1e013954a5e42d9a14e3a8727f74e736", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "cf017a345d819c6997768512e5a1bc283def137d", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f93f9b30382faf57254a09f3adb2b8dcbdf62055", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b6ff0ea1e9b608705f7d73b8f10a44c67c2be48a", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c4ac1b013f9a7d6f9bfeb6f685636e9a11691a34", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "232111b3aab3756dd207d5915c7b1be62cf0f658", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7491ed771fbf151c3e12b5d0cbc57b0576d75088", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "aed75bd00627d1c2b4a836741c8c3e84b6fe10ef", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "85e6c00564f063e7bf8d1fdd59a276413ed3430e", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "85594c329a03c5f39045630b32a438885265ff05", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c28f7d31047da053236021cb71858adf397a960d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8655a7685220c54761700d10577bee846c140a9d", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "eb6a84c7d2a30a67ad795008863ce3841f2a45b6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "4630dfba4a5c9ada9ae202947557bac6ffb175ff", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9b02c21bd8b19c0c65038f0bd739c7ab771804c6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b5a046417a0f1c378f9bd95732644ea758336744", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "99e1327d1486715bd6670bb1ca33d3fedf5d45d9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "de74fa31149a62f67d8f5d38c20cbb3e19e6050c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f52cbb0db08aae94336e037e1aac43dab9962596", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "5dec011881f67b6fba065f8e28f3f9a248e78bee", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "6c7db94d8b4ff9bd6a6572fee20fe76f0f1382c9", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "50a5f8d02eb197e170a8099e1d99df6c6e63a90c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "012c19375b81c44ac95999a15d4027919fa31939", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3e6d2860785c2e2cb59d4a26f48473cb69930394", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "dd7f814a7617f79bf37cfeb6481bf61fe865bb8a", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "2abc51397ac9b34ddeeaf4b7d07f9a4eefac689c", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "24784830f953b3b737cbed39530e42a4adc69517", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "99318ff4bbbaf6d39535e27f01bb662401d2dccb", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "64db1dac251ec17520d4f28cd56ff87a1cdcc6bf", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ac4a5497fd2285ab80df8f88ad739d6ad6d7faa7", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "0ffd59db16a300785cd41022e450fa433bdf2173", - "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0e11aaa2941689ec67fd5d1d43d0e46b5b6df11c", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "5fdf1677df67756d3a7a36e9206004077c9c0d16", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "10429d5d5c6d4179b9ad46e062fd5d40c81392c6", + "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "54696dbc81eeec485d459c88ed85ad1b99d9b422", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "b95225956713411fd2d4be98889f6de4083ccd12", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "80aaf2e0aa9bbc0c8d691dd48ff87d6ea10b4bb3", "dataset_type=timeseries\/statistic=total_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "ba54bfb6aacde7b3cc5bdeae7ebd4009da0bb01e", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "776c63cf38cc05b617b0b471a8a4fa8707662734", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7f8739633f3ec0b99fef194f793852dd4188d365", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7ff51d665d99d94f7c3c484432a79a4f2d209a10", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "8386ec476a5569e58d158e81051e1bdd352b7280", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b4fe60e2d74d4a524607c74a6943cc1dd982c680", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b54aa63c72b8d6fcd5a339b89acf635674c11438", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "38371cdb7693d29d3ff2af17e946e453251b1e70", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "dc25250bc27decd229b169b1c012964056d042d3", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "35309f3f61d6c0864d9cf2141f79b2bcb4908438", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d0d48a47884a2f7a3e6ed7a6a6662c9d8b98f6b2", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "15def4c04d881a5147a69ee50fce48ba1af11dd7", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "954bbe0adfa460bee809f71844be12e690d68f48", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "b5d74ce13fdaabdf4bd7c5cbd4964560d36c4716", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a86c47171735543be43333a5efa6eea3d8f6dba5", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "343e98d3fa4d8c89e87c75e3893a14f3f8217a47", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "75d8572830b6be03ae83feb8c479e7725f337971", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "992f71ea61cccb603e81945fcd597a033bcc1fda", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e73706e58e0e3a93dbfe225ae82c3c48bb278b88", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "01d1f15c8d1775f669ad960f026d631e76ea7584", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "a18c03377c921a5ce8590fdbf371f4282c9cd936", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "7fb4d858c4024c9d3a5da5fb5fa85e6bb1d552cb", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ad7044fa40d4132547839a49ff99bc9533319f74", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ff1a29252301b0fb8eca0f6bea124baa8ed2ecbd", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "a6c3a0efbc66a0cfbc985cc6b7ff85ab42e83c82", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0c13f6a799e77fe8d718d14829dbc718873f7867", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "ebce7254c7e1bab9a286bdbaa985ec56aa78f9d7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2199d95e50170661381e1f0fbc590e29f49fa46d", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d4c157424827de46b1a02a9bd856263484a093da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b9301acb0b3b156d64c4d2babb434f8554c97fd7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b3a6a6f5f684cfd3061f0607e59885ab62168f24", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "9f1ade6be22c22366e3a32d0658080dd3cb36b59", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "89c841cf0ef0310ce786332692d56abf767281ad", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "6543962577c32ec443ef62ba00df31031bbcc131", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4c9d782ffd027105733afdf931b338e5fad99860", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "264a8007b746db82eb32c0d961ce280ee30b1215", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "93015f6b3fbf105d31933cb4ec439d7ad76a10da", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "86ff3e90ca778cbc18f248af5f664492af53fd48", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b0ce11e99073c0dac57a8eb35711fd4c2b9f1d29", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6b2c677c09311266c10389d6e3ca8b410adb3142", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a5bb1a9eeb251fae664e294bc1dad300c3c40adb", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7f8857137645ae8eff5d5cac96f1c2c7c50c5fc1", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8e0205685534e228db453ba105aa26cbc67ef024", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "27e53460573be2f71665649f9d9146a1f87d5228", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e22c7c9253e125cdfed3b700c1507bb796c671da", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b67ac669a909328f2d21930b8cbd950db761b7f4", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a0808720f08ba941d95fd2a378718d645041c457", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "f3bc8533341435a39651331cc1802c55afca01e7", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24900accf9c53a67d52634a72d1feaf43501f200", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "02921479aa4867b425004235c829d965d2c97516", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f4022c5f5f9929dc4b3a83bb476a544f4e0e0abb", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "b3ea75cd4b7506445a45d4ea59668e4a318d2fcc", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "174b388bf627f4494cb0916e68041602501c0ecc", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b3817c3374e14eb0dafa87aa8369de24da90b615", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "2ccaa8fa4e74fd89c828f8ab779cb0babad8a71b", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8cddca52359e0c47bf7c65f5956eea06d7d78316", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a1fd29dc4d741eab051f3b88ff0a252b1c058251", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c1f38b86a6211d63b75dc1cbaae0e91e098bf128", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "a2737993ecb13798bac891b13e01c68ae2b7ec50", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "bed3340768954678488307db98826adc4e38aba7", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "91a8c431fff57f81e8b3d2e40b1174f56f188898", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "af12a1df514069a6e3e3a8de8671409911de3aec", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "64c5edf611acb6404d792c6c21c8156f02c46317", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b46ea5aa147b0fafffc28cdeafd5054a2b8505bf", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "ffc3b1cf2d95e94e274b816180889cde53caaf65", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3a11b03d4920221e8d6a8539db5e65ab427d1c0d", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "70cf8a7aa11a3bfa50dc4267d0b53bc5f18d9f70", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "8a0e8c41a0384aebbcf1c9aaee9aff7bf6bdbed8", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "cb22eb2508f9831b206d619b601b0c21f3a03b8a", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "dfbff879b43ad6cfd285ff2c8d0cdbcb37809f16", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c393f87def7f92168cf062103e18a6a310ceb411", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "dd144a1ac3b6ec1ddde103d4d9c79a119ce3cd80", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "f08aaae6489020ba704b8d794890bfb255bcabfb", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "1771b3361349db37f21041ae3ccdbba68990bcd6", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "389224885a3c05282760b5faa684673cdd19ef61", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "71ee3f42d7e61071d318fe711eaaa6b07a44b3f2", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "511fef4511a076f73f7ecb8e76cc8cf75ecaadcb", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1c3bb7661dc6f600d21a9e08e294f5751ff46073", - "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "8cc0d3fd0d2ddfb453b0b6e74cbf13b12e62f34d", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0a80eb61b8526e5274144a28bb7e140342d598b0", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "db134bf2898f48638ff04717ee969e663a276d7e", + "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "37c49264dc215507279d29d019696b36beb89459", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a173fdc57f3e89366d1784fe1e80e6cde46a3644", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "f0d5bcdb0c5648a3bf5e5f604e5b5e246429f668", "dataset_type=timeseries\/statistic=utilization\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "3002776e921b0eb708e5d9ae02718770a62f6114", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "39d94f462c614fa27ecad1664a78426abd55bb59", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0c876db2ce447b4fb32ad01b645cfd5f2c49337c", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e4ce46d39fb302ccf3048b9ce2206bd24125716a", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c033dc4598dde235cbb648d54587af26b60f91d5", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "b112622c7a71c272b9782b2db4d19a228ce383a4", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "0690567a63140343ab18269e9003d958f79d3ba0", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "6fc1f484695bb9a9f844abf16bb222b970a2c1c8", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "8d41a8899e6f738837837062df3a76f35054fdc3", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "0d724e6fd1ca883057f00270a9da32cfe06dcb18", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a53be95d05465e1cd0d52c33742749143648db9b", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "c9051c0418743dc9f445a9c5e1cda835344a6085", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "f17f8e6941f28e602e5e9696f2a14e360914286e", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28f6f570993c56ca29275be17f2c97e82a4efc68", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "c2e0c9e7fa3793f2b71224e4aee32b22fb8d74ad", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "dc9500690c5cd3b32ac31a0957ec31a5669eccc8", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4783f41c015b50b8f6ece463c3bf86347c9f3bd4", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "bb922194c62500eece890af777897793b742724a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "743db18b3aea82403542926659d0bc446f72d9f9", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f7bd44b69a7dfa74f202479201d6d9d87f334ad1", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d19ac3a4f330659301b59f1baba4c16014c396d9", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4db6f5aa3986d41bbacdafae1e1a5d5b7cc1f930", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "16ce24d1b3b585ca35e6ec3ac726a8306aa8346c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "30b2a83548fd4ec11cba231d43fda7fd01585275", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "a28da7f48e6eba45c64f758f6fc7a951f22123c5", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "6f05740958aca11340dc4baaa4e8d1231282631a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "f32b767d73f8dd939333e65e5cc075473808ef4f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "c34cca86cba8eb61e44a2451e85d4e6a87566dcd", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "d5ef8c044c98e90d6f3ba7cf06fbb8169423f5b3", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "678726cc2f3edea12b857b63df47d2dc43b56e68", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "0cf52e33283c83041d684a7363c68d63cc94df63", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "227acc4d304d6dcb28c98bb2abc27f836cb83968", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7b878947e8f566ca142bfce571c949e5760bf0f2", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4cce42e30abefa59bbba6c448d3c24be7fcfec4a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "02c47ab332a48ce1d9ea599d4cd7307b50ee7abe", "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "c017dd4a6fe3cbeb7ddce43191f4f3c28e0b0812", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4ff7391eaf727956010653fecdfdd484c72312ad", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "af5d34c083a93d2d2f6bbe03045929f91f9b4c17", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "c2db6692ef05b732b2d4f29ef4d58c0c9d06d6b9", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "6af62fb3c2f7e618e8bb12b71055ab9ff02cec8f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2a8a73e7f2ec7f1436871c54329993308b43037a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "2ea8483a90e273c3d881969360ac15fe2af3fb49", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "b99f12f43060f5cc6999ddb79f5b451240b05220", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "6c6adea3307b4cd12e4723a03922e528400e8b2c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "9abc5456473777a36807c7f317a68fc9ba918d18", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "4083e9beb59cf213fe7c25b0ab86e20fcfbc6034", "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "98c8fdb9eb6b08cdf6ad8383b656dddd6dce5670", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "28cff8ea9488cad522667b526f6b902265b109c3", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "3d4a6259279cfa5fa6bb8dafd3491c622149721d", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c22bad9d13271755bff445f62f4886c75b55496c", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "52a486f827d91279574ea070e2a28f39d75d196f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "4a0155afaccf7224914164545460b1caebdb66fe", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "5219331872bf1c037dca508722a33c990272af48", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "4d09124f40fe3330493938a216cf627e89dba26b", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "bce865972c2f2505bee68cdd23e0274e74f6a984", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e3e5399599c2190fad2f959ccdbc96d8a5113c49", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0553b15e3e6971fd76ae78afb1542c36df4844a3", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "38d5b4bf10affb110cdbab2078e5a376cf5b5193", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "a1024832d330aab7cab6008b8929f3e32eb42540", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "8ca47e8c97b71e0b7e871a2426e8df98fea8b293", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e3c87d18930120e41de3fed2ac53719d32b9a70d", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9546cbd4daf1319b06cf91f9b7943977a8fd867f", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "a7f3c4886ca66422066b988afd775866e17505b6", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "54adbe9a6f8874268b8b389a66c54f926a39a23f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c627a8d509b78b926d99dae0c4e529d7b31bdf61", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "89c0d87ea4cce56aa1223d27d355bcfdec31a26c", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "ed77653bef334cc9192a53d7e2cd1fa87315aa6e", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "7ba66293d98e2fde1fad2e3c85fff937adfbc171", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "d0b5f61d01c77aa4429a79f0d7f1c040e1d4d72d", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "9c20aa0ae4602db29ea9bcbf93c2366dc658265f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "244d50f91a04cdfd86785dc9c928abb4f04d8661", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "015f6f1b9e69c1b237db4a00457811b710bbd3c4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "9aac787a56f983723312c09bd3e0d173cb453eb4", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4c467b01f3812b9ab9d7ae05a14e7108c5b39b48", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2bdcf14c0eb1151f1310b830a0065ec4870d8a96", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "0cf6b27003d421cc815b2d5c7cab0260ebb29375", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "67460d7c6dc8aa1459e2fc7d2619d99f2fc7f374", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f8c628dd785b47e4463e374ede223cc55640762a", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "c3ec448c34baa2b0b6dd0e0eb8eb32c7af2fbcce", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "7c291870d8a67df01b2103760d465c68091b2ac5", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c4aa63c497bb3c7f9c8145548285f817eb19b840", "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "b9dc63876b291f7e71e176643c8160c4b10ad815", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "0004d0bb2fc578158e72f9635b56e347569e8258", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "3e5a36f822d3f6da97d20af6f0c8dd82bfeba270", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "602f151028cf7a42b595d2cce2f0d51aa226b4b7", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "37203d6d06d912ca43d6df489e083c60ef9188cf", - "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "68fab2202ff3ddc4d23049e25e1757f229d27564", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "eba8d70d0dd843411e7e75319b8f5f743916332f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "aa242c4de21c9621a5b7d5e63fede9cf742c691f", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "9b29b12753cbdee2ff51dcb6a3c4ebafd0ebaf85", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "d8d1e7f5665014d3cbd6c27ebe2f935fd3135952", + "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "12201c5dd341cd2265ee7198a821efbf6c0e9eea", "dataset_type=timeseries\/statistic=utilization\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "4f86aa64ed98d7a73bd3197e48bc39b5282fb533", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "c5a3b35556bc838db6b848e0cb5194b92c225628", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "e2339662a95300260ed39d2ba05b1c58d860d89e", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "15659f6fb463b9e8412032980741e0fdbddfc7c9", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "0aee932afe2d41bd25cb595c17609fb89a4f6f20", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "0286d6042ce744ca02efd5f2c653e924e02e3ec5", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8ddb4aa93d06115fe3555a0ddb2d22093b6fe528", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "06fb7cedf0c029e6753f96f40504085ff7dbc40d", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ae22bafc5a6de062c4ccc8c3a30cf651f0879192", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "abc54b9d34db0747b49058ac9ac159d058e42e9f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "f3f37b999ab3ac8292b9fd4a028c82a0c5a1aa26", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "a189258639a0fd8df4d164e603c8ad7992fd94ff", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8c6ca75d83af0b7cf3128638daf6b5b14115c10f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "76e2c6cc34de7638c77c0be163592329940a954a", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "0e7d4c5d023b753cc177b9b1d59bd5b48be86211", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "7304eb5cee9784fd343137a30635ee3d503bb097", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "954fb461b3f382314f881c766d3f4edd1720484b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "aa13c59fd37a0cc844baad797c33d5c46982e442", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "6585fffed875fb567db4b0453d9e0dd2555fb1d1", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "95c0c398fbe12e1692edd8628fef4c280fcd2804", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "12af29501c26928902117629b73e6dfd85bc89d0", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "ecaa4f9b86178825a90016790786dc033e53ad9b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dd8a50b5510e8bf8969f419cff4dc758d030b8bb", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d2b81d46b362ae6b1771a0076990fa10eedc392f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "aa4b9703733f13e470e81c094d1605ff12d0319f", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "a36a754a6595950669185148ebeb8516d53ff295", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7aec7dbc1fa2710a23ab17babcbbd6becfe37fee", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "de06e93f14fd71b623b02e844eaacc3d45487e86", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "2ce80556212ebf3d920c4e81d2d436c1a882ae97", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "52bd306468f1f0d42a5f8e84a62808c4db5876af", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "cc76a22544da8e4845723cc9e08dabdef1b665ba", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "e6a67174cd202691ac19f08875421dd7f6a54f6f", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "c8cd5a9c47f6f6d2ebebf1d920ab30e94b761041", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "24cedf6101549d81b826b2d8e21754396eaacc8f", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "012bc0ae1cf1aa4525682c9469ea9d681b28e3c0", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "ca386251af37a49c402deb3d82a5d4b7b76b0a62", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "987c687714a79a8da68531c66fe5a8d16d16360e", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "52888ba66749d44f776bbba8b61af3bbc069d0e1", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "e0cfe33811cd0c44cade7bdaca873b20478b1712", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "22dfc598a068f3ccc29f7a662a298bc4c8d01cc5", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "41bfd3d1619c08269687be39f0d4b77475826866", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "acd0b9404ec3676ffb16fad3225be54bb2461b7d", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8791605baec68b82d22e3b66bc25962869cae665", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3c5b17458071778ac6b6b05f17c538ea9d486b68", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "f0a6e821cf48678449a90c657c8d104c96a50edd", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d7825238083654ba7ccae115b60a231a448cf608", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "fb995f3dc40948e7d736ce1a228d6f8cbad7c1c5", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "839f825d0c4329160761246e9bbcd79e42f36f40", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "338ffb18b25ffd670f26384eea23c0fd7fff9814", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "19c72e446691abd0704c282fa87eb92142d91434", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "44f44dd8299b926707f0f8cb074dd49526d28779", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "cf2d4dbe0183d78f58e71691c474dcea2e016f20", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "88a75c23c31ab059298799d14a4a8e56aff53179", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "7ca0f2521ff5aa897beaa3355a710d892d040da9", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "8284e3c1fcc4748031084464e380fd0be3bb3e8c", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "56ebac2dd0ea78d9730e65fb5894867da683417a", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cf4d24760b3811b7b19d74334bace397466323c4", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "9866ea8bf8a9108d75949eca6d1411b93bc9f42b", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5912db4651d05cc83ccce9b6491203e69406620c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a703157a6384240141d71616b6cb38ee59ff3de7", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "ef96f3b45f00377d02466f3daa7345c610dcf8c2", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "501a05749c2111875a90a5601dbcfa92cf12fa3a", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "52fe79541ae5e512e3f820699cbab864a59a0c01", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "dca7b1fc9fc0f8cc24aed0bf163723b3b022aebc", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "9bdd67a583db3a87308db679b0f4b842c2262220", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "769f1daebe5e2573a1e5003159775da577ba7c29", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "fac667bc9d14e4ba0014651e43344f9cf8773cf1", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "ff2499906c383c68b7b2750a120a07a6b697bd2d", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "0a7d738f1358d4ca7d8c760aa0e25079a176e898", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "9e42dd0fff81bb71b1a3380a655218465c9a8de9", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "d846df5cc7d39497a721ac4f0b651b6013e477a4", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "1c1111cb474d1333dd2d52f0bfa37ab7ccd7ef38", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "09e6f1926c24e43f7c82223aeac3669ee18d431e", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "bc2519a04ef4c9572375c93f9e48ce01c65a6d82", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3f0d8ab99150cfb8c677d86f4b3996699b8c4191", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "baad6123b083b67c73445621e929ef8ffe0e4391", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "c27622880eb0ed9d2177e42a8c7e4afce22bf732", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "2551d04d94936f9cc67153a51b92bb224734f675", - "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "2f2df97533397effeb2e3cb5a04039a47b05360c", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "fe19882a3f242962ffb74d89954f9fec4cd59073", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "157900700d8697f936664ca10ec015fee0c7c0ff", + "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "7fb6228b4d3f352de1da2408e748b2c6719ac9ef", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "4f37c67ebbe5516c3aae066af3c59f36cdbc71fe", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "6d26876a784648c073a89005da4c8abc031a227b", "dataset_type=timeseries\/statistic=utilization\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "252e0d0b2ddcfdee8828b6b236cf599010cc584f", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "5922a45602859ece99a6d70c28b32e6cfe044077", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "a435ca92ce08d20bdac5c80956f6657f770ae71c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "3af64e4a2279ab2828b69d86ba8046e3900efe50", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "dfd1eb200c8d371e545f9eebb274013395a2f19c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "30cc636ce063fed364f5e7eea12256e4b3f3107b", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "8043c23d7c1802d14601ca3a6642c65975e4f2f9", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "e27edb43f0bbe06d2a3b0a11e75b310a940f9c7c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "46d4bf5278e86612f4b93dbb662d54075e27e09c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "db6b22dbed33100535df6f6c22bee968ce9cd8df", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "2949ce5ea8a520f203b3b941438205528e8df793", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b4e0d9f83e780ea747242ad719145ab34a16cb1c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "7a28f6a5a63f6e8e7edce73d0a0165182b5432c6", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e30c5c71964a8bc4664451c0ab62cdfb03465ddc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "b0648393db6659af674026b5d9b5b0c640069c37", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "e6ec0ed73149444b840a2315a6199f50f1e815d8", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f733f0fdf15418e760dfdbe28a1d3b1d0e873574", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "68b7263dce264d2695241cbe2efd1a4a1f033c05", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b0cebc72827197fefc6838c89f62290dde19cbc7", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "6efec63c70cbbf0d402623e26223be8d7eb7a744", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "abb9d5f2bf83bb3a2eaae5bf91a5bd54317517d1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "77dc0051d453b29aa904c3dadae95c456212d3e1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "dd6d5a560813e4c31618d56637c4f77ce81299b5", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "f68ae400c1e344b33959075581ff5d9e827499af", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "4e89675d12999a49406bd3cc5ff25cb7b0af6b4a", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "768d14157c8113d3c29a0c21d26c7f3f6804612c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "886014462587110511bf1176da51941294667a87", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "e371060540e72b486cc823e7ff670d77082323f9", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "13753ddc176d8a70240ebc8211f8400a98ce00fb", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "cbda41a9ced7d4db6070ed441da4e78a25c96a79", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "d96984035b952fdd2c84c0b59245463a3fdb9c5f", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "20aa670dc82ba01e109f57dbf4ed51e3fd39dbdd", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "3c703bbfd705db7066d83bdcf5c5e68c4bda5798", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "60c1c9ec148e29806930b371255ea515363e97c6", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "3e7fca60d770a94a567cd2de71f49a3a1795af33", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "d2b94ade19d989b2ffd3ce51e3e8a830e501d2cd", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "bfcf371aa34f6eda4ec95344aa47875dcae225b1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "f24d4f1661f63ce65a437b4ad79167467eae1539", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "95d59ef0d000b2229aea20d7f8a688e3c69be5d9", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "81a4b9e02802c657587126cba41111081233f6c5", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "0c45c5d07f4e120c7ced1c4cdb9c9cdfd5957e10", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "b758755c9b8e3020f74a442a313c4ece5f435a46", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "17454f59974671f8bcdce38b0caf25d2147e3898", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "7ccfdb07646435d9b43d291914a4b3bc568dc459", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "7c59c23603a8b9a009ca94fb1f1225190661b3af", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "63b4f88c2405cf433f45cf013026b70ec46a798c", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "4640241bda32cacf122bd468e70132f9ab4c98fc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "209b6a596af8731c31a57543699038c247225cdc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f689367296fd72e3bca10ab94a86f5aedc1f2912", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "b49fcb91f6f57ab031d0e914458c1c1fa741a675", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "29a7f20adeedc35b015e37e3643d1441015a1923", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "1bdec72eebd57a21c5840174f182470851596689", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "23ae1c1adb7e71490ac7d1fe3993c8a2b566edbc", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "2e8de1bd8cb77087dda0377c95226fe2094d3e1e", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "b5443b299097c0ccc1810e6f0db7390505bde2a0", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "3a3eb5a38b95667a0f2b5cd59b3599a9ca7ae6ed", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "189ace8d04b8b7801978cc49b1530ee423302056", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "128918c3fd96fcf4d1a9cef4c9f13c4a035dbad3", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "f8b263163fe1b2425a2a848954f65a9a5ab1de31", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "ea8e5b61e38b07b09cdd1cef7a06315d825f3490", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "b2fb7a5e6f6452afce4d95b6beb0ab738e3987ed", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "40de7c09c393df6aa83b8c80369827376811f6d0", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "7ca4e7899292dc01a1568f3e2ab5e7e3e3cb7634", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "f3a54fedd50ee95634c7e89cc11bd0b828317c47", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "cdb2cd44e3e5323dd5f8152707d507a1555fa91a", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "1d58f089b4cf56ac4be14f30495b99cb05a24f11", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "800bc0a73b57c220d918e8845b39430db4f00634", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "7d25dc38943cdb0368d7296c02f919560ed46126", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "4cda88e7ff4ab3eb82c2a4137e789e4f9a4d8f56", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "669cf6472bc6383a13805a234e42bf4687f36455", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/": "e0a700fd820a4f6b64cc78731dfecd5f20e31ce3", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/": "83490e187f4dd7dca6af255f40190aadb8dea0e1", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/": "dfbd4b4eedb0a0cef6acaa6bc8f0fe8910467134", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/": "c92463dde3dbcd09b061f64ade3cafbb6d5e9021", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/": "baf5685f41161a0f92543c78c334d0a14c4cd114", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/": "4cebea162f2ab6b3a8aab272845664453405c270", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "de9f2ca92a9cc93e96fb8022193ab9fb02d6c532", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "cfe9bf722a4611313658b9477f1e7ad2662c7dc8", - "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "e9712da83e6df4f5637997654e0b3b848bb5f257", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/": "35a81df906cebdc04d46ff4ef7f114aa7d1b8b3c", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/": "05559d3559978cd8ae2c30c786c0474916c5bc5f", + "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/": "ff17bc2a4de2dba664f9de3202d4b7259fc906ed", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/": "e0c8149e34a0f5e52f0076fbbecfedd2b3a591d1", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/": "51cf1adba46d1ee3b597c8e5dc26307a9c03e361", "dataset_type=timeseries\/statistic=utilization\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/": "c2e0f14d960d7be1e558a43337bccf13ee239028", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "3e3cda1693a67e476721db647e6c360d0074c00f", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0908c35795eb643f950e5b6199b80de74b51a2cf", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "51e8c95a6bf172605e3f878ad3f182edf46e5b0a", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9c8c03c113bbe773fcd41c5d2a40326d82f8668e", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1ceb26d8a607ea95001f05015b5347caa028b160", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "460b894b06851b88b6b691b5f0b9e29f050a906e", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1d36a77fbb01f461ea0ab8459e400011bc776bb2", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "09fba755565fdf3cb7226bb94686aec716f857db", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "536b15041e5432102fb024b84e813d9602c320a5", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "b71cea98ff2b0a4e87fe40d28379449c1fdc824a", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bdb33861d3b25bb5f3da6dd18f7cbb4010e57803", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "dbf0929131b87b3f2b21654002a87f4123daf142", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "aff6c4429dfc7e8b11e30599785f2e06142ce0b3", - "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "cfa9039f688e18f1761c70949b62ecc9810466a8", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5f62cb942193cfd09f8d73c45376c4e622801bf3", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "2a5e0aff06ba2a7f4d7bd470cfb23fd5090a79ad", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "1223dbded6bab4eb4ed6b76847feed4c22c858df", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c2769ad5d39c9367f7886a981e6b82b7beea9f05", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ba0c727c142598e698c025d296f7110225006069", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0dbd33c44cb7e8fd39757bdb03eadb6ff67d383d", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "dc619c3b867fbb4f1217871943f9c5ba2323dea2", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "a51aeb746e7146c50237cf3175bbeaea1582ca36", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b46745fb75113e6f0ce32884cf61888c1d2dd0bf", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "490dacf65644d3d1877658e8ffbf35a9cb51f5ee", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "416309241db1715f33117d7315814970af4873d5", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c2769ad5d39c9367f7886a981e6b82b7beea9f05", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "7451d56a6519c1423eb0d3790129d9e88eaccf7c", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a78f9d421797e5f35aa45115339d92251f17f706", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7ab0df884a3670472c822a9338ee5ee0c4c1b28c", + "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "a51aeb746e7146c50237cf3175bbeaea1582ca36", "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e21ac66c75f3170d210432fdb8d6160b17ea5a14", "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "e05b76d6a8b01cbe0b08f2a2b75d69c60351266d", "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fddffb8c3330cf9b9ad95a1ddbb805b4a558e21", @@ -607,27 +607,27 @@ "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "532023dd5d1502c2ede815025e77ed09f9af73a4", "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c838bd0f1fc445b5e7e22e58c6e569f2412a0ac2", "dataset_type=aggregate\/statistic=job_count\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9fe79f54340c59ec030aa54079929a6491be6743", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "593c239ca19ef8c635daeacd21ca37d91597888a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "160552e3c51da477662fc1fb0f18c4b67c9736cd", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "a443516584755ca0b9f4847c893b19c8ccca3cb6", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "161280c670110924a328a5c8cb947e30832e56d9", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "1c2e5419003ab1e134af7979773dd213f27a69c0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "bced9aab681423935618aa0d8de9e3bc083885a0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "44f46bbb262632b89b5cf3289c5e589e09a3e4b0", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "c10f8b57d8d521a4928c1f38fe421d48840ce47b", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b13773d32c0dae1a6d77f0ab9ee56c483abfccb5", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "e3558e799e9b08a871cb49abc9897f04e6c7ddc3", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9407aab9ebcc334ace09e859279e953fe2acdd4b", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bd4d80b6963266f5ffcba8b0c7623016207beb88", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "116d5d1b497db04ff5a7e2e452ef022aa7b546f4", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "795d1a7c457f1c9cd0d2885f8a308d10faf5015a", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8674a126e57aa9d1547882fd2baace8742bdf28a", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "d29710fb7046ce36e4f729cda77b40c0f5a58cc7", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "c89fc7e17006a0bad727866d057ed95da8e001ac", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "cd1596b585bbc8443d6a177dea40adb35117ef27", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "e43e36acffc7a7d2ce10080d483ac3a7850e9303", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "3088d5abe83d9ce19b9952bf4a434008a6ba2fd3", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "c2719d28d0b89263f7e36cf741f19257031bd099", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b4dc01b8b9e6be776ac3ec472642c2e1bb7d958d", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "5043af1b5360b8ea3d2a3a999a214af84e04fc3b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b1593b65b4f9dbee70e33cfedc18519d20e217c6", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "8217c1099919addb84d3dac92651e6427514463e", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "8c9615cb1eb348a80d80d120c3cdae0b593ebf70", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "e43e36acffc7a7d2ce10080d483ac3a7850e9303", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "fbd9711d1d2aa05fb49b933b5bc5b05e961d545f", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "79e1e6c92471fee8754e9754c6ac28a249907da8", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b2fcc83e3fc4cdb2cea847ed4eaf912ebe4d6f37", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "5043af1b5360b8ea3d2a3a999a214af84e04fc3b", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "dba771a34ed65e532ef1308a2b7e192b2bd425f6", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "16e69bc415e2c24e1fa0817b12a2a885e2ba737d", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f5a8c02b284666ac8741cff63d925b4c3d3fa3b2", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "ca7eccb191e847d65b5fabed25b713e26480f3db", - "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "bbb6e1c68380e8445070672c7ac3db6e1e1460c0", + "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "dab802b75c55155ba17f9bd84a4e80eef2a8c3b7", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67560009d90efb3cb49b2db68c85d016fed6efa4", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "175fdf2b5a5de66f2559564dabefddc213e7a267", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", @@ -639,22 +639,22 @@ "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "eb03dc7aa7778771bc22f97aa5ffe3d6d2d98c9d", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "53941e23b0e782d80669c6e773dd6566b026b97c", "dataset_type=aggregate\/statistic=job_count\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "43ece2fa7cc139d5508f3356efd614c3cec077d0", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6e06d3964a19644e0d89ca3ea50635ce1a747bdf", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "de41cb7a9ec3b97c5952d5e197980b753d87efa3", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "f1dc35e679eb0c7d7ea0aa55100eb34a5c153545", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "d2c82c4af4acba1ad7ec1863d5acbc728a419168", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e8f7c8a7d06e59692d68caf2b73c11d1fb00c95", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "9e67d2e9cfac06077402e6784440381cd2217b7a", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ff78fedc03fdf6b31cb0054fa4d5e6ab2b73b739", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "59de6d8d7d14871f2d6fe2c17eb0b89811117283", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f175f3ac67ae028d30695a57774a0465716bd829", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "8cdf8089fd4523f5c5e30f547f09e94a766d3157", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "011fec5402cd2d34acb208a12ee46b6db44e91b7", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "26a926e40e6201aceef00cb6c3638ea4b57e1f6d", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3f435007087726731fd144c7395e5912cde77ac4", - "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "f70447363c2e40492854688c1d7de44eddc3a84f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "766fa9159f5cd2ea77048026be869614275495d2", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "f88b5fc2a1bafa4f308816b4a1dd42b07dc24293", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "a83cab532d04a60535c94ba0cfe0c86d97820247", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "ab22431cc7c7e6b0dddf0630e78de12d34525571", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9dbaa79dbb7121017d571a482673ab46859b2fd9", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a85ca5c7b16a739b3c8caf33a317531d77f037f2", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "ddb4f1510e953b7f0b4c5dd4c6bb0df28e019dcb", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "269ae2c17f6d3c11885f30372a8244a17c990b3f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "c4a1f942178adb33aa51756879bd498afcea675f", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "16a9b3d9d6cc16b8a4ab3840f876d945446f7851", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "d93fc81b2c8733554ee486999b777718ec831287", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "ab22431cc7c7e6b0dddf0630e78de12d34525571", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "24ebf2af2d47f027a14744c9a8cf6a9045b9d1bd", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "aab53ab93ffdb0325f39595e168e2cd7d9fed8fa", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "adc66b395862fa7036679639b06ae11fb296e3ed", + "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "269ae2c17f6d3c11885f30372a8244a17c990b3f", "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f4e171665880358fae519800e2312ee147530d8a", "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "1a6cfc49528c379287bc9a2eb9f1701a49dc1b6e", "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "0e330961bfb774a516b8869c93cdca06fb4720f6", @@ -671,22 +671,22 @@ "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "b18c5f1971e59393ee7e8cd47368707c04b6276c", "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "6ca95b0b046d0c7139e1354d54705ea47f9ab7cb", "dataset_type=aggregate\/statistic=job_count\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "72a6c6978cce744dcb77b1203ed806642cd37362", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "27117b635e234a5d0a69737cad7438415e6d17b4", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "b97716488f91fb40941138fd00ca1905c583707d", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "292070c0a71e706f803903bfd1f291c8e7b8be61", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c753a69964bff3e1bf4de6819155a16d0547d98e", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "66ede86f8fcfd7946fd5041c112d7c17b9f1133d", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "7e3a92a2287f6d7588b99e54ab5e1fbe75f2ae49", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "df95baa35dcdc19e2c76a723ef774b2a084b4795", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "bd53c618a9b37207ad9af1a4dfc5abd36bbc7338", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "1d437e7808412e699486301afa0ddcc016a1bbd9", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "926acd1a5792b81f9bda4e2644033a47645750ef", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "129ce0fedc09cad23d9c57cd1e5f8f7a40ff586c", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a5d09d84d3663360c1ac7303f4fd32cb2e2bc8c7", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "3838c3526366ee924ed464f7f2638ee55c3f4e26", - "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c2cfee8061ba0aa79b873de23d1e3afc22cda20e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "44e677a995bbf0b8c0b51a8438a1a8360e38b4e1", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "01e1ae24a017b09c4b98e38f9bb598a68d1ae908", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "c1029800a2121b99b3fc22bf989db5c3494be840", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "5d80e2a976f754c5806bdbc4f2042e13f96ebbf3", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "93c0f0c5916ce4013f519f57ae4cfa6d2659c4d5", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "9abfa92034a39415da9f0482eda69b6bcde3c2fe", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "ac88e9fb03ba44851204aa667a32b9e25f93ae7e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "3f3ba29436b45d748e0f497a65f3729545ddd9c8", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "c6317200b551ad635b11b8514e0ee3ff2c19059e", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "18ff085d4721f5ffd80f3f3e80e9207743966988", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "0b27139fcd077e2ebb56a1948a9607a2775ad165", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "5d80e2a976f754c5806bdbc4f2042e13f96ebbf3", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "d0a9175f890d5196297d9457b6ab3505d1d69e41", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "6f1ca93b7b1d5ba797d5cb896d9da5bf13c6413f", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "cff538f6c0d4a475ef2988b4fe6ca72f4e358f90", + "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "3f3ba29436b45d748e0f497a65f3729545ddd9c8", "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5bb54c54a59357049c8376cdbc8340e876e1c095", "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "88e198efe1b21b1eac88b3bfd8e0b075c2f8dc1b", "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4f5b38f2d8267265243befe9fb66d7371b270a14", @@ -703,22 +703,22 @@ "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "445d6b6862f37ac40cdfa85605b663490117da5b", "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "04b0695c9f2179171fd695c3a7e19c358ce37d23", "dataset_type=aggregate\/statistic=job_count\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "c8e6634fce50f9171e038cf8a6af325f68a9fb2b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "89443aabac584d817b931a01d8f7a4c8eae9c960", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d63c9f4dbb36e749874963b58927626f9523f3e3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "412990068838fa505415b3cf756ae4c9b4dba3c3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "095413cf35e3cbdbbfeeee1b7e4903f8ef82ac0d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "17e39dbc3fb3e86b0e437b79dafaae1fdd9826fe", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "fa21dda73bcd12764a7deb0571e066559f05ede8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0cb17090a562cd4ed642ac6ddaf8dde509c51a2d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "11af70552db87b8650d02081eeffffeffb16ac9a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "c6026a0319f15f23f36ea28c24a4ac90d620f8fd", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "757eee661cf2847a0bc777026214337a64d28699", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "eeac8c3fe4f47f17c873aa90a3d12137d40d6601", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "fcd9fbb20863b6d589343363557eed99fc3a6389", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431f87309dea4c5b07f35bdff86489ecf60adc97", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ade5f71b2014a336cbc99ca85cae8450f7a9e66", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "ecd9408573d7cb845aa485e3d03844b7b7934215", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "eb33d9b443706f9de1f3322666337341cace2fb6", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "b1e359ba04d60fc5756e3ee786b833baeea429f8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "594400ce883df65709426aff48f2166e9fc49174", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "89c4cbe69dda686ae4011d15d89a586ed6e65dd0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "edb21dddae29d519e125c03ad6121b5881cc02b3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e0af136032dac8a38e7e282d5f25b1182dc728ec", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "ca1e3cb78b77233563ccbf35e90d148c6a1a25dd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "59e1cb7d2e830f5f510d270730dad5e58ae945d4", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "58e6cad64d3d62ef747717b178363b257a5500bc", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "53da729f3fc56aaa5be4eec0fad010fc8cc91d8b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "594400ce883df65709426aff48f2166e9fc49174", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "cf06d967c80595761093f3f822b61fc7cef62672", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f121b6e279e6ca913bf9c7d16b12774fa97b46c1", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "e2e684585a48edae7451d8ebafbec6276ae56c54", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "ca1e3cb78b77233563ccbf35e90d148c6a1a25dd", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "0756af3c588b84723f499c92fceb7087b5abca09", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a79e24c7951a6f07a3affa7389061161362aae4a", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "de5aad1b72584f1aaa17bcf2204f340db4d57535", @@ -735,58 +735,58 @@ "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "5bed7f99681f02d5c35aabfb2bde10a9a8ceeebf", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d8ab030dbb1b371502e7fa5c9bf29c11ec0a1a7c", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "dd60a06bbe1895671d614802091455b41316130b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "cadf7e4b87bbb7fb6a8d87772ff8d1ec5e8166e4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "205a6774d0e649b7b525d8bb93044a2efc6f07ed", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7aeb06e3d0001522de265c5a6648da2d5f62f4d1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9fc86543de41d30286c74feb2db534e9769a3b12", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4e7cbb85858e0f2ed5ee4e608a98a519f2feb753", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "804b9cd9e4f9edd62ac83cba1fc7e17d4805253a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "d6a09564f465d690fa00eb040a7e68f056e2cd22", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "f304f31244573a74a4c6389a23b2e57e26a48934", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "43fcb143a3249e75afe6e82409ebbdb4a070cdf5", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0b3c5e777e57a4b5b3e834688306b55a8011aaf9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3ff3820aaa8bd5cf2c3a37698762c3eec23a97e3", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e6de007e90c72f4fb2b616994b3fff8ebc509068", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "af71b7e508a49fab5b4826f5e4ff3dbfdf9ff1ed", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "ae50f3b3dc426edc3fa8e32ebfe18aa415ec7a70", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "a6add7665c88aacf7c06f151c1b168bf8909c26a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "8011709ad7c111546751815ddd559b47141f8c94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "746217259b1c2a6238dc46c6990c75e9d0d8a65c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "43442b982620152b4088a50bf231ab3e7e7bf6df", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "27b413ef02ce0f0238eb8aa757b5ef75ed835020", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "1affd8c69d9a68fd0f4e86a41405e1ecf6f0255b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c8702e78576d1724a37488fd939f958231442527", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9a4eb15e01b7f8054f855d3f1900cb183fec0dcc", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "e56aa4b22201420a3bbe1f64b5fff0d3574ff6db", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "f6c89ca56bc3add0e8e3aea4b18ea02d7f1c3dcd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "cdc70afb922a72598b9e7a25a9a89833955a3b4c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "3753e0247c5d1bf5c4e9535f74cbc2fda94f7faf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "125c9133a89ec945d68dbe1c9705f50bd66defe0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "f6947d1fb916f3b174d9993846f264dd78612476", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c8702e78576d1724a37488fd939f958231442527", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "33fc40132f2dee8a81af81f9c7fe6da05ee3a10a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "aae60c03866d5765210becc163d94993ad6ea6d9", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "d4e733282969424bf93900ccac3cd8ce31002a87", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "cdc70afb922a72598b9e7a25a9a89833955a3b4c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "f1aec20ef25a2d30a317f5ffef0d219c8bbd95fa", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "977784316e5271a4ef6e080f9e46fa5edce57a44", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "dde415d7ea9c9370e3fc12b6dfb1b28714f9a8b8", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ecbe74554f6ea5105fd86c0c48bd2396d434ece5", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "67b004657708850275760962e2fee30bec2cb382", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "168d22b5c537bb38bc8f3c9da1db9afff2a4c016", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a8bc114f19f27cb071fbe5cad8745b56d34dfa07", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "d1b4a50630631700aa3b0d4d0da2d716158a9c58", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "77126a57b2006da45c593f7bc14beb57cf773bad", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "ea1f79d2354d62288816c9d77a5c866e95a37aa1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "9888bb6f3365acbc92870ef7d25eeb6f5e7cabb0", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "b3b9ffa7126bbf4f961285bf9a503e594706e7dd", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b8263d3b1552d3997a849fb7a614685ae08a45ca", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "e22d8f4b08dd9834faf56fb9a96e631499fc16b0", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "3b526115e924988a92b55cda557d58864adfc2b2", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "591d384af784b83d3b410eb0938f7851b20bd12e", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "655a1f09363621917bc07a598ef061044a60ba97", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e1874eb530e2d0a1ee146abafd5858e20465cfbc", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78e453812f1c5550854410ec6a64aed71219d562", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "bd260c14ad8bc6299fc9502d6a46ae7158c8da52", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "98ce111375b2f0549c841f2a5f8933b8487e3f97", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "8584642fde24480acd27a2affaa7ad2296c830db", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "38030bbeccf4370f204af36d6881ec91e691ae94", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8991a85e19dfee788b36cde87180bdab5aa46c68", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "7401974128c6c71675ea02d8e43b13b82a481cf1", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "16215730a73c1414f62660af4fbdfd13e8d46a63", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "8e8af219e392931e68ad43275480eaea16b3a8e8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "6687cc619ddd5b2be7706c58695c209ca201521c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "e90902c0e6e7d0b03fe72774bd87b2d907f82c8d", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "746d6363edd580ef4e764424ef20f18ecebc0294", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff04e6bfb5443ae6052bc6a4531546e1bde1db47", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "011fe50b37f1b10f11b107505776ff5feed21cf8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "9f6a9c55314e0ea04fcd5992e6a114bf76ba4553", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "212aa84378b52de758b5f98c4166e5d21059b0c8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "447c9147b9b3cf494287cab0ad1f475cdbe7ccdf", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "37d884da9c8e83dd3976667a7013c1b7e9583a14", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "5168a2b8c805d8f4cc7a6b71baf8d6e5d63d4a49", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "9f764e821547ea9ad93dd78deeaf774055295a37", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4df5637bc33a081a75bbe592c30d83faddc65e35", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "d216100ab33ed92db6af94600d214da1450cb91c", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "30fbe99c27e68d091df7a5c55f3db94615d173fc", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "6a4ae9ab270e3a07dc536bd454ee2b462c5a4794", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "53997677397a317dad93b4725aa2011b866b46c7", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "7cc60be073e96f7bf560264922ab1ecd3c8f2f0b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "ce7548c7ae4525fd896fc25d557565dfd4559231", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "9ef646b758fa296b4ab761602d479a2fa4dbde57", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "69645326d8b2038eba4d5562f500cee2b87d3c67", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "4b9a40cf36db63db92a47a6837e2f3d39bb4292a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "30fbe99c27e68d091df7a5c55f3db94615d173fc", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "4cefc6efd5376e0ef6edddb8445562cd04690c06", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f983bda2e827c4de25a76056f1786678d35d1f19", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "6233e487f9a529dc7ba295eccba12b98ca3f1eaf", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "ce7548c7ae4525fd896fc25d557565dfd4559231", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "2f419d5052264d57fbbfa83afc62eb9a52177de0", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "02e2c957d9285541c516ce6f111260f2f9c37e12", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "62448f16f8faabd9939b7a484139c5a730588296", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "7942a6115d345b1551153c150f68be0960efa04a", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "5c662b551a7f8064c8ccf02916d5d28f24b0e04d", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "4c2a5b6c2b029ec017619b9c0cc854b4d916297d", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "366b320b1c7f44db4ef53b3a27d52fda834022de", @@ -794,27 +794,27 @@ "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "405a43ef841055b29f8693a290ce5742dd9c011c", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "864234687bed141c8001ed005af1160336e90199", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "ad90fe4b68f57ce9671312f37e3781a9f0dc2049", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "1fcc605e3d50b7f92f9a771c920478f5a33a85d3", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "7942a6115d345b1551153c150f68be0960efa04a", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "9a1a44966c9f968c159809f695667b4ab702ebaf", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "343bd2376f682139981613fe219f399928f16814", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "7050d48c42d2053b313bf463ccf50b5bd5c96922", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "1424081985bca40b67d0b6f87fd326e0248230ae", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "893f37d035a3a11d6b846be4e4daed6408bb7d3b", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "0db95d1c595e20bf83fc8ce656bef3836996304f", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ce3003484955dd40d5846bef857c2ec8f9b9588c", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "de6d2e37dd1d110457233afc11f916d0a23e7b3a", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "b03dfb3dbd72b33d5ae23a2ff131342a3e8b2ae4", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "770badea789590456594b9ea3548da6a53e6eaf6", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "f38f12324f5c0ccc56255ffd975615a38e25e7ce", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "fdb718cf5c7b3b2baa8ee1cc51c53170747d7b43", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "6e4e8a5d41bc831196920555cb6236fe32995df9", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "455a7cdd6c357de84b0d16d5b1486464c854b1d8", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "295efb8619612e07cea2fa436b4bddba3def3628", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "ac2444661daa6598914be406c2d33fd8da564886", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "2ecb1cb4832c9f6334db545e4cee1c0259bde3c6", - "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "7316b75dc3f17bb964f29729b8a9e725d2e9e043", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "cda23187d61a56969716fcd4f2220217cfe39d1f", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "ad4fcd774d5d4a6da284ffaecc4131892a04bd88", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "2f017ec9f2903d0e1e28ffd9ce41ccbdc201f5ba", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c756526132c04a06610ae1c5467776ecf59b3aa8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "55be7059daf4802088bb37f3f74da8bc36923e5e", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "8803223e60d16c332e24a795b98a8ca9eabf2aee", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "31dd4e5990c0bc69ad58afe1b1c4455082e18a31", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "35c84bb45921b2fe58e567679fb8ce09ebdc4fdb", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "8590342adeabb0fec8431b7f1004d43082258a8a", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "7b7486493c95449e9adcf3f14edca7c0c5a1f386", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "4d0de74027c753cc9935835a99efd347226f586d", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c756526132c04a06610ae1c5467776ecf59b3aa8", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "e1bf53e059070892c8a7a9d010457edd77d53390", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "a51384d11b73e105700d480494c6b3d9c5981279", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "da2ee94049080c9abe5b8ab7b8fb20ffed8f511b", + "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "35c84bb45921b2fe58e567679fb8ce09ebdc4fdb", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "df647ddd06ba2546af4b559f3595a86527eda66a", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a2fc526cf8fb0802807d608db0b3b0d75188a635", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "79008ae4476e10cd9eb957e03005abcefbac2727", @@ -831,22 +831,22 @@ "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "4ea44c8781147272086cc3cb594ab70a340bc307", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "0636199db87c71bc4db2f51e8678c713a8c6965b", "dataset_type=aggregate\/statistic=total_cpu_hours\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "0fb01dcf79541f6492a4f6739e080bc9c21a5c1c", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7165d89210d63aab27378870e13a9e43736ff900", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d893218fa8f95a026f96e5a4339a15082b2399a1", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "4844eb45840530901c344e8ca76e1e42b9386620", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b186ad8a50094f3e5e8603e123b6d6c5690c2638", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "201c0f357ab994c70f10bc104a6663a45658a701", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "b780721874c760500a5f2bbcffd83b258f2cdaea", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "b1c8b115d851fb3d46c5e275541e3d4d5824bddb", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "5c048015696363ffbd4ea93432315b3634a7a8fb", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "34690f020e8c90f69a008fa62ac88581fed450f2", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "3554d257dab008fcbf6f27a123725e047ffc1031", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "a690fc25b5faa49042ffa7e6a12d72194958903e", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "44747e4b3f875f50a8f58c45cf3a96f9f5480a83", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "09c72f56a283080e537365af847c019f116def39", - "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "63bd5556712fddcb823cf4ae4816c599a0483c52", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "8d04f43cc5efaebaf7be5f93bc1d1d5b06589357", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "6cb26a1f569259cadfbde199f1117f92c92c4d68", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "b8e45bfc63f7e2eb50b5d3f1a043269f75abff51", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "40baf75787093771d5639a2708ade9afe6d965eb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "52053d9e4fa516af2756946d249e9a10c3745995", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "2bee2bd4e80ec8e561c802f06284bab842e47168", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "3703bc2b117b6c2c1709d3a88d004d2e44c03fff", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "4dcd965b6383493cd0aa9f8842c5666342691fa1", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "0512fdc87cfccea0a724b8632700159e16813670", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "a797de1733138d16d5a12adbc38684066e90452f", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "0c9832d4c12a644e5a48339ff64a03183d072fd9", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "40baf75787093771d5639a2708ade9afe6d965eb", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "3d0947ff9a7667e5e5e8281ef3da3cb361f17712", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "dcc805e00602e667d9e6a15a9f655a4e74d43a9e", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a12f47ec36f14cca3562303b78a9a16e86823321", + "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "4dcd965b6383493cd0aa9f8842c5666342691fa1", "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "9ad27e9cf0dd4faeadcd2e33eb4b11a056f3c03f", "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "4ab557ad42ca685227cb9c3bfca20e797e4f9a15", "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7571e48ca6be6a720129d6766b1b344633fc271d", @@ -863,54 +863,54 @@ "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e03b4c06c01af5e76d580c0a65321a3222d38f27", "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "431d54b2411b63712163cfb7ddb0619f10f419ec", "dataset_type=aggregate\/statistic=utilization\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "85fd5566a1374ddfc189e4b8156df7d34c9be08b", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "45114a361ba9dd05a32fc7a2887c0f6fcdedc80d", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "ad51e19c7cde5f7a799aac9fa529c085e9b1e8ab", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "5fd7e403a0cc54ee7342349002bf7ff3b6acfdad", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "a245edef0529144b86989cbc5c756bfd88e12b29", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "f2d8d15cf5889504fa8e6ed2e613fff8e487ab4b", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "75603c1f207cd9964a83246f58415d2655bc7fc8", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "4203de969e074aa324ee3429040b16c076a14be3", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "21858ddf722a49a8e844d264e8ee7c4298c72933", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "8e8de6a28520b0563739e9176efcddd5443035b6", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "c0d1a8be25929ffca3d419e422fd50ebe83212a9", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "fd33d0a458ace666bfe52dc5a0bc98609652df26", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "e47824676561787f4062187c206b003fc9808dee", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "1a9358d1f3b75755b49dd72eab32a6ef7a4416c0", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "8563c0353bbbde188590f837b296647e3e0b7047", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e86be08b33f71e5a93fd000a17af3e95a308bdb7", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "d080ade5facd69276b87c0ea3837bc8f16206b97", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "7ce00156bde91d76e8a71576266ff42371bab089", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "17e31c6cbdfc735b58f2b8a4141c3d669dd2d8ee", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "d7b4385e9e28d169f5e9f1e3c8f8b3ee0150bcca", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "5892628027b7c39761c0f92ade9f18577458fe40", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "a1a7e97434774f736d997589bf792b7adda4523b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "a37087c7da0501010de53b12662cbacd915ea839", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "0011f6fee22a636b6143e86de6903dd62c5cc18c", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "8004a1502a744a38569d7d8b5c62f23c16356764", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "c648820a0858d5576f760a22e115190e829ba552", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "ae093b81fec75645f537340626b0e87ae5a3eaf1", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "002149d811e7e93bf0493be6689038a369a45bc4", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9e1725523aa567c2ca3d11ed2857009375d65470", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "852d874cbbd77f54930c2201d4ec98add4f12aa7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "5f99f620350d8786db43b120199b184ae452671b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "64857b95d15d82afb6231d7cc5d38e8f57979b64", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "8004a1502a744a38569d7d8b5c62f23c16356764", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "280cdb915690cfc9d7c4a54fb778fe663248080c", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "43791a3007661b1016f4b21964a430cdbb6e47a6", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "66c1be3a432bb4b2af4e5fdfb901602a50b3061b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9e1725523aa567c2ca3d11ed2857009375d65470", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "7d0ec1c99b0dd20bc268ab136ce2218f068ca8ad", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "90540219e7462c32e59fe59401e05228e9487564", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "b3724e144dfb04c1536ffa4924f95d033a239448", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "35ed46a8dbab17cc7a7996dc1f4e2f9de3603627", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "8908c300eeb5d3730d307bfe6ec453542a300164", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "a05d8ee6c0d45353fd1eae0fa28613da674e9088", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "88f1a41c117135ba54dc201453e034ad91bf3fd8", "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "3246ec2d0624121a4f0828386ea64dd3e531b671", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "12fb50b2ad1993cba9e88669d3f60aeb3f9866f7", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "cb2277b2f2a7fedc2c53924a0dceceb3e1ae7fb9", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "0c678c63de85e79bc2c5576b86222058f93faa74", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "75807ba7749d18ac826d1214b17e05ed2868cb3d", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "62df967c0106d621ce1fa078e31547b824b32952", - "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "78db51827d372e07c0bd9f356a7367e290bb7ef2", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "39fb5d7dd6b94ac2eb4031123fac0ebfc7946b2c", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "776f1580ed2e55aedcc1cbf646ec0e980c722504", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "91aaa5ba7e48beeb57d191a5daa4426f54c07ce3", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "35ed46a8dbab17cc7a7996dc1f4e2f9de3603627", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "12d1576e02587d4b0fbbcd94dc09e84a354063e7", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "443902193fefa62ed8394e818a9ca4bb4c28f14b", + "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "e2cd2ce0134f5ff4004e549a583316dfd4327fd3", "dataset_type=aggregate\/statistic=utilization\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "31ee69d650157853840cdceb84a9a526c8f77d73", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "6325e6d9820d68583d733eaf32606fabd7f309f3", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "9b249632a7106fa2bc52858fdfd63f8f29f80939", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "44a4bd99f3fc16d2a83c9689abcb84dcb65b3c59", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "619432e927130e09241d9976bbb572e81c061647", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0c65ab7092a98b407cdfcc268eb0d6ec7eee0da6", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "17976f8258001c50ce6a3eb3bf8ce561b84c909a", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "1ff1fb5ee21673e24330b2c5c3a1e40db495199b", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "ff6471e7d267dd05a77f6e5c0cfb533496b15fb3", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "00f55b3542b083cc698e114be9a4818a10ae6559", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "50d221bc88a334586c45b1c0fa1f81c7b13f0810", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "15fc68348a03b55ffb37b65a2f2def0b9cb15e77", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "f74468bdfe6e2c588574c382aeda5002633b54be", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b27ce5a4101df2c57859626c8219c8acfa727947", - "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9c599278d1d4dd2027c550bca17e047551b5c79e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "ed9b93dbe8130e60989466f68ce5d9f8856dea4b", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "62be5938bbbd64d0d7ba2c6908dd3617f3323845", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "33e7bb89fdd4a637f14e5b30f5ab08083958c29e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "9a8e53cc76692361966da83bea3cb9d2a6f20a68", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "9a93a61bcc0887ae42f17c8bfddfd0579934b83e", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "15869cd24ce083226d0bfb2880684e72f8e55886", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "8822fd3ebda81b101122fb45f57008bd4d0077b1", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "9440c2abb472fd727c3e17226ea40e9a68c77d9f", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "833c96551fedf3f413cf69cf8aba100f313a07f1", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "4efc44c89627ccb0c7c551c8ec0e0bff905614ca", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "7a6a20b76e795fb42b877ad79b33636c1197b0ed", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "9a8e53cc76692361966da83bea3cb9d2a6f20a68", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "5f1fec8d149a4dca363e0611e802e6691b668461", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "fc736d226cfa1296c2c4724cb28683dd2b24355b", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "c458b6044c39f9907d719bf117a55819189ddcd8", + "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "9440c2abb472fd727c3e17226ea40e9a68c77d9f", "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "e96493f18d48fce9865b31593a81301adf534bd3", "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "f7ac0086e5ee18347a32dc322e6c712d729e48a8", "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "67c163f0f8536dd301f48473a6fce9cf0aeb1166", @@ -927,22 +927,22 @@ "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "9835ff480ce7e86064e1feb88d71404112c07ad2", "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a021b377c5c7a9db521dab6ae05765f77756436e", "dataset_type=aggregate\/statistic=utilization\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "2ec99dea916c1f5cb706fb8e997f1bbb5bc30fff", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "04ec9140627d053712e2afc40ee161da3c418a12", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "515c205194cf807e9bb74a1336f641c09e0ba485", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "e8682df3de2c35ba6c9bf1912e8f65a831ff3f57", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "b5970640edefa58962ef4392ecb9e7aa0651e37b", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "0d11bd89ef700ff108c284e2c47c3574dd516775", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "f42065f1ed4dc8f4b065999ff8a6fb470eb92c44", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "99f9f12cbf0ab877b5983b94d067e71a732b136c", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "01bb780f92ad4a2765c8f15cf397d793b56a7156", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "93175c3517c809a74cebdb7ddba5c11279129803", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "07c59d8e9766635ebd0282f0035c78833ad7f3c8", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "d0db5535751bf727f3615d3eacace9a64fbd3ea3", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "bb94d56bdf9cb259159b703525b1f7cc537dcd62", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "b790b4be3f75e677861f56d9976d2b623127d37e", - "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "534cce7bb8d18276aa7d06c708e42f7da65bb670", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "5fe67236dc027f4d9d6c9567436f607440d120cb", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "90c20966971a0d4e09e3997042ed5468f876ed6a", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "722a8f6fe65d06cc1447a8821e204d1c4374c77e", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/": "814590088f3194cd46796dc7a842c2b57dee2f15", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/": "ba954d96fde6969fe40cf25591d64f89a5a956e6", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/": "bc2f8f29609bfd59d3dee3fb7a1809730ef144e1", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/": "c46e0d8f90b9dd7f932541d9ac9632c24460eb67", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/": "092f3ef4354ff16848de31abf281a73ecd80ddcc", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/": "6bbe1a521a29fda3b0efb916277b3f1b96eb5ad3", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/": "11de4386fd914ba50b073c66d3234d6d3817455c", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/": "30fd60e5b5ca8e33ec50c4346272675ddf12e3f8", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/": "814590088f3194cd46796dc7a842c2b57dee2f15", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/": "7ed7746a5c293b0b1ded2a2561189ca838fffbe3", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "16015a89f406f2b5a5160da8da6db343a7b47eb6", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "a7ae13adb72835cfb53543294848def02c90ab5c", + "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "092f3ef4354ff16848de31abf281a73ecd80ddcc", "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/": "c87b2051b9d324e3ff7d18aec458cc7380b6ca0f", "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/": "36f81f5b22285c5bd3c15efdd3fb2538af0d048f", "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/": "ca1568c40206f804569670b858887dcf222ecb00", @@ -959,66 +959,66 @@ "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/": "8cc087c7e693d70544013c99c29d0d13e4860f3d", "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/": "91399af11a4a66cf48ca4f6227d3231318931a70", "dataset_type=aggregate\/statistic=utilization\/group_by=jobsize\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/": "eb457f84ab15b23681594aee22efd396e6c0611e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1bfe024a7193ee47f41338b10a108879670b78cd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bbe17ab878d7d2cc03fb3b3991c52791a3bc0cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "beeaabb01b1157c3583b961266ca5e29f1aceefc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "860327d5c90c41a906899922705770c00bcd857b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5bb8e199c03348e372294fa9c2b9f418176e173", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8ebde4754b57566ac2373f761e8ad09d7e3be5b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "96127469f459910094a39d7468e6e4b839f6e620", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1b80e284cfe0b782442c7d2dc90c40feac333a27", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7405e97f9cc3582775cf93c7d53c1ff1462277e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "abc0a3365d3c6b5fd4846a456aa8839c2e46ae28", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "023a3dba4e39fea16aa8c0365281eacbd941547d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c5123993dbf71d3da28fa12f44301f2dfcf723d3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da402b696398404aab0e60497fafb02ec0f22a5d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f1dd806cdc1ecfdae0c004e27e1baa9910be694", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c06bc88502ad01830a783418981e6c015d73b82d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d7694b177dd6e2796a24cd175296f29676eedd6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f92e3f09143c92d32e7fed764d6f88658a3398a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0e5d8b1666fa07e63f15ea35f259cc9f8fef511a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7656d6f849a98861a7adc1fb4502020890c94e63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b14c58745bcda2c0b06cdfb3b37cb956ee4b9fb2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "000598aadadce88a69bbba553afe3c51fcf9259c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d17593f8fc443ddd9b50f3a47fbee3721f9cf958", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6a70dd3ade3832a0ef9908a26286bec5f066edcb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226b41f939caea8c27ae192486343f0bc06ad002", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a353d896fee513b9d51f125607d529b8be3074", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "acdf6ba47764e2308de67dc9a5bbaa853d0eea24", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6976d10aa3d64f078a93e1df491f3f8eec2f3237", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "faf7edb93d09a794ceab111272b3c3f671e4017d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ce12a2a034880557e39d5c36adda9439927074f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e65c1d23e16e3c4049957ce9a7d7a84f37331d5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e16667a88b974bd20d9ace67b45242635d61dd4d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "32c453ffbdd6e72785111d51d7f603ae91612af2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4cdeb771777033f95cd261e46f31b64196617c16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec5f8a3622145ed863e7c86587921d9bc1ad2d45", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "014b9ea913d76bfc2b8dd8f0c59b1acfa49257c3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ab6524fccf38a658751dfd0ab0c9e1d803a9fa2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "256f75bd4e80344573dfe7cd3647f3d553b2248c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8ba0a91a520f8418b7830f8fce5bdbe4ba18e9a2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "480b9abe6e1acb87750c995e56b74225456350eb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1dbad7b53815d74c79787fd2f3e344d9cf398e61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb0d9e810bd40b84a9fa92fc2ba1ea92581e75e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8fd0118b2da72e3477b6d2dc034bf43869bd2c07", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6254abcb44a2310d7e7d89db8b9aab5020fdefb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7328810bb355d718acc2ac3c78101f2237e862f6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6254abcb44a2310d7e7d89db8b9aab5020fdefb8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7328810bb355d718acc2ac3c78101f2237e862f6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "04a7238b8400685d5329ac9d8a953e2e86c037c0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2377b9e79c3e3c20f3c387bd6901690f43d3e665", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "04a7238b8400685d5329ac9d8a953e2e86c037c0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2377b9e79c3e3c20f3c387bd6901690f43d3e665", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3a1b1cce0fd695d62357399068d8bc7cac9a1f6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0a3d6b87457124e6495010ce7fa2302b04e30d91", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3a1b1cce0fd695d62357399068d8bc7cac9a1f6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0a3d6b87457124e6495010ce7fa2302b04e30d91", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b0e44ab78b2cd5d72434faf829ec6c4987524945", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "01a2a2b69e8027eef8da2da0eb082cb29736a377", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b0e44ab78b2cd5d72434faf829ec6c4987524945", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "01a2a2b69e8027eef8da2da0eb082cb29736a377", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0570123d113aa7ee54461c7f704287f5cc62bde3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "afde996a7af95564a709413799c6e4ea6fec9e75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0570123d113aa7ee54461c7f704287f5cc62bde3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "afde996a7af95564a709413799c6e4ea6fec9e75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0e330dd0a89f216d2b832fef509c8c62c12b1ebc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0df160c79d376be2d7a2063aed6defd835806483", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0e330dd0a89f216d2b832fef509c8c62c12b1ebc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0df160c79d376be2d7a2063aed6defd835806483", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "789f25d9f56e08152820754abd49ddec93fcbc6b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "81065ab31435e54cc48b41eb7c87ba40cb668019", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "99119e1e48ca9378ace446a508f762735c8003bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8989c79feb61c7f0e43d309f2a10c1747ebb9589", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0ab4a3d911ffe558dee35c82861272adeb27fd0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "502dc08f003331da5eed1c316dd4ce45e48d9a0b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5e7dba5f49b829c66ab68dad7bb7996a255058de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "427c6ef98496ba1ddfd809686af6a933da2a4c44", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3d87e9d7828064e151cc59618cd07b61270ec027", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0c7c4dddb9c806a64b921b7b3d09a63173d351db", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fb7b5a674ccc27cc80c6c1cf3aa39cf51f2aaeff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e899702835a927f2b7891798f335e8c8ab77b16", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "340e022cacf7b3959cd86685c268e6f0db37c722", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9f2f3bd3fde915699df97e0e21738e69c1187a5b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "614f3ecf5251453b07bbdc1557a3fe01ce29cc20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "489d09c887b5ba994359e4ff525cbe981328ca71", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7735360fe5d5076aa0cba0b249a084d3f1613a38", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0f920db6ad9959db91254db31f46aae8c923f10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "13d26e4d43536714d9963606e0a6f81cf279e1b0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "307b3e672003e9a6285f1d87918c02a899cf0e47", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f0e06ba73e164191673738527264bcef961c3d03", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "381b461e1558f483e1e3bd96294d595526909510", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0cf194216eeed300a02286aa9e1428de79f03642", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ac733bbf6039e2f6ca1c67c9df19ef322d5eb24b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "904fce740aee1623a452abe28d9716e93851b117", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "425993d538e4e3cddf0b64e9636a52db8cf9a7fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "904fce740aee1623a452abe28d9716e93851b117", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "425993d538e4e3cddf0b64e9636a52db8cf9a7fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1cce6bbf41290efcb832832652a74bc17b8f4d49", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57850b36fa4f6f8c2d178a3188f76a2cb81c943e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1cce6bbf41290efcb832832652a74bc17b8f4d49", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "57850b36fa4f6f8c2d178a3188f76a2cb81c943e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d778700b814fdc14053c8995f6639846ba37d7c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad2ad4fddfa52190aeb4eb298d6e51f3ec0bd655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6d778700b814fdc14053c8995f6639846ba37d7c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ad2ad4fddfa52190aeb4eb298d6e51f3ec0bd655", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8d726364f855827d36849ea5de9c0cd4ab41f761", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e36d0363cfb4dadc3e981c5df4940c41240e61a5", @@ -1031,18 +1031,18 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3d6d624fba25bf7c6fce8304db5bb6abbc6c0655", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "80af6cc07120a827e03887f6f30e1f20b5775439", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b40a43f431d6175d7f65ef2a8340ad90f623782f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5fcd14974bd381c4a1773150cc2797bfa85c0bce", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ac6f1ccaa4e4ceaaef4e9b95d6fd21c204b4e5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3b528ff35d3f4a544106ba7f2c8bb1602ca6c567", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e7586b795bd2ef00545131fd148b36912c8d2df4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c3415ec73d6e6b6b65eec3b805277146de7469a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93930366454c53eb3ea66dc6d42221d23073a97f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2ba13ca7b591dc861cf3cb3e3b4e559d1d6cbe87", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6d45c1237d13089bd29f1765e0b5a66d4aff4184", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec8826e17fd13f4b434abd399138f04b705b1d71", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6042943e7d8a9c4eb25bb8e00571a9c0ffe9b529", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "115beaff180f51a45d5dbe965fbfaad76ce25fb7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "060551c20b2b298636e0dd53009d95f74a9908bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "29ee72a263de817a2ec65a6b3e8c1cfa46852251", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "df2e5fe7d5fdade5461b806adbf641702fcff31c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8bed06893bbf9fb073f7c57eac930d1df013d2b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9409f654c0709e61524fb8978364323d009efcc4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fd621d12ea787489f0a2f6d918a6a80c5acf47dd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "159aef655058a25e135f8e28564fa36ad89c4f5e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9b3fc66713ebdb85fc8e4a490de0b4692a8c3419", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c5fbd1f243e00b4a415242700e538751c2923bf3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9f5ad84de1beb12ad61febaf72bbede48c61ff57", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dddbb11565c91caa16d27b2a9e03ecd85f7510c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f3f6152bf136b0754e704269706aabea408e486e", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "244ac3a3d23caed2dd65ad03abf9a8903341bfa1", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1722114020c03cbff084b11bef5e604e024c5e3", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90b4b8e984b7b36c527b774acd0160fcf0faf3fb", @@ -1055,66 +1055,66 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7470487a6753b46d6d385c1597b9aa576ced5ad6", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0b5d93eaddbf6442453e94f44dba595287ae6c48", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e62f6c2ef2a2ab88946adb90f930acf219b70388", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "545c43e3c2d84f99388f6c636d2fb23031d2a99e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b2203bc0e834ce60a859aecaf1e6ac3334261a2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "49fa3c567496fc7d52601584af20357fb23df106", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8287807f923093e0aa11c14985592cbf3d341c59", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0e1c2d27ddc1ceeeb8545579f871a4845d279707", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "985d064326a10040fab5a5d0bd131fd4339c8c53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f037885f4bbf14f8f05995038d069360642606a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0298199d16fbf1fb599b8e928a693642a80452f1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "661939633a265825948e34f763b98d3916b8dcac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d90c8ec191fc8e4d2e58dd883d551f5849e20eeb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "00a4cc1f9b713b68bfe747d6e8922d7d6fb2ebd7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4e388e956d1707b3e6246878d251a841e4792246", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f63aedaa3281e170b0fb7e2b438f8cdbd6044f1a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "69e3188f47203ec65fa21404fc72b3c6b2734805", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "015ca6ff87307b6e11b825ebaf53663b8a63cc54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90e9093d85e58b39a4347c5e4c91ca5e94dab3d5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1189483bb8b9504b097e84a842fbd19054e6dee1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1e884af089dbd61d747541162d6d787098e3a623", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5788332a60e16fe324d51ad19ae59300d7471956", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5ee3f6098016504dfbcd42d3522f61a0a56f2f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "33b3d45ca935595945d623272c7df9d03de227b0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "12d4f1347d2b80f6168db6bce83ebc7c0da5b18f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2cd6b42458bbede1fb6122fbff48c920d3b6ce89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24fc35873621b88063320273a6431f488048bf16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a567fa225bf7580925298c7b730384e0c307ef1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a9a42201ca7dd80548ada42fd7443e3bcdc1a980", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "129ad21a6de0dc824e9291f3b7441714ef9e3462", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0f75610337a4aa1a47f5cf5abcc9598c29f2fbf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "97f31a6e31b8c0e7910d7e05ace2f71a9e433945", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "20d7d6f43afce762d666c267f0def248cc7d001b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d7707c8133f49ba01cf7311e5362b1dac5802bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9861cee5ccb21ff5a52db6751ef6f715149158a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fc00dd9c45fbd54341375f13ad4f83fb50e34f0e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c270cec8cea9a41a9f032c9f33a193ad8c62b3d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c94cd2dcb2226e4bc1f9a4a649fb452e4221ca0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "545b2ebbe10e4eb5b6a80292cae59e8f1855b5e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8a45dc4cc8fab52c2e828c6bbfd18fa7a1972855", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "558aa93b827505d2123b0304551c8807c06c2afd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a107ceb57205d0430aed53af4e8f942ae9347283", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "01deaad39bc527b65b7284190aa6fa6c47bee615", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d695d1836c503e5975cc078c0cd901b8fc15bdd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "787a2a8249591b8e24e331f25374af023813fbd5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5935e991fb9380e397d1d6c549ed771d2b5fc5c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d682f03db622689b62cc330cafe529b56a73c1ac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b497690ca05cb983483fe6b6f076d0e615275938", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24a821167928c4e30f2807c89a67ead5575ad7c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0010c1b309e26b6eca51ea57d4e304518720ca8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "238569fd8f94d82545b3820e0f2698dd263fb27c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f105dfd879d752f8a8980c345420a3886ea6521", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c8965e334a9d3dc4bcb8c671c0f4f43f1c4f9ee5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c9200dec87d17eafb64c20b11ac7e7dcd35bf9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c48612be556dd0107f385799e79910d225247fe8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37d7c4e0c07788bc7fd3f8a0b452f89462645a9d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eac6fabdb1203e9e50f40d3a049a154cb2c8663c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ac79a69c905dcd0a12900fc611ce83cf25f9a5d4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89834d6d6fe0e4889528bdb9157449adc3935105", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9c74c2b78a174820b6198f9fe6faea7398952de0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3506d79b517b6ced51ea2d54393d89d97b4edff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6dcf9d9df37c30895fea35695ec26040b8b0e572", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "974f2b61a11c5f2cc92dd76077e7c50c33195b46", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "74ae0da47a9c671528633774cb17d56fe7f04384", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c55e442266d06c72bb30e84ea94bc431edc211b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "631fab0279f1d2d9d24cedd433a5027f1e3dfb4b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b8076049a1600ca93c232b9bc638da325455296f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6738455334191219d925a21f1c864a7708190567", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8fcab6f860c02ed8deebfe8365a4e3861cf35ea1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c8fcef83142c9a45277bf2fe5514196394646e64", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e753a9f251dc78e48a17c382bb1ea7ccaf04f1ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "838a19f5ed32810d7a9f28465ea212cc7267133d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "816d57d8ae45ee7fbab1460382429df775584c2a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2c4e61cbe721840b3450821e08bacbf89f0c525e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5769e4ca6a46e4e79a281e0a6e26103fe442d947", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8b6c519beb2d7421985e68ccb586baf17caa59f6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e0c9f02ea4f4585f12329cee1b9121dd136ca327", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "043f3ad4f5127335ef2e2812da8770affd624445", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4469b87a00983c9b4864090eba2768247a755272", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "73da3b6f12fab94ed745f5bba4c19504fe7f95e7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "51d633cd45431cf1298f39fc2917913702518fcf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3e46f95d01845300ccf0dda1255d3bf4f100c3a1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9d6827cdbbae700186dd46c38ad59492e16e29ea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "527ab1d43c02823299be5024cc6783877ca85074", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7eb6aa615bbcb72c3f39d81ec5fe569b4221b347", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "de9bc8bd77c13fbcf1330ad57edceeac6273a07b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5a2d267a4bf61666fbac24b7bcf7c6220d35258c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5e54a5c690052fb3744a452797c781b06369dc8e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3c8aa0a6d6b46b76c8da1a297d3a348dcd3cf382", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "78c9c6715ca993d2833f5560dc95438d187f5339", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "398bae59c94801b4b46010cb3a5f2da45ce0fbe4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5666a3cbc67bbf020d7e1155066a5daa42989725", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ba956ce22aea603e214ca78c40297ad2056b5e47", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7d094bb1f745eef8e29be0dacb8ef86493cf5541", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51861df94ac1bc205045841b15c0969910f89719", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8552f208ecae692d61be724446c9e467e8f84c41", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0fd1ffead3ab82d1683d4d1a21ec5f4b3bd4df09", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4270f69bb9a86d03f8d21524a46d4fdd09f013f2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fcd4744a8e19d9d40b810e79573e7b0446bc2c0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f5303a66b14d9066cf281db3e90317ad343919bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "99e32f5c4a6155ebf8d13bc42c69a236cf80b716", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bcd77edb5b0609c2beb8abe0d25b73f3f97af433", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d58db40c76df47104bd1e708aaa9a7822264c281", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6eee32995db33f45a7641202d4382e7cb1ecc56c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d90a004d06126cae18a4557df5e01240e06c5d1b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "432caddbdce947f0e8075afcb8a9d855e829b240", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9bfc58d8f99e32c15b354396bfa7cac7e22c1136", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6561b9c435d2698f4f6716d40fa3938985837d4f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1a07a573a6ae6841735f7a42d1281c43d16762b2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "73033aa451f061aeeb2d7cf65c726a40b883338e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "58889e61c0bb48b39a17a6e85233155d40d939c2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bcf1b719f5b4b217e3e8fd9adcf494f41f9d46df", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c8813d57da7841aaea7d473ead319f4e6c2131f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bef04e25796361da24c74cfe7c5dd59f8b64166c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "032f27c6384950fe963218f4d6b0ab928bfb9e00", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1aef863fa92b3c4259d7cd27e84a9a0a6afe108c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "33f33602625bf3402cbed8c2dcaf9b2727749002", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8f62a31f04b072632392d5b2beee7bd1cdd9d077", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "040793acc65fa218857f1473ffab1a438b68533c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "288152a9703e0d6b0f5f07f3e1e977629ed5835b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fd6d40174acc20d25a3e44555d779dece3d77481", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "337026cae3dd1ed8b20e79af580476e6a6d30b23", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "63814759059c9d834b4ebb9d872f09f48ed4ce80", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "450a264ac6e4d113c26e69cbef77399108745d6f", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86897709a8f5f26dca0afbeed1844b570211d6af", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da8c3b45b587e207058018033f6ca650edbd63fb", @@ -1127,18 +1127,18 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "83aa202fcec76a2c763108e57696edddab78fe15", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d6d5f3254d462ac5d2facbe0626d2158d9ded7f1", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2588a4fd65167ff334e77d7e0d3ac6ebb3092f64", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ada29f7844ac4c5fe4700d55687d73efdc2a22fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e60c6ed4a26afaa471218a95a354ca70ba7eff6b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ec4720b4b39cd3b37679ce3d6a3a743637a95f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9ad320cc967f66bbde44e4a5d6d95242ac804df0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "139d55252318abadaa35d968e5740f5eb6392100", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e75b06bc5279a5832f797e0cb490037b0afb3f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8729c06f25d63c642b0675b935fdd30c0499c882", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cb39d638134e2f829e8ba2352bb850c64b267e72", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "852035a6df0dec42eff52d5a16f194545fcc63c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "221f2f566ad57a5607336d4f71831b96d4b9447d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "893788f27ebc6cddf55e81d58dfe7799757a1897", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9d70ad2dd261c8ca8e1e70f337ea6e9a5fb973b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a43903dc982493fae12f9addcb21cca4e48d4461", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0e063e049e98ee0a4f6f189ef39a642b0abdd6e4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a3d792ac5449f58635626830c9ba0a8218e8bc0c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "243c0a33207606dcc4e7fde6ea3d580784088b99", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "de3ee6d6aa875dc5b533ea647ff04180b04e0530", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b7200e538d4e5d9b51f70495a2586e8ddf6ad5c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "faf9dfeae6bfff3567cbcdce851f92e8fde4d1bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1dc58e1561db37fcf9ba38c969ae488edd6f000d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e706b1eaa7034722f233818602a692753fa42255", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "947ff6b9d78d67972f004c74d2cfbed975620a30", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0a63f87a6d01768b4aa98efa8528b598341280d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4e4f4062febf97235319a556f903ee162aad68d8", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2f8466ab3be58f77d2f830fff02a558efa23624", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42cf100c1d0b220647e5c43dfe26b8667f2bb577", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc2db7872c003b81352363f1d3a3da6fd7491b8a", @@ -1151,258 +1151,258 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "299b70d368c96223a24b70b6cd0f297ca04bdd77", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e2232008aa62e17030e63ad65c89dc39357410ae", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1dd64174d5ed0fe42985efe5c18b1724c2ebef2d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "671cc1f50fa3362452d8d087b385d27622880437", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "06c9a9082916be971eb8ca31667952ad41400ec1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f42b1e829915be924a36f27b5c0544d8ceb790f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c0f8c66978eaff2ee82099faf625ebc509bc67f4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "623021d88345ef7c929c011f41005a65b166a9de", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4b10c25792d8510cb808d131fb82bd07b031f4fd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "626309b2d8d6740f20982a4b4695175c3a10d0a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2033421b1f4d42cc8e43cb72267dba142d1268a9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3ad135abba16c91f0b5b9c2e92c1d8cc2f9c5a3c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3c96afaa4d1b84b164061b7d4904f4d4077306fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "44bd6ce9b9b0e11c34714caa4173cf2ecbf3bfb2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2e3359e5b20fa7c79ada98d0733d55bb46ba9089", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d771e682c2eac1a406766ee1c684099e9b6c253", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9b7f0fc05c26b6150df093b86337081ecf71b42b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f4e0e2695c863d82fe1000c1d9b96cd3fe77e0f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4e6c4a54fa09927a8b1675c08346914ab7075096", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "30cad0d16dc0a7e9774c202ba3b328c77d834bb1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c85212f90619ed1cb589f01a7613bf4a55888be5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "275fa48ef152b18e055819ac727108d0f93435f7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af08f83bdc51edd41a7e23c29985b5737846687e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "55b599df156b2d792583c315643164a7b52bde0f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b6bc91e983a96f1a35c42a4ece7af52cd9357b80", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "744942a67ae56b386786d7f318b15ed7beb9bda5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dfdb22aab883bb47d671cf8be67944551e529083", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31f9fb56793eac6a09ba538a6671e249cbf70dd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "449868e6d26ac66d9fd1cc89440250883c485ee8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b47890e2f08b26dd2f8483feee7747b1d0a8178", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1194f582916faf9e5ec2aaf67796263651e1afd2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b42a2b9f9241dd70fa5c8dfe899c97424aa89b9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "37aaa65942494cf23d89d37561fc97f34f5ffb63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9c1946ad542c4b66ba225bc19b96b04257d4e9e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9122057f884d61568de43abf193d4fd5ff30a0e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ecdfb7ec28bc6c34dc076d807b13d26636e33d73", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8e55bb9f805fc466a1176111c95f12c602b5bf87", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fe46f702399327f8be767b0213ffd786e3f1d189", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "87e3933852a552062c736a64594280423ef9293d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a1db27e3a7ae74a522b59bd23be02a15daa2c075", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c51703f1002f04b8110cd92e74d685294c052cee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90c215a36ea2413295f78c5d69cf42b9de6dd08d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bcce0adc3b6732d709eaa102e7f5aed5f1d3fec8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c987d7e61f32a9eec5c680d134c19fd03a064a3b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "653a43bbdae444b7e820a05190247cb576461fd3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f28b2970875b7bb3583bec517a7cf9fe28cc825b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c4779ee8c8e44ddc6be19e768668e9a4400c8e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "744aa92dffb0b1621b4aa29cbaaa6cd8ff6ca318", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "783f5e00b48762877068feae225f239daafe0d6a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e28ce86c493057882114a5e107f8694e74605a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dff315df45564111915d4904d6557ccd8baadb2f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98ebc5304af8f424118d879c18a8ca364fd34954", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0d3d0548f26010091e90a456d9493847759fc82c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "15cea54d1a0e6ded4ad6392fe98a1f897f898577", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfe1f262eb9aef6b6e8933185e0e72c3d3548643", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "801da2540be5a73edec9f92e5f925048567b3efa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cef44837e66cba0d456bbac950222fbe4ff18009", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3dd1a5c8b82a34cb86a001e6569bfd8613c145b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a0a215a16d456eca6a6a5abaaa675a0237e1a25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e430365226a687562541221ec1d2e80779063143", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "180cc3d2675b070d871e90c57943d288255d7c78", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8ae2825dd373dbf04f1b46eab3751d2394d49f96", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "79781b9c21fcc6b8c4c1777dc74ef260c1963062", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "25906a255b984fe09668fbfc6280fe255b6b3d46", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a14cf62a3051e82be261734312c1a81ba49ffa0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ccd4b21fa0d484aa12e95ae556b2302b67deb65", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1dd5e9d5b15efeee55d748b731041ab3fd5687e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a90fdee0fd6832f1b142d18a7d13bb3d50be1d9f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3576321ca4c6ed55ffe8d81ce380cf6556a86c4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "17d0d9970e6ec69a7f0dc257dbdc80a1815c3bdc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "509307ac4a6fe500258f7f9c6b5be8196c8d9af8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a7f806a2b334ec04437af19079c5f0fc2b17f2de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "62199dc8d2ec8e70ca4b8e8415863230988a2b61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c79f1b46a95131c1c2551505c15bdc1668c37b3f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b5a33f7172a691e5f5ec596d7e577d267a023792", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2182fe7b8f7dcdfd9d9f9093488a1d33c22a8140", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "30891ce94367d99a12103efa3105553f9c8f327e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aae43663f7f86ff10db88cb517138d1d4708a436", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "62ef340fb37ab887c141c6d01c3b4f2695e59cae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9317c9a73aae6bddad81d06c427704e3db694fd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba0dfc89ed01addf4ce90bc57750e10524d38ebe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "05b8e80951f4b6374fb8926c0fa7ff3995e2ff9d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8e718ddd3659f823257669d538207f07853da05d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "520bbe9d10ff8ddd39c374295ed9ab846e4e9fac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0403641cc1ae5e2e849a04b4583695f52701b696", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ae29826dc3e68c7f33e282c1f206667a9cfb036", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "28650446b8a4858e22f61f802c10c96b4a11bbd3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "74d93600aa01a17d15f6798d3c32067ccb439997", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2245427bb1b1a776bc4943da6fb47f53bf7443a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fdc174b9ed59af0358eac4b2d0fcabc21b846c1b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "010bed1feb2a8f9fd24d0d473b2c4809d8731048", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7a3cc8d4957d0f26435f7c750517ea5ca41bda7d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d3ff8df0155615e942cb0c5fa5cb52d143332508", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "509307ac4a6fe500258f7f9c6b5be8196c8d9af8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b9ffc8bf57dfd3fd1e2d884589a9b442ff0dd8fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ff8d11b933109f750753e835cb1a7055dc06f35b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e79dfda603ec0087bcfc341f40c7e9db502786fa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b5a33f7172a691e5f5ec596d7e577d267a023792", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "526f68678a443c4f89bb568a459b0ec8e8ff9346", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "640bad926e29eba5d6cd7be123b137a7132f3491", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3a6fdfb9b293d6113c58ec3cdb37e468a33321fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "62ef340fb37ab887c141c6d01c3b4f2695e59cae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ee8e87b3e3129339105ec970116ba95b9c01fc9c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5b810a3b9f3184a6f8167c9976c17527adedec53", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b269833c05f98363bb18ddda0543de65446f7fdb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "049f76b305a560b33ae271ca2db48d71dc159844", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a35da5d1c4d62b8612dc8c910b255a9a823f3ce1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "dbc3d5ed0303d6ece500487808430f95db2ac4c1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ad716beb3479102329fd3133c7933341ef2afd61", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9bfc3242282327cd976f86c8271440acaeb741eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "600bd8d4a8bef539d163f164e5ecfb2101efe26c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "058f41f4532a7d94fb484ac22af9de895d76e32b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2c687db2776fc45dc85e905374cd73fe1777fe6a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "905ded046fbeb10077c69fe3864bf59af5948b92", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4bfbe26aa818f90c6c401bef4a750c9b4dde0c42", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a80a53d3622536c1fb869a9b037bc051203ddf0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2800f9191131e01a9675d158393dbe5a2951bd28", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5d4b6325a3186a1d2a26366e144751304a9c6b44", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8560e5c0fa871d60e926836834d7fa032b1b791c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ef33cdfb7a177f7463babe1ddf0daa675b092b99", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "887753f8a530ed211f928e2b73295b28db314dff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b22f2ee7a1880c91f46f2b201791d9557e6c4bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d08ad34e9cbfa11f28ec63eb9fe89c862aa76718", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a774d0bac157b50bf8421d8f286b2908a4321650", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ce0709fda483d08dccf3c590d1300e529c93ed2b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3f946b490183e5209bd40126f64b0e5f841bc3af", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "01f48c4a8a1742fae0941e29321a246efd4c27af", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "381605f1314666e1d14b72df9de8f5cc0977287b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb724b5e4c056adf1c1d2bcec97abc27d720499c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a7e94d4b602814131a9cc78e216d91098d018c12", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "172b3bf1d3b7738c4546ea08c73aefd692790379", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "badf4076e60303c618e24b7d7c99cd7ddbce1cea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "23b8952ef6156a5879f33bf690aada61defb00a0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "366ca054569fe2d67bdafbff3f71ec746151b524", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c4a483994f549cb41caa1cce332952e8ad4f2e91", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5c219c399dd9e61390449e899bf415542b55e367", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8e382a8a46c0b04fedb4406353ca26d0f3127bbd", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9285faa0f3f37fb46ae3b747b7b355e3d0548a0d", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1ca2779f6f3a02560def756ed873f34caa0b9777", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8a344af9c3f691225cd99f2f191a9c10bcdefcc6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb8a1c58b55da25b1437bda085809801de11acb8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "91417592b10e262a487373abaa5a782f6bbe657e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6bee539f1db61e2510bfdba27a656a8122783028", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cb7cd7d0f7f6597891a52905b05c5fc2038c752", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed5911ba4128f0c32c377d99ae468233d8636d6e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "002bad6065109663f6162ccbe5b21d4bc099b1e0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12605a6629b96d701f04780fa1cd20ace90ffe07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f3d2ab3aede5d0e34c704b9907c6cd39203c2411", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a6fc683a304ff7070e411e00a397f6374da57238", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61f6df1f195f28985da1458a905885bf7c37ffc4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "70c67327c3ce98cea818ceed412a8d4f2041cc69", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e83db220e19a0cbcfe42cbbff7671c28183309b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "63f0ef32f0543124a03ef9b7f819767cebaccf67", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2ec773fa8d5d55c8c9af21f38949863512e55e63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8716b9e4c25df81c4d8793b80a932567b4c1610c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "795db4818e4e9bcbf5458c90d7ffed334c194469", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d66a3cda3d3de32040138a51f7bdf9bbba2df7a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1821dadb987df353f96e864624bc59d1642d807a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9d271bf951de2c7652a917644e4b3da9a75a3b7e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a335080606136d07d67b0d9d0f87e779b6843387", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "694cda74d6c38870bafd8aca0fe805f0c0995c8d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b4649c0268480c7517f30db42c548d225f0f9152", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fe86b90d59fc6628f0cd891db13f05c221d7fd76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e8e71df19fa75a2cb3f68da40404ed911e312570", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4a27fcad4ebd153619c581d3657acf96ad3d154", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9d8345689464a21c3c668cf90bb2d83b612c3d6b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f38b4cde15b8ca655c2251c63e39de24964767d4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1462b92745fb2885a1c8441b93a428a24b72734a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d9e42eaad9d0b00197614106412a17554b66fdd6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c3235cdfcce37ce5f825a74f8aa20002ac9cb49a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "99bb3fb6e58ae3aa0101df8b0974a396891130d3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6fde47985cd89483bc0b0deb98e3db9fd86085b1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba319556ded1d32f5a25c1c36d311682bb9de309", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "28f25fc058fdc07c15567e9c83a8f3871d987c47", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c26f86b35bbcb596ea79e89c8c947fccdadbe11", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a421059097797fd3991c2d88eb1cb5891a28c540", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "64a4ed0059530b606f66ddf37eb7066a4e27552f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "da177eb9fbdec2588a65d5158896a3d3e716e4ca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0f73515e6d3491f3922ca1f3440edcafca2c2d25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "46eb83ecf3112fc60554c6ab4716f31234668d62", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03537e61c267824b36130bf5148233dacf491b3b", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "14e7d57b2ca909e6f2e708e69156a0fffff226be", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "708414ed9426b17b7c93c2886e5fa811e93efab9", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "810d33cb9f35f45a3c439dbb446dc1fffe07fdfb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8739f42c60db148a3c5158ce4b2c5d0e52815e31", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7ff34c3aa5b9910c31d941b7b65091b1ef3270fb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90d16315c21d6f689d845f8c69602006e3bef175", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c381c76dcb019e7a52235e21dd6074decfc8de1e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "771cb73a2d42b8c231ac8ece1445637c1368c32f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e5fbabf4eb1be579a94f6b74c9ddcaa3e2aaebcd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1ac0f62b701b104e228f49b3e8eb9f3c049cf63e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c2535b7e964d90a8156d680fc14de0df2d517ab", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f65ed2da90dcb9e89a78227ddce7031987976ef0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb860094387709092737b45d242d3d1b204d6db4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4f194a9b38a6a3b2edd16c225f2912eb8e696508", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fac4bd420d54fb6e384d8ebccaf82b5152568353", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f983520b8f3c32b4fa67950ce5c65524061697b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dc999de36bd2da8184a2b43b4e605f5433a7800b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f40d9e2310326811125d7270a6f34d43d8cbc132", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1e7a75d061aca0b7f9fba55a8f02e22649813e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0fde5b5c4046bb132ddcf5fb5d4467f729262e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6b75f49cced9982ef08326601d4b01123b7b3531", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f8fdb53daf0f03c6a91a91a36a34dbf6abede2b5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "162747760b6ddf807b5ccc80f46866e16e7b0c6f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a887d378ec600f05b1a884f8bda0e3aaa619addb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f785be9131b0b80754075eeefb987d08af8dba9d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1262def1f35561aabc2500456123ad18328ad16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38ec5104ea0a87a0ceaad5ab9a463a6d5baf6c10", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "696b1cd5ebd35626a67e46765d26ffff3080fc0a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "778285e920a71891fffbdfa6096e6d59543e7fa0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3f0bfef48e59ce9ce063a241d47a4926dd86996b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "eeef56381ae39e4fdbf51a204200deb128913a6f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb384d15bf03f3e84fd7aa800734393a8e9e9845", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41fff2993b2c7400c093dad8f7bdfe784b9e1c7f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d56193df9d6d58d2435f03974cea4af7958cae0c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6230ac00224734bb0bc481662d3f5338d38ffd9a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8621faedaa151827037d369aca52ec4e1c9e7732", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "50bf9abe6629eb309303c826fcde4ba916d19302", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ce26db0d01746795360fc6dab70b1c3a3cb0103f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8b9f6001210a10f0dfe588e78d1777e7764715bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ee10be7217383f841958f54d62b80c5a7d2d3904", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4d802e11d3539acd9764569d28c7b6e52792bcf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "286929bff2c386645578c1fd5dd0b296e0ce10d7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1488d60dbf401adc78053423eade4a2e66c720b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8895de3b92b7ae353061ebf5ae41f186f3224bfb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fb801dd26f6dccc173efe46c5d429e1b075bf5b3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "65326d9563a342c8fb7b4716c782d15fb9945cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "85e7529cb6458720547425afc845e198b62f450c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6ad9e5ea8cf4f5a856ef369abb3d04d9d627d4ee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "52ec81bbcd2a5692737c2d92466a41c08bbeb6a9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8c60d068f401a1a9c8c0cf591a145dbdfd7ca088", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d451d364e4e699a9ff6b20b28397758db9868b9e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "69fb919964bcd1bf0397eb9690b0aeea4e957c13", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4e96b3c86e9eb21bd5bd628bee3aaaf5795c56bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89eb63d9c20e54ff561b8ccb60b28a20eae11ff3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "60b0af8578bf3d1cf50294e561d1e5e835231523", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2a3c3df4b5cb7847347d2c11bd69eb4b2340d52d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "69c03964d8a0ca044194f03d6aa5c16464472262", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cda8e1d26d0809c33423f5826cfa8618354b8ee2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0f8bd061962900f88f42c449b6366cd127fad2f2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e08c9e0d13263f000982b9b08e7d07cf7bf67cef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b85efeb731f6910e5cf19a19c2bf6c64d8778e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2060735bccaa37429c5b514a8d210eadefe26b16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e3ffa3164fdedfd49d4c00cc0660ea740f1b30f3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "981a39bfb056cc0515227634c2313a306f8b2f0c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a11c96be22de3dd8c9800ede81c168aacab68b07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f6595d6df876bf300cf8af983b09e6446591db8d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8be3a7ada000f18c6cfe03a61469b8aedf531635", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e50e13e3b6abcedb95a07c24ed4bb4dd2ec2b296", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d46bb7c0458391c5a4e59d1e751428f57946d881", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ae02c66d52f87a20dec6260f73f2df0b20041b30", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "af7b1533144e347c424c83fa1d4adb3c2910b083", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1cd06d92cdb6b347a4d2b99865547ceb1e8661d4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ab5edc872465f16cf0309b49cd7d30ecc7a3c8ce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2813b66efacb1ae9a978d81779418c7de99bf8f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f04e5dfe93ad171ebe400c40aba447006684552", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ef5c3e47740a22b87b94c000c87589b2c717918c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2205e46147285698d9999c5e9c4f9dba26e0b20f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "aaf8442fb5ec5c1ecaf7770c2453b2e435d9dcd8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ce5105130fb2dccc0316872fd6085c8de58b7d36", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c5e73d06f96bbdf8527cc2735fd751127175ed5f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8463046308950438ea4df350062b3643f5f728ca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0625ee91fb37a1a02dd9eb1ddd00feedaf1beb51", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "377c4adbba40c9db070632575b001aeb14accecf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "892f5b703131883db23319f2333f3265459eb28e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "58dca6b348182ba66529fcdb309136d32129681e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "71277d8085ff0fbe968a22d1ea15d4d32ee19193", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "46420f9ba722ace2e5ccfda3cff3bbdac935cfb2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "47972b04c4a303c0315c6ac0b5475fc007fafa3c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "da40c6e74f4b5dfada533e97f47cf0bf35f25da2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5fec00896dde4ccc08cb09c38e21c03f19eb5ec2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "25085bd845c28dc20b2ad1dcd4251e0175bafbfa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4a1455bfdab2dc16ea307c4f693ad3a3857fe743", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d0213991b055a26b59e592a7dd8da6c04641d72c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1c2dc943fc07e66bc6e08cbd9b6a6cb25a649a20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1fffaf3885b3cc7b0363df6cab1f47cdad9b6957", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b56c1310b02f99e2197773ceedb6a3a9487d597", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e434d7a4855d7094155dd4887a34580544eafcf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d3e51dd395fb20ddc934992b5e9a7dc7bd6480bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0757ecb514b6bc3ae9033383a98f5fb443bfac6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fd129d02d5f2c94b3a701728b10fb2d02c863195", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e86b39207055febde28e3a8e3e75fad8c465c95a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3568037512ec235d8025ed7bdf0dfb5c8a4a19f4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "878def369f98d7ac78f2151551b80fdcda097142", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "30fe79eea89687586c44f4a432e6f9e4f7ea3600", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "55152f076d578d2be74947888ccf750292c942f7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33d58ba5efcd9191386e7e82d43471bbcff77ab7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b25458954074dda7863c540088064033f495f2cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e901a99275553650fae7fef0490920104d4e5b7b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c7188b0e0d97fa550dcdf94ce77b2bc263197d6e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a38e4852f5c08674494a835bcbaf73e780b01325", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b3e149dbb708010fc8a669bbc8cebe58768e4d37", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3c6fa0a5bb525c388544d71b0353a2db94cf64a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8e64508cf2eea2855f8ce1f1e56e5e30880712e0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6b59c0809de67b1426a66a6ef933182eae575098", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ed18351b5afb3329f51e26bc79384b74347121f2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b3a1b11ec3f76e167da8ea3f2187e7a974cdba88", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7a944c4cc5cb878dd65f0b1bf55cd877eb12dda", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b322255b862dbf4b6f93bf6e013d046bcf6f987d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "330d5868893eb39b946aa09a93dc77dd53bd11ad", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1aaaba5eaa522eb6dcfbe5400e07c11f826541c0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b742b5f4a5f9149fa676cfa17318b8ab51d20a7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b1174798c50a3751b4d935f4ed5ba0af571d347", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c15bb5db398fb20f208aba1c8ac1133a9d784440", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ba084fb3b86ca70c1aa6610864be79f7382a05b3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c67fcfe16e70ab30af781d3672b8ac2c0e77f28c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "488674ae69f46043d9b51d82f483b1ddf0938ba4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eee0fbe2f8b5563c19ec1b6a30e1b89c5c198e3f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8fb90545f501e23c7bd8c6ce6b6ca6c3608f4ca6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b65349c1b56eadba4e322edb72f7456ea245cd2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d9370e8da387f0bf1f52bcf7408e9c20355f952d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1f79cfa4b951ae8f4f8066f6048068964f25fcf7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "eed66d935688e07b97638aca04298ffe58fea683", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "844dccde55a37b51583bbac530e8a90af0df3080", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "432d130fee28d5172fb172ecd9222bce3a4736e2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f58e09a16e9fa58d9502e94efd1741310455458f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "639309006bb4d40f1479e92743cbc4fdff8c39bc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fed38e56adb3b3663c1602f394097f9019080a4c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c644bdb3a64925d9faeffe956fa1b6ad8b98199d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "17b1e42198cdb0d0fc5661a8478c7d24ea0e690c", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ff5c73c802a062d66987281b5a958841fc176f24", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4b6cd69b3bcd47a0cba2a8aff03c6a8870898a19", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bb20c3940c3da082eeb6d87641742df04376d2b6", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ad2b3a7b4a468507a9301005d4c69d43a39c87d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cd6ad36228c90222b0c72eded8d262d316fbde7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "665a08c1ce448dd5867014b69e3aabaa8d235a1b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8849a73db58cb60d7f804b3676a2e8d6cf8f416c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90d99df21d501f331059819f8502b5a3a42d143c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "75b087b92ae3da2a9be69f36327cec8044e5ed77", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ea888734c9576d234a4fc1e60a65337809b07802", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "68cef029eac29c817601c98589ebe99f155c8484", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8af419a1d845ea3ba9887f4f4f4b19dc1ff84e54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a1d6eb8ca2e8f4834cbb2485ffc7a2a699c08a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a4d7d251efea2e4945ada6681481e2e630cd1364", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cd63cd068941e8a1fc014f3990259b9bb9af5cf", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9417d6015dfde551d84ac55f79a8f158b78d1b08", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "271b24eed28e238628757d6876c01f088f1c95c4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68a1165b2716ccdad75f7715516577ca45878293", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "665ce9f2d6f595dfa85d0227669e95bed6ebea6e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb5f11f85c4dea46bcb7fe5d0bac0016f4d0e581", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c78c9efd02ee2c361da1d6445f89bc5bdea18e3a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "654e7bd00ac990cd5fa3a26b4dfbfb17e8b5b46f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c55d2b1996c3cccb3ea44af513f580c88224f1aa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1d85291d1f98613db67e0f7d0ea4970ccae5580a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f97587c6a4ef49a3d3e4ca37695237269cef9100", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ad7c3d0774c66eae5654d86276feac14d6286a41", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c8fd47859bd4091aab9a934b76bcd083568f63ac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a94f142c21634c9d84a86d47e64f2133edd3f06", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d758324496ba3d2e6af3d4f2662d884743e13f97", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aad1f20831ad594eba17a8750c757e08bd1e8016", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0d66ac3e45f627390fc6516a427c9f262ac7fa54", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6dd491fdec35ca5f2468021308d9b18b0f93906b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93fafef04f89fe8d19fc3ac500b2ac6121af0f3e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41daac5bec04b0dd771ce39186a386e75af1d1e5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f8fa086c8cbe02db0f32d2ca6e58be430cba7c66", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "06e05ecc3b95994825ec5e520c59cff2c43dc336", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8114bea9100afc4e1a6dc245a2b7ef7398a8749e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bf72045d8eef0914e374a478a9992c98055c2cfb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c56c19caccb66a83845e9076f0988c06315f7f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3f49dd2d77af38d9dbaf6f0b809fe21ac65e3bc6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4a7c0bdd88e05abec95c51cffde2376214e8a10", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e010bccba2f0c77ec733853bb680226653a0ee04", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d28357d963d1faed00c78e2eae4f60f2b3bd9299", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f5a117db2d458adbb43f0cb2dbeef077dd9412b2", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "66c0b23efb4521a5bc81ce23f9e24792214a0827", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5817707884c76cc8baf5ee30ea9d7132c0b14168", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec1d4644d2ba89bb45f13b038138840b25d95607", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a1a323cbcc3396ed8ed21a0336b74803e807e069", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "74a5d71454af0944f52b18545ace30863dacc652", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "258f4b98a8d0110aaa77543ead46e3569cc26165", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "df4e9955008c856915bdd8542af5c32fd41345f8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8999e3fc920cbe7a31189f5aa710bbd448f865ec", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a788c9de279ffe804d95a3caa46b78f5348230f0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f6695f9ffde388e489f14d1319e9d78cb1603d87", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "44fa565242b4a12e46335f726c31b720639f59e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "be66dc48ef9801a322d75ec9f07fee36a7758997", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2be52bfd5c773f46bd8c77f1d904c3171764a121", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "067a575d45c4ae0e12d14d9ab760d708938aa81a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff93a0c6120700813c7f888f325d249194de1168", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5c77b88ea49d8690cd31a3d347e581fbd1ee98c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2b5de7325569f6e0ca86170a0032e91a759ca079", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1cc3f936446963e1c74f7f30c7b90520aa130a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "48c6d3a29ec688190c7052da0aeb96510c8a4617", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3d09725a8d344b4e67d773a567e3d6fbbc4edb9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "618ef626d7572238f8ed06d72f8d43181c85d2c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "384c733aa68f990f2e1ae7e3534269a5e12adf86", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "470377cc9205e9f36cedebe920970408925227ee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6997d00d05bed4216306734660b83ed2d4be2820", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c51b5cb8c79478460aa4edce4c6969f1427a0cf6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72c67fe0fb007b09b299c59114bc39e8a0f949f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "08d19166251aaa890ffdbdf33da49fdc0175cbf0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "791f37ba128bf2ef0b76c3121ca1ea18709ddc61", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c5069cf512240002ec20ec65c4ac348c646247a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "626dcdca47d201aa2d1c53ec48beebc6562fc5f9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "35584fe866f023282507652c96b06c3e07afddbc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9243bb0a66ad8f7e65b7c2291cdcc603855b706", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e559ef09f68daa17d027320716bedfe527332b88", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "314527d3dc84ad3a7bc4c1b80fa87624fd5acbb8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "403393741ed6090b390e709f7a88d6ee50e975e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6e735fd53b8b5c53af00d2f2328eee5a44c1ec3a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "96ad35ebe73732847b7129364f434e075a5263e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d786621fc09fc6c95bbb67358f2cc5f00bbb00a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2f04880b037c8f08346bbdd4726f765d9b430964", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bada64eae1aa760a8e359301709fe2c5c66d4d67", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1726cb285de968bd84a2451279f3bd9331d82bc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eac05354c4c4b5773f9dc6114613e4e1605432a6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "906a9a100b7775670f757186dda787e215c85484", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08110291cd9a5a905498b41a1b9d274712372144", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "368b2ba415c7e413a6d1a8543807791953011d3c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e7233d459d9c1bff8b3a5da9a7bff2da542fd54f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dfa31748f3c71cd01a851cccec447f4c8bc9b656", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c269f8965a513c8997cf15f7553fbeec0a01271", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ac4f866c623012737e08401bdf0505e29b7fea2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "82fcfbc2074b0d6e20740d0da6d00426c2487276", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "74b5ed9eac40bc037742c260905b8518870184c9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "226496fa513d0549f0265c346300d727c9065423", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8f6422dcfe1f653dc8621aa6c6556d91d2b01af3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9442be83932d16ebd8e7b9dec5ee8bb029f4db15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "81f63c92ee044fc78c4fbbc42940539c789aa5c6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1ab33b7c1d696cde2688ca585448be20217b80a5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61115aeb86ef147fb35ff05f0566d07d34636701", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "52c6733b524ac2059aad511ed0acd1b493974cb4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2f91d42c7e91d78005940b09175b3fa3620d1ad5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf70e427da46f20ddf2543a45387abbb9c9fa355", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1e75a20e6ba2b205fb41302aaa531cc54f109f2c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d69b2c365e00bcfb2e573c7406143993a3f3bc16", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "88b8c28d5702420432d4cf4da5c6e130eb666504", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b79bb11cfbe68baf5579dd1ba9293cde06512594", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3e8007be8e9390967f74a6e54a085188d829ebd8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4823fd4670e3c85d4ec5bdb862b827c0a6000aaa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fe6104381ce6152c408629440cfc18a1b64759e6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1a4fc173ff4d65e580f939d4b3c66d4bd658ddac", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4ea79856f4710cf9c0c3bf083578cfb6a143ffe1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d4d7ff74f6dcfbcb42b6a4600d60e0464cb27b4c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e17cc026d74dce987ba8e67755aca22db7bb1655", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a86c7f937d0749572b161766bf31cb40662a43d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "10d35aa1b6e1ab5f6e80c4c8b5a8aee703cf78f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "90d5d8b2b8bd96ac9634133c7e935a38988be219", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "abb7ed3149ebeaee5f5d968763985103a150c788", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2afa3678d29268d35849d7d779c6acbaa7ef4d1c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "73ea015a2a2970bd17dac2d36d25677400d54fe1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4b850b3039d14bf4737c31b56963d0d8463fdbea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e40deaed44b96435e83f3dec0c9e7397bdaba4af", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "705e9dcd656320bbab2360fb2234e5f274bb6cf2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "73eb13d49b454987933d27fe9ea63117715f4adb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f10c683254c012e9a0b41ccab0f00f93bb1bf7e3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f7fb9274b510e69abe20e008b0309f1b6ad8553c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e18c3c6f8bda88c3c12107c540cd5823d7ca314c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db31be6f1a64fe34b4c8dc661326385446e15165", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cbb5d04c39739708e11fedb7e034d50b51c4fc15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bc71947492f71d6470f0c05e65996b67e3980f99", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5bc6b11b8cf098c413e07cec777d2954458bf6b3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ef0f40ab0b59b141bf009e330254549f9ca5408e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5e371cbae0716d3534bdf5ae752efb75f71d502c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "dd9bad709e86666dbccf81851ae69905c9a480be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a08fa3d5f17f5b18b7ec8d751a04c2a0c98c9c4a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ad068d1071f3b6e4bdb803385046fba7601e03cc", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f2a75bec446f9966a804b4d60ddfd88ce0d8043c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d140f693bb36a6dccc9a6b7dd963f0c192d3c222", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f484fd6cbe772b91c934cde6d884b30cb0ffe78d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d60ec8076a48cb11098945cfd621e481243a5aab", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2697579a07e661101c5e2bec27975173fa6452e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2aba1f1cc231ab74a4e0d850a1e3c4514340a387", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6d9aa1d1e598f784a4a834ee58d10341bb613e8c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0743353038f0140d56b6847a377e33175631ed88", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "84113cc8c09f4aa500609a14dae870808c0d62c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ec486c7df38d8f202b6098a73c181f78ac460ff0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fdb4b677ad94b999e14757f9cb514ce065f76a85", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "606cfd65130c988081322cb8cb6b8d83a8d60087", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "038da16f28a500f4f501cb5747328d041c8dde7a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "515a1b1c68f1807199c1c5a3d52a76829e536777", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9a6c8bbebfd45e0193a64c0e18d8e96415b50fcf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "544205ef8ce5747e97be825a433df53522838f52", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f67e9f13bb1877044ca1805275ca31074ae21670", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e6568601dfb0d6bd674557d9ff5b758db02f80a7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c213b572191bf8c2de36a0776689513e471da78a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1f4af220a06d835c78ccc6b03080bd24e7913974", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b66ea35d51ba6d2ec6a8287d5b8e3847e1a5a7fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "33d6b3aae467166e680425465488dd3313d32e9a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "130e03556ca8f9af1566403d3fb46b70bca52202", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "77eb738c417fd4062eb5fc6e4f9d63b34fd54ad3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57626511e582ef3c28feb153e99da7092eedff9f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "62e4180cbfb8031f6669d9558b43c692d8e41dca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "db7100655337f899a06b132ee97117ccc7e8f7b2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0d44cccbf6ef2adc76715ad283b838c533df43f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1d38719a85feb05515f89049f2fd6966a9dd23b1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "05a33557437a786bb3c61132cb56c28ab9b53d06", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "896592b38794d33c1e42e50419d7194df651c198", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0529e4d851938aac7019604aa23a026964f2a07b", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "888f83abe7b47750c77d675dfb70f0a3b22a7fae", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ee260a6bc799752bfae17d814e8c5d5dd9bba655", @@ -1415,18 +1415,18 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "05a5e51b927f5f58e54994d58274c879b62d759e", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3de246dcd2ee05f4fec9a7e590bd598b9e77b718", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8980d9775581ba5f04241a09331161b176f90129", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7a79176a310d5e7871ffca2646fe48bc501e18e1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "415f27ba54f917656a60aac5bbecbc2e3a8ead10", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0490f0b00cfd1e782e5cefbeae563af9703dc846", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3169ba29239a9ba3de4b38944a89fb2b984555f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d1c1ee773ddb28906064252ea38268a8a46440f3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c040552a848a51e723af2688b141b3e883ab3b57", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e821506d449e3bae34d29f7974b2377ba1dc612b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6cc96919c45da1d8cc78ce3bee99e1f6d4f38bde", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93312dd48bf01fd59fb85ecba9d4330c67d55389", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a7cd1a13c312bdeb24d6d862454bd0ed17d8825", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c9631175a4c993432a11adb09727f31b13bd522c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1777b4f70afadb86654fdbaa7969df554f1489ae", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6c04fadca09f7947c3bd03b2bc592cc1434f17c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a52fcf4a152ff93640b21db176fbdc32137e568f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be43f28e87dbc787c9ded2f70cb26c48ece2ae8b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1f9b8cf76810ea43baf548233855f18e64f0a301", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1baa6a223c1b10ff9a79ba191076b560c0ee4ef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "777d0c19e9d1c28818567891b9a389ded794cd4d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fe50cde38233ed5fabf1e49fd7ad39dbd10f0c25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5f2f88541d30afbce9899e09bfbb75bd56ef3c7f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "151f3c7f04fd07adeecaf5e5dec195257ba1e9d9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0dbe831b7f4f4440041a07d42b3b626489399f5e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3c9d45021a75dfab32d2f501303b4ee626e1a0a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "561f6b9b3990151c1dbc391a8193d80b0653c663", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "218f9f48693bdf739d7de63d627e045b8e299e58", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c2ac1bcbd5c76520d3b85ef1b309bf7768ba258e", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad5edffff0a84a436bd56be3e6607149ec3b4570", @@ -1439,66 +1439,66 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57e3de35bea1c6b18c4f1bbf206fb4dd5c1366ff", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21d429647d610e067ed5317ae06d9bb686da5845", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d1ef6d142adbd7b6e6fd4f3e0cb7a6d183f841a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "43d6f71c5297693d02dbaf6b9691c2f1baddd54b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "28b5f7be39ce2bb223db02e45d38a9e1482d8136", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a72372849c06f879600becd21d08f82cf296033", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "826c50614d985568a9dccc871111f4f59a6f7f4e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5cf409bde29e5d94508df1823677ac1660d0709a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "68daf74d6dd9b5422676c97fd7261ffa78005561", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8ad88f44117f5d733cebf572c05ef8514105b29d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8e2116badb158c89d239231f215da6ab70a5fd66", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b70fa90b61cbc4a70dc4ce30d8086f53dc1bfa8f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e4d77e90d3cdcf721cbc3268d657037f046a0b97", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf90ca5f7df12db9164e57042b6090edb060a4bd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "446887fab80f4b41a234a5d567b197a7c13b208b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "30497b01eaa5530c5dc3857b8f56def3b7fdf9bc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23f27f87c0f9a7b46e8ca09ec3d17c33afbcd95f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cc5469d7f75e4a0b3f8a7fea32e27352c8ab802e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5ce214c83edee964b220c73418d14db67627493", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3ffa06d91bee53d83651d865e7fbb0637995f5e3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "573f14befb65a1984f37390a053590163b3014a4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9c38484d03c7a022cfe1a4ff211b4a387c67e2e9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b30d1ddf0725a027c3df3e3e29c5a60d20476af3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb95de384d61ee7d59c94b58b3ddaf5c089f9383", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8b4681e9c24a04d457506680e875ae1989887fc3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3582effa12ee29f7710fb652fff8813507230197", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7bc0b16186ce376c0af103014611d935fa6609ef", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8743a3adf403ab60b1e97a6aeccb12505a835438", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "caa7277cb0d68062dc0640de29a54b6fcebebc4a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5b371813fefa59ec2368d252d38686fd1c8ef72", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1f6b38b2ce2f1a665992f946a4221c5ce375d71", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "040725b9db58602a2a09f00c68c972dd7a3b060a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58ad233a99b68c67d2c0af3aa9b8b24c4670b2fd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93d748ada56ade7f81036e51314afa525fe56d07", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "45def2c88747193a42f9e70fda3f2a2de4e024e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58487672dabdbde10a50c7add725a441e69f8532", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e54bab17744ebd81a0655c8f26d3872140563ea8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ea1c98a5d10bd1fd8318a1df4547ca5f067bc642", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef6e1b797a28202de3dfdc28116d6edb79acd782", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5873be38fca2636ffb96c037c6b2e212bda6f09f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8b49a6d623fc7fd8e6044a34bfcf1dc6e743ed84", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be60265b00c3e9731b5a78b4311679223d9d8e54", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a94fb7cdd9615decffa716d93902c939945d40f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9d48ffad6f002dcd00a6898536f8fa8596ad2dad", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "742a9cce05112f55d63bec4fe6c97d3d13d192e8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3197302ed741354e6e878027b1223063f25a8e4f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "504625f6dcc0ebb10b760fafd576ea602bb52ddb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2e5d71efbbe223931e4de020343edac5cd82cbd2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c3f031bf798e16a82554edf7190a2e582a39f6ee", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f7d4bda0d5d1f5c957e1a617fbb7209e4266545c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4ec9779a499ea78912abd5c18eeb4b79a94efa98", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4dbba118a13040d40778c1b8b2f82e383e8f2cc8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b549fdf117dde2e6e52443ca8a88703c68ef11d6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2a9ce89f8b96c4448725bf58dd7ec80c30df2cb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ce160d29dac1a3b6f907546fef67073bfe5ed80a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7ca82a813ba2bd7b07755b56f0fc771184f14626", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bbf803e5b154c61a4df8ab80302b9e6e764c83cb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0d8138ba01c952aa3a3d076ae0ff1256e278a8a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51d323af79238e9330515852f28cccbcd0409d59", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8def42ed8f2bff8be19e85f3f85330ce2eae995f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4957c4ed9d7e92f196dc0112cfaefdaf29094b25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca3ecee591bcc8b54011e695a52bbb6b635c476a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7afcd99093820ddd14ea186229a53d78d28bb3c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9e8498ce4b17dd48bf741eb9f74b8388ebc38c7d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6215fb2632757959d5105710857797d0e2cf6987", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da0e9d2ae72d3c813d9e6458dfc402a5d3d4b045", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "babd2ba5be3286c09adb36ecb2148b579f8541fb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "627556f9add5d9df08196ff1a686e5ea77444656", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0c19e7da8877676611f2fee8c79806d48f8620a2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c17296b141605ad5173134baa2e18fa724865c2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd61613cdcd853cbf7d3f7d8a88465c408eb520d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "aae954411dd106fc344a6067f2f756eeb14133e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f8cd4b08a8680076532f50fe1bc7a1b2dc487a2e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86e9f4d26d35fdc77a27b9738f5a88accaa347c1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "20259b16bb073de5ab2fee47fa1ad68427842c3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0cf0c2363e3ade7844f6786ab604fb314f1d9853", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2e2428939abfa477349e2157e6d100c570b02202", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "928a77bbd642f3734c03577d9187239917502c00", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "96d789306f5212b258542b574a5768ef1f980f7f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "130f8781da03b3a1ee0375f35827ac41e23fc6a5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f98a999bdafb714333960a75fc759f5f3762c8ce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f075c2a649f1edfeac8d41840a59922bf0048b0f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "99e988a4c26d23af50cdeea9cb0e95c96557156f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "688cb252a1f4ae8252fdb0b13c5661008ad83c60", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9e151bae8c06e33d560a3653c3d6783839151217", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "90a5ed15909f30946abf6cfbcc628fd9d3b1f116", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "34262012c04330c74fe8e61016a656893029915a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "16cef0ab811ba6abd0ea97c779b9b51089c9d171", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "56f0d7f790f6ec3200daf87410831ddcd2fb9041", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "657b784e09895ed81dcfe390d20f55bf246423e9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9e247ad9badcb7731763ce6b05d239a84bb4b600", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "20bf99fab1de33bd6b2c4811343badbe855032f6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b73dc6610c5a145f54525def43c5bbc18040f541", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5586896d1aa9e9dcfa207e103edf6c71069f78b8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "035f8ed6a7142dc58e28020ea6ea7be39f733721", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8f34fac3ba54adddf85cf991644e38a61d08c748", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25ac659bb08931cf68d20b9d5504d94b3a23ca8f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3a8a4d2f51b5a1e49006b4017674257173907781", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "75b33255407d279d1e903ae5f44151a54ec82c3d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4174c42e0233adb1b952a1a20264a244d70b935c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d745f49105476d5723a5968a898394c5f37f89ee", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "263999a3356b504a7be50ba7c18dc7a7eb7be124", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bd8538685cf60941834ca23393bc99e145b9e378", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cb165106600834189c3d6eb3fcc591a7febbf2db", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3c3b77ef0940e7647c8a996a82b02a2afd8b8a75", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dbdc88681673ce88994cb8f7cfb3aa5f1aa3f84a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3c445dbba450a8de8057f4717aad007face04eb6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "baa2a2de5c6d9f6fd1900b9ee70a4effd234ee00", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3883d3ba479de51f46c0b1693a1a4e79a68bcb94", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4a44fff45d70c6a93d99625126474286d8b5216f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2c6203cd9e2a0673ec4ab6980591495f683b655e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "14daf8dfe06db07a6ef59f54b64c5a647ca71468", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7d329539b5b614666b04ddcaf09f2742cf3fe99f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "02807398ce5d574cee3b3abde8d3b8c505c2b10c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8728279f031c8278873868682e5d254586dad31c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1e22b75a1ebf2caaff06f889a896288256a50c44", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "623ccfd29e16f4feffe33ae256b7186784b9ee25", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b2e22598ab9eca3cf5b83acdde1c1a0192d5fdec", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "39441c28f9dff3f1df83f25cd658290923e7f418", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7b4d9b9b9d699cce723edef54f1db9f1893e78ce", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fe19dfd2f039c9b4faf02cb0157a71ee5a76d7dd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a4720fd750be7d22acc6e06f1c68f19719e1242a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "401dbd02e9c9c18c823b3b28b251c51d8cc9b558", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "36a4594ab7da528114382c1e5846fc203625272d", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c50bad5e11f9e3c519ec8089ffb7eefca2888eb3", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b378fde58f52ed4671fa8e6afbefdedc094264c7", @@ -1511,18 +1511,18 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "86e148b3810575fba6a2628b5f978f7243302b4b", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "83bcb66fe1aa795a47cf83823dd1dd12ad09420d", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d35c300937604a53b0e7a0c4690e5c801b21ac76", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c68b1f949028778a9ad7e736af9a3ce42ac9931", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ef110feef67165c1bd06671fa27240af9282b914", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d1b9ce064bcc93527045d3dde12c9a87f3e0b89", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "81b5163925bb27f810e72f96573a02724861e7d8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83fb05d9cd787bb4a48d9c7e8c997870444ac711", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9126543e077b0cc68b7b8a4118351b7326978163", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "88d05998eb578595598a2ae6bbaeb82a97cfd40f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf629cc5cea47af305260d957d782c96740fb594", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c6e1a0288e21ab3a4f77ecbf80622a346ba93512", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9204a9d21d74a6535ca8df2deb65de7adefeb20d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ff70288cb126ba5faad934538d1644ca84b05274", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "63c4e6524b575a31ee4b30eb3e6bc645c67a3f01", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a8fb65cd241ad834147d56ed85ac67c590e10183", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "64fe13ef1ca02e9702d91f3eb440161e254d09b8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b09748d271b49e988a4bec668282f164d89c3172", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "494a5d1129583deda066625789604743a1ec3047", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "44e628c40e69adb01c7c82b8c1b246ad6458ad5c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4a0d439081c7cb98ed01d7b109d05b38cb65cfdf", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "23c98e37e0bff1ae3d00d9196e68ad92f9a704af", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e3e02ce5d8144986bcea93efb56646e5e0913b79", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "765feae0a4348d750a2fec7814afcb3e922e1937", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25af0a3144ab43c5a6a83e76662e854cb5da5b96", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6b2b13d3ef49ec3c7363919db5c3c2196b572c09", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2dda30fcdce58775fa2884148b7d3b8f50eabe70", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0671716007c6e6c6f72b1e59aff5656ba84bab11", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b6707a84369341fe0d7ff038e2e0526a699f0b9d", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9c7e090dd494a0b08306cdeeb536f796e6c997d1", @@ -1535,66 +1535,66 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f511062160c9c53ef17ed5d982e96a3902db48a", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f6d60c193277ca3627d29bbcf1b9dfd07cacc712", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "90beefd48596b489fa18ddb18e37a1283347d2e2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c7c9c03f0e63ca934232d7ebdb5bb96c90dc2d7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e6cb06d37671feb41ce778836494a67ffb000928", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9f973be4eb309d100284c7dc8b222b8f3d54ff6a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c5eaa6186b72793c0a284c2ed8fa1d635acaa55c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8b86078ee7f9734ceedd9838017c7205d1a8535a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "260cc4740885f42ce7bf818a06f43dcedcc2fb75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "637ba9cc3d38a5333dbd3418e5e938deb7d826c8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "565e4750c4e9553d17202c73bd7b1ab76469a4a3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "753e5b14f3501f1aec871989525eeea42fbf8161", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cdc3f4263bc3887ffdc8ee49e761f585e9307ad9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d9f7483161e4462d676904292eeeefdc35daa593", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4b017305f56c9b73da72b3677f6e080659308f05", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0db9550f15a9dd43c3da40ba2994ae6edd0fe744", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e28f08d63fed07c482278f725c87efd571016c8a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "27ef81f43c8a214ce3454be7fefba241437b0f66", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fd72398e76decfb1456d91249903560dc82f5f75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "02feedea2c3ceaa775f4589d65714cef2c7a0228", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8bc485e2a18e9798221ca95cd38c1e611d3e2bea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "93e5be18bc94f22a206c69bc48e0dbcb08ff34ca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9f6bb7f0f4acade7671472d6b17eb7c378a0c72c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1fb1e39f69ad43f7675eb63a74cc7b2a7f1ee295", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61561de93c26d87b04928df3e41a2b8e853879fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "340b23484440fcdea4f66c8f789d5104911a7537", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2d1a38519440e1f40341cfe368437a8d17e74055", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1fce36a62ce56a400430cfe1e4fb85f7a6ef4ae8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0c0ffb0dc38ac0e03a60ccb977bcf63b604f5eca", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c0231aa7f9c2722c82839f5e1ceabfe73fa590c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "111d09d2edf6298892c3310b5f5a64d41fe10492", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99e70c659d458c1e7ba0bdfb4579cb1aebac8baa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "46f3f69be78d9c22a194c4ecaf73a2ee1713ee8a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3706d55b1c829dd57ce07cf33466328aeaa5bd75", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "81f16d939fa45fd34474ea87c3c2d7c5fe315208", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ad67908249e06b746b3045531a1932296c22accb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "24294257cd31b4afdecfa37a28b3edae18f7c434", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e00363db5658bf4d415e3ccca8070aada10ea601", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cae8d35da8fe69ffe1bd27a007d465858c08e15c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92eaadf85af725cd466c7f5ede58e63d6e19b4b0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dea49591f96221ee95ac4fd4e363694f5e67fe05", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "568acbf509e76647b5fad2f1ca671285d9de49e7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cef76d2b3dccb2a0e88ab5b1f877da2f36489e76", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9aa5abbd2632495fdfaf4b31da3f05f6e3e9c501", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8da7dbd0d5b32d35602de86f5034c4f5691a73a7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f56f48ffeceb05995ad2fc4643c1ec1dda40a2bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f99ee09b3f23daacb6d78617833130d33a292a0d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0607e6ba0dd269376c633de5f286196d25da5657", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23917328d13e0cf4ac81ebbce82a180aa94ee577", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86c7f78c3ecd56e6dcf687bd6de7b7d6dfe8b88f", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b8fdb1addda8356073c7ace033ac91616a46a741", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ea7a77c816ed32e272aec25d26478e3869323b3d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4cb16c150ff8ebe2a61c8989526eb81eda60dd15", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b62d60278975b9611af931746f390ecf3ee6541", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0f9956cffda7931a0bfd602cf88db113bbfb75ba", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c2afb38e53c49d17e757d5686b0722a1c8d9c565", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cae0a7d00f52d2b63111a55cdb54feb6522e02bd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "11302230a77638802c7a882b2dc8ef932fe4d040", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c4295e02a747130bdd50bc26aba68134a2b090dc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ef6939c382c401fa22ad784dd686ad3075ca866d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7b89aa4a91be70cbcbecf99e306f8776d119e786", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "95f40d8a017b8bd303c68c68b8cbcce59a363c25", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5c1f5772d6dc5675d1a96a364a1026efba098e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1ce7b9c0aa43ee86c8ef7defa8abae4df155e616", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fa9d2bc99b9756218a60169b0d49828f02c3513e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d42cbf50ae9ffdac4984db1ddd2f540543417d09", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b743d70b73e8a7911eb08045bbb45adc9a0e83b4", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "01d69c93560271d11d32bf3db4c59a742d8e45b9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "363166d4465ca56bc71d55b1e7a0e7b8b3544756", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6388dd84a51a776d8e4b4498a22fa41f134f33e0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b21a03b798d18703247d6a2e147e0d96b44c6a8f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a1babffa66f1ad0d50edc91d0e6f2706bd7bc9d1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b2101bc77e4e61bf28ed0ff7a017766ac868709b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "46ebf5960c45339ac1c8f4dfe5862f5141679899", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e4fea524a2fa611a7aebb8d72f26bed8a48238b3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "467c60eb9caa5ee6464672f8f2a45d709fbea108", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6a8d1776b9e02f60fabee1b18a0e45b7eaa4b747", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "64a4075e9ac94d60a55c8fcf6f3ed2e4478f1454", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c73bd8fdb367e7f0ecc86219e8d97edeb64b0696", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4be4a8807032924cef0475ad9d4c5080aa1290bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7a67a94a9a0547a065f3a095460430caacf4b9ff", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a9ca192246cad067e4621acd655efb20c0c4d837", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3e6699bcd578c0557b11a9466f49cbc21454ea30", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8436e598904ab47f453adaf97177692b0c128dec", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "62bb40cfe5f396c4eb52d3d669d71e9e0106cfcd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3780e17467d87e7372495a8e58b64c06ed31f154", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1bf6f5316da0e95af96c09a145fd8785fc586d9b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6b66052485cf7ac32343a5651eaf4740ffa93ea8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "69b34fe62755d1c4331a11439647ed6af71a1972", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fe22c7f6f204cb102e201b2447b02a058a960fd3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a2039f5092564426b24de3dcfc42c74e507d3ef7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5fe2450c6944d8301242fb0a9acf959a6cfa24e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fb745d2e2e75d85beee7bc2f585b74289d80eda8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9656da3c5fac100d9dc3027601dcfafcc0bf7644", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6591c9e21a5254aef3d514ac5902ab8edbfa030f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "54d9c7b86042ad9662d1aa8afb50fd326fb31662", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1c50af36c6d41a3ea1fbd0f79178f0b7c52dd9e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "897bde1a7396ff3a1d2993256554029f0c1894a3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "059238e7fa35f494bbeee3a32c2e0b7fbbeb329a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "56f89177b3e340e349873eb6b5e2fa6cf7df10fe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a0f0c2d76a0c2c4f77de3ab8d75210adfe3710b1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1a7dce6d0601ca7940258888718606389a9d5af8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f60a18541065520a119196fc4e82a27cb4f8178d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7c9307da41b94440908e0d55d9d82fd7f8017efa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "323bc9e6d50f4d3a7fe168bf62ceb467c763a739", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8c3294290ae8abe8c1394ff4f93c57b1436c84ad", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "be628e76b04a342cdd3622a452acc157eb9a5cbe", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a39da9c31d721a5a6f97e49c5b8a8e99d7f78963", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6e224c93ccad4d990f1318c1578bc8f7ae1e2347", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1d30119d637dccf25eb4ede48c93f46dbaa5bea6", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24d78ea14633dd91b703afcb27d505e085be2c97", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a2cac9a2ae9f57948eddcfe239cec6d9b9d1b83", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "39e9982efa300edd7c4ae7a887c60d91aae5fb74", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "90a12cc4b67f3933981e75c8a84fa154d36c7046", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "67cb0946e7c34a6d884ad6c1cecfb19fdeb5631c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3a62d410d5049f0fc5dd9f0abc7e2256e282019a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c68c6f8a45c2f164d0cea95a88290e04eb75e15", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "58912df798f3eeb52ebd99cf79048c7ae4b69381", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "94d694b7f359482446aa418623b3b0fb3244fce9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "690b801376abfdbbea769a3d648ae6348b9ca3c9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7a88ab8b55792896109a661eb847dccca6834a79", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "986f23ef6ab9a0be50983b35f8ded3da53fcbca3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d673fa03a533466c0bbd578c986aa2f92a2393db", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ec36c26496819267f369269818784826ffbfd4f4", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "19def09ea3f7e9d2c0380b955df3091466f7d4e6", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "eec75bdaf815a44b16e2d85f80a70502c57e57e6", @@ -1607,18 +1607,18 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78416ec5108443d8c7ad0e698cddb0fe79c14344", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b68b59195be50366abdace78e8545ca185528090", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c4a863c3de9dd6c54d4fa960289de0a04b5a0788", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7d6e96a029a51fc91ea390d69597406ba0bb654", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "08065baa6c8353a1bbe9b5637b113376fb028175", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a926f6fe12c257a5bcc4acefd2c65df7a7c6f65a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e779b297ccc67da5c6dbc357554e0c82784e53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b84be30e59082b2f6f14beff08265ed6192be341", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "47f028e4dfadb34ae0e354baaf96ae1ff22e11d2", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "389f83f956daa896c7284514d6f48ae5ef63070d", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "03b578a9d3e81549c93b40a54a87008441531757", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "79c728194fb886d9fe6ac1bbf41a36fde14797f9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f1d6dae9ee906d704950e76cc30a71ab4fd9c339", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e6670e9dbea66f1a6cad1798452884fabfc6d518", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f71fd01a5bf99d478bd45e53c32b7f86cb17b983", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c3561d6715fb8d42de77d977ea956bd98547087e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "032ae80ea33b69dba0921e63bb0627e04a1bc1ad", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "21da18af479a6a5d782a6bc02a7d500844c32aa5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d32e8eb6e50157204408b54ccae325f3448ee818", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "91609e1bddeb844fd4245832f220b4facd49969e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "356af4e312f72cd41ec8afaa0eb603eda80c81e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fbe1ca02cb86b1792b8c1ca1527636c8dcc2a129", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "59173db863b39c9336b68202882688e20a01f95a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "76c3f17b15cde8a6289fda2e41ab973df16540d2", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ac6aff849a4da5b3d734e3452c7753ad852199cd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c60d921ad5e665cdc93f8c8fbab7a39d74f2e8bb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9dba43a4373c696ad0574e1c8a266287e3093e89", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ca92dee8f882527fe493b75f56616b53f3f00ff", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "94969f98e281a1ede6945a90777227d8111714f0", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9729a47c49130e3436bd08b909cf577aa0a36a5d", @@ -1631,66 +1631,66 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "adaac0ff4a96091f951a7802e52e5b13aa983cbf", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bf44af787a8b6b00d41dc383c3cdd4ada6b6a017", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de8adacbff8135c837052edb20eb496bef189d93", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a9637c25a32f31de9eaae75520f79774f82f3912", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2f60ec6122d20df15bad22bbc194633c1217efb5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f8cf9520930e5f1e36dd635061998b6d3bf14e20", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ddaedf9640d2e5112c99bf73deac63de8cc0636e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b5212dab075ea17a1de95383850a243b2ef0384a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "49e393f0a1e4bf55b3e71a7130701319311b2cf4", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03b50102a61a2082b414d6a1c645dbbc3ce3aaf0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6ade0abab4581222ecbfcdd122c7f7e271f73c5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bcd4760a2fc9b2fd982693806f4744b2850ecbbc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fa2d9603a69d78b81324ca69a5f0437e88c803de", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b87296ba079d82a726a57e07c147f2854b8a8e53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "484454949dbd2da10c7aa1b939705e9e3e579875", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5309362e7aabb1370c0ab65e62bfa5befc520e63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53d78447c87397107b3bef4b4eadf8e129640e82", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b27ade7bbdfa4ab9f4d004b876ba95e89722fcc", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be661314d339dfa57774c042c83e4b6f576ce9fe", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "569c74739d332cf1471e7023985f244834addae6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bb90a6f4d2810bc4c74ca3b44ee356c559e4cbd6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "da8b132f7cbfe7b64ffc8e03622165b79c7f2d53", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cb01cf977ecaef6ef24287272b61acc368cf7f5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a95db4f9446c6537cc155071d8d411f6f3f52389", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78bce35ac9bb1638cc5fafd788988014c94e49e5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a742c270a52ee5a24b5b2e1c8686cd5bac63520", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9796440fbbe35d5c8c7be9f77bbabf505fcd0cd0", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "000c9c393b13e367f1258768d68ccf17c146f2c7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "32de5572c19ac4f2334aa603e9d0943559c252be", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "210025bb7090f30d3e67a351a5d15694c267c530", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c0ec6d19d7602ce55a617ebe23bdb138a396d3ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e2615b14c3574d2bd99c37069f97dc048ef34ae9", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8817bfe50679a02cf97e16f28871251ea8d804e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "75dcee8f4093b667378ba3a5adfe0fd8beecad64", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e71f08293d89897ae9daf3dd2acec20f90cdb311", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1567bc26eb7eeb81422bd8977b007556f2f15a58", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "390345f5b960987f14e2dba425690ffadcc43e45", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b578a569d2c8a9f5cdf95dadcc26eab32de580", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7ccb19a9c6c5876357897ad3a09c0c83789f7f5a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5be47fb20fbe12b5b7ecad649d16f247d0b576bb", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "aa76a51c525e359fbd8a10494b9a6d658afb9144", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d58038b788ec8ddfe01e9555822cf3776832357c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "087fd988a63d9c0f8977a2d2d72c72dd3c8b89fd", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "372e60e98d03b618f726d2a076184e24e2f68ea1", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "58e282d204f2c969fd5269803cde6c0e473e7d7e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1b4ec3057e53f83926298d75059726fd53903dea", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eab4ce0b390731ed919f23786c05d1687aeb9a1a", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "34fd2bb31739160f7c237d83d41f7b05e59a0fac", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8a74be149b12bc22aa904c10f46fc931450e04ff", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9e033bafd61cbdaca25bd24148ba590ce6d50f63", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "31ec4ec0708f055b35132110b0c3053a243eef7e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7f9c894b10017a19d202cc5aab1be0691c46596", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5442a68eaa06a4a0acedb69d523b96d5d1e94768", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ada0e9c3154d354b4f906df2e40921aa4aefb58c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02e6f6a24325ef5f48b2a6e04e8ed6e9d78299b7", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "79fbcf039ce2c7af780b9ad56b78d94c50f6c514", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f42c28ef60dc155e178500278c9bed43df0722c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "02c836ab4c99463cfd52751989526b925cd57710", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fab43c37d96b418bdbb49ddbb3608494732a6c98", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1aadeb19c27d55a085f74edbc8b0d6c33ae79820", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "63252e9faa1c7b6e46326a997b96b0042e287213", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1452b623e37ee4e119f95f331470b4ccf1927bb6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "468a6cb58e00e35d8c9e342d553f64a7efb4e515", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "54fd01ff8a4ceb55046558b1e169409c8f27d1e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b868a018f514d7b6d900f4fa89ad3a3d62f60424", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "188df14c256615cc3db8a7194baa3034a069d738", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "15a28c26d49b7576d78e92646c7617ccd47fa365", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "218f559a3aca23c6d84d8e73da20bcd9265def76", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10452534fdf550fb183045e3090a1d893edb4151", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3515f6497fc66622dc048eca66e9bf240ac7a5be", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1e1ff20bdb5b30395065fb8e4c86988238250008", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "597fda00b3c548c11b11a2a8337c62a4f2c2fdc8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1774b17c9da5c6b96da6d4b15dd5273dc393c14c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c9e09763ca688378d5cca99b5713301ff3639a3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5faefa7b94b2117c5a2f6949007f3757bada2379", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a50e03c426b7f16c18d638657eb793fb7429e504", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "93d288e779d197beebf922a7a70c935aa868ff89", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7769064786bf841e4f53a682f424301d27fdf127", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fd94c77f8b2094b438eaac32348d94c839ba2d24", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5b903897e60910fa66789ad5abf805cb7014cc20", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3f6340777ee37397ba1b99cf42767ef252691698", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0bfb8545101b86cc2b146bc0f2665eec3f937f5a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "69424f7a715f7b6db5b5f220772cbcd0975aa97b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3d839f3acbda03b54dca56707c0c581b77e5b15b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f2d50fa83695fb73e183ea6cc4af52c82ed639c8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d48060cda5c7e7aa5455c8665de99502ac8f9a3a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2e57fa6f76f50f1e9343e96730b545ab5f1525bd", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1fd366557103f4ecb28053c98dd8235f2b3f8a50", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ff78dc35a92dba67f4a899447a112b0dfd685a9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a84af9a73f4fbcc1095ce82be05aae7a26286796", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4c85302f28fe1daf2b7bac4446ecc8c591d935e8", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6c1c085e9d6083d58bdfa76b4f43297a4fdbac69", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b8e5b9ca8dc0c77659e4920bc08c4e4cf809a48e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ddbfc0c07a9c474f641e1c27b8641fbc8bc373b7", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5d90bd62c7777836fe8c90c9f866af9d221f08e1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "96adf6e177ff86e139f0a2d1202b49d2129a6f50", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bc9d2261d986bbcd3e4988f9ef95bfb29a003c55", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a8c621a1084d19fbe478fb15e22e4780c9b548c3", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c69c01c1a3bd92c7f2ac5fd0f302830dcd52ff23", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bb6b838486eb5a77e7179ace7e0185aeeb4987ca", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8212f1f3b342c6dc5ccef49541ad86a1fa5ad46c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c8ddcb696d368a839bc140fe9f2810371538662", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1f07055c61e44ecc73f5cbeb1e6598f87a7fc975", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9bfd7f4be1e5896da794c3668c6cf310836d974c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5fcb16020c0f426914ad83773c94afb3946a189e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e3b4a605370c576007a11584ad39245456d32029", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d6bc4f7238df00bcea2044c0de0194121a4a3ef9", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f46e8d131eedb52b82b0664fbaed47946110751c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "776cd394201eedf87c35f80621fb53d60cac5779", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e1004f3221dba2fbebf8c75233b6072921efd51f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9727453cd3ea9f3771d77d5285167856eeeb8816", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3108b04f3cc78dad403865426fed69d63a704b08", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5afc1bdb48d8568484568d01d190de8d6c6b819d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4355857eb1feba9118b306a9192ce2fa4cc6a65f", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1e3e6336915bb093293469d0107832d7a62f00b5", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3183d1be018656da7e709a7ed59310b7f9702d99", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "04e8cb72a1a60d7fd49c071aef685c4b3a9809f1", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "854a989642ee11ab3ce102ac03c0cdd43dca99eb", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0fff0fc690284496e94ab223762b0039e2313f51", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9ed518db776392b972bfa6d2951d9bcc67e1723d", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4e10fb06cd558aa9f38424194fc9ade862a920de", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "041bf51ffbb8c30bae0402fd8dbfbdfcc72a50ef", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "52cf6db1d776a1948019db51f9147916ab737791", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5009271df6d2cf41a29032f9455bcced8a270848", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ae32aa672487ed5db69ddbbf89541b189af39e4", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ae34b558f91f6fb7a6477ac6007ef90013033bc7", @@ -1703,18 +1703,18 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "04dde7b7da2f20463ca11bf4aefffc9ea2e94c14", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d17d098c61bd8e5373881b2f0f87bf0757c3d224", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a0602552676b78061c4ccc1593ab41975cad9c1c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b1ca07c4984afe4942ce67565ad067ed1fe3c10e", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71efb0c48d7c815e8f06bcefe9283e7e339dc5ce", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24d94bf770d2130cfb28f4426e775b0360d835e6", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "531300cf6b622927c9b83eaedebf3e7ca18c1db5", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "955832d977751f948c74921e1e0afcf23f5f485c", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f3b67051dc269c8d23cf298c1cd75be07c14e4a8", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "03cb2fc9d0608d385dc695151ae06c532954a882", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f0c91b3f71f1176b47712a420aae6e2ab720450b", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f5430cb8f736ffd330a7218049d0c73a0b825df3", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3edf7d2e77a34388b0417de6737c4c14e6319149", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2c47b37f133748004a05d636c962a3fd8ea80aa", - "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "de35f88f1b00ded17e0edd89d14aa0e8fc260daa", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c73d5fdc90fd297f92952f9f55ac83a24b4ae03c", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b62467765d69c599973e049a29d99f535119b446", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "00f7a426ef2fbed1c106c3c1786164bc68775ada", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "efc780e6f4faa904da7c9eb773ae4cabefa7157e", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3a7cb132f0097c1a79c8e542372562a7a9ca76f0", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "da20d7e090fd541becfb373fe883116dc87c5d65", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "677e3da437ba20a223c85ae15197534cfe5c41ea", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "57fb7bd6b5a3e9c05b429b0f3c406698cd764b3b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fa4c8d56ec3c87d591231171d3d0364db6dc662b", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e8b0eacb494f8811e13baaa988424cdc91c1222a", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a9fb6c27e56a60a42272ffd4058badc0bf53f038", + "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bee6f11e6c3fee6bfbf6fd8360532a7e0490ce67", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0585defe5df0834b9bf5553394f4bcdc417183f0", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c8c4c7a351042039acd74e224396af174bfc75", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4547c2eaf86a5c2ac06c6899eff91122689e21f9", @@ -1727,66 +1727,66 @@ "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4daa2a0df0399d8df1cf1e9c0079fc7b21d339d", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5af81f84992f5c538c8b3219fd67b08060160d9e", "dataset_type=timeseries\/statistic=avg_cpu_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "465917556b1a1c1698107e33b9eb334bf44c2d9e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aa95b2fd9d6c4b8399ebea34513d5787df269582", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d392dbe2ff0f5a0fe8d4e285c626cdb51cf5b78", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "24b1af28703cdf0dd973a99fbbfccba7cc058580", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "69bc74c25cfb6c4d25e217995558172dd2becda3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2dbaf301b5898a6f0e9fa218929b24e232dbacad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa6fffee6555f0b34dbf7369c5122cd2ab06c193", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7638170ec1a79e4ae1ef7cc6a788ca39aa4ac32a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "655b4e541dfb56a9b07382d4fd7db832562ff624", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3021402c85c7b14e9d857811fe24baaf8d5bf271", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a38db2c7db027264c607ca79f8942244ab3b853c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51015da9e0b60581677ce64fe88ba2e41f0b39fb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dc1ef5ff25ed63bc170b7023434a70b89e161432", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "94cfa47652b62ff07f8d7cd00b332835662c5e70", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b2a742e880986517ebb9d87f0ecd82d4fd379d85", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4a916ec1b51f5e83fdc3ddbd2426e43528e20e14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f058e1dc1946166f6632deb5561ace172bb3ce3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "59efeee37bbb918e7b0b83da74d5f2cc28bc8412", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b8084c4f78e648f9471839c3686718596565f3a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7a6b96521fc242415da6a43082afe549d2af6b13", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9c8d4730504d52d568ab3b3f2a24a0d017b1adb2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bf63271e808a803a26892314e95d5963958db710", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a85bcd00cb0917ed52b02bc464b87e008056d773", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9ccf1fd3bb118044efc8c45a679b1cc4fd39ee4b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d5046149fc4e54eb044cccab177bdf816a907cd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cacc901d6e38e21954b8ea86421e4f4b0535e216", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "40a70150f1a353034e23dd276842b54095e10d0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b78bdee97405aed702c6948d7ecee964f7e39266", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "75bb75a01f42caf750a11d60be7d00991723abc3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2331bcb527d690ef2c2c848bc010e3549e7b4799", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "17b5caa801e8791300d4b1238e00e6132f02c13f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c2b4167cb5ef1fac20ea9dae8b5cf89a3b705f42", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d33273b0ce176eb607f1d031ff2f89e795761a41", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1374d8a8684d11c75bb12cb34c86869baea519fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5578dbff53487d61df32f7e1fd10df6145cb7689", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "523f0ba8cac765f5637e44e8759183a3ce83191c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5085fa6b540baee1c3cf4cdfd399f439ce9d69a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "83300291c01e1b9dda57795bc44d8a8dda572686", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "88fa824b503a767c4713211702a49bf783ebeb28", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "698ecaa5f765be89f6b0e5eb6b9e6837e730a8cd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "068e5bb17743305b3fa2beceb43c0525c4368144", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "84976084c3532cb8fb3916fc2820f19e19a48b5f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "23703f66496f120efd6d6ab90128db2b12892280", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ff46aceabfbd95c85b3e316efe49608a8cdb6339", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef5435497bcacb087492146115f7be440a7fcef0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "413c18f7ce1ed94c3f3f4bb955e7a88ee493a653", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8342f33d0906f95076529cc9064b515437d97e8c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "de8c664b42bd2004a58582ca32972819a1b5cb80", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a62bd5dc4adf3d36a32401dfac50597e63fd5ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3460d9eb556e98e63f95539d5d968926357efec0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0bc0b90224ad69d125cc3b5edcb9dbaeb37afd2e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "da060672ea40b32bf5f256e404f3c768d1262a5e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e206902b3e61c951908b2edcf456e3122e2fb6ca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1265c0d8c038f1c93c7cc3838e2a3f408dd81fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "82a4c12bae1298084e37586f129b1330ffa8d34c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5c4ef235341341b849a76f6b828cf73e2f44b32c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "778da8d7cc1f01882db58d230b0e4a5930c58820", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7d5fd5033499a8d3629325cdb96040b3261e5c0c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d0f392a9dbb4e8eb368615eb91563ccc3eeed108", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b5f12860d958148222ed81b62f02b3303e2f838d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cc5c2b09a3fce41b9fb574fc105c3ddc429f0681", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "56a4f5f144b8f91f74ecaf0410dfe35f34943577", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "acebccacf31a6a4c9b43d83668fbb2b7797beea7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d14cb7ee5d620e18db18f0d17f27abbf1edd4e69", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f810aae2dc5f2a39845c81eac53da83a0ebd3222", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a1b89a6c11fae073d8376012a2de5e6daa872e3b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "04c9517b07a8c7bb71a5246d612fef088036549d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2833afee581afdecfe8fe57b5475999a1161ade6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "634e79bd695683c00e4d0454f230ca594f5ac388", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "21bb95f402d24ab058bd75770d1c265b00f9d9af", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a01c899a244eff1d5828897e1e810616475de8b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "20c341c02f169230bc10924bd33f5543cf3a7651", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "42d5f2b8141cd0a37b0423e358963f6c1e1c0036", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "067dc690920f37f42fbc750f67bc2417eaa9d03c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fcc53f84c8eaac51fa74dc033e5e14d71d50b7e5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "067dc690920f37f42fbc750f67bc2417eaa9d03c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fcc53f84c8eaac51fa74dc033e5e14d71d50b7e5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3911e54361608c25a0dc5438177a586b698e1310", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c63cf3201e3498708af7b0156cae1d24a556518a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3911e54361608c25a0dc5438177a586b698e1310", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c63cf3201e3498708af7b0156cae1d24a556518a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "62dc8ec12703de553b60e1092bbdb3abe13aa06d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5ff551b87e8b10366c3026b5f423834dbf2bfcbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "62dc8ec12703de553b60e1092bbdb3abe13aa06d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5ff551b87e8b10366c3026b5f423834dbf2bfcbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba69ec5e37d4745ccbd089cddcdd6e849d95e43e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "30f0183d597f0c23c2f79971efce326cab1fd6d5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ba69ec5e37d4745ccbd089cddcdd6e849d95e43e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "30f0183d597f0c23c2f79971efce326cab1fd6d5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3636cbc9a2ea41d083fdfd3c9cfcd5bc2514daa8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a607caedc6946e445867ef2686f915eb5c0d39d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3636cbc9a2ea41d083fdfd3c9cfcd5bc2514daa8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a607caedc6946e445867ef2686f915eb5c0d39d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "31872b1d686a4b9d92735c976bd0d4d1ff9c0087", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9140123891bd31b8132a901d3e73a005947d8d1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "31872b1d686a4b9d92735c976bd0d4d1ff9c0087", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d9140123891bd31b8132a901d3e73a005947d8d1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e7b7174922bc210fadb2273d01a8152ee344295f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "635add9a0f143278592cc6603fe8318dcc630834", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f49258669ae6e2c566791f47baebc0f3e8eafd83", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e3d3efa07eea2d3390f403efc86abd520cf845b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "89cb615e42585ee449192183f177918591d71b2a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e83962132dddeb64c71d6dff806fd29c6748405c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a94f01b6852e4d3967b1316c5e1d949117483ac4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "48de84c5c62a0f584611f7418a0cdcc598a4bc3e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "17e0180373a3d06f7005602ecec5966f602171ff", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "18e06e4807d53fe61c9a44476c8b77a6a6b3a9b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "09207b086131e289abc87997a8173e8e827be8d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea197f76c0ff57309bb4e9447bf2e50d5c744134", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a62867616418195d0cff4db469101908b7689b0", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fa60a4216f544c353f0347943442ac19d3513e4b", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6b45d27aebcdc663c155f94f08820f35e5d1e0b6", @@ -1799,18 +1799,18 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b422c8244970d2221abf8da3da12eb55249d979e", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "51e0badc7e09cbb0e7c5c35ded7a00b0e598f446", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "734985f741961be120a8e97befa28c435ac79bd2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c58ef5890c832af009ae803e9d10b52d9fe5301", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "18dc316b5418227aae9d2886d8b31f8e202c85d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "21667ce24a2bfd37746cba7babcd3fd10bea4d52", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "aa8fa221e766ec24bf367e2adb2d2f708570823f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7d77afdbe77c064006ac9054e26ea9c19bbabfed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fb87e3653342c058da6f2d8e1b3690ecc74ec5c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ede52ef1020b858c321cea763b95a8b9244363b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "42edc04c31d25db517a4d5054471629656bd17bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0ede52ef1020b858c321cea763b95a8b9244363b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42edc04c31d25db517a4d5054471629656bd17bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cce8c65e7c448f535fe9446792ebea89c1f705ab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "845761c7c01509dda53bab46d40f48ee4f0c9467", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cce8c65e7c448f535fe9446792ebea89c1f705ab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "845761c7c01509dda53bab46d40f48ee4f0c9467", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "babbed565870ec53a629960a778512036443afeb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7e09d663662670a0996c58522aa6024403931012", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "babbed565870ec53a629960a778512036443afeb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7e09d663662670a0996c58522aa6024403931012", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7aa5c15e5c14901ee6972c17bbf2249288b2823c", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cb429579757b9ded51d5d4047e164bf6b467509d", @@ -1823,66 +1823,66 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "427fc4c2b24a6f1ebc63534888b7209904a7ad96", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "92bb6a273f1034b0ef84e1cbd6fa7e93cd6c928f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0baa31dd065df00d72ec7189caa8cc9ace1474aa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "45eb8776a24c95a14686e7818191c5ead8b61acd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3a2153ff010970fd3f8b3c9db4a36218c25a784b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "672c26c7f0043e699068a11ce44c3e9d4999df22", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8affcabf80b69662e4595598bd96c90a9decc31a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9dea0aff4769116bdb006009911a25942c98489e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bdcdd99149c6282255300e6a301ca3e86c91b7ee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9006c53d3ced07e21b4efb0d1f0107dcbff417b8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f89476cf96a0dbef98a65d305777ea70a5b01d41", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df5feee0a75505892a0db0ec3ac68ab5067acf20", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d4dc1ba5d3804532df7800446229812733f24338", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "08d87002621fffa9da36bfa5d607f8f6f2966053", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3982ef8b29d1dd05442a9b1b176ece1baea35aea", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8074c20b348a92daa7ffab6ce4bc0a669bfafaac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "554cfde3dfedf6907232552a39db0e46754252ab", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "daaec162a1ef2873a03575fd7f3a95bd53ffc5d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "45aca95271f218ef4af32a0db7c6028c70d16c29", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2e10924935449eb206ee3da76b28629ae898eed0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "119f72a083cbea8eb8dbc66ab931f0f98a6b3891", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b345d3d0e24c4ea651041101735da36345c1ca31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "728fc89371ef40bc197c67fe8fcb9ddedf6cdf95", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a6422919be8d565675f9df89d38285590cce6e77", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4aa1d04672e1f26dd082d1137addc6502fd4a84d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c13ee1afe1caf411a72133a937e3492dbc103e45", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "142cd13a5da5759a852a494334ec868a9c3d0358", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e21acc0d8700a4814513d9e7cf291bbaae7120f1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f408e1cd9f88641824317676450edf08f091a330", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435571f8406d18d7fd7349345a1f45a8bdafdfee", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c26aa6588c0fa980538ce62bf443fb7898b9a905", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ba61fadb1a110e7dcbd3d13c6cad11ca168b8c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d92390a2f1f31a799bb7f11bfaca897dc98d6bb9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cfbf100e3d3433ab6b8430c0d7c726d78ee172cd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4c4753cd8bc0417f3d563cb0b57db97047c4de02", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "837b6022083ddddaafd3ace7b203c317378acc68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92c4d224330671f679a9132e3254708d9f897029", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7be22941e0f7dad3a520e031d4e7d38b290788d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2df6c212053ed53569deffca7de9e3d6fa4a64", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f89d7507d5a2246af3eaf39a0fbe6dc2d34cb15f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9df0b97c20c18b9e9004ab8f0b442eb3fd90c20e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7e8eaf265de5ecf7fd72999717856348a21b613", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f790dcb221d6553738f75926805e67251f9284a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cc8209d6ad5233b859fbd74296960da9d29cf93e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "390198d073a933fe603e09548fd45252c93756c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "20c507272a72e015c7c4e5aabac309c99af5ce2a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "67b7f07728b5391840a35192661aedc636f4a809", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "601d8de00acb6b7f10affb9329989f7acdcf71ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c96b7847f57f3d4605e9e0ac69b93af21eb3d9b0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eafeb9e74bd210cf9e7ef448a83bbe46481e9aac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35fe64db5c23f9dca7ac43264d219eef5787bc2c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "549d620a9d2718c96f6a01d9707ab520be207048", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "907c81298d1bee675c2cd761588ed8b88a11908c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bb61fe8cb5448da8c375a2c40e886633ef4fe094", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f79632ab843bb232369e2bd3818e96a50aa27cd7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9c48dfffb9b5342bd71cd1a3c2ea30189349f5b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "12ec3fe6f41a37f94723d79702c0d055b632fefb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ffbbe075e7beccd5fc3511cd34546028bf717248", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a73599b90d8229ec35f80b72108d1bcdd127f8b2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aadc1f48733224eae4844d8365fe5229f059e273", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5f91ca0411a855ec09e32b298284c6d54ea7348c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1bf2d34da49592dc4fd22483a77b67ccceb6f0a5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "01e9bab2c5695ab6e8c8675a48c80910d7f31f0c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5b2949dcf48008ea1cd23e66d81b4f48fb8a0d9e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "01b5f5316599eba1d711eb8d3f683c779479539d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec1cba0cba30079ffe24bdfb67c8de56adc59edd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8d757a8853e2c7de88c4683f26696fd62bcdba04", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6504f99e0118c2e92fff775189dda60d43c93d78", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f8fe92c3c0d56ee9e80b075c720337d7b950dc1f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a3d475d402a01f5b85545267e034d6d23069d89a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "550ba498cdeb518c13e3d58094ff298785003d48", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "716059f145c44e256a2448e9dacbcf65a5721b18", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "119e58169ca691b15c5280bb1d0f44633ecdfccf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7ed5ab727e0592b0e7823deeeabcf47270eb8c29", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5335a6c921f4cf599b1e8ebd8a953786827655af", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "adea8054619a918fb3cdb752e6298027ad5bf71a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8cd510638e35bc3be90a70e295ed1cfff42217b3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "488d29a5afce835c51b5ff1c298899b526a292bc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "554f4affd42147de62bac6abcf7794e5542975d3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0d7e6ef8082c10531f8066bef9f23dd083c96dc3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e9f7ce151f7bb8bfa87a789feb8fb88dddef546f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7caf1282222e317f87296fcb26372b2573ada6f7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "19f9e7256b627484947858a8ced557f39862a205", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f2cdd4af89295dc2283a8ab77ca995d1693fcb05", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9516662e2e434b98efa416b21209085435dfa5f1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "bb1b115340f7fe2bc9bd6c6e05ec2f51909d4e93", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bf7868f10525f6fdb98cf3a7de50bb44ae343d5e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dee2b3f85c613ab73ba866c91396dad9beea587e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cdb436fe04cf57a3039e8204bbb5ae37de10d3fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ab734a0ffe10a7cb3989697633134a9149dba7c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "211a8f818de82a9d2675ff8352ed5eed4ce5f0e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a29b94ee3c0f12a7a2ad715b90d470d4f614e2bb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a24fa48d02a6382b3813dd434a5d39d1f0bde40b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4efd043dbd95a09fc61bf5395f14cb9fdb8713bb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5a2ba512a678653c5c8dd8b3e86401a14bdbfbf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "522b4ee169057992bd97c6373d2a79c7799fc83d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "aa256d053a023c202f180c343c0f8f5449c00e35", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "781ca02041d2d87a875ac9062c9f73fea9e773b1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b0e5aad66de7ad838e8aa033547891fcd9303665", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "510e588efedc6c51195121f64f3b6740e08cb4f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8131cdeaf87fc72dae0d1c7b1c91baf8ba26a736", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8cba4657dc13b4782d0bf0c586a6d6b3eb5659da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fca188d74561d171a858776c0b19c906cce52acb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "52a4f4918d3c01603e82fa7f4c945c83987828d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d17c80735812eb910259a84f6bab210206efd987", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "59c195bf69ac29ca2a2855989ce12bc9952dd195", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ab238b2e187e66639006c38f78a7207f90625b8b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6affab51e6b8475798867738bcfad2fe48c2ef60", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8a9c2f7ed5c441c170d92bb0b38ee722f05fcf8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "127283e70740801f25a90da4c96f09a1cc68a85f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "329cfbcfe22e9588058f14bd1307080386e8e5d6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5c65af0af45b9d185a694d757add4989e7caef30", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3948ba1fabdb73728d48944a4494d9bfe695f7e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ad6699c592159db602ad21cd97512eda05674234", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "543ef196782a95272f7251c0d92b5650c56c46a2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "de69fe7adb08d1dbe2a00e2c6986299e8e69f2dd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6effe9128ab83b4c0f722e156147e44363935347", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3a5258393deecdb7fde929cd5dcdb6704ffc9d58", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ad1f5cd4ec0f09a472901ffcd4eb22a828e98b0d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8441bfaf72849b6e09ff281796f145848ecbd12f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4d0dd35a4dd97f8435307690a6227f292642fac4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b74f50c503d7260ae3f02a094db89055dc602908", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fcd9edeb76e1002363acc6f14bb147f179ec307d", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ce9fb8871889882ad737dce3feacd32a26dad4", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "92b53ec4128a5e913c84d7a022c79b9964a06922", @@ -1895,18 +1895,18 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "668c03caa8f9ceea2343f3b091258b3386b5aa37", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fae1d48dd9686fcd7e3cfea529ae104eb59b32ef", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b2f428c46aba489fa1e651edb69d7298448ff12e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e3a7474baeea5aa69c85db2ec03a97d138e29426", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "523de103001c68abeaf14760b1040cbe7676b893", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3375792cba17008b80069d44c8c23d8b63211520", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "326f6e8b75c1754f30d68e0634cfa6fc00786eec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "53272602d489c937b9d770f31ea8f954aa5ef7d9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "40b212e9eee0b1491df2643ebfd844afa7dbd7ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "15faaf3beec07a4c25633e8e2cfee1bcc7abc4ce", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "66212ce71da8b7ad24399dc46ca3b7c0560f1765", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f437d6ddf3b3e93c34c35efba5f8c80739a58ed0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e84461ccbb7afd96846e841803f8a24c62f2156", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "657c52476bcfccd94f00434a1f0c654c6e5b0396", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b541cd44fb0b2ccc57590b8021ca13f3425d916c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e4428ecb6ad2c7df3345567125d671dc93c825a1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "152c45f9c76454c6db3b323bcac4b855b4988bd0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "99f0b577bd077893f265027937ed0efbca0614ea", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2cecaa715f5b94979a3c35d13e7698df1c7ce8eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "72c94eac5dd2cd23837b47430da59fcba0980519", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "16b60e419fc5d9c830d9597ed016f3f58180602a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3dc750d878623764e86bd0ddfd05880cb12ef5f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9cbac54cdf28b01d9fa3b4beb2ad7873047c2012", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6c35af074ff3ea926a12f319738a7263f1c72393", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f17d95132704e61c36e2dd6f5f0216f0858d3e6c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "27e60e42bfff2de4712315dd324e0509360dc5fb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "66705f0017e39ef3519aaf2fac92b8e62454310d", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "af1931e15b21727efd043a8e3cbb07f3ab2b9b25", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bec0b83a2ecc577786c0d340c981c7f6f31437d6", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b77fc548cf2c3cf531c70e59ed9f5c92dc920a3", @@ -1919,258 +1919,258 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "80f96aca094b78e5ed084b2a8835a3e25b496763", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9a0f3f1f6f8cd0873eb807641453827e9910f0d9", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4af5bc4e8f3af26fa48e201f0c4b326dbb8d7a4a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8da6b7c3ca4d90157511beec31ec865014b48e19", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5f82bbb4593514ca2e2cbdac22812692b697f19c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de294c8658cb89ed6b592da4143f0f95a93af01d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37284c4de55e2e880de08b467955145db5deab31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b6be0c17e709f3fbbf6e4c5f8cdc4da7caa00c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dccb8734a5f4893910eaef517a69977191b0c2fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1a558e8beb4a1498b3ee96d85b84954489916a11", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ceaaad8ddedb88d1fca93e02b43fcfceb96bd8dc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ed7caf5b7562fa3295870fde0687532a13054d5b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6e9495261e622fb0e66d21f885616bd36a5ab51a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "403d0713def93d0f88cfec03256968327c9f0b1e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e82113b355ef8eb29e782af5c2e30daaf0af6489", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ac08c4f30aa777901015714111826410b4de95da", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c21e812a9e6c14c0447710b781a3bba0585a364f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "08ac3906780d97e9b71538038d3b0d9d71d0ecc4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c24b016f0d815303f1af42f4e7faa7d4dec546a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "122cc4e5217565d86177e2b66e57b1eb7e343d8b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4ea67bda015159fd16dcedc629f12a11eeb34da9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f0b69befe4fb18b2e5ff07cb0532c0a6789abce5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e8136fa995086742a5e2ebbadc4d66766abc458a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3893e04b4922062d2a229ba176d0aca13b93228", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5da9ebc2dffbad8a5591860d42e112eea303040b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "274e759fbfd35ab4bc0ab42afccb4690a0958a57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0a12544bd857dd4024805397f4a8abacacac41bb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "edd1bd8e064ef2690542df1dc6433c766fd15c30", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bca68667e8f68ee1dc858862fa43179e42415c75", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b19e0aff87052d303c5c88dd9173089881f41d6f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8b52fe13b6c8472ab161977e0b2635e3cb891807", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e772ef3362b18ce5fff11e81944de74249612bc6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "923a99400302aa69bee8caa3048baffe66dafd51", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1161e8c009ecb85475f35b8b79711eab8cf4caec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fc0429ad3f3838076ae58d1a9577ca0c9f57444", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "64e113eb3aff3f90ea8d70297cb662e246e3c358", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6bb4cd88cc71904c21062642b3dbf2931fde6fac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bdddc62baad99ab5dad540272b6337854d598ebc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5842e6b7595ec8592a62cc5945344e177aaa0a15", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa32e2db3cdf9c81482577d2d6d1df23ad0fbbec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4bd8d6917e43b8163aceccbb60037eb7e7274b04", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4b26af2d5a64ebb58d4e353ec4200aa3614aded6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "155fb65bc9b422b510e7bcd6d37ef6e4fb6c164c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e5cbcbdff1bd304f2c0c59eb48ebe0619a5c01bf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eaeeca29bc2ab9a2433719c3283487d3e94d7c15", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b65d98358454f01f11633e6a2b59dcc1418a06ae", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1cf507ffa15f1591e54549eba6430d5c158d53a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "920d5681667407f3a83a35161cd6773660d2499d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "80d9be3c952f7d243c3574647fd2b33bbe8a48eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "248e056a13b84c5096159c64a6e69d9fcd1e2bd5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cce5d206230307aca411dc5e5276c25347b617f5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "229a8ee26af6b3e85c5c904b7a4c36b8cbf84e1b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2aca3d3ef11d68fd2f19952637be657f3d92847a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b686175b064380128635ae6b7af66cf1dbd59744", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71a1549f37be25f8aa3daf0be38995a322f6d972", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6043e3f4cd69ce3e4ff7216440406d111bf5e29e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a464dfcb01b0f6d6ceb8681a5633677656b2d235", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c5eafd450709f71e1e2069b6b4778c86f2b5899d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dde6279cbaf592842127709c20d0582ca84c8fe1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "aeb0bb19d8e0c8f58fb4654dca053f125aa468bc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "341c28a48b9a5f6eed5340752a8ae5c1b94d7b2a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cec27a06611ec27bf67e38e1225f52ed6a5186c7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "14dd54886e18b2ccdc77bc656129bb0219bbe990", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9f21ace028dde0334b66c8fde46f4e38c51fa5a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "050d41ead6d44350c820149c837224fc72e018f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ae4a576fb5becb8ee4bf209814173f387a0fc43e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6257b216cc765fb0a906d836966647de2fb9cf48", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e2f201262877baf0ca592d092b40e87f70647c38", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d04546208810c649ca50d0613846d4fde671da6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "05c3e22ca7981b8300ddc2ee85d79987ad8722a4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "315688a3f26369a2d2bb66900140b1801d0cf2e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "56f15b3d2804e65dcdfea4ff5021d1459d79169b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99feac23899a722b9dd38c8d69b6855f35b8b8fc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1eacbbbab6d7ee376b7a2793d2d30e0dfb2c608e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2bb09533cda717aa4469983f14ccf8b5c0334456", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "99f994c3d177164d29b6954b7c8feae823d59223", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "354ec1fdb12844b8d3f88fc4ef0024d283885e4a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f98ab4014d1b50694adc039bce81ed0070173ded", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4a77707827b6ea6884c3a4b6fa4656dff7caf27a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "68bd85d5a068200f320b829e38007a16111375ed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "db102af88fb947da0e28171091f6d9729fd161ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4789e97e0da7a6e06d7de29e0f81e3c900a2b897", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a3d120ea8bb07e2a412cacec43da553124bff1f6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2794e3b1ad6628cc417570b811c85310f3d948aa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "039b1e03022bcc838c17cb00af901b7efdb65611", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7f88e180b8044c96f8403dc813c9353340f0c0ef", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2ff8b0004060d1e4077335dd2ee9815501294ae1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c8ea72417135b61f4b0c77987e01972df5c2f427", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03e98794d41251def40612db0f7f656cc6be309c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0d819f4a42fa38fa59ea1e20be0dee23831080a1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24702890f3daf12011e9740907b1cec88844ac90", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d01cb0d09a58cfae4fbe05a050aa41f8d1df3934", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "04312e7f898f3b17c9d74102fde162327ad9ff39", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "315688a3f26369a2d2bb66900140b1801d0cf2e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c9acb33af277e381b26c3c853bf4cc68f49f0541", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c94dff34e66e2e01f162d6d0952bde73cd59c142", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0a30bfb5fc19f78e525e1e8140d9a09149004a99", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2bb09533cda717aa4469983f14ccf8b5c0334456", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "aa6e89d14b4140f396d14f64bf3b99781603a376", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d9e6010b07eb12d0b898f06127280d2c18ae9f6c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "534c8ce29e86c1b2d49f1188cd54aff1d86a8015", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4a77707827b6ea6884c3a4b6fa4656dff7caf27a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4250f3c98080595d66b1ceab91d1c0341cd542e0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "77fe3854a9fae5453f42168d195638c5d1379d8e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35a95c05dcab00e0ec1af5a3fd004b17533ac76a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d95ad4e0e0e1afb1b523e258b31b0401f6cfae2b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "72436036980e5e8e87afc3ecd544d7a5f18401df", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7865f8543fafa936f692faa53c00e30e73888de9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2261e4759fa391490e90f847406d04939fa50679", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b5ad50cbac8db4828ab0f42d50e56a5e8d8078e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9c37396cffdd2edcf8f6bf31896a895bab364e52", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3e5eb8a85347533273113e3f0c1bd04c3a872ef5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fec51710a08a9655b3933a4ed2568c0ab43137d4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e93af19c5d873342f960abdd117a574cb764a333", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2a814e054b37d92555c9dbc6728b57581f5685c5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f8b40864110f8891febf6e67d7013f0eb82617d1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "421ab64d73d7f13c782e2fefd7d1bf01b271859b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d543cdb978805df43a6999bcf1f073577db63dbe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5924bd45d0b523ff6649990d9245162a51bf2ed3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "516d577536a590641f99760539cfa581a0b808ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f52d9593e7f718034c7f4a29270ca1640c476023", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "acb7fdf6190312d3d90f5c3769e912c750c5503e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e22ded992b58268a691a1292188b26f1dc6f6744", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a0cd1cd63a162781dbc7e574337861785724b72b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "85f8401d3443782ebe564c345bfd31dbfc67e0a0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "12f31d8f3d0b4ff3d4393c9ddcd082235fb46fd2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b48352db4f6ab9ccae0c649f23e2e12bc455433", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "515f65542c93d0445832138e5775bb8e502df7e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0e6522dc2c10ded30ee36422222595771c1b552b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1a975044c2cec9efe560ab473783252939777357", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad3fc8d3404076bea19f3178e22ccd7272ecc5f2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d98ab3dc513bd4d2309f49a4abf54b2b00a4f203", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3d5c929396104aa77f941c27a5f606c71e891782", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3cffafa93457f4b297e8d20d7b0bb1c494c3a0a9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6e8f46ec5fabff674d83d231fdefa802d0db6077", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7e4d494d5e4b45b4c154cd7208f961129b9dd5f2", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "844defc67f46b7a68d9b05c8b54e44c541ca462a", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b4b167ddeb14b5c75f43f992db4a7368b71acd0b", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79e402f57123bcc1f3fd951b5738af31c3b6f703", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e7f32fc7fd711aaac90fb3efa0712870f2366bcf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "495a9e45e55377f282113419ca2f7d6ca00c72f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d928a796838e2de4095d25a5fec219aa3fe6c321", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "74699afc32049b7b670660ac6c0626d40129c388", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a8b0cb9ad16b89a778407598179e84a65d49825f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6f8102beb2649588dac8cc208aa25ef006c2d224", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "285d215d0ed401c2a2c899035e5e262c9bcd3087", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9121eb05e94d9d707b0f6b7e100610ed419a4136", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e083d888b303a393993671d749436e068fa5d88f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "723da9214f860bafd4f5624e68c9e47f213b3396", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "72d4fcdde058f0ad3f96a24c39258a18050b9e0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48da0af8c2cb8fe26194db6cd42c81f21f19af68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dce05da38bae3991072a2be4a277b22102378f3e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8337bfb00d08332051aed627f5b8d10958e9abb8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d4f345ea04051e14eaa8a7365338b57e3da496fa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0fdbf1cfa7c30d06c9889ee016567c221d9426b7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b4f7aeb9863a2a6ac9ac464728c1953686bc9c1e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fcb378fd232c075e8afe594ed851386ac0359b7e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30b63154d508ae5504e106bb885113aba62244e9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c89ad5927caa369268b653a4c5ba748f9506521", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd8aae772f6f71e32dacef69910015d803c526a4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "535e280fbb9e3b4fdb1e8109f40bde60ff4b21e4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "86b11be52dedecafcd1a3b9fc4a9508722aa6f2f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c4d602af7de59d9ba2ab2926656aa439a52115e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cb57dede3d812ca28a5df15223f79f78a973768f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c592bdc8552330ad00636196efdfc382ff56ebe8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "64545e0854d2f9e1981608221285f9bcdd0186d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc6685c5b2cea6d3df7c54b96661ae51cc079bf4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7e94242620fa5da09360e5aa0ffd325b285ac306", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "99a4a62aa664c485f53e1cd816ba03b4e87b9da4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3dc333dbf1f9f739558a56dbebd2e1ca734bf1e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f68f3836023c972d9b44f9367da7a1edc565bbd1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "68d84bafc2823d2ebaf90126d78764cfa6af4c31", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "25595c779d05014a50c9a9638c4a8eb8b1d5fc57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80c943fc9672d6a8d6fc32b1877dff2e4f3a04ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4e0742cb5c3d78d6d4d1110cfc5ff4b21a1f05e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7b70835a5b076b29410d3084d275364ecef31443", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a66a50a3e19dad74dd1a7544cbef1f454d1ec7d1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "15d804da5394124c6bf65ef758a8bf3f3c52afcf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b36e02253896df74bd3eb9d38bd1ea348c5c004d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "97227b97c534ea878c6a162a3885ac930e87c737", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "126813b2b4f534ad10fd075dc73c73cdc8f260a7", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "925304207d5361c4f2abc2b58f3d89bdd3fa2194", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c42c674be8150722f0955f320750f2420e0a0071", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01ccd69dc126d63f748f16cf3c002a0ff9217dd6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "82c899706e4f5d83695d1f0e5d9ee99cf9942401", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4eb02c02be1c082dd9c6c18ccfc6be212f5af59d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c612f7a308351c65a8a3706ca2be524c018170d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "aa013398b92759981c823e8807d3d1a05a6c47fe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "23a486b6951b346f4e71e5bf68957ca658c40a9b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3171fa768a41ded2145472cb2619b39b04219d0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4c1d216ac268302f05b3aaf20546d5c732aee9e3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51dad07850fc6959879f22af5981c0a32402db1b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7a8b2687135de4ce826751d3316f28949f175565", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "504b915b8042808e558a09d5b5482a65128e3129", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d5e9ad2640175cad613505c41a5d795ad81a565d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4762046a4decf0f7db0b85ff3e4b58cd52523b9a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "90e3bd9c1b232ca4aaaa383d8b30356713c734d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "330b112acc3fbc13f70581237d52274e3af211a1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0d7cff6c0842fd685e1032df9c5d86b43c4a40d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c93a0e0796618bf57e779d3914ca0a9c8fba220", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "eac31901993523aeee6cf9016d16aa99ba1fdaac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e351609ecf2f9f65ee9aef2ce04740e9fc16e2a8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3c90a615c26ff976143168fcc17e06bb7e42faba", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c53a3aa33f629c9e8798e2ca6d886399136571e4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe607cf915393b3cdbce0b7799a78afa0842ed6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "40907074adebbcf2e86773f9e6262c4a28724479", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b5cdc3528a502ac59f346c2faf069bb86dac1b43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5d22b77cf5c715ec5488d9214d813d3908de63fe", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "865c9279dc1a327ac55c0fda3a3860612227f23e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b67b53eccfd1c8121337ddf54e3a0bc567cf9ba6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "95ef0d3ce97e196f185a2caba43117689f087eac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d6f9112e6c835633cbd77c709855ee25c785832b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6703dc4403b6c278f5942833aea79bf6885611e0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1bc00147f1d4a918832c8ac59f640e6f1ec1016e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "684891d8589d161f2e2049e83b457f3212c24469", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5b17c8614e3b50f9613d7972275895e3552cf6cf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7593923db57e61ae03a751b8a12b7ce0b05f658", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c00ecf5b4ccefa8c45baa12f31ab09bcf041492b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fe4f049e20528458d06a619036995e9fb6256a2d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a8807a1fc79b3dbb1f22e5789beafbceb0690360", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "da27c0438542e55716514e05e869ad8ee72b4f30", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4bb65294825918b6fe9dc32a4878096d96c3e1f8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ea9646044d9de2793e9675011d78b13635d457f4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c26beb59446b6d676a23a18986376d43429cd601", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "237c620456b02725e0194025f34a391f40a66bf4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30fd6619cab2549e643f1eaca3d0cd20de0e2af3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cccebdf095724784f8c1e167cbb4f0c2d7db2d3d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1be06ef53d3c46a7e3cc4861709b2b065d6e9ebb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "298d6cfbcf938e2faaf908e332d3ac9b0d1b4155", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c7b90778539fcdf0d4561a101e46876f90b2d5c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24f685e27d66cd9223e005a2de4b90fe47549599", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "69458e31daa1a8d25d42339504475ecac88c51fa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9956ff28e4f94e680fb0bcade0831ec371219f5a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bb6632c2e98f407b91c900a94eced6f122236caa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "65cefaa2bb108c7d0c91d4b7ee1d66cca02eedd2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6f3380f039555201b0d4e4bc31a7febf58452f3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bc7ebd19edfc09350ffbd9510995833e47e129b8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0b73958481a0e6d694814b86b27dceaa80b1a14", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb7667568c7d0aa5cc8b2863ca9276171de1ae91", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "84b564195cb74429185b69532457d1879479c39f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "90a04f0b5fcc7d792e35e429ae9f14ffa24a04a3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f3b074d9e9c811cd50707238f3bf036189001cfc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9b8f8de2fcbfc3b79207b69e3ab01256c6d25141", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7e33feefa46ab390e35f87cf2e166ca74e70de1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b99c3a359a022c5b6fbd31bed45dfb2fa92dce7c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "58128e3b47cfc856031246851af325e8a0a044eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "89ee876f240ace603d10664611aa32eb4c2835d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "460f3f8e7851d63e924db933872951b87df49f17", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1b108f8420a5957c67dea8440d7260fd616b9671", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3eaf1813b6fbd1f254ce85e0b704e020a72fef4d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "743958f640cf811e1551143f6850b102967f63d8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a20e014ae7bd9bf23a177c0b00523a991c0c9700", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "043e56a1d29a8f81a101c923a1df5f3ef04d4921", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dc1851d42f5874040345937d52c4a38a61b0ee88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "35e2b5ffb0f5975bc5a5bf4c7d41aac463d8c898", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bd54eb757aacb07e345eb9f114676e09e46d113e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0c816c253df6dc22201e2eb4a4641775fccbfc5e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9d3111c416b0447ef16e21d21d5351d8541ed5be", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c863959848f8aa20064f9a6f6d48412197762348", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "404da9b23f78571fe21a1fdda115b831ed1fc952", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "26510346d562d2317586c92ad05cd0289546b913", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f18171502a52b4107d61762fb9314fbd06d180d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8ba4c2302d8705de2bfcc8323b461193620bf6d4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b732789b36bdbd14ee44f5a68ba5be07bf7a6f40", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3d44528c7ccfea517a6485c276b29f53c878d0eb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c04f2f9cfce9aee636a56c81fb82cc1f0469d72f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "acaa980ce51b1750f271912cef71dfdbc7172027", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "227a668e35ca8a0dc530991df3ec0ed44b9a0052", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9fb22e7e3e99a070348fffc089410903c403f86a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b326ed37bead78eec4d95c986ad59681c413c881", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fbf5d155fa2244eb699808f718f182e3b8723f04", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0331ded5191d939f86fc72426f842b02dfc2110e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "33aaafbcd9839c9259f43d162de6ba42ded8a30e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "886b6f5cc4100ae0a9c73c805ac327981bb102ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec16405ad3c47f11b96b8875f4bcc6cd0e29a554", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "70a7698d89a525e0d4cc7cc524c6c453e93148b2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ac5efc99bb9a8fa06a2c615378d09c5d64f56a53", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "770b20544226e27f3eb465af37c463017e8a53ab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "31f5c84a5a32098ff9e4f90da780759adcf398f2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7020adc739bf2b634ad7f2e29d740592fa5e6808", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "81cc9581f8c22d5d5eb27ed14fbaf92c3570d4a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fe4238f091e1970d206ff8dfa088b9646577d542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "366c8dc19a341888cc91468e411b3a7e59778d23", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "73b1f914dd4fc3368555c2052bf59564a402d8fe", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3edd098fbde044ac67b96dc0a28f01fb5c89edad", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1a2b52d5f7c5dd65d6fd4ef4638ba8fd11f3dae0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "036690b9dd593e4bbc4fa57ab76c4413a6b22055", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c23c5190b1d4e87f3fd7700cfbc4dbbb91fbd959", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "de25c47433ef5d60ab247e328a312f551ec8c512", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "36097809c07b52eb355f36a83537fc214d4ccb14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6e43ba7c66d91b84c8f4480acd54a190b6a287e2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3e4614bc5c54a1dbdfe99796579718049be27868", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "77105c986a7cbaa06a5ede50d023c7c8db5ffbd5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "50d7b5d64924c15e0f742f0456940b36d5ff5d7b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9de9964ec76968ac24559639f94730671c9e775c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4e5fbe6b408080e98f9e6c6b28c15beb6c64419d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2993f3a4818889b52b73b4b7eae2be239a382d5f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42a0c1c0cc5820c9604d9e83478eba4bf41e35c4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "301dde14af01bd06c6c1f742c888177cb9b13169", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cba70510e3929d1e8dfb9f2e4d9a65e252af4f8f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "31435aa6c1bea46e56c5132cd922fdfa8a5415c1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3f4e1ddbbbfba95f78c3373939d76ce06f3058e7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ddbf80ab3bb7815437088534f2e9248d43a697ff", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1f61b6ac33266b3e3f395cab38e58ec907c9d559", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d2a07d5fef4b00f6a8854ae9a38f25cfc39e6f66", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "720d66fac5c30f948f2b5956769d51bc61d3220a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fb20769614408f398823046c30277c244f3a83a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4684785aeab45f8c487324acaee758b651eeb4e5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "148c9b1b8f37524f28d67778da09c80f388678ae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "26e70d5fa515ac1f6bc6d30323b349e9abad3850", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "822fddf9c26e7ba207b42c1230e591ea5ddd8170", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "897854f7dc9ba4427ba9d4874cba763827d210fd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a79cc3cf32988801551ad8f5317d8f777cfc5a66", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "26bbb06f4774c5ed870b79d732f45b8af8720c9a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c55de678d9a00565236cac9d36e97220235998e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9b849a082ccee33b9963eb11e32c07da1b5d4f0f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d5fa570f2802dbd9dbaebef060d1525a9a67a852", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3ed7fb74d905da2524b4b761e43d795826aa98e1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e2ccb8adf9f548fdff46f24ba637aa79a9f189b0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6160e38fed66ec000a238761add3a830e0825664", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dcff14155900814dc4dff5df7a5ce3bb8290f2ad", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2cc09fe483bb23873095865f0c8c24fa85a28361", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "574dab6e9f1363a9c69fb4cd1ca840efaa00532a", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45d9b5121939e14de880fa33f742c0b1cdf5ac85", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "565f8fcefabe2be1687b48c93bfbd2e45c1894a7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1f1d7c39709188b3b94acd9d40595f60b5c6eb0a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30e158ff288262c93c01812eef547b0583b8df88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ebf56e951662b6529bc315d4bf15c2d15169af57", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6e4761ea12681ec5dbb1bbed158021e591b2f9d4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3d690f0d31ca5498f55b6ede5f9e77c730deef73", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cdce9db8cfbddaf0217e5e632c54dae442a32a6d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f05bc839297771be3759df80725bc21c9f6de26e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "940a3779379cb90078051a345c6ce2d6c5ef963f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a5fb52c7c5df77efe9fd34332b5fac88145834ca", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b2cf9e2920a44a0c36206115ca9f0c0b00d72ec4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "150c9d5223557086705b74d3d6e1f4951b698fed", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "350aa15b25c0d00ebc1960831e3cb96341c3141a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "68b2e4e9c25eedc8222a0fca15a9dc2640167190", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd5da1ad807c045d5b157f712a88527abccda931", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "758abfc334853243d0c58cc39cbe58f4ea7f9888", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8ff1ccec44c10cc2de8bb5dfa200b3a5aef0d3d6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5ff8b955da6ee0c281270a58a65f665b93cc907e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2024c4619492180c7cdf9faf4c8e39c9bf443edd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b9dcf60c84925bdde7eec7c761280faf2b8755b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e0554cd6c36486077a362e54722a6d62d609d36b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b43387c54f0d1797a76fbdff9b070419e5f5041", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "989868232ce71455cf3847e7e50c6e340b25c2d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0bc0b370c29b866f8c0823925190826688fbefbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bac7e7750b99de710066fed1a3bfd8a30fe39248", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b29f1bed959a8ab7048d7e012222283dd3c77343", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "add7c5f290ebb2aa3a447c805d7a2c1065f5415e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "53eb122eaf7834113f32e14cc756c3bf4be6cf84", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c87ec16153a6b00b0a58f34a76420e89f21de739", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7ebf1b4f8673631e8327c16f07aa4398ff951a45", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9f9f7632c999dc606dcd128537f6d6a7efb35692", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5886c2d6bbe32dc9ef4282cd18585f894c79cb24", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5e00344ad89becbd3f9967889f3e4509a064e985", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e6ad45a98a5c22b197fb81392a4e6cb39f8e5b53", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "376f6acf52b2c031cd2c0654646b219041df6c2b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a40ed603a160ef4402bd8cb82fedaecf3f362a9b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4475856716142f2d22d7bd5756c0adc563fdffd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e29d1e7ecfdaceca922541e1c5baae8b7942221d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91fe818ed7cad94107c1f0d9aa924f6531bba05c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c8948f4573a13b01e37e53fe74b2590c730118ee", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "508b23dbe4302e6b6dabc8e32dd6ffaca474421e", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "af5aa43fcdb38fcaed7a7ede0b028608537fdd60", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "834edcc26914f1b99fd787252e1aa3064683f0c1", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a79fbbb453e09c6120ded1539738a654290f1116", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d0a45f25078fe8227a88e194dccac92d6a13b163", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38a4dae6ad4d1eab23db9c842832d6f83cfb909e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87c41dda12f4c06c9661fcc92429c97da0fea465", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e94752cc281c0f66d5199fb6f671e86783e74c81", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3644dbf869e0ca49abe115a7429679fe66830603", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6beb088afcb1b410f0bfcb7430e1dc9ff0eb67f7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d75302f3c2315fcff5c84e9c259fd7ef963d01e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "20230bf531e35d8cef51770352518c3c69b6ddaf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "61861023f5e567153e1958c56efca796531df312", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "70efb5d808182d2d878e04fae37651d2f662962e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "344ea3b4855431f9d6c546738a6e5ef852315315", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "78afd2d213934db4d8dc3e13d1e28ff5afcc355e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bb34ab4e6744a09602fe221adbd4b4aac35e227a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c607fcf1ea15d41066935835361aa1a9960ad61", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4af3e6d8970031f5159775689e30408d8a4bf39d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42cd75816d5903a58f5dbd1f5fbcd30cdf04e1bd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ebfd3dd61de4598c3466d0b019fccfa2c78ab8a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10b66d9cad4d8853f9843d559bb7f6688bc60008", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6f15ffd29a35fbca144c408d94b4dc3f85e6e6e3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5adc85aed1a220eb6efe6a3a501790f2d909c39", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "beaea0f55d9a6c832d63ac525a38f77c4ec72051", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a0c213dba4d035c486697b2f7d404041e4bec139", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2579bfa12eac89ba373890d9a3049697a0da291", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d7d87ff9353b7e63338db8ebaf643da0521bd0dc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f75da9a7ca6fb4fd50b6a677282711803925334f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c04953e0194e7b546dd27f251a6252f4eca2b942", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd04d3b9017f01d3035c8b961061f1887d9e8bc8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f9b4eec05a7b42db7870dd5d74d51ce03ed543e7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "648f4928e88489e03d36e7b632f5949bab3766a0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6f8195d8755bc27f430bf53238a2b38b6a4fb7bf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "444322f0ebe6e2380b1572f30fb8bdd1ae0c9798", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "34fa963311c5177dee4dbda9f7aab9dbcb8637d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c085f44a4f178be6e61a2790906567d61fedba89", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4cc31dfc3828f85e82b37a28b5126410137b5dc7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d0f3b1d075b98e647fc0ffab22b81a2c3e2ce168", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "335ee543ebe8997c00c12b0f6d264aad79e7908d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1cd3a83ceed766e8bea642461ac03ea1c6b9584b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ed9a16d2dad34e479a665a3b972b9aca449569f9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "af3b733cffb5fd7e5bfbffd9f4a801d34ba1eb35", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "80551bc8fb9f8d8ecc4158cd6e8cf4f8c8f24b63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ca1d96b5ceb9e4be6df6a656b1ca46dd102b5571", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "809b1cae648b8717acdefa01ff2eb73befd59849", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "458957339f3e8562c92cf591c472c935ecadcc73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "08296dab61376315e39c4b3d37277fe0e7de49da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "458957339f3e8562c92cf591c472c935ecadcc73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08296dab61376315e39c4b3d37277fe0e7de49da", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c60c858c40b6566b09cd81dd6feb0c648f7e5240", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4f04c99cdcdf15e8c23be029a94a4db73ae055bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c60c858c40b6566b09cd81dd6feb0c648f7e5240", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4f04c99cdcdf15e8c23be029a94a4db73ae055bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c194d74753e96808d7662cb3bb298d4378d7efa4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ec269504de789f257188c77a80c6020b0aa1dd91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c194d74753e96808d7662cb3bb298d4378d7efa4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ec269504de789f257188c77a80c6020b0aa1dd91", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c7a07256f078af5e1652561abc7c0b47c23cb5cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d630aea5460c4f7e2fe7fd9fc1819d267542b00e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c7a07256f078af5e1652561abc7c0b47c23cb5cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d630aea5460c4f7e2fe7fd9fc1819d267542b00e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "641e488349956670ecfc18b4e60d0263b31723d0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4d934d44abb2b4e78652773bab80418cd62adcca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "641e488349956670ecfc18b4e60d0263b31723d0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4d934d44abb2b4e78652773bab80418cd62adcca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50ef234afbc034d4dd3e46e5b2a26d5f940412b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "edf2e33557abef959f741b02e3c49877ef0cc9c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "50ef234afbc034d4dd3e46e5b2a26d5f940412b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "edf2e33557abef959f741b02e3c49877ef0cc9c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07f0741614ff238c94d444cb90861be2fbc18456", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "843cf84aceccf3fb46154bb7dc723b58a7787c65", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "66d39f120d60796dfa860c907d13a9c62d3c0b49", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "290d35fe2afdd6b183687a2b8b224c93fd823be3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cf35a1c84909ba11116fdb94137c1fa5e7b6345a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "574b92c3e12bb8468e8880c21c6901b63569bbf6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d88b627def797019376734b263bb23988230bff5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "893259dc0168fc6d1ce002dd4942846672a7f044", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6dd36c8f236f51c8c02b9d159c9a2b9dd75dc687", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "46e8c23499ed4ff2c421ca54609bf5b8fe065070", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21bfba473c2cf48c269d23f7d67238b03b0e183b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3c7c7971c07e8d0dcaa29846cf2103b1db263f01", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "077e754e8a7e985031f1a0d85465042cb5b1bfe5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eb5d1bbdb7fd4037f2a2fd8486eed89baaee71e8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3cc9292d952815bcbf1ebd8588142009d7cddea6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02d05bbfdd0ea7441e0ecba63a58a191e7ce7221", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "178fdba80f09c6ceeba87abf6c81925b08ce10b7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3da9188b0346bceb963885fbbed6d129e4f7b4bf", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "25b1beb4dc8346d9eaca2b3803e1b540f9a21d3c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8a2cabff72e2e33535374e983e4ebf975a1c7253", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4377464ec29039c151b5cd3f15ba99ac938332be", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cc2a1455b4f3da360f3de1d7fc51765f028d0ea3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d94f3d55a027b63ba7b2e77d0a49fc198ea68042", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "91b7b121a5ddfb961eae35f513136b3361ecd598", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "52a7a2a15da4fe0a81bcb4fa8ca706e47e3fb2bc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "675c5b18719c9a1d1c25d23fa7faa96dfa0c59ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "52a7a2a15da4fe0a81bcb4fa8ca706e47e3fb2bc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "675c5b18719c9a1d1c25d23fa7faa96dfa0c59ee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fee15eec3c328338e25faeb33313fcdc46a2566c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6a64240f7f5fa447f048e3d4a15a62f629cc166a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fee15eec3c328338e25faeb33313fcdc46a2566c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6a64240f7f5fa447f048e3d4a15a62f629cc166a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a477089f4b7b973b765818e63256eb077b902c0e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e1eccb1427571ad32b19f985db3de85e1b0f8ae5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a477089f4b7b973b765818e63256eb077b902c0e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e1eccb1427571ad32b19f985db3de85e1b0f8ae5", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af1466d0d7ade5663fac747c619624c236d3f8ee", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "920dd5f1d1da5636d6c6b76e4193c74f7d7659e0", @@ -2183,18 +2183,18 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9d429b2e64abf991d1871750c991cff6de1a1542", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "61ea04bd5c5e6437ddb689ce2df8421be2159a89", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a41a132107852921fe4849c62174f9b3a57c43a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f2b934bdd3c594555aaf9ed14f8f04a5bb57105d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aec7a0babec1bd606486799b3844158a12ce5f32", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ec64682a1b5cf26f099fca98de95e4a6fc7d2d88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "74fcbce6cc8892f22e542fc7d1b63c30ecd2ea7a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6006790c1517a6f357636ef02a91d7d0057f665f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d7ddfc338162af12bbff5c2604795df3f1b83b8f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "39e6cd02757c1580c86faec2240e6923bd72d9ac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "91ac72a0e58ae51820fbf0afb7fa1f74bfe82681", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e08cad38cf2619cbbd9ac47eb0d7b8a5378c2123", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "45424ccd3307ca80176b89a81231c7d4a82502a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "825aa850aa63ec4dcd6ab96af2506a91f7c8d6a3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c2bc64f7a5d6f17ee70a7d18b28ddceab93340e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2b8b283fdac824f02fca9d272d44e6e9ce5fc027", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "878b25bb3fe5834e940898d68a20b52b24dfe367", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ff0c9e3488d72e642d250a9450c78ca2529dcc65", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a099a794a87bdbede451d3c79c6c2c67c587d0d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3ad0cbdaf86fdfdecc529f0fd73e2ba7deaccfc0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "01b3e0b2c172625d09de613491694121b5820dd7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a65bc819eeb37fd31bd95bebe22f15ba8797edd3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7384a09ea3e3ea8725dce9f467862e6225ca28d2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0307c5fbd337ea905773a0e42626e6f865c3b4ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fdadb4539ea5ddfb9c3055daf9033cd518dcb88f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "18ee9e20311754ad2d2f2d1fe4f518a604676f27", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4da6357ee7e7cba849811a8e49338751b8c08d51", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d233503fa9bdc624db8ac78a5efd6bdd490ecdb", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f3fb23137b601787ba90bb4340c992f75d5916c2", @@ -2207,66 +2207,66 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "48cc97fc0478408194418b817d0d7bc245c08beb", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "662bbc334da25d6a225f20289c5f4568f00a9ee3", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dcc673cd3142cba535b145ead407bba352bf9e88", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba23b996fdd241c9714010cf11894c0d46f441da", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f4d851000f19dbe91e304232a0bd58e1af09a2e8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4760a6b254961f632d732249210f8b2c42b18142", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e4efd3d11fc8a8c497fc4a85b8c99e0d8e05097b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2f9b2600b511ac1a9ba0fd74722fcb2c618dceb4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ec53bd7f20737a3692f38296d2872c6abfb97edf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4acb3342eee3e12aeb431036ece0ab9d211c499c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9351a5fb137a92bdaea42191831df8bfe43b50d7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d74466bb7c3b7f270f049e766a67655631915a77", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "405bc3f839a0a33b2e58ee37e594b2430624186c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1eedbc1d348a0373ed2a456ce0846575901f1249", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b791ae7b4b2823d97b109cfd9c02ced54abd199b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "adcedb61141eb31150906c149101e640c0b3588d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "78673e5f818cd28f51e3bbf837457ec78f1350b4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4475452f096fbf0c602e8a87fcd075dc401fb5c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cad2fb4ee341a4c65f3499f4ece68c4c2ae85e3a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5f26470dd951d1312693fdac91f07f1399032174", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7fdcaecb275bb9f8793e777d5b64772ee1e6e479", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9964d5ceb83220945eeb282dba8afe2490d178ce", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e0953769fe0842473956e467f632f807a4d9b7a6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b9c42de5fec7735fd63b5aa590c080734aec45fb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6b207bbd49f96601484f52a3f4a4f63be7b9e89a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0fb5462611f8bb529a4da8e72e431dd2d5251181", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b4d47b0a38eceda5aa8d5d600d783d293d24cb07", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "376c56ad73e952585cea0245e69119235adffbe7", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "284e443b430b7d4085cc6352008ffca2d77193b4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6625e4eded9b1b09dd6abe6421423c20495f0e08", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "be9d76f5fa707ced7bc7afd7209a59125134f175", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7478f0fae59768be1370e619dbb271c49a39e787", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b281d1b6efbd0c7def72186761cfc080807c7876", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "200acaa6929a418fe8517e3420b89bbdeac893a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "287d70e21163b0916ffb8a707a899c8bccd65275", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fca75102fc448414631c66aada891531733035eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0a4defcc66ce0f878446eed0adf1a01885296640", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "90c78b30fcde62e6904b803f4e8ed327794461ad", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76e711c80a8637a42792f8b79d291dc9b0bc7636", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a52f73ed4a8b1d5364d3e58fb8b24a64ae56159", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9df1e273f5e82e66df3d1c4e6830f9ba798e2857", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1ed672468edee07fd84abd93f33234f556bd137d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a6c2663a3a4f1e32621abc74a90af3555fef276c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11648bb7f955b8c9412966be194ede0b86a92c0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "10a8ef488dd24a5bdf99a12fbbed31e81b705b0f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a2fd5451fdfed98795d1125b5f0eb2677dabc539", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "89f5786a6d06dc07b653ebb8784df60bfabfdd0b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6ca69e46b960dc852c58989785d05db08b00a21", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "665f6022ba8122bc6e89173deb277af8752a48f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "660cce14b242b71fe33e80186c5eb3aecbdb0f11", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "45a6f125d8db239914d35bb37a10807d20fa3582", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "183bffdb31ef479bc9c4746b19afe5463d7b6a56", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da58775217ab42bc10d0c80f04f912a941968899", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ebd4d9829c937e62089d957a09dcc04ab3a207eb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3e054fc6e627b93e509e7400ed7562b768df941d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a90a34206d6bf47e878802729346bcf51f65ab8a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3f27ae60180896eb37d86e13bbc9775422dde78", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "579ea1fe2c5a79146a2fe27e061b1ae96757d032", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7ef579fe9b5067c70fbdceb0d6077a22ff28690f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50e0981316d8ebf3d4407d72058b5e99b0fdbbc5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dfbc151dd0601eaade814cdd556ddb06e26d2e72", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c8eec2449f38068ad22fe2bf94fe683240b3add0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "35001807a7565914cca399be133e494b92f01279", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "213374447577fba2aeb81104fb67756a62119da4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "340ce3f8f9f91ae0e8e1a4bfc858fec908c44a7e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "557783af2717394227baeccad852f4444af4f511", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "abb5b69ea2d0792cd121b772191e33e48ac85dfa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fac24652b305f5f6a11ae1a1bdb9cde7b484709d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a21cb0b45b5d223c77ae99594ad2d6e6f8a2029a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ebba5903dd01c02ae47e735b6f9b5eaf2d571117", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3fc72fb172e242351633d1c91858c4e2df4f7d9e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "529da74d9ea5e2f0f4b46eb30c890ee801fb8579", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "085332d536e7e81a77c2a773674d69b3666afd24", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "cc8ccfd923655961c17f54017ad7145fd4800f8d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "242acc3e2207f4338f20f9510029a6f8d7d31386", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "95be34301118177d36fe46b86ff40a37717f3f8e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "06ec4b6ed9ee349633e0549bee9d2ef39670cc93", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5a37ffaeb710b8a0cb084bb836c56af5c43b26a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6cc7694726c6555c4ef86a9234d0ca5553e93970", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9541a0fd28d2d1d4f7a6a8f9f0b0195a6c564da5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f58fa6687f0b7840ab0adf18b617576d4888b93b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0b5a4949fd71be46001b1aeaa4bdbde3f4a494e3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ab731bbef2cc7738aea1d7f592c4ae62ec646817", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b4941c622588777afbe3acb6a790403ed4246ebd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6a2fea9456d31383013a35564191f85247107952", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "53e072c8a3b5c68aa67e176043a473aff0121bf8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "73a42640767aab06b54ca0b512a5debf87fa0b36", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4b978bb59395ebced42713538c26cc1a461e5645", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d1af0c58f428a5907dc685bb72f1b23b29bd1a8f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6eb2003991239fd7b1de3a38ea05f336f562ee87", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "47b96a7f083cfbdbfe460e59128ea57eec389a9c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5c4435901ec82266d9bebffe58be5dc49a503630", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1333beb6e34d5298fc929667542f79242652050d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "926637d9e08810bcf3838136951393191976e38a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8a452be7354e7b024706aa14d6eee8d8810e9343", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4e6f763824c748ae24cd35bf4494d6e1c87d8864", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "92614ccdb8a9ca7ddcd0d6b1b3ce4a85e660c972", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "907b9bf80c5674b0f71d7ebdc17c97bdf10c6ab4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0c899c3b1eca3adb57028cf0ffd2b14c3f4be0d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "03e92162982b592a07155dc53698af9a5a0c8859", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "49c5c17c6ada526678f234847734dbf1b9b08b40", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "916f827598c9e27d8b57af0007d2076b82f2f164", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0c096c15b0a2b128c9a5ac3ea8ca9d422ef2987d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "14ab0bf9ea8c1fd2935bb18d0cb72e9acdba94c5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e41bc6105b2737114c813be8372062f4b0119d03", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1780ba1b53cac2422ae7add6b3f6fda00aa2067d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "007303dae3eb3b38e3568f90373709b45a28c7ce", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "46b3e09dba491eb82af526eaae1c6278b969ed74", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "629e4fde3745da1059e5c261a34b5288e7338f14", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5d7920d8dad413a5e9963741d94f50454547ff57", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5a64f43dc0a142d588361487539715cc026ce862", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d2d4d1b2817e1fe663c5c95f392b3ae7407ebae7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3fda56fc3f3c2cd7a694ee89ca00298d6bad840a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3703148b2b00529620f8cb02a9ba433aab1538ec", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "16d2c3be07dc7c4a34207692aeecbdacf4fbb7f4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c274b1d44bbc23db88c1029c47cc7be6d0612500", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a34e186bf702e37093f7fb03f699fa61e1499c82", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8e5291c46aa6016899777f84ba4c63e5146ea1cd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "285fe59892c4ba2717dd5f0b16c20706a96af4ed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e8eaa4e05397f3977a95a5b2dd910e9a4919fffb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7867d9e62ab0babaf9286d12278a83565bd52e44", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "868b95fcc4f64151f86c050bfe2ff91bfe986245", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6324ab9cf8c1bc8c0bc51d140e8d3b101a8d4ff5", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd85f266321966af88dbce51a9b86b4779cb865e", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "48c152b9fc9d6a972eb496faecf6ce39d8e2a9fc", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fd792758c3884d5480ccfcacea1df30f89e55ed4", @@ -2279,18 +2279,18 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5f83f28538c5f0a20169886d733f10f36b17cd24", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "280cb145eefa0714305b06a8a3b723b4809c4f88", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e223d6b6301d06e893fba7fdfae89d6e4fd70d84", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce9bf290f85b6605367c8eec7a250fb9de426d6e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ad9f5b4f9038539f040e56ca7a8d4301fa184940", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2072bac424286d44c31d08c207896a66fac6feec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "272b81be1e3e9b316043e11aaa25df28178ea2b5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a88d86d248e123818aa1da1f4bd67c1c3509d609", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2fc265c9776e7192b998865fd2b88493c7674d63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b18ffb395f76bae9562a5a95096251ff287eb487", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7a811bde0f76f7fd770621101c059f6ec9f315a2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "859cfd9ce1c745a47af2e17f28e9beaf4a7cd1aa", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "aeab2c323fa24bc426c410a3a926296f97f95e21", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e350185e60a947062e752b8fbe2042283d78919", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a4241c4c97e3766972646f17f48a469ded2d7f8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26754f0ab7e7e527138d9b45042f825b259241c2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80c3aebcf623dc7a18de22b6a9a684894de9e95a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "61bbb758175bbb79a9aeff5bb480e3f48a869ac1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "de829e8d2558b547f865809cc24d337692de2450", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "83b786173d4366b7a4770d993ed1f6b1f03d9d54", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8beda0200f1c3e9fbb2d487ff3c90274cd28b35a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "14d37d6c5e696b396563bd8d22ece0bd6b0103c8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2684a9df213b1a45083a11d55ae18f4897b85a70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb7aec956d08ecd416ced996bc45ca57265edeae", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6c44aeae9c89197c61045fc0bb277836c4c5c365", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a65cdc7ba2b644e17e09f0d63781c3d9d5e25703", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5657f01fc29106ea60fc166bc3b000b219dd8914", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fba6c4cac42a740f0aa2c837ba94e43aa2fb074f", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "981087eb1114d5a759c4b0a880b396af25b82e99", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "94e94ab6bd2fa036273ba57e7542353205adae91", @@ -2303,66 +2303,66 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ad87872e3252025352fb98f15c972c152f5ed837", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "80f4578dc4b1039b6329ed8cd3253dd1807167a2", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4441a8598017dca1c23117d4c8b99c00b60b371", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "229350d2e651905204d1a3d4d20bbd61c41f39d3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "017a988e9bc58921ac9b64db1ad78e619716b340", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "77803f8c9c80989846b295acfbb9f27f216651fd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0071bc30a6fd190253db802fc3a79fa1abc58e03", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "88c56121342b365b3501d8157c25995f3286127a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "eade9fef89579bfd53255a99cc9374681782cc73", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "95a49e7c187f6c932aa2dade5f69985e0b019389", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f7803dc55a86d70be599b9cc7c5c35caa2f04c25", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6b84cbaed14bc783ff4fe0550085386b3998ff18", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a7062c5d915212f30f3dab1a1d324eb4746ba2ac", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f52bf90840e34895ac5623ff69cb5829f6f0a82f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1082bccccf760d6ab43f029cb1607a8ccb83cecc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "00309f8b25c05bded1f44af748ded07025d80f92", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ac74f74c496cace98bdf9eab88ea993ae66568e5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0565a6ea12b5a2a48e0f52dd7e93fd35aaacd852", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "82d39de6e997e8935d9c53143f6b648692ed5b03", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f3879bcf676cbaef448d854d2b5d5b5ef7aaec08", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d71218c23f7298f291acf956c96e81dbc15f9ae5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bb6fef2192691510b8e5c341d33085864db19cf4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f95b3f0ac8ee1cb85e8a793bd71cf704d3dc2da6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dd6017f3bef9dcf7060d2b385629c13955343a97", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cd35e6d6d3f996c1cc7d936e25387ed7ba43f7f9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6c399454c5d9395f22c299bd1d47851e07c2540c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "02f8fe32c8bce658e2a1da2b1b43d3e5b354b39b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "670e2f4f537a28ffaecf45cfaa50f92220f78bdc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ee9cf1b70dfa503d0b170a1c0e74937b605179f0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8c529c02bce2841ad451315dac156bb5b2789abb", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bcb3980e326dc1ee6c98cfbc4046edc2b5d6c06d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b3257f052ad53fb554305ba743ede0abaf0ee6c0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9831aeecb24f52ddf82e9fe45e649b3c6e6357bd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5176c3bebbc28cc4495acf6a187806576bef0890", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c0a9107f5657da183f9f6d3534f62a5f950e2bc3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "932423773c2b904d0df4f71e33fe16b27e6c295d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d37cfb8a3a4da0196b313e3e0f35a921df2fa179", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ccefc01e110fead40dd8a27ac1074b14ee35bfa0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a53303bb59924f9df6d6bcd4643cbbcd52b3944", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "42086a9f29d90a0069de86f64042ae0f0ec72488", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ed5dce2baf55f0c27a85497e6a0f02f6aa921544", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "128e23a13c3642ee0c53c45b0f99651ae9fd9a83", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "43ae7715b8655b02156747616ede4beaaa00b0c2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4790dc14f12f050b6eb043105a889398112df4a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2b7a8a8d80ac0c4415d19dee90826d2b80a4872f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6b2ba2c618122b614f6e3b53f7c651b704b3de17", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0ec28e8df1af4a3402ad5620c02d2448ff396e91", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "651e2ba9aaad5ae533f44dcc4619e64aa71fb5dc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3e1b9bee74e8ca6007bed628c3a7c1d974e923b3", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3c8a2b849b3ae013e4ef41d144cfe62415344ef", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a52fb6c19ef3235e10d9634617201bff8c8c9969", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7b94dc4461126e5e49248bfe5296720a5b4b3f5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "cd7711e1b533bf770b658048e0a5922c356dd5a5", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d05112ebd1fba1efeb0163363e3f655aa4c4135b", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "34ef4cca6ae727677d50f2a2c5fbb041d5dfb79f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed755bb0d4e16b4ddf2aa5be95476550277c983f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f7015487347c30ef34efade1eba11baa1b3aeac2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8c1f5568b1351c4f54b9ee5150be841645f7dc43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5d5099432eec5e8c6bc92783d2c94496c0cd2a74", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "632f5c1b31f631ee57ed5a0cbaf3ff39b62d6260", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0fdb0fd390e35bfb004fccdeedb83a77121c606a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b12b76bf3d7f74da43b7ff4c23b4072f4abaa0c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a7caa76f7a43190a80168bf634f3a9427577d679", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4db016903bd96af77a0c95d1567f8f7ee1bed5e2", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0463d5c531ad75549b4ac31a2125000bfbbfdffa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a29b128e722bf9a05643c81fae0d5761c9192578", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fb22b5947c680f0d1a17bd44196c7f0f406d87f5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "0e490f77eec0d27881a4b85e20e8bcd1c47d3af0", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "37f537b5324238d3dc94c9bad39c58af686c7221", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7038e26f5f6e057fd9f59723870ef5059abbbbaa", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a8e202b70dcb8ec7b0d45535eb8a05bb38d53441", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a08d0755d1913b88fbd53eee6bd9e42de52b2a5a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0e3ee61600c40dc7b4b0197e084ee8b5475416c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f91d5ed77da3f6226efc7df398238769c5c0cf48", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "10bdaa246f7a91c6e63d174fd2227fa77b25147b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5b950fde7dbc1abd74d3661bd812ae3a4d8b8137", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d78d07d81288b8a3b2ef6091e1c0cdfe7c328e70", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "446d7c7ab934c9fba503af752f8f1160dc6be0c3", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c27c0c45fb33a38509a06b9391474f09bed0899a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "deec100408db2802469b26e0b5e7deebb815473f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f477df900aabddf19204bc0b81ed9f38253f04ab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5d84be075d9e7de3848f7caa3990ed86c224b974", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6e5f6f229c492a325b1ea3f46e3e104bf0953f0e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cdb958b0718760b4f11364d37012d6d210d63693", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0e294252b9c8d9a863d99739c9e538f0d5bdc2b9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6b68f788e65dc44ec9ee2c71d6c97b859c014b44", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "00c42aa90a0ed174eccdac12394589097c606dca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a47894ded55fdaf7af855d7a8aa11897d6e6d7a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9f28acee5ba3bc1ac50314595bef398325e0a9bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "21556c0836b45a00ee5272f8ad28cb894962550c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a35094f4a528e204c8d02121d4224a1768a94b88", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2cfaabca59a97de998484289b4d237c1ba5c2f65", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f3966cfc193a9f7c8c2a147b2365b222b4db4052", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ee186a91e21abf8de24a57c3b5a6550e3869feee", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "efd9ab2914b481e1e3b0f4c48d87a0798d36be93", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "349895cd45873e305636649ea1ea06a704188a19", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3df308606a9bb023c7296fd45f08719efb42fb7f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af57aa241db58ac6538909fa6fe0f6c1425c45dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7ea8875bb474088a6a70da4a4a720256ba802f74", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c2886b7bd28815d889e0f1f348628e666d78d542", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9b6bc03393730febee0247da93b3d7bcd3e1ef0c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "33bdc0ed93b78499d10772eed7fbc96b520040a7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5d7df1936717b31e3fe03b71564288f5a5f90e9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f904eaeb392ad2091efb06139042debbe53ca6bd", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a6fe4490849dd387d93f5b2560f4efdfcdfb6321", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "32c3ece3e99bae213d8285d0b11134a90bddffd7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2730cfb1c417fad1fb24eb4a914287b4fe5bb0c6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0bb9b8777237f7d1c9fa9bdf716dc7b8ad0a6a09", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d5aa6cdfb2863cb32006a0033e27e9c74c68c455", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2fba5457c55e84719824455afcd5049071e8f727", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fbb8981db7069d259be37a63b640b13e17f6f055", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2f6b5a5beb66fd3d42e62bb68010e0b1fc4aa685", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "43d1e8dc64afb28306dee2b2447da0cee4cbea16", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "221cd3c18f916f753f7a6f1488268a1bb3a36d90", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "93dfe008b3ef0618fa0dcb86548f971d7266ee4f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c986d5d59177571e97c64c97fd042a57fda22b8a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d6c47e0f69987a0ff583df294fbc3e684b2ed140", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c32dc4dc8b58eb78dce0b1ee3fac2df5b0f2dc4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "277b1e8ce796898e1d802b08a2c031bb6006d386", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dd11fa33b8102dccd5bf74f258027e8fca48bd3e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1dae0480aefce425aaa70d28aef7341ecec73419", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0d23368d98a6a5a2aba8222684d6c8f678bec800", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "750e420c9907ed387cb450b3e8dd487598c38aef", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aab12667ffdae64e376cce3192a5047c741d00c4", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d56c054bd516b618a1c9ea5bfa3d0750cec2ce9", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a08b1040acd3a12e70a2274b012f8c4f74913f7d", @@ -2375,18 +2375,18 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7bed72563da75f07ca5c47c2c0be951acdff9386", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0eb612f37fd3b75759bee17bde9f088bdc9426c", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6c6f093df04bb7973429ce9924d0e6d2b39f1a3d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b3908f824954c6eaa9fc8a548841eeb8c4a24518", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d939a7b210cdd6094fb400d67ac29b76f92c92c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5419272485a91d5da052b88a1cf5d71943a9323c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0b56fba245c7cbce409e145bd4e1436e5ba04f63", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e11c0dae0877b626a5e0709a8d98b2dc79814ae8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9beeefaeeb535e780fb094c593479dde6023cb31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2035c0902213fefa41be9c31f0877ecaf0f1823d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "15da9afc29a3cf0ca23b4981bc8953d474704f54", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1ab4f37aab9152bff243e20611785f369af64352", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9432679f702731bef16c314e8180e18656c1695", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af7b807684241161bf6c7e76f990b8069dbccac4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e0d09a348c085e48387642c596a8e975bed8a844", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "14b6350a2376da9230607b537906188c0073a82b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2ebed8a72e303447a3267c5d2e363a37cea19212", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a1b5ccaba8b5adfd927621d7f698eb24a538def1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "25148ae2c4e2e437c68ca0cc9225a06d9091d1dc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "878ab5b10171ce02444769c044d89fb5bce982ca", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ca356e7aa807afe8795c72d04704fc26764d1b9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "460c86a55343436e2207cdcc707a9e53563b6ed1", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "188408705f4992db07a2f18524b0c0facb8bbd65", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58ad5749b35355c08b401a6006d526ffef2e11cc", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "088a9420f9725f88ed96f19c571197aa549d7297", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c7798f23f688e0f9e826c8e04660b4b905c41d39", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "253476be168e68ced2a4b7d72debb505e88b0d4a", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d1bce2e4f220f17c8cdb7f5d8352be0f4d0d564", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71b7f8095dea5c9e86081460e0cfdb0bfc9f553d", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58b001025e4991cbeb646363043694140b24a784", @@ -2399,66 +2399,66 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5ed260e569239e092be82ae13939882c68476ce0", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12f2487b5b0a85a7f9323b3a307486712e5c2b7c", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4a9bc835314529b4fa6824d83cfeec78caeb00c9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9a692c5f08e80c07fa473eb76924d225bc6837e4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "29430398b2f99c4e5e8fa2bd5565ef1f562f8e01", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0481242196f46f72d77b6442b4513d3720cde2e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6fa996275d6d9fdb2a41e096a83e2e8db3711fb6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7c4a22bb94d853abc2793c5d455bcf4b97c09c1c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa641959d856821a02c24b57e7bc886001f59ab2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "97f02a4ded3dcd72a763cf559da7ef43e2c02c4c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6dc7c24867d7840fe6a61627e30cf7901d32aad0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db91c60a6b7cef3b54517c9b38705201d41acc03", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cadba66e32fd21a3422b92f57a5bc5a19a480c27", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "e0034d20b4151b9a0c943ad154efaea7a79ea858", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "28f23525c72f9b3fc593c5ccb519ad7163d69742", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "474a9801e4022f9944b59e393abd5e1cdbc9cd45", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "210eb72cda27b7aec0ae9003f3c5ac45875aa26c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "780599b565a560dea68c7dedba527b5ea350bfc8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1c1e5f4af114760a772c742e7dc39fdf1f45b5ff", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "967d7de042a2edbdabf5448ac4f93d17c7ccb91d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "70c752b60c64bfd0be17cb6397fe184199682957", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91191ad27028c1e9e0ab1dba0df1e43aa055c895", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "07526bfe3957d116894c48b9e3cc20914a53afa2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c88a67113b6d64cfffcd78dc63f038c9ba848309", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ebcded0f5c56c6b34dd39375ce06092ecd2dc6fc", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f380eb5c2bc573fa7f22afe591f2cc2d2864f286", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a819958ab27fffaae1f0c26a4f2ccf2d99bc2bda", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4c2430017131f01db3c5180706333f5b98f6752d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c25a4f7c309f41d2fb2aa81df3ff75a83be0c43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ad80a3c84ccd69d6f91c25990163c07d00fdc5c4", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "834d0aaa6bb8bc3f434883eccee0392ad6fb22ec", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ed305f5c8495fa5cc6f7a35adfed091c3cbf6001", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6ec9d73e310e0ff0b900e8f15dada348563dd528", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5397d3b8f2fdac7578b8b6702f4c6797a7c9be62", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bd0d9b17a3c8cb959949f64fd03c975ea71a2898", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "02ed597d19c749b5b15de7a07d5925aa25292b79", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e61142ab3b65c48e257bce860d7654fa7864b6ba", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3db1c1d9a1266b44ffc036f53a47c4e0458a4e36", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "219e385e5bb4966fd89a9e431e1383405505ed68", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7874c880bc511878169c130d413d19c7d67c1d99", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "459d63fe949b3d85410a5b876f3a25649c669bf8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c823acced4efa79c7ce7dae2a5435bc5751dba0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fa45721333e24222ab958d600de4e1a661889f8d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "493abbd462a9a3e05211ac551ae3122f7952f3df", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a3ec2e4d16254b51c0fad4766edd76bd6c64a44c", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "edc0a3e6618ac920a943b97dd7a27dba4c706834", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9e80fd7935eba39258678afdcba4ff4f3e46be6d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "31b92ec0b4fb2f12361beb58834a700c9598b24d", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d5c5bee4c36329923e77ca1e897240e27c09a2d2", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f4f49bdb293e17f1f186a8f604c4d039ac0659f1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d0413bb4f6dea20cea787e9e3ddcafa8194bd3fd", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0bcefe6b6bac3bfdf55747c3618aa1b9e552a926", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6e8d269d5164a3491b7cef2f679da2e0a5dc4bc1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a4548aee40eb57d7d69d9997f945d97602048ce", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4ab798de581bb89e72748c55ff356d93374f32d1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "82b629581bdf27f49304f3b9f3caefe54d07d01a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00fbdc620eaea332861bace2e5d254e5c4feea28", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3a3974efafab3c6aca8f5f3718950d2e39956b43", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8b49f43a0b36d17c54d08ec5c10a3963346179f1", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f8680cfd2a5e42fe662708a4ace5ef9df9341a94", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c15818522cc7f8ab8be306f9dc95e34cc93c5c70", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d82672eaa3ab2fec8c4374a09373cc71aaf09036", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ccde5dfe51bcde29e88e183dd24c546f323d166d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5a5c7f1cbd52a7e48a48605e5608719a164e6487", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "46c161ab509d703aebf4b54373b9f61b37238e95", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4fc0790764493ef27e8ead271e1b6a5ae591372d", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8fd11ee04896a48aa74c7ba3ab7fb64769cf5ef7", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7921386f46ad8c18600fb12cb1adc576a5ed4212", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "26f9534ac631927f359904a91a6db96d77d61f82", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3d5aeb8372f6472515dd4bc7ffbcf660260b831", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "34e7bcc14b03817b19abaa36af624a145f28e421", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1e42856ca47b7b27a90a2997a5c554f3bdb86225", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d2e3ca88c557cab2e455a53498c3ca491edf9563", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8b6155a19d029d856c7f1f5c134d87e565768567", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d4ed9e91d2d7834025181cbecce46794ab6fdf0a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ac713e433cfb0fe219761f72a8d17adbfe143b8c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fbfc424b95b9f29d4c8700cc864fb51a1776999c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "99cac23b58e695fc6061d763ba1efcd0edc35188", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7970cded9bf93c89f840c4c79a2847530d65bcbb", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "62f9ee502823d3ad66ebd0eb908fa8290bdb84b9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2fa4f64c1e50dae9ca07cdca62d12db0126bef7f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "420a7058248c2b29b860e3d8ddcd1cd9d94482a4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "401bed49ec40fe4dda26b2628ceb62d30ab119d8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3a1a417b65ae1a95592295d09fce0901d6129a4b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "89ced77ef6d4ea381c0dc89927732e5399deee21", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2362704634d37cc35b7fa4d6d3469374faa51200", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b48b0ba82609283562de169a55bd7a79e791f003", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7adc1840e04bddcf6043d6e39dc8642549b1bfb5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "afc9277728f111953fd466bd506fc176eaa85c73", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "07cc5b31afe78c6c3aedceb8a59a8a7dc72e5547", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a8de6a2144d2dad188d329263b0660f091329b5b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ae728d9a29c8e8c51829ad743e173004609784e6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "292669e117fc0d2afb30bc676e0595a42b28d724", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "28f39013ebfc6b219092eb5c1cfef214b89c23ed", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1b797ac6cb3d144c27590cf0860fa3f73305aa97", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8bd64e701828ab88c37591b7b00d6d576fe43df4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f13411132d929443bfec5c5d6e9f4c08d8998d6e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d64ed943b342c367fa4f4d563e26149735446517", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4174ba0c98d2152f69e075965b8741db9793e9b4", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a2e91aa6859caf7ee39f0dbcf4eff2ddcd337a3f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "81107817eaf9fa462fb3c6018eb739e3d3ec8245", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c2d81b7a28656be035620ef7ae8ad0925dd43a5c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "51f207bf6a6befa4bcea02d6870798f1b942947c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "00b639361f707f3894850fd7113d21ffde4b8403", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bc9d6bd51d69d28fd042433083251bc4077adeb5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "02f59a4ac44c0fa9243d9cde9f6ae240e23b24e8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c3b47a974d0570fb804cad433a7725f591ba4b9f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "00cce2d9922c1c292bef6a028bd1dbd5f04a257b", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d5082b7786f853847c9d784adcf33108b6e2aeab", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ab6f9b92b65876e3a8942ad49d7b39b54bea5177", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "40e8a677d29fd08d77e74d4cd689b79a92e9ea8f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c76964f0b56e0779c41df079fa187d2d4f5e37d9", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f586fc3fb9590ff249d5562326f801d4b52c2437", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d0240ef606116d86ca293e6580a1ef7a547c3f54", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1e5ad41f382f2cffb494c900c9a2f5595a9ec3b5", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a63b295507f7b9d11e7a2ac21b1b8b5a82519fd8", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6beb87aa903f790550a8f6684fa93b2ca8345b1a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3e038e6d4068594e6f393ad6cd7c5be65f9c4840", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d808266a4921dab1c1738e8b6ff2d9fee7e7706c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "92a58eb0fc053277000c36607ea5014daf1f1e5e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a5504bb24a580d1a3d6a2d8ed273e436ffd8c41c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dbfbe4363f17f219d95a3a24df458c86c56ccf8c", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "056c86473a32a9c9b3eedfed62342771387fe186", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "373ac705bf5bf3731a8f629e8ce97fb89d2f3c99", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "964f9f63a61d003bbd153a4e5eb44767d77691a6", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f0636a07c2afaaea2a75518622868c95b82f3df7", @@ -2471,18 +2471,18 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fae1318edc938f7e9e6aef368a2bdf2a2c02e395", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "64b36eeca07874824503ddc028af9a9f6d88055c", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b0d2347da62f5e4fc064a850a354da0099d6d31", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b8e30d18e4e3f5ab76e0b46f45f812701cc82685", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c7947e4c46b1cbc8278421b00434f615e5ff9b6", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2b82954d9ff4595bf2c5ab2333387a1ea91e66c0", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "462378d6d245cac14627eba1098b7383979df4a9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8f51c17d1e1a78ae5731ecb0e13cf2494b8938c8", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b599a979b784fbe3e3dac0cae3a1aaa9049cd74f", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5c636cf57598bd1c080009a4e950aeaaf7eff23", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2d31709c8cbc1b6445f486e52d3d27463933a95e", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e7e6d3dc3ff269a24333003a694eccb10329892a", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c0d56cd31b6901e918e4b2e64fda4128026a02cf", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "15e9e12e0b81f234f2e7e5b09c44ed33796376e9", - "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1be2cbad3debaa7a1775c4c72dd5355bba0a8f93", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fe1aa623ed4e06043f6084a737b0a659f57aa394", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4e8a934f28b562a4f3473b12b357de4563ef7c6", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f4aaa6942ba786b8185e8aa85e05d800234ef181", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0effd9e958f11d226de84e1e0365b9a6cfd78a8f", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "8121fb8e38dc319d65da14537b177c69120e155a", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "29b033f1b29d52bd8ab8a172531ff46249398588", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91b1ec2d78d4772b038b1a9aff8366001d9f4858", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8309bcac2a6596e6cded24373f5a977e8e3f1836", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebb62c264b9f2013e1c2c32de58fcdf6eb789696", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c2d44ae234bd89546ce2d79c06bd589420edaf19", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "db2b2e276651b08b7d92f7cc370b9477c9a85b2e", + "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f649b311e3b0ec677b79304d97c033a1f03d5a0d", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4e3d419e713cd912e26083be6610d2b39c67aacd", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "436e661fe845fdb63d9ea991cd1056fe8e08f484", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0068850ba78a7b8915994e9ec1556a373079501b", @@ -2495,66 +2495,66 @@ "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25c084636ddc2f1bc8b6931c06efdc36dbe73f15", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4d17dc943fe735c1cb72d7f88ba697f782b706a", "dataset_type=timeseries\/statistic=avg_node_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "56d8d24888fe44b9adf06b542802ffa011cf9a09", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5b07d210939197aa830d922061c784e07a49c830", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7233f18705234aa1ab369aa2c1053afb57cd7bc0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0e4e34a17d90d6d03cb4f13e2eb90c9e979ddfd4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e0821607b6175efe88ec9260c40b65396d1455aa", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3fdc40d3137494fc1d7c171eeb5fedd44d64fb0a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b139da1dab08c143fdc64ad2b782004b16856b9f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6aa0066e5dc794c44f6abb7d1d633307d1d200ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "db1dc86eb0bba8e0e8cc4a3941ee0e300ec5de2d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da1b83d0dcc9f714ba31abdb814407338971cb83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "32e71124e06f26b829c4a1f4fbc848733ebcd8cc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "92533b03ff791067f0ea0c2821016d7b92ed5a39", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "743a3902f39ac0b6a5e4a4c6ce8194a7cfad957b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "297941e9aa2e8cd23707ba6d13644abee92d9b86", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e50076e68eb0deda15427484220fba501cae5c7c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2f9a257e4c197067492e014aea614f717227aed9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3851d748724fe49e3dbb2d6c21ed513437dbf548", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f6cc7c3f64c36330866e376b0775b4a3e1914060", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b065a603da89b1840fa99c29815b474fd79105be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6870b31de1a683afdce2ffc42b53e3b953072efd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "926b5d303cc80ddbd34e7ebcfbbbbc14a3b61e53", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "11b8ea9769b8ae9b5dc1d90481bfada4490d0b45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "95c0505eef8f6e0df538c69b72dc6e103e43df38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "24457df22d9d79886a0ae37b795995c052d5084e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fbef4f1cf7c70bd1cfcb9ba670a658b85ba7f351", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "79baa1f64bbd1cbba2726b7af51822b4781266cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1e48d4f1b5676f678aa00627f8c5e3f178ab185a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7221ec0353d38055be2407dfdd14d1c1dc0aa2d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ceae0b0201e939fe999d7878746d5dd944255a8c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cb93f3f43e7b7bb2a5b539d937cf634b1b650299", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4aa062f683940bc8a7840b0ae38b51c8191d9bb0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "173e8ef1c9f189cd5dea9a3df2c4055152d85203", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "614f844a380673b5ac0a9ff47c19dc31c859662f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "89e67bfddc079fc1ede50dcc42abb3f489717aba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "58eb86aeadb1b44ae09088d6b41795de9f4b4099", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8349e3d5569a4b83b11eb61c3c580837e1003215", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde168373290a8fff0ef2733dbcbf75843fecc88", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b419e788958a34e870c8445ce633ab77103845c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "23c6d97136b23ed34d42d809f8c7442969024644", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4bf0bd46b42e133a3817d682eb6dd31302de8e13", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6a43e39eb3e6161cd107cb25bf0cfc1cb22d1f23", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fa3bf8466faa071fbe6552fc16935c8c57c701f0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "230a4a9f05ca30cebc6732ac6bec24d1f26da13e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26298f6624cfde73db1d598b34a315e17cc79e20", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "193e597212978cf521513653b38e496a61ddf454", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03f1be8ab32c214a6996c689015400ba4c0926e0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e299bf2679af363be777f4d79f6caab798c0493f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84f8e28b4d162f33396e78af5474c4f3a852a488", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a7cbf4da11645a85ff7ecd1d934511fee0b79c9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "64f42b26f74a51fb45d5f6010dea37c17bdb62e4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "82e448bc5adc2e81693fcd1c2495b95d82be2330", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e804ad660614d1ab67a9fd98f09db05faf681817", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4cfa0d535fe0424e5307799fcb9d075a409de579", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "679a399dbd15bc347ced68d6c05ab51668f26c51", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c9c1988d0176ed9e534c6e6fe81dc8766cfe0b7a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "eeb948dc8aac468a4b0b032e8fd1b20fc2721c7b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "984931517b0a0c14344155cf799020315d117635", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f145ba1216cd10a782fc87b8766b3d65303f30a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f29a51854456d61f71e1917e626501520e792787", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "44831ed1342ce4f5856f5b55b40caafe81f6a4d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ca56e26fbe760b669fcbe36506e039325a803a97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b8e9ae0bc894f77ac15a1e8b7999f51719dc3431", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "376017d35b823bd71c99e550edb3200852f2a9ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ef33fae61fbcf72d8cbdce775ee10412ad4a04ed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "89529b347aa45fb847d65663aee9f04e8d5e565b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "daaf1d0fe51f960b038890230ed14469cc2ff006", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c2a1c60f573f26c874c92f6b0318a8666803c12a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7538d80e0875511f6744769294727b77dd95e0aa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a412436a3d748f0bca0e6a88ff9137217e220f7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "43d1323136cc9cb2fc819669c9be837d8d2a2380", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0c957f2352d3f7eb4ddc245757df8b532bcba03b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f5b619302c4ff51c367ab93f1ff62e33ffe8b319", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "91d7c257e87b6e8f6e20427ff661b0565c182319", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "37d99c106ee5707e700199a86e09a39d9eedcba8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6a764f2cc7a5767568de14a334178ee460f3f7f9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0b72d553cff3d424070596d1b7c23fa32043094f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "852d23b92a87dc61621de01b52e055e93754159a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cb7d6026b5fcbf9ce4acb665858afdc2dec9e354", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e9dc582ced93ad3fe2c59f3f429b5d7d0bbd53b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "91f7aaa30285aab8c91377086ea11effc9c8b82c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4926bff26b93dd071940d8ebbec42dbea8a57ade", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d17b64929907f1c42203e6bc8db010fed594aaf2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7b7b73b0ac08c54a3a4aa6fea8af27519ae7bc7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0908779f0464b4015156c219ad57fddb38a944c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "27bc0c653cf3235cff84425c5b3236f74c2533e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c37450d44423426a49937d4394e45e6a13fda63b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "99685a2538a791182d3af483c5111dedf7bf77d1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "477773e208100e209bfa177b46a3c4b999c0f464", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "710a51d234b06fda730336761168620c78d77561", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e90a5bc2bddb17f3810568595c64243d97f61f50", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e728e2e2e7ae4353e0beba1860a3011a831c303", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "be400184a4b928edad382d3edb8a3e9145efa6fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "00ce08da7d924b932a715df705398fa67d227220", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6c9a0a2aa14d94f2b6c43e5282f9fd58b683961e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8f13aa6c93aa74882f0dfcc49988cbc8d532c7a0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b740e3ddac6076c89d527552d3fa851f8932aa70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5c6fbc24d5455401aaa5b0c5475db906943761b0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9f229470c2825e58e88286dc56fb67b6d5025d27", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "100dc19cd82a1088c4cabb4255cd8ab8f5fcbd24", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fca589f5bee3e6927c6c3cbefd1144a1dfd88325", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "371f39ef7c08c9014c8e1c0cb65151dd0b8162c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1897d052a22a77e80375d674fb864206d8b53a98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "78b6b6d21fef5a6833e80f426cc81317b11776f4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f993c1eb5205c0a9797a301e7cb05652073a9b53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7ab4fd366b1606fe0c87cafdaa88ffccd943915d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5c8517bd7b5bd70270690784592ba42482727512", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5b8948e3fa71061e993c6341b219f4793db430be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "da44ac6726ad045852ce9908c7e523d6cf7a8671", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9126548ba11b26b7d4bbee1a60c3d1857852e691", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a1aaa3c43f0fbdfa21a5b0942c4944c1ebb09529", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "81918e4531eb22ec4fe03a1fdddb150c8f309771", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10f52b14a3f6860ec3d842b9246b52a8849f0d66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e7a02e8dfcf92039d8289879ddc4ecc2540144e1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "31c9c57620fbfe5277aa2ec62111e80d17741cdf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a9c049efcee952c2b2d7e18f4056a5b023a493a1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4b928d509c6294f1da3fae0f2602cb580f4aaebc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4911c99a289dac8db6e3c964feb6106a67c4c6b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a916181161e6e5dc46072b7b9c4e0d5e9c9f8ee7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "22d1ca09c07a2f9f64c0273494a0b707157d1395", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "79d7a4a2ff69579c35c4057d0645d42e3ec401cb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2462461d73c72c1fa66e9b2291ba5638cacc70d6", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0034cb5fe86017b41cfeb88980abade1bb26c71f", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "048fcc6b144605b59d8dd6eee00a9251b630105e", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f7448c778731201ed513ed77ddcda635cad3d66b", @@ -2567,18 +2567,18 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c62914234596ec86b020febfbfa16618113e764a", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7c0fee0541f6d8a7ceca0d34a2b85087079289ea", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a614323d414609ef0d52b2c46d545c856eb4051", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a16387ee29f95d53b1d7750afb62b5f5c711419f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e457e3dd97b299e0c6baae61fa6957df70a2346", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bf8d6dfdd6c9e0fdc3b748bce4fb0b77c5d3852b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c84fe348e3d11a25a4e8d9a4d8e91a9a884244d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "970e453082f0f110f83213a8349f644018528c70", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f684b54121691b75d3e955b1aca496b3e2f8799f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dee1ea1516d25c9eae9fac05bc073fc1dd5c36dc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a327abf0b004425693e0b0152005975314596a97", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ebdd9a923a80cce7684c32f41d0f530eaa4eba2a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f2c99e616c460daafeba284a1b35a2ae189874d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4b0eb7a6efc4fe5948cd623bef14618b34157209", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ec35bcf8fb86d4646becd40cb414997f1b5f4553", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "222773f3201ceb83d6956292bb3e13fe41334988", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b7b4ca763dca8d5cdecaab0308ad98d4fd53ad0f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7e32cc3bd835562578dbad07869f31738970d2b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cee09f281b5bdcaf48ee54ad76671be4afdcfdf7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4c359438a95325210036dae7e71d670fccf02d52", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3545e605c47e6a972140db5bd104419cd08a31c3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "111ccbcba3dac683cbb7e54e8bb33928f51f8b61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7d526f8da019ac1e31b566c23e64cbd7f9436a99", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "76cf767cf3625532879c780024e60eef2ba11d06", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "39a2e321af4e58297231e02eb455840eba030d53", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3ebf20762385a79df1ce8ffa02cb4948e1ebdfb9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e556f1414a5260c11b83bad3980692d5486c2555", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b4e2a503e7e628418880d79c086ff9105319bdae", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "924c146fde93c468df123dc2cf8dbb2f411a3eef", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "889a137e5832765b20d5ce818d3e7ce695b483d2", @@ -2591,66 +2591,66 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a3a53112d9b6db17e0f7ffee62d53e16025866da", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "12de68555ace53e66a79b1d13be462cf87bc7ef4", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0d95217e700cebcc54464de7722498dc8b74e85e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6903ad2a87541c964fe70cde72373f66358576c8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "555d7dfb493ac839fae1ff6c15eeb37953025974", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d74283fb7e91438a5b6d6413dbab9d36aa97d1b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "42390480d84ecda84f386bab1efe403dc4a96c38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f765476564a8e2bd05d48331200aa3b15fa195dc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "41ae8e6ad21b549611d1ad11109d718a6721dd24", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d80d7c9913803a5ab09fa5c647b335188609eb70", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cc697ec09347c5201b619d0d09c2155d44df1914", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "df5b45af79fa9034387a1068be2f50fbcf3d9615", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2a0767abedcb0e374efecb578830047db46e448a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9f8887414270bbcb65a26ebb3594269961f5f4d4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0ef6ba376f228f3fed444ac31b71053834c14548", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ab5939b3bf37e542b6ab38c5e0411a5cc7441da0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "303cdd4d9ba4adefdc4e750ccf567b8ac9114382", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d4bed10ab6b216e4f36618eda4ac5eb61fc956da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1648dbe841bd58f8e0878b0f41dc3e600ce2e0ab", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f4453cc06595fb90fc73c61e48f6a57ec13e404d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00d2cb98cb712ef75083f290b3705c42520d9345", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "522af4509ad708e07cb0915abb7f107bd964f23d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b69d6a9efc7ab48672c5e80a91e9e19d49077642", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "383f8b81d926841e5ba9f1e8f373230283520cb5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fb4c3fd060b5560a6a71ce2f3c2f9ae1f3062777", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "534f6bf2ec42bb072d50962dafd6263128ffd0c1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3b88ed282506834b199d34fa926fa17181a5c50", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "78baf51e8f19979b319e68fb2195f63260052788", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e4e6c2fc9b7f53b8e905bb9c2ec6bbcbbd70bc8f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "58d8fb6dec2e753d3719706008af5eb3898ace96", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2540683c194617f770f907e1a3c38cb5b7c008a1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "9ce221f4b21d7b501efe2128b79704adb3d97e95", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ae475f550cc4a3f717c77a1d9cd5a7d5d23b955", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4a8ce8cfc83f1d87733f6c55351e0fa0fb3e2cf9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "659f758085737e268a2d5df3c3e67022e5324a82", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "008945ebf5771ab1a970ce064175ef7f47a3349c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "18b1c3705a7f621b2566fdf9658ebcefc42d297e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7e704cb7630e0c5d5491fb659963415e455e89f5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "602312a4c005e7f3fd3bf4e975fb097d3f1e91c6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c31767232d2f42cde9029ffdffd41ade0867dc66", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "73c9b0981bc3cc5610c7ac2e85f51ffbf51c43d4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e070dd6c556de1dde2d11c3cdda719c3a014b36c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59025840a0c8d845a52b372eeaeaba180891d122", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "16957ec12312ec64ef74a68255f28f35283d7aa6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ca68021baa50da4c2c627bf124f5f76887c6cfc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "26d65bfc817aa64a77919923563c9bc5a12060a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "006eda3e26d2fc1d92fffc40c8a56cd868cd0b09", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "407db691daf348e87acdfc20c12d31257a713146", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d40e847936fc83a512abd4276f2ff30b9cfc224c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eefcbbadf1081db667aa82a1e1d263da1b567435", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "dde98a5fc7a15154c303c696151e09aee5f6792d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e813bd6081a74141c30867f581e14e7a9e04f526", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d91afea8edb601dada038098c1544c05d2d36df5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c21c0d0e5ee87bba087f7a6616c303b5f47164d7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1a448549a175b15a4b69abc6ad5aa3fc18a2b275", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86a69ca50e2a74355c457f84fd7241cdde04d46d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7738ef48657c1671adb4547bb8c075ad93530098", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a3da9a6c7fe42da268d90f2be6265dcca785c6d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "708073c0ac1b97dce5d605e5d9efeded7a092b1b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "194b87bbe36406f182720241f549c0c00cc6fa2e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0e1505d0a28dae145f18404ae590ea2d60450c76", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "aecbe6da4c804e636393943bb7e0755874840792", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e4c15e3e17e46f40f508010541c7d7c2ae6c3de0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "324d2c7bb48f1099abadfd154c9e08c651dfaa75", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c6b8136bb3817c42e8787d1f2e1d2ecd407285dd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "efcc16c4a16b9b3e235404f67a1565b4fb36a9d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "668546054507839a860241a2f1e9fef5d71a6a96", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b880e4d7bbb0b46f3f2c97ecfeb1a901171ac235", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d2f472a1fe131be25dfffef1457373c8a20511e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "017bbb45675ececb6883e0cb95911e46f3841c87", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8375929ff713735ebc7638ed2f5157bf054f063c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "aa730f0da8252761df3e03db0a3a1356ba0e0229", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "95f40c2dbba11009883785c474371e192a21e57f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6c0268d71afca0ecdf55d8861c120080cfcc3c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ac56c708b7315821805e4d06bb11841b421ed80e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "39a15c59c871b524f02a0dd53ba878d91f5e78a2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "804f1007a28cd97c161844233cbaebe55a839cfb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5320af40f2108cace33999de7093f36428340475", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f22981d8b2592c24b75c38bad87c515a2fd9dec6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7d5decdb96e50acad1d2887ae5e931c45bf3fc3b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d1145351e5ed8829044073bf8fd5dd22b624d779", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "eafb35517f19c46ce568637213fbf5150fab27e3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ff810eb8726485e546f0194ee51294defd945fb2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "caa4f5047aaf90713c090281336c278d6a38a2d5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d7b7159618a22440ae42fee1464d5ada99bfa5d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9da80e24bc1a59efcc4b9813528698a0419cf60a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "519a5f0c50219cc61ea0a2ba85bbb813972ee85d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a2d8a35ee5832ca78454daec063de07bbbba2670", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5ad38f70b0e25ac81d8cb257c3b16b5a1d79698e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "768ddc09394a7872c9e511271e8356a25005f16c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "26cae2d69f518b9634578b3b9b929137ee3cb66b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d9ba238dcb9285b11073166bbb64dbd64439222f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5566684bbc264ebae78548b690ce85afab715b10", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "516433d6f6556a43db72257aafda6a3bf6b2cc7a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3cb6bc3b457cf2a9446fe3f28ddccf2c82599401", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9bf200388566fd15f87940cfdb64c23b76a57892", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d2dc54ad551d2f437f2b0eea4c5fe97722eebfbc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4eb38ca20d806a53a1ae55b508b10c8b59ed7ba0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "df19ca9475ad1cdeddca14ac752de2ec3dac8b66", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9ca0131d4094f0788d54d1d77753a764a264191f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d427a5072981499a8f2683647f21d32e87ca5019", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "078339f62ada33f5474882f38acc62eeed22c842", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3395f8b44d80409c110874e1f417b262ecb21e01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "5e982e28feec67a2dc0cb705cf1821912df18410", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bab366d1efc79f2affd56ddb704adbe27f3701c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "f82efe27fe736715a237fb96229b58b6991e5eab", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "af17245de3917ab66f22a8889bca8c3b0f2d18dd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "58a82a51925133d336e54325a2410d2a3c3cc0a2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a2dd5c85f74d60b4a0dde6231890f7e65147ca9d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "84d8eda9b8bc3614f9e43c4f7e07ee9afb553b74", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "862ab87fbd7d683e0e46ed65dcc698919378d84b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "53fabf3b36cc29c50a07b3318ccd41ea2f691d80", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1d1009ceb627bca04c78608de9b9931fd03762c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "009ff2fa85b7fcd9cceaae6b05ee66103f76ea25", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a521900c1c0be331368df4c36fd2870a3ad99320", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "79cccbadc9bfa456d8bd6cd1ea83346b4e0d5036", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "99f0787f997c895c1a5b40d7fe2b0f10f9951524", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4192146dd00b2c3194e8912d90d73a0c97993120", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "535072a0738132800febf683977158dc80a5326c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "93b294bab577ae120c8792338d348bc65b80717b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "54122f8108b8ec0cb63652cb1c7f579cf22bca07", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4efa88823bce976225f6a2734dabde87e407c405", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c742aa4237ee940f6d40a539275f921e43c93117", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f89a980ce4c32d1a171d3b29c01f86ef45dccc1f", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9b72700a9f3e7decb0cf12dd351ab4f1248975fa", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f344b2ec896ddf100a1c7367b6570825d14fbe5b", @@ -2663,18 +2663,18 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7c2e8d9f11401478fad16b21a9643b23cdb2819", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "02d3e25eb0ba6842c38ec0fc6fbfdfce26e6a357", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6a457977bd101dc4e2fa95097bfda117dfb61c3a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b7d786eeed501818c6e168e6f84f2c2280b9e4eb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "30f74b7273812d038fe2514076d35e8ed43a55ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c743e3133cea0b1be80ea7a32ee94c90fcecdfc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f6ca5040606b5edb7c78dd8f475eeb88861ea9da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a7bc5374515f5e80744cf91859c2c8c90039d3f0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c8e45bde3138ab398f4729ebf79c727cd3878d7a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e063894f01812381de61b8063092e708532a9c54", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3697420da1b58e5524edb25da3c484127e34f48d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "409e721aeab4151a70996ae7d060b78176d8e8cb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4d1de90d5fab7d759d8291a216658380c216d61d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "94fb1205bec5160e080327123db0af950c024f18", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0b9108342f043a4c68edfe9e0fb59ef3b69483a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "97ecac43375d043a28e2ab7dd9ba039450e90b56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c26fa079c838f0610eabbad4f26f11c96712186f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1e22a603c2ae79987aad8f238008c4acc93b6342", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "08149167013107b507e1053011131e376723d787", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3be7e822ec6b9dfc448d728f5b927a5265d334d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "82fce91a0d557642800ea6156b022fa1e0f7227d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5dc42ad9c3572f6be57dfaa0d647f03b6b907f6c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2e239278c814fffcf5d6da16d3f0b58d0ab581fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fab50814ff870d9be57f5c3f5b2cd069c555037a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "929e3972156eb22625257444f1c317bafef84995", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "dba91e0066cc29b9123ab7c1e297a3a95c08ea0e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0dbcd968c4ac43a52e36fe0b5c3c14a79c85e00f", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3db072ce7fbfaf879a07b798feed672a5dbfbba6", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e74650d64b3783e22e5602b0b6575634f3bd0be5", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "711ca4efff0120fc14ebaf5fc2643dec8abc00d3", @@ -2687,258 +2687,258 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b175769fbc3677acc79a1033076812d950cf4aa5", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "400d7485900e61a826f3cb6248441040f74aa1a7", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=none\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "38f76bc973167ce751602d408343f9715f9aa578", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0d249a7d6e143e78a24c191a6e9bb2313ba07180", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4b0eac029b846d4de41f6baf1e8e088c3a9d63ce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "baafd46592ebe4b8a2b41e5054071b7e29bd545d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "38d07fdd74a80182b41b4208dc799f95e641ddbb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "13645f1b6031f073d96931a9d593aab2c2a89cda", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "288cb5e615013717617db2e996951f59a10fce0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3fde324e9b715e1607963a90f8ff8202ab8967f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a4ea234999ded589beff5bbcbf8bd5c76ad6cbe1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8aa567e3a0bfdbe917adc298e29c9a86c3e53224", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ac52dd2bb34f50c4062f4f97bf7e3d7c09d25422", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1e4b6720240db3c209764691382050c7268aefcb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "eaf9009a0c66d63037640e74f7bc458879d2a835", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9dda6fd6abca5858d7a52ea6b8ea372c23aadac8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "314291c7e2d479476d02f17d5d23b0166ce50890", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4623821f023c45b7f44682d8870abfd134a67f6a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4bf506f12e8cac2ed5df92a535da636e014a92f7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7932253cd2e7e01bbf0e816e0f41730175cd76d4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e0d4b3df557d04de9b9327834012fa52235443e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c3209e11b0510fe51e2fcc109d048954a242885a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ee1fc009f984559ee057e8a1c6a430ab72d2f4ff", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ae37902c5fdca4dd410723fec993dcb60768e64a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d233df0b61559b035f9817bdead36f6c4af80211", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2b8a0d8622fb8a691f11a621f2bb3892334d9f14", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "feb660995429be2ebe98ccb17962513054085cf1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7c663a889237bc437ad8dbaf78d59b997debe4cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5eeeeff88c8419458328da5e21d833dab0e0d8d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a8f0a3d75e1b2a5f4a8c704760c5af99894b81ea", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f0fa7ebd4ee6223d9cd9bde8af8fa343cab7c0c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fbd2e61cdf442e27904c1e7595c152bd3a2020f4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4e02eedaf2e569a70f7e6094dd552daf36a039b5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "0338370e2a883710d5f72fd622ebf50a188e0d43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b37dbadecdd9175a81d895e8a7b64d31f935e66", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "38edf5ab3263014cb8b46841a8256198ed48c551", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9fb0e43e084846c9f76b13a0ea45dce19914f2b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6283e9b5bda6fc781904f816c788c231f5f28240", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "82983e0b1a09eae9eee25877a23ae81243a4f645", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c02efd205871c879d467aae27efd63427288dfc5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22904e4546a37200c4f77c73978855b7d361d61f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6a2e9a84bbc25d1f7c8957ac500b17afde5d72e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f09123d1ce65fdc16d617416cfcdfe2d599e4774", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "065d9f3f4597e55edfda77e0ecdfbc8aa7461a1a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "73e2ac1a97259e50d54f8402bb479549549a2587", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cb00e78cebb562f6c8711f6c57b8cdced90776e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8c0c7f7989d42112e8ecd287bb7c5567a0b01c13", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5992109517edf507b087822aa059c61a9269b836", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "823ee96cd78d6b25bc0924a6fc236406ce996df4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "55c89af936bf7b5e777fd501e37f8af6370c2bef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "91a5bf221474c1733f4527148f64710904042963", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2f4bb3488afccf418573c10620ccaa0e4c6c6eec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "37dfa7fe1a0300bd78034764a006b885179faba1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0f8dfb63ab3de1608f1b0fb3ed74564545b540bd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "47764ad5b72482910cb155fe07fe822969db83c2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "addbd0187cc7f8e011d8d29645b09a2ef7b9e7ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6dba34c14974782fabdc17e5fbc0faaa0aa62b64", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "71b73440a7b36213c0de838d071e2986ce81be1c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2b79b4d6150cef96b833d3a8753726290573ada5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "1097c38c6c9f9033ea502caf0954bedfa0c94ea5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "203d0dc5bc09c0498870b5940b2b7e8a24736649", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0f80cb70887baea11a5caef94f4ffb7118de6d80", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "018be153bd961e3ff35345c4593bab1da806a466", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7363a09edd1fb3fca70c57f0b06c1fa38da56638", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6af0f03da1d8c3690e3505614db919c3fd027ee1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a277fceb40d8442f48fd281dd578b14d61e94d34", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "567f05d80c0e1ea2b7f93b91578d81137f9bcda6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "138ac6b7c09297f43acf33decaf6b9f96d00bbe6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "51dd941ee02bb1c19c3a9018675be26d3a783f1f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2da27e2502e31f6597446bff5288ee1b7b3589f0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5c39f3f2458004c7b55d9829dac125ae3f9d758e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2a6ca309e2cc1c2c4701c970ff7e6101410bf9a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f6aa9a7255edefd1a7951e3fe2f611a1fd87ce8d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a6e906a5e93c46d5cc26ae4f0f23ce402ef2ec94", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e2eca1aecabbe3446a80fd03e1021146a438747e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "61bdbc05c94fddd8c63274cf37eec949158263c0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "30e46a8801b2d7f447374cb918dfc44de0381a30", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3c3549e377cedaf401fbb7e9612b2d6b9b915db7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "670ec4b365cba4ba17f347bea50e65a3892bd7ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b0da2818dfa247111818fae9ee23c8d7dde0526b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "01fc2ec9a8bf144aa5872224f0dc505ca4b3b5a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "20ffb75a9b4b3214b9b70b74b5870e3bc7e9500d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "6f4a3ff14e2dce5db9013f5c004cf632e2a21c44", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "46eddbd0dd790ecfb4bff214cbf00cd4c46a7021", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b9af22139b4ad79a1f4719cdbf486e8fe07125c5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b9d76ace3b1a55dd6f3bab5b730a8ca1e5604a5c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2b712207eeeb2d85e0b51dc57845758ef76e5a55", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ade8bcb3d5cd4e3f7c8f7c0a41fd56fbc4b1a590", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d73080e4b77d24ccca00ef50931aaa63220ceb47", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ef835ad10a18d012fd8634548ccf3e766e8d9e5f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "f92e6af41f92bfec4c5e493971dac05b48c31f3d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ce5251d3bc64891dd50100019c457ee65b9dbb00", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "34e9eeea1b22abf16eb0248c5d7ea3d66d08913e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2c06ecd9c9514ee9b7dd3d22618124542d3f4db9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fb07dcd902fba3842589bb037d150a042c8868a5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "523988648700113604874a7184713418158595f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4392887ff119d17016ee45c697b8dfdd7a017c02", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "91bde565697d4e3a21f87b75fe14f192ad2658a0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "459a810f3f62a8e9859818c2c54d0fe91f61e237", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ec5ff1d080c9b849ce47ff0d2158e97884c29c42", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6fa8f3028dc4260fd7ea0de321c199ae323e8323", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "1c412f68413898ee130621dc506cb40a1bdb0675", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6da7eafa7502f985687e5375313bdf9d74fcca21", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0b959a5958511bbc3f8b17df7bf3919eb5e9eb2a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a8ebfc14fe06854d25c25cdeda682e97384e07d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "44a309f52ede0daa07a7d42d59738d25af3dd230", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e97bdb30bb7c54471a064ff7bd35c0a046081250", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8254496ceb4f9d33cd73098a7dfd4dd8ac41fe0a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "681a7d0a0041309a3186ee7049f6096f236a5aec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "03fff305a91ca8d1831db0eac822b1b37fa976ab", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "76ca5a9d4032e4e8adfdcd47f93555768a0124d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "38a41d6adfa7f741d48004fcc09b23d3b9614b6a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a076ddb68f085fb0b331cf888252af7519605548", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "7b9f12bac7271161dca2c9878991de0e1a4f0bb2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "4e4854f701eaf390f41a3daf54f111babf3c4239", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e572b61e8c1b45be34c10b3666f23d95dd61ea23", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b5fa0eff81f147d8a266bc94d47fe5576e4eb183", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3984f6b673808534f8d5035dd91fef62fa332d02", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5223491c37f1126e7b57ba756e5cbe636278e4a4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "266f11e5a06dd390ad77070ef1551cdec54aa396", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e84ab1c39d2f6b3becf3adb024e25a397840a52f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4855de3ff2077836ff26c4432b72fc5bf1fb5025", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5eb54e049617a5a625900f444ced2f863cf10676", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ab1c0c7a63cb0c6bcfab0c928dac043012f18256", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c6bfa0658b87018671f78fb0649b32556e85e58", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "c27030810138ffeb920d2318faedaf72d8d9826a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fe459c152aaf45030dc739e51eeb72edadf608fe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "81695152984949b95cf9d9d02b5827eca36e74b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "33b8a315e1df0e247a0527508d534caf36589cf5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5c06b435dfd76ab5cb0510b55d57084b3d0ffb34", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1349df3fbcf6025dfd67871384fe752f1ea99a0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3ea8323ca5d465b222c73d4679c9cddbe715d8aa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ab9e7d48f1d8276f47086f50c03f40f6c051e514", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3dc3e1fb8aa4fa06408747de35462c1eace94b1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ba1bcf35eb4e750564172822cd08414c262eb2be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "99b107469bfb59f360a332c1f4bf49fcfe97b0b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9e3edbc0052cc0ce266b195690901c3da125545b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ac0ebe545b87b14ad482900f55ac14af8f24f5db", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2c613e4e2cfe45bdf8556b054f226d78a95f5d98", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "9fb9f1ba81ae9eeb7e69424bf3c6a91193f55c94", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "41b7885e06fad9447bac193c3176e3e696d73e71", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "98fb61ab66089a958c1aa158a33aae96749a89bb", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "84ff00adef1d65d868be933f6b53babeb6570efc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "df06239e3938991f062041c207110cbaa32173ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f1f3e171ec7840e992456bd23e6f525ec5fb9d8c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f2d4df9c8ae632d0675552fb4729584c461348df", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f11179e2b7fecd78b101bc760143f41504acc903", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f85f78c5a8dddb612ab41ca03e736296334322b1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "88b851ef2ea690d62402ae2edb8ae05f1f0e1d05", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5ac0e1b6b2219ab07bf56e8bc91a615db0ea9c5e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb86a5541e233311fc8fcbd5f4b299f41411c17", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ed0fd8008ecc7eccff18bf9b59a3aed3cfdbd08c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "57d7ad3952af59f4e32e531dfe9875e1400b7928", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d1420bdf3e6d46d997c62abf0b3a5fbbce38e633", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8806b8162acae6192ee019003e3141f0caf0e2f1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6d248c70586e9ec1842f63035668c16a07bdd801", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92b54d0f5f3c54bc720a6ea97cc26869397fd993", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0013174c4b5f4cabb94b818aa9d11f5b2014d732", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "14e07a71ad4efad431b14e225b67f5a18af77d93", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "94c99d1611d1db479bdcf50bf0a4ce4e4d633c18", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f2df18fb512f34b2dc3a77d947ca8d1ebc8a64b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cc42af735c6081551f975a41c31b1eaaa4039f2b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1c836cf5ec12378ee0b3dfdf9feb58c2b302fed8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8dbd6cd54aee1eea10f36b25ca1ba2e852584768", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c81c4c9b7265d93759f8f194012bf9bc9343e5cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c9e8d0c4ca892e4d4e3f24138a3f99a5d9b87b5f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "77fab96dd67b5279025c0a83b100bb5195c932ac", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b1d36e4e4f388689ab532aa73bb003ca47ddcad9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b695d480ed1feb17b218e9403bfb241fa0a3a42c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "814c9ff4885de03524020473a9c4fb98f6ebc33d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3b7f18e768323e5cfae658197ef08b7277142344", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "57f8bf69634354873b916511c65d0a681a74411d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "268ce49512b3d80dd62a28a7064de8c84b63decb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5340c4b694d545539b9fc2b5d0e9a4289c84c92c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5975415643f8a0a554118404399b965fee615627", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d49b0ab542e88a8ddc48de1b73a3ae660a3f521b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66daedb453068a5b897c07831691a2ae83d3f5d6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1114aa2fbf87925afd57dbebaab9eff9ab0ba48b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b7d9b22873ea607a9725a5283406e80a71d96dfd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3e3c8eb6f2d0b0ae7d0a2b989a5aa2226f13c8be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1b52cf53f7c3b08aadcc56425d9efb8ad408dd4d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5ee602d7963c94172d0dd2e744332b9bfa0bd823", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95dc2b8eb7866ad153ae35cae4486aab2148d307", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c29fc857eb18377f0efa60bc84a706befe846c40", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "49ad8b375ed60c867b8b3361c35e489798271a5b", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "48a2b6cf78144175ba5f6963349111a1a2cea541", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9827a915be1f9f4a3e0ae61126ac7c1a34b190c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b25fc24754fa3fe634b077ff121c69a438632c7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "53b74ac0333c274fa07bc4636dc6a0cc4ea69774", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3b3dfcaca1d036ce28a5152c0724fa8e850d1041", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "68fd82a22fe252bcdb7d18827559d15cebe58f40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "68b474b21d963619676aa1183bc35987669e2536", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "999fe51cf80857e6ba5480d3859558d871888614", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "039a2aecd2cf3a0adc31d17786b7717b0fd1407c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8ee9b2e44907cacb35af1290a1486d536fd657c4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7fdf544e5c4370824398959c935dfaedd2b79bbe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cca77f0d5a3c9165af31885e389a6e3a55f4af57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6e1ecdc21ed8e1fdf1955938ede3740014f08003", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "132f0a94e76aa03d0a39ef67d137876144299718", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85860e1e11eab5cb14ac212defb6357beda2e0e7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8a3dad5482a31bba2ec22da4c2d06e2cc99a2eef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2b57f20f5c4e0880f47b0a85b6b306cd43b2b30", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "91b1e48cd006acad781df3b08a1631debb549a63", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c9a8d6a11b732b75ecca3116ba298fdb8e240ad6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fcb4f96db91249d3eb5456d3d3a0d82847592b30", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4732c8942e86d0013eafc8625cdbcb4a6083db71", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1a607481d17b6abc0bb8cf4cc1c8bef5e6422e0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "44f077fa1b67f7fd84e7e27ca176cc838d852b2f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "448ae143fb32410adda58f094b17c263634e4477", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c5fd17d735280e239b60dd0d11aa291d65103919", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "a5037c06c8857debbff930b98f79a0e6b77ba015", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "abdb84585614b7a963c7e65a49921f2f1d44ce5d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "843eae7b49d6ddc9294487f55d364a1c54afacfd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "deb0a96e75ab804025269c74c99242d5e4ef91c1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e31ec5d361129e6728a74002912109190b76dbe1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a5181256e7bd35d86f737a022254eacb69136d34", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0de6f90544709e20e8b4f3a7c5c6ea6298336bc2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "485abd56a66788469ebb63a8fae4da5257e1e775", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "e05b2a621b8976e4b58b0b987db40273105e19d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c854d15b09f5c662637084c88330a4629c8acf4e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e9e990c5684d9383b9e752511a9d5f1c85ddac08", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b7eec0d0f55dfda10ed3eb7cedf296b643facf7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fc19dfda201ddfccfcb9cd41c2c69082038ab063", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d14e2df1c69807460ae4db8452813aaac32465da", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2a9501895727d022508609ce09bf88aff3d1875c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8837a6967432426766b5c4d9c703fd60409efa56", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "41d433864ea15aa1c7b909461b8e872ddaf00b0e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a917cd2f72f725021e09754b579d5c15cc8dc18e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4902b6a67d371e68bfb65b0af8e96da924e6c89c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "79281e9cfe75d3103b2d50dfda5344999f15c6be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec9d7be11b87a6f7ce2587337f834ab5ee9cce3c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "3c13bca25d6cfa5418d5f243c107fa6d4ee8ff90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "df2ccd716a7fa55ddf9b21f991c971d86465f54a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4c97066800bfb9bf9fd531425888317d8807659f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "40512284098a40eccebabaa59c2ba1b3166d9618", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "641ef46b81e8eee1d5aaaaa0687238ad6388b105", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "363ef01a2db8e7d5bde422bd53d046e3958c9b6b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a940e3c37cff8c175a98f6b56ed2c95e4013905e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4c78244ceaf558355bfd272be94a8a7c737c41a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c1b0cda89606c2725a3267f721a04d9db1d4dfcc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "cb1e93fda936d9b49808b5532f6c3445ed316c38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "5778bb217875e7583b7e75ca133be11b61470ef3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1085f7215034d83af5d0393dbc92b1746a967e0c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7ec1b3f21a1a2904f515c72db544b111ff87327a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0cb6068c2a200cf2bd61833921a02855cadca1b3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "86068e7fa9fca28a59d1fd7e10768e2793db5c1f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b1f1881da2c0a66dc10fb0764cdb90ae5bcf82e6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fd4889336642eb1b5c6fbd90d48c869e6ab016d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "025eb81867676752797955ed61694e7e5aaba0b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4968d05b326acb51e003a419c0988d83ba70c324", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b47260363d6cc060a311cb088f6ecdf332f741b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f3765a671a401678a4c0ab41a5c48f2b8df34a4a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "97c5b985d9940eec0c6fe85241e35b3bd537f6e9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7f44d83d7e95d556b387d377dd1a2adbaef97d92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fe36c7c2321c1a38e8422921756f5deeef544fc3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "2c0232210e12770cf5308317c1f30ac2a7795338", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "558f7c4f9b7abd5be635e5271de3c5085f86d80d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "de5439289db5ba939b956b1997030e94af68e897", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "17f1704b8a6edeb5fb10e52f33b3a36f206fd410", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b3f528c6c99b39210c0712fdbc8c1cf5a55736bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "03a882f9cd9da0f7b815c17b607324bed573cd56", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "08f2ecfbadab38206d020cd53b9da9813c87de1f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1c6066d1abd81777e2d0100391d5322fc186ffba", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a1dcf3db3b3c422326fd0cd6c6659129a71af59f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b4dea6556015e99fe5f998bad29aa119d22ac0b8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "559e0a049cb3c2800b55e689defe70641714763b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a5923b4061ebbcb0b6ee8925f1648a4f4033a03e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "30d91fbd5ebe8d64acbb68a262bd554aafd960f9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "22a4b1275a120a42ff21267d03573a525cc18c39", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "990b2ed1564e808fe06e6665423101ba43f57215", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "25e2269b920afaf8a43ed1091869c0ebde392401", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3d00907a7267526018e38c18253cd0137fecf4f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4300b7e8b8d63e510ea912b74368f662a14829d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "586676a978f9ba51e389b768c9e949a54f5d51ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4ed43d1c8e0afdb6e42bd40fc4dc90a17a6732dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "15324847e4e58e5769a3488eaae87cfd5efd3cea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f36f76c495f2c393997ef0fa86a99b93c66f7d92", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f7c6b87c94c3e704d03b08eccd8e8b82b0b97777", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "46d4793b52ac88c94c345f2df59169300ba5295f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bf610108005589e704681a73ac5d43bf14167300", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9b7e23e9540bb1c046f2bf303510f8670a9c99ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ec22ac90813d8aceb0512ba44a26053a8ccbdebf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "055aedcb722b4b0431405d710728ba79ab9018e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "53c56a1b0961bfd7485bcf751c21ed844d6629c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fdda548bd950016f90c2512b51e78c927ab783b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35e64bcf01b0aad2d3c677adf0d1d5516345c486", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "fc98a226a2f75cc5ed3d5335c3b67b65edab4111", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bfb66731054aeaa8e2003cf7a4c7bd06c19c1c3b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8194d33037aa00bc168adab5e9750afcb05df2bc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "842aa96a5a06589e9885931eebe38a99583baab0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1aa47d9fc010c53ba76ca02e50b92778311d755f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6697b5187b24292701a031feb8eab55a97abda70", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "9a7eaa4aa355df294e7cbf398ba7fab0a80688e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2be1f2e9e3ce1e4396298c9c1b732a667ebea10d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "58b65807e3bc3e0b394d62b3d917394709f7eca7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "439c49c15bcfcbb4e065ababc41190ea913bcc2c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1bad81d63a94fb68801db6fba22b89b5e1bc7f8b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "33ecae52f495c29d5c22bb67d28911235b547a0d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b625983a9d32ea75569b16b7e336205f024596f0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "85f73a63e7450cda1fe9fae2d0ec102ce3ca8560", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9913d97c5f52d5fe89961cde3e0db21beaf35d15", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "89a48de57c4a7d9822246477af9c2ef1126dcefb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "097a820ada4cace05ddec4cd6adc42ff430bdc85", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3beb6f3dcb58febdfcc35747d0d4761bf4997c98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c11b42f9bba4917d1bf117cacaa7ff4865552ea4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "6263f8ba0e6c27bea260c63f23319bd1d2b2403b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d9967f0c30bd477ca7ed9a8d9ebf74a3522e2a90", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bbd611065bdbf3af5b564d8782f7932b2f83519f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e73fd00c1bc2c7e86225e4e5d75a2ecc6dd47423", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6c785153ef1a3d6116c0b6ecea51e18b4f32ca28", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a077a58b3b5cd490a0e71ceda6e2f268c6a9a400", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "8fc1fcda3e6bba38ac1823a88dc1c0277e9bd949", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "05fbbe98a200b3e9d920f8493f1b0b4907fa1f61", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b4f11116c986a9828ccffb69ac7ee2285bdcdc7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9230aba4e41456759fcf7105da4da26e26cefe1b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4766aab359266d4ce890b86e105b3c01aa974847", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "26807056b3d0b073f277f4657ad7d558b0a3ea20", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8a87fd3ba3463d020cde67d364f35b9814921773", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "898e7a340c2a1b3e94844476768e8d40f6467d47", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8311c4a69214975c21fb3072818ab9667ac3625d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "56d72715b6d7afd82c686e27570677cddbfc4c7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "f84300151caa004e62ded6345088d2f240700bbb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "23ec21d97482b3ae01f9464cc2849da8fd63541a", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8f5d11ea9506dbb619f42700f1cea044a5fe0844", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "739809721db3f8d721b83972bf0810d481ffb49d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fb723ffc22269f8311e882434089e1c6f4195c04", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5e4d69c6927042e6430db2e51271b40e61c5ae5d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9964b1c068da02a9904b7871dfc8dbab9960e80f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5150f512a493902ea4259d15c77f1bdde122e1f5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "462ab0b5e865116ceec973a987a2a881512bab55", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5e87970121e2eebdd0035e45fdc4d4aa4483907a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "675aff8fc69357b0e3fa11a371ec1458d65c5fa1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bbb7210abc27655ddf486bed051947b34b78530b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ec5e3a79acad7d6f2ffc7de0f2fb825f452d5a17", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "42f74aa4dfd28faa653359dcf6d4092bc1d7e31a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4902ecdc2a7f5e8274c2e3f0e73dbce66ea35d01", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8ab43b39f468ac294f7b31ff87a040bda0af8106", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "85f721fb85777af313e842262c2c7febba43f851", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d11192c27ca66b1d32c73403b5b368d4b6661e36", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2304322193785bf5a4d12839600ec75ffedd88e7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "1b327d30c3ba74108a3ad2de2b7304b33d664700", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1ebcd8e282581d7e7a5ac0228161db9be0027bef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "23dcf00c684d5ad8b5b9950ff7eea8197d722f51", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d5f6e634998ecf9f2320b510d809a11992d0ef86", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0bfc3e612562b46ef28f497ae701a48e23eec938", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a08698e9833ef5ba79aa201d9abd148a50e6738", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "1c57c77fa844608545ff92ad294c1fc6e6efb09c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "74259e4d745595f28c0f0b597b4cc8a4f249ddec", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3642210fafc5155fb82262b51d22144d0fb71b83", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "021f1409eb11331dd19a5dd50ebe09cff037c305", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "557578a1765ea0600fdec24f88623c89a3bbf2a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3e2ea59121d526fe6e74498beb7fd0f4c6aaf7ae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9ce25c33af67981fa1b73cc550304d85e8e6c3d3", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9173e74c71c4cd75846adf917295ee471866cc10", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8d6091919a4d4bfa2d9df95d5c31ad09e9272596", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "2b0abd4002e037d048546a282e02f25020e9a5ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1ec207081ee5b24f6924f9897cfc1d2d3ae813c4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dd2fe75289f229ebe43988eaa4b023cb675364cb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "b3b26a08787056cdbf952ac033107c32f46f27d3", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ba80476740bb385471fd1aaf9063b602c8bf564f", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ef73f824bc2acac5346023c3e5da2ceb9aec1dfb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "65e4c5f73cc7be7aeb3c58b7854751b3610230d3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8f30252147ebed2f36790e49ef5e35394831b3bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0c18c47925414a0c1cea5c1f792bf3fc61e1b36f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "178abe81958c48575fd6662b9f6ab1eabea12300", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f2ee8d35552d6de58ee2c41b22ca0b51cdff4908", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=person\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d9726d3b6069ea839a42e091179df00b4ab7ab38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "92bf3b69964f33b6fe8e2f73ed42a8fe769a4470", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b69fd0aa256578bdaa4512baeff66a45285a075b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c5c022893995ec9572dcbdb699493624780e8d25", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "02acc169eecb5cfbc73acbd3b86825d30d4ec525", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4215ab97b483251efa4fea22deb7dbfa16e1dacf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "7ecf58da5ec8accb23241e242286063d70b8f379", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bebf9f9e0906815d781415b9f4b8613317d13a98", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "5e2d0badbd99087c6c19a17c43f3eb65d889926c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5528ff2beae0526701ec92124cb1367e7b501468", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "9b5c08bdc04091796abae4eee7798fc1ac9acd89", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1139f619764254c331c256b9b29ee6a764b0fb01", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2a8bc2345efcc7ab7df9baa4e9ac95c2467b9693", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "77a4c21e8b584ebb1a9207900458780fa9398efc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "321e59a875c1edae53b6d06785ff234051204624", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3c215733c2fffb0e29852f1b9ed44d324af0f3ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f90059e812d40df7b69277fe6d051423b6534522", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "cc60fb4685b0ad805c36d78f4472737e1cbf110a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4ca1b27cd5ea956f98db08b28add50aa34f6bec4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d0a0219f96c3b0a57efd0152b6d6bf856eb8d26a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "51c7febae7db3d8503a6b1f2755fb84a0a8810d9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "670dff959243aadaa97cdda65467403d1a912ccb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "81ae7f9c8bd1580a9957d83a487e1c4993f975d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "42af5acc21e5f485e5a969f6a9cb392e1742e9df", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "be116b4b3d7fd0f4496faff4fe14dcfa123c95a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "76fd191400156a24fe813c9052216824e120bac9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "202851354c7ab2094b62b3e14f001bd993bf0484", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "100bdd3aebf5f61912f5723bfb8e0b775069983c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9221673d3a87278dea9d30deedc3454bfd853d90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "60b76201a390efc269fcb5971193f34fee629eb3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "db8507f32ec6412c097d82773498b554667eae7c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b90af6b34adda74ee5cd07ed3ab3f8fa1b36865c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "bf2d81f2eaec4e6bc86945dbd6ba88d305d0154e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a3eeec2d2b2267cf574b5eb14425caa781d2efce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f072640214268546c1ea298894bffbba86f16769", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a99967a89752e976851ae5386edb9346627e21f2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d14dce54f21c1160b62d02c8e3adf87b2bdefc27", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "227b08d2734bc9fb782f5097d62bbccf83c311c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "5cc56e3fb021a5c741143cc53a0957cc7bbc712d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7f1a9219664153dd00d0cfc61968709c3df01e92", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "4b0ec414ccc748bc79bdb07abea2965661e166a8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6ba59554a3234516cb4238420ddddf4e3beb4172", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "c12e6444cbfb78a545799615d24e2702f0aab85f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b3d37dda729c41d49a30bd20949257c4a3b7bb75", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "95fd1ef706ec58d382ac172c18c6822f605e4d52", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d7fea1b11ee22193367f542c3826c717561eb600", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7043e480f7f1a97a478577a2c982865eca7f0fcb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3acf4717d6d2a804908523e16644bb3271e07a93", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0f892aa04543b92d44a80b9f179ebb753c2491e0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ce5c034757efa93b2d92b05b31c4e2d89ff4b336", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c5d3820a96c570e6d7476fad2d1079a2a9278ba4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "06d56418d4267e3b55cf8d4e138fd57e579d170d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2aa4e3b54af9c17dc1b9eda728f77eeabac8e943", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4a09482b7192d3d43a4b777db334a8db5a12d89a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "ce3c5972b5d779bd97e6ff7244af09853eac01a6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3b581641de2b5ccb35edfd916cf9ea362b575d1a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a087b9f281a4971fba34b288636e926459e43c82", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "325652d1b0793910899483a10a2ddeb02742875c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e0f792b7e663160af4eca618d5959eaa6475e34c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3ae6c8ed675c17b7628a8633d5cecdb0ace4fd20", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cc4e52ee8f85755b2d733c840a163a9b34f8a98a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1594811f4e5e676dcad306b69b80a28b8ace8937", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "404356edcda7af71b6491f924c90e6a0d2d153cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cde6693b404d191a93ce4b21cf0523d8a9336619", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5b722819d9931c60d4aead866573550a9c643ae8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7263adbba251f371dcb33aa563015cc25b934855", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "545f3ef117f7cbe2f453b2226a2ee99ef9f7bf04", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "dab6d46c90ef89acc54b865e745414582f133c43", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b68bb6517f2bef38517843f5b06129362e553ed2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "883ee8a3719de65a8f8e2ff69fc0f1cb2762a1a8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c7006df4c974586be8e11ec4df079c25d7bf818d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "b3cae5215b8d4eea7274ca2c4c198f8255b54b98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "80237afda0532cf62d0c1d80469a513944112d1d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2de7bf6b43d757690d9b2038bd8179ebde671f3f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "96ed35a7252431d74a3fb6488ff0acfeafb64aca", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b5959f2de5ab235eccb5f4cbc5b1d26de2b8e2b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5e29c476440fee4a85dbe0c05d2f92366464a6d3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "86bef65c78ed44ae86557fa036f72ca56b10dd35", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f6ce8f9cd39f5067d0d63d2c17414831223f3640", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "aee8b41e04d0194084b9fc3055ef7a1b683c777d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3ac864a04d02d61fb47cd6cd4194a719aee78986", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb3c346f96565cd2e30a55e42368215b51e56305", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4e83ca88bd886e7d32b46f681a5f504f17013126", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "65cdcfb4479863b2f89cb837c3b83239044e3e80", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2f7bce965c09e764b4f27dfaec8ef69d063b7869", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "671f67dae5595275bb645f4271777f4381a82806", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0b459c2a1f66fd0002fbae07e7638f2cb03b1b69", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ea521228141f9ccbe895dbf25b8b5f057927b6b8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f101340a59e9629a510cdf302ba03a10f04d26e8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "6493bbc9d2def87dc47ee570706203284d1ee84b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "dc4c1afeccecce7fb350dc0097189102451153fb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e7968f9b31320ffaefcda22bfd881d7e6577d6fc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ccb47d81d841161a41b43f0833b4e3401ea6ce4f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "94bfc8315817031e8f0d6716e71136ac23ff0464", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2603b8117cf83154954c92b20118f6edf4b466a3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "0a78537e21c2db85b8c19191f703a3678ea60a63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "810fb43736bee385b1d8970f7d882c989e529fe5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a1aac00ee5cee512e4bccc72c41ced68fceb0197", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "506723204f5821a3a2bac5ff54a9685d9de5256d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "32a365bbd439d213de27ff3fe6cd38209f5936cd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "e08f38bfc5fd5346ec9c46d4517b36e425c0aec9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "3f3e3cde89b1c169438ab629c5660e47455974e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "857ad80c258aac07f530aabdf5137b7a72daffb4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "3b1d697c1c337de94167a49bfa4aff9136b174ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2208c2185a7fd65e157603d5fa35c0e254f98a63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "17cf53e3daadfea8d1e55c7d39e7e8e0fa08c939", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ebdafd68eb1a54695c07c791d8b8f839eed315dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7a62d1dfdbb51278589c74c24cea8ffd0892b955", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d8ae3ef1b77367bbbed70f55beabe3f9a801fd6c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d1410d83b97a7e368758097377b5d9fdd887d294", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "219880f88ad5c2756e43e71eb672ecb16f1c865e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "511c89851b88390644fa9fcea718de3db4871fed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2db9c4cbed6e79ac2d3e44a91c28f5f367950c3a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "05b880f52004abea3d0205e6edeb4e7c149742d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fdc1901bdf51e7bf793c6aacdda70966a1e5a074", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "fe3e7879a5edf34a72927f81cf4fd436d033b781", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0f2e4c3a3f84bcd2b4b728640cea44d2695c50dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "bc58d672472ef42e1a42039d6b2b7115459bffdb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e1233f96753cef4d39312316d8601880d0f52117", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c1a6c18d592b10945e776159ea0a5f799739f180", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b17ecde4e67f446eced06dc08e1c29744497d632", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "276084e1dac530458cb3e82fe041f0cc487ff44a", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7448a22821ffb1d6163c25e44c28c3b013e8569c", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d9456ed4d0552ffc702b075b722e8a36b712e0e6", @@ -2951,18 +2951,18 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7984a4f415eadd9da8ad636b6bf734774d3928dd", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2bc32415710bc6b15f7a507a552421e69cf5bf6e", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "daea957a3da23afcc835330a9c71617b8421b2bf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "078db8170f0c01425d7954975856ccb1b869a295", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f5ac38a92c10a05d2da42d58ea80b543e4e67475", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "348b3cd6fe35d64bef2b41a6ee1f3f2339facb2c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a5677648d6115d5983f64df1c66292c2ddde502d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c4b3f41239c4a6933123755d1751f3b71fff53df", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "d3d25cba7f7d85842195a5936a5977b32d71e21c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "72a5358b8905249ac53f11594fc5f50a17d685e5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6c0e39164e52d90c32a684185c4a2077c5c6e5ef", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d6f75bcc601ce0bf25bf533ab9bdee680679821d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "975799d2abfb78ed51524b2b5cfd5a28384d3c85", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "99eba6199e21055485d65ee523cd6ef7278c0149", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9e616eb59291f6b7755dc2ee0484e81b6a670128", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f3f833b7adfab33f46cdea2d89aa35a686e3a49", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a8cef5c34e5b5dba5f0b81ea9a39df735867e59d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7805b2d1dc9fc9f064bdd007f4f1b10ed92cc10a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "fb2ed60450967af1f0b897845b7594b64fd9be98", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ebc467fe1f38d73b997f5e8e37980aa7bc2d2da4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "54cf2c6fee984f75df347ce7204e808b491c0997", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9397921505501504ac6a10d29d0c10559df5d5d9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c9e009e61c0d86020ec6b7e8cb6a213e40e4d1ed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a52575390cb8392c5ca5a1f9beed45cdca460a7f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7608328bde4eb21004ab73888b6b07a8e5c276e2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1f9761f8d48853e90964dc10e776f1a806eac18c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1f3173c37d668745011e401a12135bfa87bb83b3", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7686ca58031b8dd1cd2f890c0645735f9f4d122c", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c9b813020a8980d7a57314611f1f7506d1759266", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e19b5eca553c6c76caf56b03079473186138f4c2", @@ -2975,66 +2975,66 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "617eb3e62f7fc5678eb50b48db12844ee1356ea0", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a00a707ecea052f7077970efb69c90e838cd7391", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "fae0ba1cb0e12ae5da73f2a04a457e5350019631", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4f74966512410e358cbafeac4b3c4ea525a4d83f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "09010f0b2a04ab03c56046ca1e01fbfbfeba34fe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0394c7f3b5be02fca70b7d754376e5e3afc2ba57", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bdf349cea84bc5fa9b1df387c3a84f9e326e8fb7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d24c7c0db9bdb57bf1d134f61cf73f57af538409", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9148ce25f5f094fcf8cdbff87ba7741a07c96306", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d8fb21189eb4b98fae4ee5ea019858663254d0a0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ead8378e9de7aee41f4d7805b2cd1f9aa5e46d86", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e01eefb32dd0584cee9e7920b7e44fcf412567fe", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f106cc6b4d8f34e8c85df4e896cfcea2b7d15b0f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "586af050b45a0e15e375eab991fb61bbeb4296e1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "4cac8853103555e29457910078fc45d981d3d041", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "26ca47c461eeda66843bafb9a9852a7a89e2b1de", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9cd7746d912c178112b52cc73baa8ee3a40f5e43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6a4ff13049810fe5fa11503bbc2890b90c5f42cd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c7fe90417ccf6a739bd739c87930c7a9391cc842", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "55cf23fead50ae39ea82d2e898824b33defdc265", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "34ac356536723f78b97d860c2adde4c69e71af79", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ab09c6386d33df064c99ae4ff2b972c1e7274bca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8fdd0be4a05d1af4dacb89bad94e939ce9bd02d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "dc4677390387b611f9045675aa62f7b32bf84e92", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c4735292f9cffccff68ead3a987eff627210f3ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "37e0573988e68e647f1118f0fb5c7d0ff20d6674", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "897741ed420e40167183aec58bc7ca76df7f5b56", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "956fcd1600f1aae60e8c51852ef2bff3bb58415b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ebabb70cb26def447c386b7141beee5b70af3870", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f484e961c9fa4577d7ca986241547ee8166e65b1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "435ab0fd237fdcd6a281777007cc9ac9f28df2c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f1d8d0f4d30a9cabc2aeda69bfbf4e6253028dbc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "02ed3a86a61660051e0f81687caf5a229cc9ede6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "adb4557a10489713f9999ce9ba10bbbdb5feaf8d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "2df74018eb8b7eca556a1a4679e4ac1cfedf5c94", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5418eec29a7359ae2bbea196fc4a6a2be4d2c686", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bb090c5816ae5ef9938428edbb501e7188d5b2f6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "222f0e5552224f63351a63b86781149300bd6595", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c9cb32fa9db3fc1c44cb32f381392f7d9ecbd95e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "637885803020dded969a58d2e27d775837529cc1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "22e5fd5534979f4f4ba63e08fccfc3ae3107e833", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c4ba17768d01c12c6a8b06c5b0b88ab0ce337693", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8847c3ebf2c1bd322ad7d0d76db3ec20f7eef4a7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "051dc362915d357dc142b07a123242aa251913c7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f8aca421661617da6dd7f63569adad76f36153b4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "87ecdff3ecff63ec6078b5e67d7b1a87c1ea5157", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "37ac68f5a278cbc0e06c8f86f060a6dae3084c0d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "56232dd1ecba8646317e96bb94cf0a720080dd61", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "4aedc35b7719942c6bf8211992c9d45bb2fb53bc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a1fb1ea4880d69e34c11c0295c62d1305b64dc67", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97863c5ad8998b279a81076a0dfc36066f0d604f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07ab9862fa4bc7be36632d64ae45678cbd801c6d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9a4f064d3a6285e41f67dc404b05e3c2eefd9822", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0393b3b8723cf860dd42e9cbd8c1c9f5c4fb2dca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5d69b730e7bfbbefb6ac81605fa5f8cdb9dc8c53", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "dee998f0fea607a86520e3867a972c0ee219fd93", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "346a0e6cb23fb2052cf0ce22a824f077bf6efe97", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "53257b763f54b9b4141cf45eaf3e699d747e3922", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "640a935847da0171977f752d0c3548765b7eb51e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c7db10f023b5a31a5e899125a4c5fa8ec221d9e3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "604ca362bf94215df92c4b519d2fcfc3a782dc83", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c3e56cc0a089a935c0308a42b1ff788df3aab041", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "697e3791ba07aa7ca608477c62f02820c8658784", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "94cb85041cc8f50d418699b0adbf2f615557223a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "441cb59ff2d8ac8020e962ec0a5e02d8ea808d03", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "12a159710164ea2c0b91790266c44c57fad2e3c2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5021e18f53e363a7a9d5d8020703cf5156f8d595", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b1fcb4c95273e8fe4b72eebbba4a7d217b0e331b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "bb7d45353f912a062b921bbc325e6693f6896605", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "023944e6a8b0b95e9b8e16a12b21090620b4e1a4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a515541fd102ba77e1003f04fd5da13d38f14ffe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b291eed4193187595699012cd328cd2186fda0f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "75f7fbdcf0216ba38dc978f30fb9fc9eacd62d9d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "af05bb0ff575b3ad8fbec634ea6f050ba2855cdb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b3e298c2778f8dd66fd44b0a9d3d6c33d1fb306d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6dfc53406764ab585d8141bc3c3d8edb093e3367", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "603bec60a1597783c6bbfb5d743330970cea1afa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bca1d16fa260bc630f2630412cc36dc294bbb54d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a6f10524bbccb96b6e9a5448d0f6238ca071e493", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "e84e7287f1dbc7c5cf03ab54f6187cafec3d1d60", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3260a693502066a162e4ff92fe2f895956a315f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "cf92f852af69685a914225cc9e8a0852c3197258", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "0d687066e75916848db2d23fa6229597f834a144", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "567ca23252dca2cc8f088b36a84b130b6576b52c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "971193745be2cc2b26ad87046cb54b28f7303c31", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "565951f578cfcf686216334c4053d77623fde897", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3d5ebaa64179ecd4556316efeaf3ef7148605d84", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "937509dad953ca0f6420e1efad07bbe6af2ec7e3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "876e0f8646f7f46df380ad2a0bdaa756dd35e9b9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7d3867d279fc899359e6e5318540280b7797379c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "98a0d9b52dfaf0a3a67ae33c43c6d9d5a719087e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "fe85ffb3d757ae994f6700352f9136591b4b3873", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5c1b6bc57d8f2d230fe7119f610723111f0e163a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "122a82a58396a1fc91a2ffea5da5a4685daece7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d91f96164d4c8212f1f50ebbe0ca55e8932fe6c8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0ebbce90732ee7f28faae125f83edcf00f6b3681", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0ca4bed28b74fa81b6f3fceded03e57ea4a077fa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "88b70e76ad008b40a6c0a1f058843f87cf6c4df7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ad574496ed3685aa1c2dabcb0a00c392f51580e0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b416cbefc2b15bc6481f6343667ab282e2b634c8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f703d9d00e39d87ac854dddb70e118dcedc2ce87", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "856bede22da394c98ff1e570fd3c417afd821df1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7b634a1b6492d60a02cfb1e331e1e7cae170cb1a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a5959c858e1ddffaa6b03701015bc5d2461fe84", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a153b2f3c01863d18aa3d994c720dadd7eeaecf1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "ae1f99685fd4f90e6dd20b890a3bea9aebff75e6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8a7433e533822b9ef71a5ba511cfcce6111d422a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "12ac6bb2267f369302af1be8e2dcfd009d49c6c7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "88b77c454724f75ca1cff1056fe008898ec3018d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "21160dd86ccbd41896fbcecfd2c426e4aae8e80d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "720cfced452863f94878184e92f63bf0316346a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "01d4cb0290d0177a2e78d32340316d9cfff922a4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "bc020f4b9d10410ed4b5366cc71befb97e4a46aa", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f69b7e1d73b9c902a198d20c0cb0f7be273ba8fd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "3cdcd32a841fd4b15c7b63621c8dec14439f6829", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "c55f5f8bfd44b1a37c7cf6f41d5d7e18fc724da2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4fc5b323c777a8685ab810dab5643581f7fc2b67", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4bff7894f9406bd90bff365285bf2d0c0a1fbee3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6abc1348c4429d35783352473293e2eb0a8651b6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "42eb20687e688e4d44ba48d197f46b98346e972d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "155f284d71d5c5ccc6aa4a94e2b38363a6112882", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9c1ffd9a9a3c5c942c9cbc7bf02a9595454ba9ea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "627b1825d2e675e7b9f898c1d95ceb786e6e3363", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "608806b751eaeed2da3c4a23cabeed9f533392e8", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "da22a8a9a4ddc217bc40ab516d1768446bbbbce3", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4c599538f42aa47f8493d3ab8189c4358e8ec014", @@ -3047,18 +3047,18 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "363b7dd627f2599861496a8e278e44b0362d9116", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "8e020dd46e010cf5b1cd0c20b9e0aadb45f1ffaa", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "df42cc3f276cbf68174bb507974119d4a5d16190", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7113d3a96011e6a3ce7b4b9e4f49c2450911cc7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66ddca90582628aaecd1a1a5197253682d8a2913", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b6f29889ade40bd57caf159b14725f5428cfa8d0", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1425441af3e90e6fe4cf420ff5c6db1473525560", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "734519212cbf0e73191a5545331d8b1fa8a6be08", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "57885d2cba5f7612a707a225e4f53238a635e2ca", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "a7debd552b2f24a8f855f7fb5c8c58baf41272b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "dbb078292e25eef12cb613ebb4639405d09d9631", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "616f374cfb9062dc1bdfb6b5d8f074fdde9cb0ba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6c40f0fc969d0834e1e9d2c9ba2d2f840aea7b4d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9fb36d150cdf0ed1a65869491f353a6c395d101c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7229893f00da58db5658c986f33f5f1fdece90a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "8b531089863590fd445aa31275129999f7ad24e4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "4c055a84e58a48a8e9633cdc1062d432545f3c22", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6836d9ad67f70040fab68a1b4d14a118d29ddc17", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "abc17fefbc1bc7a87e75650a24e4e9f38a0970d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "f0b4a9bbe6185f2149b629e63e709cd6f6c3ab1e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fe362ed90f846ed33a7b2291124809f6e461f4af", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4518665a088241782333465d85fe080b8a742cad", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "66ed3ea3c0ddec9a4ff2e30ff28e9ba060adf7a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ed66378907b8a7b61f0145e7a0329d4e92c058a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "61c23fc2d58b5366cc18cae247750bb331090d84", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "249555f65df16de41066ac04d9b1802149e1cb4e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7042e42efc126cc33363077537f796de616555b6", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "958c528ab60806546ff09c039121cba0171b2ec3", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6b647bb88454125e1ae1b4f5a951193db56d7a91", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9d5bfe1a1580f3e3c9e4ce8bc85ba6ce8936a038", @@ -3071,66 +3071,66 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "257375abb969986d4e5f75d13875983e99c7438e", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1843a9c9ada6a0e1a6313471e141c798fee40000", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=resource\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "03b6d18f9df33440c9191bcaa4c01c8a699f12ba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "359a628f736a1320eb2b9aa9db548e949c7bd884", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "95f9c13d561bfc39d2572cb0db15e4140908e8a1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "935973f3265cc8d480f3b80c472337de2ffa9ebd", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "870448ee9f63e1f095903dd8245c3edf1a261bdb", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "635996c9c6fa0e11d8f1ca251e42a8c1e8d05f01", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "9b4860a67bb6ea19ff9a70ec07c070bf8d256d77", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b02612f9da7252f596ab8176091beb850ee97c2e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "a6c0000747b009dc445f65065cb82411679c692d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c4ad32e0321e8f607adace9fa010ef32958b8267", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "cc607d44a679f3f3c92b446e3ac8cec6a29f6871", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7bfefe1ba3d4de77561e3b4fc8375b7769753ad1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "01a612c52bbe65b7ce804985418892f93a6f4ded", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7cf281b95deb9051b9a4758fc40e03557f56bb1c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ff0d0e362913ea69236c440bb8ab80992e84a04b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "670241dfb803767a6fdeea7211f906daf3033eae", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b2738befa6a04860d1fa36b8c3bd82f425c2aa6a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d7adea35d4866c7e7819e5063f14c199ce8c9d63", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f0f4d3d34786d597e0feca349eb4103c049465ac", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "456b0dbe228d37b82c10839f06c9b4a5157aecb5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "cd4243658cc9456dfcd88bfddfdb75977101f603", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cd0a867ca844a9750b986a87c57611a6ed8d6c07", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "be614aad0a10c08010775e3e772c94ac2ab27a06", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ff176473c8b90af9a53cb433b4bdb9f45684a12", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8085896404f50701b92d253b8ae9e0189d670d9f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d586d83a6f7a1d0a3a99f00ff2d5e49ddb8a01e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d3530574f542dc95df09a21b7f3835e6d569a193", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2277329a4ae6a40df3ac01f48817badd16d9602e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2b3d0b84fd80e7c24ec39e8938c7b88bcb513547", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "10423b96613dd238ce83c184820f088b4de6fc38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "85cec5454030e91ac306cf81752daf5d72603817", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "64b110045046bde309464c4bcefe076ca073a7f9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ec4650a0eac8601a1546ebabb0030b5b1d46f7d2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e6bb3eefa15ba92175bf8fc709754d09afc9031f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5a96588a26fdce67ec6e80e7c637595eac29d023", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2daa849aaea244e15bf1ad922489f061104986d8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67bd9d97ef07b8c1d72624c22b7090a4dff74c6f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "75e1ebf46f099c86ef466ca58e7d4231825d5730", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df263fad8ce8b1f7af46a39ae8adf934dac32dc6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "57cf4c0363e3c81a74eb69d955c435cf77037461", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "16cd196f42b3aa8e6565f0a6194812bc378e01a2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d3e153b24679249c3ffa2a3da1bbbb829228cb10", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "5101b55eb7b54dc49d9358b23eea395d29c86514", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "39fae79c20a82803012e140aff15912b99f4b336", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "8df058f405e78b5277c4221a3d0c860561759fed", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a8ed996d76dea3209ac7ab4228c67568a64da05e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "39394203703f63e93520b00c7d20fda3790748be", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "219bf8b815d1551f321ca39051c03dafa0b699c5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c341a52bd0589f157d70bbdfc500864fc18d04b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "68cd92c56536a1d1e971a532067ca089f7431bf8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "dcec286f612da7eee83fc9a3d310f69f87c9e9e9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b1d0c5952c5ca1098d3fb3d7e36656a1189c8af1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "505458ced49573a7015f268185bfa505e4ce4905", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "bb4f1ffd58b793b922e47b2b6b0dee7abb1b75b9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "0d6fca10916524c12e8d4a119c90b4d6c852e6d1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "6969f0bffe55fd0dee96e5ef5ce7a320ad3bc89f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "b5899b0290deb94735c9b4a331f8dfbb8bdc9af9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8a321e7480223a209190b846b7911492d0cccfc8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "00f88ffa37d354701d925d676cdd48b5cbdc2247", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a5211040787d01fee61330117f11b457ff7e36c1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3353a532c86d6a21a03407e195ac946c68cfa43c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bc30131b31dc8d0136e90c712dc9a98360d90305", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "aed10db0e7175c3118b534e53cb5b00a10c41898", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "79b7cc8631f808f13fabb0756f3389d4e2250437", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5808609eb62388e9f10520161264532b0472d2ed", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "22246ceb6e06447bd8b6e3914c4d7fcc38b9d97a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "39b405a4e208ba7b23c22005fbe5904a667043d6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "9a7f14030aeea4f61b2877527324795ec4c70e49", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "3923df6351a60b92d4945a84561d2f03ffede4ee", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8357acbc31ad668afa87b572e6e6702909c172f7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ae36d9f87a79ec0eab72c119fd331502db41c2ff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "02a0722ba5b230cf6cfb334d50bc8835f359edea", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f4f9ea78c40fe755857ab72eebf6f87674a539a4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f7faa483348087c01dbe9b5723d18a93d08f160b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "51b7326bf40afa1d80977ba40d81b8c8162643fb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fb8e1b998970297d14a9b44799aa79b93db2af65", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "dda34299d48a6477f36aa47b182a97109785eefc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "baca55133d69153473b0b785a788121a37b0700a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "6945c031cddfa417540e7b2ecc3823be399da312", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "88194d079a99bbfc43591580e2f3f483de363c7d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "fe38868e416a52ed3d2947a454c3b627fffac58e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "597167b8304ae88f6ae5e1ac18c3876c2254a342", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e3ee0f2a46da28ce094b2a49d00f12d9601bd7be", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a0c69636b793a6596c22237c63b73f9b29aadcd5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e389b9b70d6db9409d1ce3366b8ad52dec77e2a7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f906b97a39e08b46f3701f93672bf772301d06ae", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "06577c625e0eb609999a873dd50b83b6f2f5c1f9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "b605a08c26183e845f80d5c71ee8f794d7f222f8", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c9385daa4bf31df7d3f61b37b4b2436e371806b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "36e85506b35a72a3d04d31d901277e89ad0eb453", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "00f0f7f83f797f57c60b0dfae82bca661bbd4d5f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d82c90f74d223794ae748971c09a3c63f3d83747", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "83c4705ae285318b9bd1577cff875f46368ed81d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b62e8bc1461ff6f429626381a74217b8e7fdaa8d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c07170f76e0ba6d856edacc5f0201751231170b0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "26c62b85c31f168a813db951d0c71b8be5fb5ca6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3d09e3fae72061eccabd31d652a6c8864d84f2a3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "09198fbf6ef14a7e503f44ce73048bab549c4fac", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ee528d1b70dd62fe45ffd421c1cd435e8e30dc7c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5ea5e3df3d435eadd7fb507c33cee62a42d39051", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d9c78086ed196ef4869d360801f2730342ee1859", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "779d9e92f4a2f2cc1aa0fdc0de39919b032a8c23", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "8ca1696b24c157cecf60eb05ca67e717c37858d2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d852edab642242e16e362aa2957150eb41fcb76d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "7362c618d5f176a6d35d4779d9ed6c133a6a0677", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "96b6777b8ac1cde6ec31671143abe1b0ea5e21a6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d23ba05e1625661d2e88686b4180d93c0c07ba0e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "bbc18ed7fdec4f36dba6b9744b71efcf9ade9eb9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "78e5e4d99b1b12917a8629495154651cea3bfa5f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1f7fa71865fe6d1d917af60e9b2a1e941d4cd8c9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e60f6bf1eff277656d41fd26a48e20b03f43f45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6c807c3cafc60ecfece1ad7cee132d891a91442c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "56b573df0b26fe4e834c494ef87a680260c31f97", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ad8273822849dd9473c08a5afaefac6e3bd5f5cb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2f3540d1e1590520daf90cd2defc0cf3054b0c7d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "11029b69303d370b172ee50484daf26aca413ec3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "84b5545da9545085c12f55db223ec0e40f8eac63", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "91690097640eff695ea2604acacf6505cfbd97d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7f0ba9f42d2d0e8251718ed873766fd26588f9b1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c7b50d19dd9ebc28f09f034d44549b58a470d2a4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "866e1907f0e13f27215bd2e2dde2e54a979d5b95", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f627ec6f053fea22588c69f347d946b9a1b01427", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "297ac2d87df3bcdceb871862580a74eb534011bc", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "be9191039a72c54e1cf3563033569e3b2f530a7d", @@ -3143,18 +3143,18 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5408c7d98a69486dfa7af5ee90005e0f56bac6f2", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f3b3d8d1f3532f4bff824de35e848fa556a1ae42", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1845053ad032cd38e8c8103d62b990e3ac2291e2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "7211b8280ae6e2fa606503c7a41fe13797a7cbc4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "543bd4eee33cd7f2dbf7dea8a8578217f23d08c9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9a043fd654b696857ffb95f82c03d4479ab23f38", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "1df121b75a8d331371fad37f07be24d29fbeedc5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b93e5ced4da5a366ff07962870c249c2e0cc0c08", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "90846ddce292bdbe8b49cd3f7a5b327502d206f3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "4aeb9d0d37a362dfdcb57d22b9aa09ca1ddb9e85", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "16d7bdf16f5d7aaa6c11fc640bcea0bcc7909e3b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "cb10ddf246f95a767eb64539f25398c907306e17", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1291a0374b54cb93ff008ee8e5910069476aa9f6", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb510df5961501e7596ba9a915eb67c4ed0a351b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ef1fce6e41654377087648547839041b5a1ab850", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f489d2cd0dbc414270ab81c7cf502425b8aab6b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "af9bdb1ee5a34ebe091ea308c270c1f7e2ce63b3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ab64e63b94bda80b9b35668c192291ddcc15b036", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "bf923520c0c9ef895e409e5521e1cf8d698f7e04", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "b008bb23f5b9c7df27946ff8c2989b2c054536ef", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "aebe5d900a1e56833eb7505a6acf78bf2d3a9ecb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "e5cc6035c090bc2b863787d8d558d2d9ec171fc3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "eeb1f4bc6ad0ab184b5bb72ff7fdb9bfc0d36349", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5437494af89b7430b9b209fec527722af10af9dc", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b9c8e95b668139fc6b2a481afd0c7d17623a1988", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "068e6eecb3419e7213e9b3a691c287607dea5aad", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "904c1f8b5382ca6bebec4d85d44f4faf6562ad26", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "be89451a26c6994970097daba401c4b6dcfa5d5a", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9bf34bfc6dcbd7b1019e7962bdaa47fd04520e43", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2177e137f207cb3d4f43e8eb96126300b7d4f52f", @@ -3167,66 +3167,66 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "640669ec95653cc4ebdff8b54a4939f1803ece57", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c4b3506c6f8277a104147f2d7a9ee99c90a55f15", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=y\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f50450ef4c1cecae264f79d45f0acb6622607060", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2c31d2924235f26292365be9f0955ab00be65eba", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3e6842dbc826a42cd815652d00bb7b152274529f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e9208886626d708b694c732c5f553e77ba762362", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59fea27cf190880f09f06092d35eaa8c46bb8196", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "37e4636c54abdd9ce849b9c52357369188b03d6a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fd93ea28ffe5109523c40d14883584afcabd0968", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "89bd2ecb5ca244e779170e941468abb4cc6ee853", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d1e8719b6bc7ed7558b70c9270765b00f7e8dc40", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "b0d65f7eb9237ba6fab029a497f645e58cee59bc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6e13c350958cabdb4a0f00d594d1e817927d121c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "486c314c450cab5556b5a0289f85cc2c477e521f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3153a26af2d42a2655184a9b6a9f96062019497c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6f08e3b0ec91ce467d96e8156c0e254a06d54072", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "8e55567012043294fe7aa8768df3671b5f63a18d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "2d496bc1d00f28767f618e9adb1f2deade182a2e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "642aa1d411956b3b3e9411d780049047ca9abf07", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7a76e07e98180df5500e1eb41fc7f51538a0307f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "e56d4d1ecc284fd3ee10baba9abaca70d2667c73", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "563bb8987af52841c114799a994fa505bab77123", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "55fd10dfb4af8d53b939803977cbb07d3f6b5e90", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "724c96fe85d2a3c4444d66d9358d2f84f3bd5193", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5252448c917cf10f69519aee2f30716529ab0242", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "33446fb39ca61b83c8aab311a3e59162c6670990", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "74c36fe94860e02e109be23c1299f794e7e647ce", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0261e323a49b3ee3e59eb0b361de30262fa8dfcc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e467c7a016c64ed85bf3bcb56f1afaf72501131e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "fb9f6bf42e0d4b17022d3260e60db423f1d5e5f3", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "039e48714ce2935cc0a1097260044d7ff79a2ddc", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "a345a627588a9690b963458a854d83a870de0cdf", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "2c527ed78940ed05fdd699e129f704af8f2faf48", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "102cf43e0195c9617a3605f8c541c303d8391fb4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "c7e977d018a9ce259f6497c06ec485127930afd7", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4a13e2355406512e92ac1dd0ce183586f591a6f4", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "fc762fbd790446c7b41cd2c975508cc55cedd62f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4727262390b1727a0ed0b4dd1dfd73dc5eef9f43", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9f0b26f27251ed6d67880ddc99a28d0ea43407a5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "f550a29caf0069188abdbc82fdfdef7e9b786ac5", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "684ba8c59fc5aed9c9b25e01a8e586b777dac9ed", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "c95958c451d3287bea51b07a423f9c01b16f302d", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "06f8866dcac5276f9d30083bad531a15b65d204e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "d4ffa5d0c6292d3d5dbc67d7cc083e9297496506", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f5e79816f94d167036a18250bbda23fcf47bea79", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "bd29a347d140b04bc3d5fca9c3f0b93d2d1faa29", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "6b028123f8a882ef40434b95857e411e4f123a51", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f6aa7e1b87a017cdefa07e27226ba026bb940ec", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d1f425efae7227f82242d0d421bac24b37017b45", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "664f2139029633f8781a1d5a84b5603749ddb066", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "76ce0973654f62a50d80afbf442722de9434787a", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19313920108be0d31e8dce7ffc15921c69364a31", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2c2a35a7cfcab0c761a88683cc35b6b512e14f12", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bc8e50289d153a044479e16766e3823595ecd654", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d72bf99e961a8a5d49cd71dab949c3a1c0843a26", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "67d740294ff327b9bc6bb11908c1615e76121ba8", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "71c8bb0cc7caeeeb7dea817890398b0c66385a8f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "52b35f54506180d04dfe50976fe27a8ea5f0e518", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "91ed24039bf8425b6903f7cfc5116f34f1ceec65", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "a13c3f1bc8ab0827d01d2e912db50a069799df64", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "78e38684fc65d0192bfe87e383bb3d0b8ee6407c", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "237448f767fdc0721c98c8b2b30cc4694f1e938b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "815eede64aa53bad18747bdda7dd7cb657b6f5d7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2fb67e6cc1c221ebd432567cac417abd3550c2c3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "46c306aed49f07d01f3ceeed7a4597d411ed56d0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "366d3646f528d9d5cdaf12b815eec9f3eb7e50bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "449f231a927bc9ac0a039ccfe3291764fe1ddd37", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "ecdce406fe406fbdfcc33bc33d353fd36665bac5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "3d54ba1b13ed85f58125b25deaa1de65767a926f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "8bffbeb884e70839518b517b9e841b3a03cbef33", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "671f6346cc6b204db4f180281cfb91d6e436dfbe", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "372b75e4385038024c336908afaa8a63dbfc06e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "241ca07f961396e818b8f0c1ccfa1dd9d5fbce82", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "ec5a15937744340802a3b1cea493936e7da7506d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f3eb2a874581824de091dd91258e7cc0ca95a938", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "104f999f459909a36eecdadee482b0e686c2b917", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "985a0634f411689b6e8cca36957acf427af1fe02", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bca6b0184cfeb86faa153fae081a23c9d5289ce2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "684693afb27b98dd0f9e65d1acab746ea1f11535", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "05db821d7bfa3eccbce120b451fb13b1cd9bfcb1", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "f4977eaadb54d0126aca4df4fb02226decdafae4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "44f89b87acf3d897357230df56733f569f911f01", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "94f73a6764c2e691f667c876375942b1ccf1b24b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "20417882334e5ef96937bab4a26efda9a208751d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1185ed61992b0d1427483e49df834cf786979544", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "514389740f11633a291910db50415df221bf7089", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9c7a3b608f94c32d2cfd9c927c76549235afa182", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "51e19004fc9cd2ec0a46a90e13489d5d301b739a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eee47493a3b48d6023484ac3c9b877ecb4d3240e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aabfd7aa8ca312e13da37522b5b7577082129abd", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6d787ac5a903ab6fa5acf0098da84c2f3e5f63bb", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "4b9deb0c19233e5d5c82efce37a7c597a83d1238", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "a2139ba36a3e8dc7611d2f2e655785beb0aadaa9", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "b6db663ef027d39dcd6e4a4b615149fc851da467", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "d79c31c64c948588ed3ad3ea8a1e86a392e6d4ee", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0c53d65f36cd15770aa631cf244d40976e63f032", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e6f3a6b34524face335529c941ea4fd21bbe933f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "438c1be41fb39e3d8e47e3fedb3ab4b6f615a685", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "b4303fc904b4cf366e9b8998e109025b8b4bcf24", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c90e0ced7fa9c7cecc457fb1382a847577642e36", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "449f3a64f27450ab89e99f80210b2fc3a81427f6", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "98f8c6f4027edecffe6a8dbad08cf67ee11947f2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "64b4adf5be0537647debf1f98f05deee03d0f85a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "463a2ca7d925602732ed4ca59ff1f70e61a9ad8c", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "4a9901a33a0013be836d62453fd11d8ce6f48f7e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "39de86ebed3a163c147a1be340a4933f1843c48d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "264106e34ee586f4c7fb9e0ed7f418d2a83ade8e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "edf28da534c6bfa6d4f77d327fa27382e29bea7b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e7052ad01314c61ca733d180762c0cc56ff57e8b", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f56d633306a55dc48eb144f03d1b306a1f22116e", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=png\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "7c849917737f65ffaf689e42631f9faf131a9342", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c831e4a49aeb36729dd07e6e71f2eacbefaea568", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "437871afeb05bd4ea87b58e3e20a011393c3b976", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e31e543e35d495024bc9a971dc019cbb87d8517a", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "79ba298e1304ce734db67c777353fd533f967752", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "019ef151355a37ca916208c6ad269866935c0b5d", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "fa9010ae0ec32912a46856485fbef4f2d3fe50c0", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "37f758788c90cb52eb006a73a8a50d34453feb0f", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "69077e6aef65c89cbf63a6f74f2cf35a189db9a2", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7b91a011146f400e8302ac6526fdd1f8b6079d45", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "26b043543f912621489b147e1e53fa932eac2372", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fdbdcc47141c052be520560da887a70a2f5120e3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "3918d01443db2d73e16f516a87193d659cdc7b9a", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0ca0fe4645feb600a2fb8bba337aed850d72551a", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c67cddd9435ccfeeecefe8a465d165bfbf18bb5b", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "efc3c3a6145136a00ab9a31c42cd876ec28f5ae0", @@ -3239,18 +3239,18 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "0012ad3a73ffe58a6623858853f8aa1c6306293d", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f5bfd3fa053d6528d74a5e3447d2dd513335c050", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=y\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "46820285766c12e82b9f03a6360a92e9686e5e7f", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c1e6961d3a4477d24f254234e50bb753b759fd8b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b0072761a58238c3f14e0ae184b3ec33abc9b965", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "30a6427b35934e2268182eb72ecc5b6fc1b2bce9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f91b5e0c0f3742813997495f1e751fc8d9bc94b2", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "1c6f034c6a530d382fee5efa0f7d4171b575167e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "1f9e3b772fc8c3b39a65807d0905e6a68b2bd95b", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d66b81f11d80a8fc9653dfe313f33037f2898dc1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "ad55592e4ce7aefe5573a43e37c9b22b8bdfa165", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "db1d778db40993ea2e701e9f5e1f7fbfa4d9bde1", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "1f8734721e9e3d873375b30f8439cacea615e3d9", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6478a5cae6ef7675ecf2f926515e8d9b5b73825e", - "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "09fb9581dcc46003474d2dea58e691dd5501f1e5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "e39d06b179d2974deb4a5ac01f5aebac0c5982b7", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "71d2d489c58c3b96a46eeeb576a7b4c1e0c98cff", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10a07534507002213cf07915c9aa3912f86e7b61", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c1d68fa0896df7cd72e274fe1e780ac93d1aeca3", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=y\/": "7e007394b7765dff9a956b2e7a76ae842c072432", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=y\/show_error_labels=n\/": "02687e5ff4305a0d67524753628ac88d40829ac4", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=y\/": "d71dc7e61565e4e45ca2f50933001cd27125ce69", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=area\/show_error_bars=n\/show_error_labels=n\/": "70750cbec2d5f4e06bd20d47ec16ea925bdd2260", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "c8520ca8d5e867e658993640b2c061805af589ab", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b5d0a089a7d620a7f4819da11b1447f075a2f1bf", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d70571b13751b93a4d86a99f6adfcc006d64fff5", + "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "25bba9c1f4fd92a739053a9cba7a5582e925891b", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "678f362a78065a5c3c9775d84e63247b302a8785", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "57b6e102b67dc2831aad97d5aa8aa8922d191faa", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e971522f687defa4c1872a890e2000480a688fd4", @@ -3263,70 +3263,70 @@ "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "bd5731771dc14d2ecf274e21832fc965aa29e54b", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "52d7de6018666a0d52d090ebb68f01047c77e90f", "dataset_type=timeseries\/statistic=avg_waitduration_hours\/group_by=jobsize\/log_scale=n\/format=svg\/show_aggregate_labels=n\/show_trend_line=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "89471fcc0dea9656d262d28f896ddfd07b122ba0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "3cf1b281fa831289141272fa3b22adc3c4ff01fe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "67afb22dcaab433cbf1113ce2870ae83a56e292c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d86753ddb9aacb490af8bba0e8c6df542e1169ef", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "029813e85948e5568ed14b1e46cd49b127d3dbc2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "176ca52b31bd9809e6569d9d8addc0b1e7a359af", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c2432f8b2afc0ff85ae09dab9a03d4aa0e4fc5d8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "34096aaa53365da7bb104a7ef361494d311f980b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "0a98404bd56796a0e996f817fdafc708c12e6d09", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "ddd2d5b4e6d1d2489e8d6fbf873c282009a49253", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "bb7787131b23a7803666f2059e2792541f5ecff0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5a395643d0e2d06266c72d3feae0ee39f43a2759", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2f494e59ce9afcfc1c65032057d09a8d309ffcaa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5c7decc7c1f0499f29652b8a7d060f3a8ac2aab5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3b6239f8720e386035be2547837484a226c1fe2e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5c1b4ca1d29a73d77f1d47a9447ad500d00b190c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "983c00c4d77ebfec99b8bf613e96f0e7e0a3f184", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "87f114ba3706a7cf42514eddd61cf262f1bbb117", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0923ab190a1b644a9c3764a4e6177004d89de7f5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "5982c62bab116806b4abc11030e9fbf70abbe8dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "8722bdf241cf4fa4f9d557281f16255e0a7417d3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f55beb5d7635f24a22878da238f6406ebb0c5373", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2601025747a6544486512235c3221153d5581eed", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2601025747a6544486512235c3221153d5581eed", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2da2e01e23b1667bbfa16afb8e2c01b6ab4579dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d536e2fb2cf66fd979091d70fecab35730e2f4e2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "970bc5944f36ab57a8d10192ad00ff34a67d4551", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "8430db206112733f1d19963d61cb6c3385ec07c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "520ed92481b0ad020d4c0d715a865d35820b4211", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d9e664748d0ab1a0eb01d0796a6333621d080395", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb99fd9f52658597705658c49a009b98d7540004", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "eb99fd9f52658597705658c49a009b98d7540004", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9bebcae96d35eded26b4081a7cf24fb1fe6bcfb0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "7522c306c21d4330390cea9e4349f70163985c02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "7e7bca373db7ba9755955d0310579cc45a891555", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "484ae4555e609fbec32ed22a77200f2b8b2eb178", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "770d3a07b671684069ff3b8eb696f67478d29112", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "484ae4555e609fbec32ed22a77200f2b8b2eb178", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "770d3a07b671684069ff3b8eb696f67478d29112", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "421ab22f81e6c7d207e42d6f8532a2d406571e44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "eb363805fc0ac5faed2fb414bf07fa917238446a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "421ab22f81e6c7d207e42d6f8532a2d406571e44", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "eb363805fc0ac5faed2fb414bf07fa917238446a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "decaa06331c5f001b3699b3d10bd75ad43c1ee56", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8f72f3f9894a5487e4698ea7f90e2c19140512e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "decaa06331c5f001b3699b3d10bd75ad43c1ee56", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "8f72f3f9894a5487e4698ea7f90e2c19140512e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "aed920ce747f1e075506ca3d3a9cfd7b085039cf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6e91dec5baf9640e787bbb947b12f7fe17617caa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aed920ce747f1e075506ca3d3a9cfd7b085039cf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "6e91dec5baf9640e787bbb947b12f7fe17617caa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3c52535923ea3560d712112fc23015eafad3e60a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "bd7654ffc99273d76e93e75b4bd73b1c684ca12d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "3c52535923ea3560d712112fc23015eafad3e60a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "bd7654ffc99273d76e93e75b4bd73b1c684ca12d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "fe9cc2404458a64704036e381e85f2a8bac260bc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "d654b8a116c3248bf0b06564eb5ee665477c3838", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "fe9cc2404458a64704036e381e85f2a8bac260bc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "d654b8a116c3248bf0b06564eb5ee665477c3838", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "cb5fa06c7c4e5e0597a28258ebc6a9712601a5fc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "cb5fa06c7c4e5e0597a28258ebc6a9712601a5fc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a88d8f3e24972324bd5c6ad455ffd83d48ff5d36", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6ae2134201ef5e05797098a637d22de024e30f19", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9621034c913760dbdf0caac0ff195f4b0a757907", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9621034c913760dbdf0caac0ff195f4b0a757907", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f334c7c581fdad0a5bceaf8a5ac10d6866cd8b0d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "a961b57c3c0273fd4fdd69c785291a68408d5484", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "62563051ad6601e7f82c5f877e538498018a81d8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "078cf3dfc5c0e74fbea8b1949247a4b134137a24", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7b8773f5c4afab0d53ab49a29a262a6d37bbca59", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "154160a459a747391be532e2c2bbf83ee19ca921", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "36b0fd7d3377bbf2f7ea60b946a20a6548b99978", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "36b0fd7d3377bbf2f7ea60b946a20a6548b99978", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0932cca4f12036f3bf5f1d46b69f0bd76e89d6bf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0932cca4f12036f3bf5f1d46b69f0bd76e89d6bf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "93965ca1717a11cd9aa065b74db88bfa458fd68b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "93965ca1717a11cd9aa065b74db88bfa458fd68b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e995ae501df40393b8fc5868f53f25e863f2644b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "9136e11a3f3ba6f3c5785e5d75a17559c70d8ee9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "40002219aa90208cb51e540ac6e42d483f6ebfbd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "4be290beb80f0c5cac7c7e1efc92ddcc3f2a66cf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "5dde20c90f0ec9544f7dc7841e06324f735eb47d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5dde20c90f0ec9544f7dc7841e06324f735eb47d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "2ab7bd7fd6873b74c073b17fd2335464284e520b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "2ab7bd7fd6873b74c073b17fd2335464284e520b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "cb5fa06c7c4e5e0597a28258ebc6a9712601a5fc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "0745c6b4da6fd466c16bac4906a950a59044e5e6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "cb5fa06c7c4e5e0597a28258ebc6a9712601a5fc", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "80827af49f3d90fb5c116c11fda943bce1cca2c1", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "339d284b3ac64403230eecbb8cb88b8a4a082b31", @@ -3391,74 +3391,74 @@ "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "54507879b5369e4a0952bf2bdf840ada10ae3759", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=none\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4d48368712beca9c3d2855bd70077789797496a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "07e984b1b4adc33cebfb67d92269ac5046293267", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "583bd2f69f3fb8337f16f6923104ef2c46ac0459", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "73c8b2e61a340d3087b76f8be99d92b0ee8737f5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b03c14534fca446c084d7ffc6a3e422f761fcdac", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "8ff9f75584d0571add77cbe4622f25ae2de30d02", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "5662d7d19a111c27032bfe56c529a8dc03b18aa5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "f47de5de3fa44961b2590456e2f71c79df0c677d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "be174811a60465eca33a2d7176fc850e81f5978b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0f82251b4168e8a4eb0df12e767c86a6fab2ae65", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "75ea904ba086d884f81903d50f267b2385782f2f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "03ae253e8c47ece34cd887e5ac93a8eadfd6ea0b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "087e61b0ce554fdf5ac63d9db6cca45ab756813c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0c55a9219cb759ff1461b62c704e5c0a9e8fc618", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "04b68ca63efdb463b551f10196fde66d561ed168", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "5dd0ee4787487ab4c48d4c6563a331adc821ddfc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b8459e3d57c032685bca448b55836bc7ac935b6c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "4047563df760e33d395355e80d0949cd788d7e7d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "5983e3555f1553ae0ec6c8115958505d54aabe55", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "bd9cbed08a8cc566867947d28df896ac05c09628", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d5fe04a434fbfd234fb311217cef45cd610e47dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d5a28726fef6f268cd6c4cb73f9b12524f439738", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "5112df01d1b4dbc3d97e4aefe39e584d81c31161", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f0d765b0ea7ee0ed306f4fcbed348c961d47f82a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "94369cd7935ba77cfb1d5a020d718e7b708dee2d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d606b8389362af7ac8661e1f73bf8b862939aa91", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "276e2ad5aa663a63b4f245c87dd4029fe516788e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e32964fc17d419f8ce8eabae55af3bbe815bb934", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a099c9678c45ce18bbff9c080a2cff5af9292869", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "81249f0e8dec5878f6b09731002636ed2e77b190", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "1d9cc1ac72404b840283421720d590f306d521a9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c6592b91727b7d1e298014b49155568489a5a3c5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "a5372dad4701f035ac562715ab8c740574d1418f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "10475f1402bf32739f4e0b3ac1b7a5693ca46693", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "b1afcafa485450994fe7d6b9f11e58b898f13379", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "c384c064386f04725fda74fef28f087135607e64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "34b2b6a7512fa41ecbf8c93505dd91f0e71f46b4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0dd02fad44549e7298d42ffecbe3a7cd6e0ed515", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "8541717cc2a586c0c4bfbdbc95d59cabf391b676", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "03488e8b609e5c28d4c69beedd2f947af2bce8c1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "609a7338d68ff41832889da49bbc6c765849a9a3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "78e0793e1ccfb3ba3dcb95b555c921d95aea0172", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "67d66ce9d8b196139451988c050a17df17a83887", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "4ac4eca66bab964cccda4f69d451d4d9415771e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "5444c26122ff81e38b846041c36108ccdad0129e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "6b41ca80e7a1c105d59ba5fdbfd2a156d325b36e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "176d6fa421bddbce258b8101759c1d428ecd5a34", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "de7ad4893b8f7065bad1433f1ed93371ce682e3b", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "74e978ee342c3293e1bc3e02fac528c4432fcfef", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "fa82dafc9aa9c52c7cd790ed46e216540ad73929", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0fefc7318f8e1ace35dea657a80e61083356967e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "f7b29c171fb3162f84d9959cc7f898556002f260", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "8586145b54b0b9e900c86e340e1a13c1c565a8fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "b87b7a38382fbf22cf3b12c2568076365a771b82", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "b9d0bf00504b20bfba95686aec8f05da6bb1d4fe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "ca7d14a9de03f55bc308674b5b229ab9971cbd35", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "38817bdf6f12281fbf76a49e783adead8e4a33f7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "50413c2fd474f5c207cccc0dfcc2fc5e9d530b9d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "46e16394741a93be3d8d287a58fd5a8767a9c58c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "1db9972021be2b30ef1447fbbe689a3a553b8c82", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f8eac2af319ac43fbacff7cd25417cf389e92b9a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "d71f62524a5daca69bb5e458e30bb9d4895c9637", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "d965b5c53141126dbd304d54e0ceaa2e50f15fc4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d71f62524a5daca69bb5e458e30bb9d4895c9637", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "d965b5c53141126dbd304d54e0ceaa2e50f15fc4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0cce5e9e9c3104922aa28595cc880460fed56150", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "d36955cf8e4f30803cf9923ddc4964fb614a42d0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "0cce5e9e9c3104922aa28595cc880460fed56150", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d36955cf8e4f30803cf9923ddc4964fb614a42d0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "da9babba50ea7fccc150834df159863308d9aef5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "f7c0701bbca50999caa4e9d191f6f4a087942e28", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "da9babba50ea7fccc150834df159863308d9aef5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "f7c0701bbca50999caa4e9d191f6f4a087942e28", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "b217b72aba20178a273bf2166557c6185321f218", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "b217b72aba20178a273bf2166557c6185321f218", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1263bf269631daae983487be6c735c0e86cb6d66", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9a5f24c6e664f72316be3ec20d0b90645ffdb8a2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "bfe5f0a71c40616b3a59d38251a9256603a1bddb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "33c93e1e38632ac8693b3c6e62290c60bf9a0923", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "e01dc03202466948b9a6906baa1806baced7a9fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "522277a342d47914b458ba9e4c4333ea8acfbbbe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "aa2436e54b2cb378fa1d1367962d39bea713bb49", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "ffcd95155c9a33fa593b7fbb5837a7b30337e122", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "263e3082be1f4390faa9d6782730eb413bfd193a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "3480a2a1214e34ac2042450f82fc85f7d45be4f5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "a99ce85488a715dca6d409013878f90ed28a085d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea913613aeace32e4518ca4d8b87556166140809", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a0afd8afb63ad6fa6248c59b65b79eac3bbe3844", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c5f24febaacee9f83972470e9d77cf7643b9f954", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "78c72095a994360081377c41bb861595f1593198", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f8355da4107cc61cacf225dede960a9466c86857", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "a4c3dd6fb7928ac849d5fd1ceec57141d370279c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "f5b2e11f0b4ef294e7e9799cfcba78c06ac4a255", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "3ae3b80b96a724709267af9b8e8cb4a03e23067a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "b7f2199eff72d754f09df951034bc1bcfcd1e768", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "4d215e03b89dfac425252a61526186bf4f655504", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ce466304583f24c50ac8dccdf5d8f5793f0fdbd9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d65401abe22f5cc2eeab566e638466c6bac66b53", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "9649808e8bebd9dc5c5fe87e21e2537b4b034ddf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "b217b72aba20178a273bf2166557c6185321f218", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "22d4eecaa56c515bf4a94e15a07ad1c7ce2c64e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "b217b72aba20178a273bf2166557c6185321f218", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "310948201a99c1693ff2305b5069cf358d1be32d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "66309e96dda4857182d7f1f4c780eb4ce01e1666", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "6eea4ed6ee25911393803c327665731f0b3364fd", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "cd7927b09361e15a6211dc457f0915e23b0f2382", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "701c25515ac58353c44da0cf1797d0018ae20426", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6c4458e301f881929c548672cb744ad8731dd49e", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "08222f019ffe810c7eae7b3ee7be44b3cf4eb4d1", @@ -3471,10 +3471,10 @@ "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "53a82b1bca5d94cdc72f38ec65814fa1dc9c36e8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "92865186ea8b3c671555ef553dda7d2e1789baa1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "59a791c795afe4cd4199522ed1b9cbcd32ca7b8e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "89e4ad4bfd1718b0d78e682120e3cf24bd26dd4a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "59a791c795afe4cd4199522ed1b9cbcd32ca7b8e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "89e4ad4bfd1718b0d78e682120e3cf24bd26dd4a", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "04944924c6f934862deab846f36f0e0495362bba", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "d9c868bee0c3b3e4698f3be1de58df61dcd1ca80", @@ -3487,10 +3487,10 @@ "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "05c32cd7c3f99c6013fff3a31da57e72ce13dbf7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3bf4b8cc0f6f0df8d56db93bbb6662716e4444b9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ecaf547cf761226d26b02121a83e62b32eeb4656", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f40aa03f623e3d16a2bcdec750babbb5696cd470", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "35b63a47034c281676a5d3ff5668d7c9231fdf14", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "de463dba3af55a9aec1ea05d15704796ebbd0f52", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "0a2ba6376084cf1deb6817f08106ab3c2367ad09", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "c3f866b000deac71b0bf636481f4cca21a74b8b1", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "6c732f1b69d3b3a1cf711cfd64feea43bef42f08", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "acfc487f8751093675a7848d0e13436484dcd992", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "72ec2284a5a7d7a31a4c96c1160df6b0d2305bd0", @@ -3503,10 +3503,10 @@ "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "3b3a764c5222db74b585fe9555335f076a7cb44e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "eb4623d27c7f969a52ee9a6715382af050c6ee78", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "9ffaab18133450814b834a3cafb11acf8302e9ae", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "f16d057f8610ce4e1d665f426322e8c41fb83467", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "360ae76897ca8a072467309c00bdcf63ceceb7d6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e36b74f94188c69f3c3d3e01e3c5a12569e41e36", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4d8a6e8df8716f9d25cb490d13faf2b59c544f6d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "ad91d5acaf548325c9b52a89264968f20a0d7be7", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d265a639bb791baf1bac6ed3c3e851ebb2fed95d", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "642fde1405d8be917678a6ef4736503089669ea3", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6f3af341fb4b448a03b82b1d943df800ecacb0b8", @@ -3519,70 +3519,70 @@ "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "dbcf8f0a8d0a2cd6cc332ddaa8d5001dab24b173", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=person\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "6af38f61101d266c46a16f16e2b566af9e43257a", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "19a6f1b8daa70f6b54fdffd93b93484fd836e5b2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "df19b8c9df9ca02c9d8f5c141a9dd0a81fb5e49d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "46656ccbd49b565785d4052c09b3cecd4bfc8e03", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "59f3f907d1e1780c345357fdb33fbdf6f67577dc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "3fcc86df64840352479023ea27151da970090d09", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "55aa61c00c666ca67ba1a01a91e95b51d15bfdf8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "4f71ad5510f53d70cae32e94b220709a9c0d80a3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f32d0cab8083b0c53dced2f468abc2a29b43b8ab", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "093d721348ed704e9a76bb891e37507c6a1122b6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "510c7114e757747d7761b8ad586e4f7c958183d2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "3b8ef6f258d151f7e590a91de314d2d6c50c05e3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "97037b1ae6737ab91721d378d530d79f65118568", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "806cfbb973326c71487aba3876034d0d561e0a27", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "0d1b62da86c553a13a4aa6f566ca9dbfff156b7c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "aea237f9caa42f270762af9825c78ac4f8cd74c9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "33582cc654c89cf6e584e081d7e5bd710ff075b1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "0cbceef00c744475a42b21d9de8feae93d995b38", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "9275bd67f5efbc682e431488906a37013b01e265", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "aa9ffc54b7d06d24c6a30fb52c92e9676052b419", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "a9aa587a6b3a46ba3b7e2812194fd2831959ac75", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2fe2d335b41c432f26899f2362c8ab88e59a72e1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "b32cbeb1d5d8160c811893dc59f51b80a6ac2400", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "53626a17aca93f7a25944d42be00d7d5a0747a92", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "abfd07a147179956149021724e60e3157333f5fd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "2ce1cf304aa7c985218c27571edb15775506dc5d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ce67ecc032cd31c7ddca402c42af68222e6316ad", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "08d625e452905c3ae81702168eaebeb0ae1c2f37", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7a57fdb03c52a1d00ad57143a0339d9aabae5253", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "2b57084c7ebdde966a43cb045be3a042eede3431", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "1a401ac6d9c12544c724365ac5e31f2d6174323d", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6ca865a0d1285b4fd7f3e92281b713cb9c26e8a7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f8f40a30150bc944f96f07c98064ef2fb0b73044", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "e42cdec827d2bf575e0686a7d9de703b944c54ac", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8c8a75d7dc2950a1aece1b8246f32e085774af83", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "c2e815beb6f3b3295b58c937867c1a15501174a4", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e78da3423a3460ef40da4cfd84c1769939caf414", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5d4b654fbe5d09e6e52aa781b5c787366e1aebd6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "f59471e38eefc7aa3d8361c023d20a17ed0730fb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a2ba1a6395c338cc82d7b1368903d72dce3853a6", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "827704d8296d96372ed713377054b9cac099539e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "5becde8434720749d0e0af01f72ede07433890a0", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "78f3645467177d2fc9217635a19340ce0176ecb2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "70ffd1263ce9cc1017aa0f8d198957ddad024a5f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "f44df82f6bf34005d4c6b10b8c434deeb8bd4f58", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "14636945cd0600abc201976df0744b46777a8991", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e3481bd99973eac0ed90771260a4dd58ec0dc9aa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7979b33f2ec6f3d5b1f981ee32984eae161be65f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "128890e95fffe15910bd0d240b725d3d6c6e71a5", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "839aae46bfe694b2e0bad7d6a10d06315239e39c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "e4cef9172c129e3ad313dddca14e0e986f9793fa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "b0111700667f3c676bce0cccc0149f04029a7388", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "17cc9c95ba3f9e7ba7f12a04dfb45840ca6cc392", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1d000caa7cfc44d0c6219d98c4f9cb4dd9485b6b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "22f047d2b6ea595eca1d8436e317aa01c555a579", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "d628ad2e70ec2dd7fb03b5194d4cf73b0a2385b5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "2cca004033e0434b64f1ec2e16c2af8b06c6947b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6ebef2f635dc6cd0fb36a4586ba3bd3ad99b529d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "e63dfaaa672442d97a9f6bc9eb22b5d3bc7e705c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ba83af347296ad56a928b6f8876546a98ebbefa2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "7ae063f3a449e7c8843a51b0f40dbcb762a8c6c2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "118823147390983fa779e29915c2d48ff599dd5e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ad59e816fdb46d76d5e743038a2f7d08f24216b5", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "a3cc2c2f8f7d1f05be51293aeb4677848b69e602", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7968c3662442e17eb00cdab2bfc4497d3aa7d355", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "961cd7468ebd1b662cc0ff33d5fbfcfab9000ce4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "49b70f8d0c3b38ee5c95c4806a7b0eee26c98819", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "9cfacafc8f228dfb377cc899e81059851983cc7d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "c09c4cc63ef6ecf35611da09ca3f07320816f43c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "fa69f9c39cd9048f00c85c7bedda09598d26abb4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "19b59ccb9b3e7b00089688c4f343670341e06350", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "155f653267edc26ac15624bc84259f447e867663", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "dae8fcab5f65649e7090385feffaf730e7a6d6fb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7e9ecf2e0af3b421530dcd5bba337eaa43e56a3b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "cfddef027bf32f6cd8122ca6769df32664154943", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "8d1297a6d0635aa08a1717fad4ce3e6483fbbbe6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "8d1297a6d0635aa08a1717fad4ce3e6483fbbbe6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "485bc31fe27ffaf5c26e9604bb691a1d8cf06459", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "ebce97a7e318c1a7f59c520e7efcdab43a080f4d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "62a15d620ede18904c2809ff52a3c256c4d5d87f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "7e0c064b34ec5eaba3d1c46b753e82853f74190f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "dfcebc51d1f39a715aaed8386218267d6d6fbe18", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "63eda1e97d539f09b3cf14c563c2bec8b54b7ff3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "7283bd760e836a9bb354c4c748bd0c843281385e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "a07ccca1ea38012e8ec2903fc91bec6a0f7a3e1c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "7caaec2d9d179bcc4e7bf1053078fe83c9d2b518", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "c238aa2978e2169ff707c6caf81da235153b955b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "818b98503cab8fa5939b9c218ecc7e4e3c73a7e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "99e60cdea0442cd2f129d9bce4e48135535e96a6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "34f84d9e047b519a2df94bd4f86f2e0f5e17d754", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "e91c9bd28e692b501f87939efdf0788a17b8a935", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "ffbbbbccf9283b72f80974872ed4b8f011b0cfdb", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9724efe5043246a9eaa3d05386fe7ecc446f3354", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "2466abbd6361a34d70b07ac9c93da89d0c114339", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "c250ea71aa515ccc2982717b6de4eb8e513b7fff", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "2f8c39d5c28a19169e1f578cef4eb054f67c404c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d449803b5271aa82ccbb8f2d53b07af86c1a1b5f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "ba9cfc92379232e8a6a370c4c194ec2008f82554", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "8c9719035304cd1a37a4d2eb197179575a6f6ded", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "7467a33d0ddae5dfec478ad65bb6f586185ce25a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "00a12bf378b86380a722b1a422e80c233109890c", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "8d1297a6d0635aa08a1717fad4ce3e6483fbbbe6", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "81520390172563c05fe25405a83af915655080ac", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "8d1297a6d0635aa08a1717fad4ce3e6483fbbbe6", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "9927addc5e51bf771637f03d4d8cc5a346b4f44c", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "9c2d88436c2349b4be253a600a1f50401fb185a7", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "d97c0caefd07f05369bc61d6648a4c683e522ab8", @@ -3647,70 +3647,70 @@ "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "69b7e40f6dbcc3e6ea16aaf1cc9cd4f3f26beffe", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=resource\/format=svg\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "f10e7cfed8d1c12b4309e290174d60c44ca81d01", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5f108493d8b3719f348acade168a86dea0aa7570", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "7f26c889ebfc2429d6ab3a49da4f1dddeabb303c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cf04e6f4e9d3f904df4a743e1cf017f70b1744f7", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "27b5324009503a97c9a79df57c1f51fe35ed2d81", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "cc590642dbbf1ac80eb21178cfe3336ff73a4f64", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fd546de64311f3a7276384ad1b090a3d4ad0a2b9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "6e1a64df10fed04f32257c0eeb228763caab2220", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "0cf161efac428d13682601c140214741e0646462", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "49d1e146257306215a28c69e4b4ab16619166115", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "804f1109a8ee2277551cbb8bfbf00cc47e05faad", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d659628ac21393432c23525131a0277fc01a99dd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "423585c2e6bdf570747d6ea0b4c39bc5aac60bd1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "1c37c38ea9d64baf45db1aa3471ff2b9011d2aa8", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "996073e45fa6cbd8b32f9aa28956654fe9d15447", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "dabd6ad3909d9dd9c3f3e6e1e009efbb80a7974e", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "d1fa066faa8cde6f352e27b5cc683703222a60da", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "eb8936ce9fcbead2bcc811be185056d74590ea44", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "ea79666d03bbb9c64ffd71dd76818de50a086405", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "33e66af1a92f639c427d46f88d31bac7293ac220", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "3a9e31cfa64ce6ba6aa374722bd8568ee7c6c8ba", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "901b5d40ffef7f7f967a2a2075c1197114415698", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "21ddc9500d45a2077042204a57b7e179f19328fe", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "29236d836142172d5b64c8a68d3a2f0ccb897924", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "15b674f99e54bd4e439b0b59c376f4a7c192b5a1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "2113324ff310d75a4a97c7a19c9ad9635c808305", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "821438aadca41a9003bc3f30558c180b22868bcd", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "84d2a633d458c17760014edbfe7911aef03b0962", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "a235bb40f00542bb4f31425efd5bb320acc62c98", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "5b1d02843a072d2a2b3edba549d7295ca0256e28", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "24083d902b1a8d4f628345584528481513a3d6bc", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "ba891548d3d9da3d92b07fe137d121e5171a752f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "b8d3cd9e0220549821daf0878f9e83165b9e278c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "168b771ca8e5753b77bee7a0c8060abea29d1cfb", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "a546ce08d20a0e105a18314c0c8cad561d5612a1", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "f63d0427bc5f962f1e15ccd95fa43b98ea919156", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "6a376ac1a44f5f0503f42f7a8cc47ba957ec73a2", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "267e49a25bb6ccfaf4012eab5dd7222a40d0049f", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "7ff78c463bc5201e39da3e2d59793937cf9dd61c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "2217af463c0d6e53e8a0d85aa5dcf23742677b9c", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "6a49d7acc18a69344b97edd762c475269f727eb3", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "f60cb2671b4cc932cd15dd7163a4ce6d3f02e1db", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "0c69edf6601e8d1f9e3e82a2a0ca33266031ad39", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "85bb78f7d46f6293a1f9cb7486bcdffb28c5c7e9", - "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "3d1a0145c354dca829742d5ebb272ef8f2096cfa", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "5b2414393b2221eb63e7501b2391f3b4990ed4df", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "de51a2e2b529cb6df6b65f00f56911a37a65a1d4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "7bb66344d155ebbb013413d32327a3fed2add927", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "9348a243e403fa31a6e3e9379424d7dae584b415", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "a471141b380240bde8e3e70fad042d02e9a15f2f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "9868a5e3bb7ad0c5007adb09b5145e17bb0823a3", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "9aad017d39c2c862db8128553ef8624c855a4b24", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "12615e1a754d8f3fbef4c11f17220b9b699e667a", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "17ff14d30acc100b2f7300b9ba44617519f96301", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2d98742f3ddc043f5fabb0540073ffd8fe01291b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "214dfef60934905ed51b534e7dedfff7cb8a5001", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "025b4bd340effb9478ca923d159c3ac30d63a9e4", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "4a09d7268e817690a239d9c075188d809e61fa3f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "2feeaf17a7a4b50db5e1f3f0df22433c96c0e8db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "4a09d7268e817690a239d9c075188d809e61fa3f", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "2feeaf17a7a4b50db5e1f3f0df22433c96c0e8db", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "174e9a88e1c14ba70dd023ea61839f44755e00e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "fc9101eb81b3a0a0e96cf65302979d9562823e50", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "174e9a88e1c14ba70dd023ea61839f44755e00e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "fc9101eb81b3a0a0e96cf65302979d9562823e50", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "d20c8a755f90f9cf89a84631d2deed69ecaebb34", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "e6f133cb5a84044d352d65f2b8c747646835a6b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "d20c8a755f90f9cf89a84631d2deed69ecaebb34", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "e6f133cb5a84044d352d65f2b8c747646835a6b1", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "8f80643ab0ab8147c1fa54d343099962ea347926", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=y\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "8f80643ab0ab8147c1fa54d343099962ea347926", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "17070d227a05f4fbb1d1530fe7a9f21276bb9cb0", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "04ae13171b5b1235cb79cdcfba03969ed5e4135d", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "cea0c02ff870b389fe62d55bde3b91982a1e6399", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "90e28b76796ceb969276761984cb20b2a633f277", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "44ecc2732894ebe4b6cc4d5200edc2d2d0ba74c2", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "30e5419e2814966a0a4ec111821c7a4503188c7b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "849222309ec655fca989429dadf705333cd5b260", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "9878a1932c0cd3b170ad28b48290ccad444b10e8", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "0d86d80b7e3b9d4cdc30e490ebbc82d7efd5887e", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "2963417e1b605cc8828a3c8dd9751b4ccfd82bb7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "6d36db80828ad368dab4e3c9552d6015197f8e75", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "668e45f4e3b6b5a1389e5fb9f5074a3b73782184", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=y\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "c2150d56ab1513d9ee14894ab4d8309dee086f62", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "c92dc80df6e82be1c633b065d5067147733906e9", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "a237a2942f1053ddcf0d88209022a2a5f913ef5b", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=line\/show_error_bars=n\/show_error_labels=n\/": "32ae90244bb83329f7ce7a12cff2665f9c5a1b59", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=y\/": "9bfd0b6a9532f208bb5cf42b20cbb3e30a7191dc", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=y\/show_error_labels=n\/": "e2302d926f3116495668b1a73f770a03eb7886e7", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=y\/": "e88714ada3ba5218e191fb26135018717c817e01", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=h_bar\/show_error_bars=n\/show_error_labels=n\/": "bd849568f6edad3ab1ba12a1fa5987ce85d1ee68", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=y\/": "68b22efef880435599dcb44a2616ca21cb450afe", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=y\/show_error_labels=n\/": "247eb677abd24824854d76ba498a4b78e8ef4c29", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=y\/": "711f065f45cb3c94dda39944885d74dd755e68bf", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=bar\/show_error_bars=n\/show_error_labels=n\/": "c0bfd026609cacdcaabb7ea6e3d236d56cde6326", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=y\/show_error_labels=n\/": "8f80643ab0ab8147c1fa54d343099962ea347926", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=y\/": "b9962a7cffb351c6b7e63bb5ea523720782176da", + "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=png\/log_scale=n\/show_aggregate_labels=n\/display_type=pie\/show_error_bars=n\/show_error_labels=n\/": "8f80643ab0ab8147c1fa54d343099962ea347926", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=y\/": "40a70d296217b741d30ac18b9e9ea2845de0d405", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=y\/show_error_labels=n\/": "6030e8c318ecba9d1c6f0ad3427d200cf9df1147", "dataset_type=aggregate\/statistic=avg_waitduration_hours\/group_by=jobsize\/format=svg\/log_scale=y\/show_aggregate_labels=y\/display_type=line\/show_error_bars=n\/show_error_labels=y\/": "e072653171e0db6790a69f6d874d039303688227", diff --git a/tests/regression/lib/Controllers/UsageChartsTest.php b/tests/regression/lib/Controllers/UsageChartsTest.php index 0e5bb36e73..1634f4a24a 100644 --- a/tests/regression/lib/Controllers/UsageChartsTest.php +++ b/tests/regression/lib/Controllers/UsageChartsTest.php @@ -9,6 +9,24 @@ class UsageChartsTest extends \PHPUnit_Framework_TestCase // Used when running in hash-generation mode. protected static $imagehashes = array(); + /** + * An array that will contain OS specific information, if available. + * + * @var array|false + */ + protected static $osInfo = array(); + + public static function setupBeforeClass() + { + // Attempt to retrieve information on what OS the tests are being run on so that we can select the correct + // expected output. + try { + self::$osInfo = parse_ini_file('/etc/os-release'); + } catch (\Exception $e) { + // If the file is not readable then code will need to account for an empty array. + } + } + public static function tearDownAfterClass() { self::$helper->logout(); @@ -28,7 +46,6 @@ public function testChartSettings($testName, $input, $expectedHash) $imageData = $response[0]; if ($expectedHash === false) { - self::$imagehashes[$testName] = sha1($imageData); $this->markTestSkipped('Created Expected output for ' . $testName); @@ -62,10 +79,22 @@ public function chartSettingsProvider() self::$helper->authenticate('cd'); $expectedHashes = array(); + $hashFiles = array(); - $hashFile = realpath(__DIR__ . '/../../../artifacts/xdmod') . '/regression/images/expected.json'; - if (file_exists($hashFile)) { - $expectedHashes = json_decode(file_get_contents($hashFile), true); + // If we have OS info available to us then look for an OS specific expected output file based on this info. + if (self::$osInfo !== false && isset(self::$osInfo['VERSION_ID']) && isset(self::$osInfo['ID'])) { + $hashFiles[] = sprintf("expected-%s%s.json", self::$osInfo['ID'], self::$osInfo['VERSION_ID']); + } + // Otherwise try the default expected.json + $hashFiles[] = 'expected.json'; + + $artifactsDir = realpath(__DIR__ . '/../../../artifacts/xdmod/regression/images'); + foreach($hashFiles as $hashFile) { + $hashFilePath = "$artifactsDir/$hashFile"; + if (file_exists($hashFilePath)) { + $expectedHashes = json_decode(file_get_contents($hashFilePath), true); + break; + } } // Provide all the different combinations of chart settings except Guide Lines (which do not From d3410db070a0cda338d0927b5c41241b9c3b92dc Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 5 Mar 2021 15:10:48 -0500 Subject: [PATCH 29/76] Further updates to UsageChartsTest Needed to move the retrieval of OS Specific information directly into the data provider function due to the `setupBeforeClass` not being run prior to test execution. --- .../lib/Controllers/UsageChartsTest.php | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/tests/regression/lib/Controllers/UsageChartsTest.php b/tests/regression/lib/Controllers/UsageChartsTest.php index 1634f4a24a..02f06d47da 100644 --- a/tests/regression/lib/Controllers/UsageChartsTest.php +++ b/tests/regression/lib/Controllers/UsageChartsTest.php @@ -9,24 +9,6 @@ class UsageChartsTest extends \PHPUnit_Framework_TestCase // Used when running in hash-generation mode. protected static $imagehashes = array(); - /** - * An array that will contain OS specific information, if available. - * - * @var array|false - */ - protected static $osInfo = array(); - - public static function setupBeforeClass() - { - // Attempt to retrieve information on what OS the tests are being run on so that we can select the correct - // expected output. - try { - self::$osInfo = parse_ini_file('/etc/os-release'); - } catch (\Exception $e) { - // If the file is not readable then code will need to account for an empty array. - } - } - public static function tearDownAfterClass() { self::$helper->logout(); @@ -81,9 +63,16 @@ public function chartSettingsProvider() $expectedHashes = array(); $hashFiles = array(); + $osInfo = false; + try { + $osInfo = parse_ini_file('/etc/os-release'); + } catch (\Exception $e) { + // if we don't have access to OS related info then that's fine, we'll just use the default expected.json + } + // If we have OS info available to us then look for an OS specific expected output file based on this info. - if (self::$osInfo !== false && isset(self::$osInfo['VERSION_ID']) && isset(self::$osInfo['ID'])) { - $hashFiles[] = sprintf("expected-%s%s.json", self::$osInfo['ID'], self::$osInfo['VERSION_ID']); + if ($osInfo !== false && isset($osInfo['VERSION_ID']) && isset($osInfo['ID'])) { + $hashFiles[] = sprintf("expected-%s%s.json", $osInfo['ID'], $osInfo['VERSION_ID']); } // Otherwise try the default expected.json $hashFiles[] = 'expected.json'; From 2ac3b53a3ba0b5e0250babd5d937e8f8cd9436b8 Mon Sep 17 00:00:00 2001 From: Jeanette Sperhac Date: Wed, 29 Jul 2020 13:58:48 -0400 Subject: [PATCH 30/76] Restore automatic bootstrapping and testing of Gateways realm --- classes/OpenXdmod/Setup/DatabaseSetup.php | 3 ++- configuration/resource_types.json | 9 ++++++--- shippable.yml | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/classes/OpenXdmod/Setup/DatabaseSetup.php b/classes/OpenXdmod/Setup/DatabaseSetup.php index 0b42bf1153..16da5eae2d 100644 --- a/classes/OpenXdmod/Setup/DatabaseSetup.php +++ b/classes/OpenXdmod/Setup/DatabaseSetup.php @@ -149,7 +149,8 @@ public function handle() 'shredder-bootstrap', 'staging-bootstrap', 'hpcdb-bootstrap', - 'acls-xdmod-management' + 'acls-xdmod-management', + 'gateways.bootstrap' ), $logger); diff --git a/configuration/resource_types.json b/configuration/resource_types.json index c968f5c1b5..ccf8645bab 100644 --- a/configuration/resource_types.json +++ b/configuration/resource_types.json @@ -3,19 +3,22 @@ "HPC": { "description": "High-performance computing", "realms": [ - "Jobs" + "Jobs", + "Gateways" ] }, "HTC": { "description": "High-throughput computing", "realms": [ - "Jobs" + "Jobs", + "Gateways" ] }, "DIC": { "description": "Data-intensive computing", "realms": [ - "Jobs" + "Jobs", + "Gateways" ] }, "Grid": { diff --git a/shippable.yml b/shippable.yml index d501a4a587..7580f1a81b 100644 --- a/shippable.yml +++ b/shippable.yml @@ -2,7 +2,7 @@ language: none env: global: - COMPOSER_ALLOW_SUPERUSER=1 - - XDMOD_REALMS='jobs,storage,cloud' + - XDMOD_REALMS='jobs,storage,cloud,gatways' - XDMOD_IS_CORE=true - XDMOD_SOURCE_DIR=$SHIPPABLE_BUILD_DIR - XDMOD_INSTALL_DIR=/xdmod From 2dd7244f7ebd3d34c78a4b6162fef07bc0742e53 Mon Sep 17 00:00:00 2001 From: Jeanette Sperhac Date: Fri, 8 Jan 2021 16:22:43 -0500 Subject: [PATCH 31/76] Add gateways test artifact for WarehouseExportControllerTest --- .../warehouse-export/input/get-realms.json | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json b/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json index ddf9e65474..2ccc3b19e9 100644 --- a/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json +++ b/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json @@ -11,6 +11,10 @@ { "id": "Cloud", "name": "Cloud" + }, + { + "id": "Gateways", + "name": "Gateways" } ] ], @@ -26,6 +30,10 @@ { "id": "Cloud", "name": "Cloud" + }, + { + "id": "Gateways", + "name": "Gateways" } ] ], @@ -41,6 +49,10 @@ { "id": "Cloud", "name": "Cloud" + }, + { + "id": "Gateways", + "name": "Gateways" } ] ], @@ -56,6 +68,10 @@ { "id": "Cloud", "name": "Cloud" + }, + { + "id": "Gateways", + "name": "Gateways" } ] ], @@ -71,6 +87,10 @@ { "id": "Cloud", "name": "Cloud" + }, + { + "id": "Gateways", + "name": "Gateways" } ] ], From 502b4da0887aef0526565d6daba03f559803443e Mon Sep 17 00:00:00 2001 From: Jeanette Sperhac Date: Fri, 8 Jan 2021 16:34:06 -0500 Subject: [PATCH 32/76] Update test artifact marking Gateways realm acceptable for raw data --- .../user_controller/output/get_current_user-cd-8.0.0.json | 3 ++- .../user_controller/output/get_current_user-cs-8.0.0.json | 3 ++- .../user_controller/output/get_current_user-mgr-8.0.0.json | 3 ++- .../user_controller/output/get_current_user-pi-8.0.0.json | 3 ++- .../user_controller/output/get_current_user-usr-8.0.0.json | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json index 3029396331..2a5ee15a89 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json @@ -13,7 +13,8 @@ "person_id": "97", "raw_data_allowed_realms": [ "Jobs", - "Cloud" + "Cloud", + "Gateways" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json index 1959a8bf51..640dd5af92 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json @@ -13,7 +13,8 @@ "person_id": "111", "raw_data_allowed_realms": [ "Jobs", - "Cloud" + "Cloud", + "Gateways" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json index eef1f0624b..06ab014253 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json @@ -13,7 +13,8 @@ "person_id": "-1", "raw_data_allowed_realms": [ "Jobs", - "Cloud" + "Cloud", + "Gateways" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json index 914a34c2da..0aacde815f 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json @@ -13,7 +13,8 @@ "person_id": "9", "raw_data_allowed_realms": [ "Jobs", - "Cloud" + "Cloud", + "Gateways" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json index ace14a468d..0641debba7 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json @@ -13,7 +13,8 @@ "person_id": "114", "raw_data_allowed_realms":[ "Jobs", - "Cloud" + "Cloud", + "Gateways" ] } } From 08096a3f0c895c96063c4da2d42ecf8ba354fc47 Mon Sep 17 00:00:00 2001 From: Jeanette Sperhac Date: Fri, 8 Jan 2021 16:57:28 -0500 Subject: [PATCH 33/76] Added Gateways realm to test artifact data for Export component --- .../export/realm_manager/output/realms-for-user.json | 4 ++++ .../xdmod/component/export/realm_manager/output/realms.json | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/tests/artifacts/xdmod/component/export/realm_manager/output/realms-for-user.json b/tests/artifacts/xdmod/component/export/realm_manager/output/realms-for-user.json index 352c4d2b52..92231f13a7 100644 --- a/tests/artifacts/xdmod/component/export/realm_manager/output/realms-for-user.json +++ b/tests/artifacts/xdmod/component/export/realm_manager/output/realms-for-user.json @@ -9,6 +9,10 @@ "1" : { "name": "Cloud", "display": "Cloud" + }, + "2": { + "name": "Gateways", + "display": "Gateways" } } ] diff --git a/tests/artifacts/xdmod/component/export/realm_manager/output/realms.json b/tests/artifacts/xdmod/component/export/realm_manager/output/realms.json index a4a2205771..c95d1e600c 100644 --- a/tests/artifacts/xdmod/component/export/realm_manager/output/realms.json +++ b/tests/artifacts/xdmod/component/export/realm_manager/output/realms.json @@ -8,6 +8,10 @@ "1" : { "name": "Cloud", "display": "Cloud" + }, + "2": { + "name": "Gateways", + "display": "Gateways" } } ] From b27f4a395eba08d952584357b975374e78c7cb70 Mon Sep 17 00:00:00 2001 From: Jeanette Sperhac Date: Fri, 15 Jan 2021 14:39:47 -0500 Subject: [PATCH 34/76] Add overlooked test artifact for data export --- .../export/realm_manager/output/query-class-for-realm.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json b/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json index 8d2859b385..65f8fa98a1 100644 --- a/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json +++ b/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json @@ -6,5 +6,9 @@ "Cloud realm": [ "Cloud", "\\DataWarehouse\\Query\\Cloud\\JobDataset" + ], + "Gateways realm": [ + "Gateways", + "\\DataWarehouse\\Query\\Gateways\\JobDataset" ] } From 43337c863eb12593b93d2b7205b1d9ffc8d709a2 Mon Sep 17 00:00:00 2001 From: Jeanette Sperhac Date: Tue, 2 Mar 2021 09:52:11 -0500 Subject: [PATCH 35/76] Add gateways realm to CircleCI config --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 135654f2c5..8c08df8d0c 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,7 +21,7 @@ jobs: executor: << parameters.os >> environment: COMPOSER_ALLOW_SUPERUSER: 1 - XDMOD_REALMS: 'jobs,storage,cloud' + XDMOD_REALMS: 'jobs,storage,cloud,gateways' XDMOD_IS_CORE: yes XDMOD_INSTALL_DIR: /xdmod XDMOD_TEST_MODE: << parameters.install-type >> From 71de40523a5d09e548946fecbce33f9ede191eb2 Mon Sep 17 00:00:00 2001 From: Jeanette Sperhac Date: Wed, 10 Mar 2021 15:47:38 -0500 Subject: [PATCH 36/76] Back out Gateways additions to common test artifacts --- .../output/query-class-for-realm.json | 4 ---- .../warehouse-export/input/get-realms.json | 21 ------------------- .../output/get_current_user-cd-8.0.0.json | 3 +-- .../output/get_current_user-cs-8.0.0.json | 3 +-- .../output/get_current_user-mgr-8.0.0.json | 3 +-- .../output/get_current_user-pi-8.0.0.json | 3 +-- .../output/get_current_user-usr-8.0.0.json | 3 +-- 7 files changed, 5 insertions(+), 35 deletions(-) diff --git a/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json b/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json index 65f8fa98a1..8d2859b385 100644 --- a/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json +++ b/tests/artifacts/xdmod/component/export/realm_manager/output/query-class-for-realm.json @@ -6,9 +6,5 @@ "Cloud realm": [ "Cloud", "\\DataWarehouse\\Query\\Cloud\\JobDataset" - ], - "Gateways realm": [ - "Gateways", - "\\DataWarehouse\\Query\\Gateways\\JobDataset" ] } diff --git a/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json b/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json index 2ccc3b19e9..7c0fce9215 100644 --- a/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json +++ b/tests/artifacts/xdmod/integration/rest/warehouse-export/input/get-realms.json @@ -11,10 +11,6 @@ { "id": "Cloud", "name": "Cloud" - }, - { - "id": "Gateways", - "name": "Gateways" } ] ], @@ -30,10 +26,6 @@ { "id": "Cloud", "name": "Cloud" - }, - { - "id": "Gateways", - "name": "Gateways" } ] ], @@ -46,13 +38,8 @@ "id": "Jobs", "name": "Jobs" }, - { "id": "Cloud", "name": "Cloud" - }, - { - "id": "Gateways", - "name": "Gateways" } ] ], @@ -68,10 +55,6 @@ { "id": "Cloud", "name": "Cloud" - }, - { - "id": "Gateways", - "name": "Gateways" } ] ], @@ -87,10 +70,6 @@ { "id": "Cloud", "name": "Cloud" - }, - { - "id": "Gateways", - "name": "Gateways" } ] ], diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json index 2a5ee15a89..3029396331 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-cd-8.0.0.json @@ -13,8 +13,7 @@ "person_id": "97", "raw_data_allowed_realms": [ "Jobs", - "Cloud", - "Gateways" + "Cloud" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json index 640dd5af92..1959a8bf51 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-cs-8.0.0.json @@ -13,8 +13,7 @@ "person_id": "111", "raw_data_allowed_realms": [ "Jobs", - "Cloud", - "Gateways" + "Cloud" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json index 06ab014253..eef1f0624b 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-mgr-8.0.0.json @@ -13,8 +13,7 @@ "person_id": "-1", "raw_data_allowed_realms": [ "Jobs", - "Cloud", - "Gateways" + "Cloud" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json index 0aacde815f..914a34c2da 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-pi-8.0.0.json @@ -13,8 +13,7 @@ "person_id": "9", "raw_data_allowed_realms": [ "Jobs", - "Cloud", - "Gateways" + "Cloud" ] } } diff --git a/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json b/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json index 0641debba7..ace14a468d 100644 --- a/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json +++ b/tests/artifacts/xdmod/user_controller/output/get_current_user-usr-8.0.0.json @@ -13,8 +13,7 @@ "person_id": "114", "raw_data_allowed_realms":[ "Jobs", - "Cloud", - "Gateways" + "Cloud" ] } } From f81db15011bec5852fea2522228a019e22430cae Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 28 Oct 2020 15:38:05 -0400 Subject: [PATCH 37/76] Updating Pear \ CCR Log to Monolog These changes update: - \Log => Monolog\Logger|Psr\Log\LoggerInterface where appropriate - PEAR_LOG_* => CCR\Log::* ( which correspond to Monolog\Logger::* ) - CCR\Log has been updated to provide Monolog Loggers w/ different types of Handlers based on the requested configuration as it did before. And add: - CCRDBHandler: Monolog does not come with a way to write to a MySQL db natively, so this new class utilizes CCR's DB class to provide that functionality. - CCR\Logger: Pear Log supported passing an array as the message but unfortunately Monolog does not. This class has been added as a shim layer between Monolog & our code so that any array / class that is passed as a message will be json_encode and then passed to the underlying Monolog library to be handled as normal. This is accomplished by being the Monolog\Logger implementation returned by the CCR\Log::factory function. --- bin/xdmod-ingestor | 2 ++ classes/ETL/Utilities.php | 1 + composer.json | 2 +- templates/apache.conf | 5 +++++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/bin/xdmod-ingestor b/bin/xdmod-ingestor index 05d87042d5..acac302dfe 100755 --- a/bin/xdmod-ingestor +++ b/bin/xdmod-ingestor @@ -20,6 +20,8 @@ ini_set('memory_limit', -1); try { main(); } catch (Exception $e) { + global $logger; + do { fwrite(STDERR, $e->getMessage() . "\n"); fwrite(STDERR, $e->getTraceAsString() . "\n"); diff --git a/classes/ETL/Utilities.php b/classes/ETL/Utilities.php index 0628355774..f623bda31a 100644 --- a/classes/ETL/Utilities.php +++ b/classes/ETL/Utilities.php @@ -9,6 +9,7 @@ namespace ETL; +use CCR\Log; use ETL\Configuration\EtlConfiguration; use Exception; use stdClass; diff --git a/composer.json b/composer.json index c9ba9a4721..12a5c007d2 100644 --- a/composer.json +++ b/composer.json @@ -248,7 +248,7 @@ }, "config": { "platform": { - "php": "5.4" + "php": "7.2" }, "optimize-autoloader": true, "apcu-autoloader": true, diff --git a/templates/apache.conf b/templates/apache.conf index 59a4a26426..51f67fcea7 100644 --- a/templates/apache.conf +++ b/templates/apache.conf @@ -47,6 +47,11 @@ SSLOptions +StdEnvVars + # php-fpm integration + + SetHandler "proxy:fcgi://127.0.0.1:9000/" + + # Use HTTP Strict Transport Security to force client to use secure connections only Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" From 1b1323620e406a5b51bb86b25e8ccd7fe98b76a6 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 29 Oct 2020 13:56:38 -0400 Subject: [PATCH 38/76] Style checker fixes & reverting PHP7.2 return type declarations - Changes to appease the style check gods - Reverted code meant for PHP 7.2 to it's less typed 5.4 form. - Removed the xd*Log classes as they are no longer used. - Removed references to and `use` statements of the PEAR Log class. - Revervted changes in xdmod.spec.in to what's required in Centos7 - Reverted changes in the templates/apache.conf file to what's required for Centos7 - Quoted the expected output to account for json_encode in post_ingest_test.sh --- composer.json | 2 +- libraries/security.php | 20 +++++++++++--------- templates/apache.conf | 5 ----- tests/regression/post_ingest_test.sh | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/composer.json b/composer.json index 12a5c007d2..c9ba9a4721 100644 --- a/composer.json +++ b/composer.json @@ -248,7 +248,7 @@ }, "config": { "platform": { - "php": "7.2" + "php": "5.4" }, "optimize-autoloader": true, "apcu-autoloader": true, diff --git a/libraries/security.php b/libraries/security.php index a33f88f973..59c8de4c1a 100644 --- a/libraries/security.php +++ b/libraries/security.php @@ -11,14 +11,16 @@ */ function start_session() { - $cParams = session_get_cookie_params(); - session_set_cookie_params( - $cParams["lifetime"], - $cParams["path"], - $cParams['domain'], - true - ); - @session_start(); + if (session_status() !== PHP_SESSION_ACTIVE) { + $cParams = session_get_cookie_params(); + session_set_cookie_params( + $cParams["lifetime"], + $cParams["path"], + $cParams['domain'], + true + ); + @session_start(); + } } /** @@ -37,7 +39,7 @@ function detectUser($failover_methods = array()) } catch (\Exception $e) { if (count($failover_methods) == 0) { // Previously: Exception with 'Session Expired', No Logged In User code - throw new \SessionExpiredException(); + throw new \SessionExpiredException(); } switch ($failover_methods[0]) { diff --git a/templates/apache.conf b/templates/apache.conf index 51f67fcea7..59a4a26426 100644 --- a/templates/apache.conf +++ b/templates/apache.conf @@ -47,11 +47,6 @@ SSLOptions +StdEnvVars - # php-fpm integration - - SetHandler "proxy:fcgi://127.0.0.1:9000/" - - # Use HTTP Strict Transport Security to force client to use secure connections only Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" diff --git a/tests/regression/post_ingest_test.sh b/tests/regression/post_ingest_test.sh index ee764328d8..cb0ab9abcd 100755 --- a/tests/regression/post_ingest_test.sh +++ b/tests/regression/post_ingest_test.sh @@ -54,7 +54,7 @@ then agg_output=$(mktemp --tmpdir storage-aggregation-XXXXXXXX) sudo -u xdmod xdmod-ingestor --aggregate=storage --last-modified-start-date "$last_modified_start_date" | tee $agg_output for unit in day month quarter year; do - if ! grep -q "unit: $unit, periods: 1," $agg_output; then + if ! grep -q "\"unit\":\"$unit\",\"periods\":1," $agg_output; then echo Did not aggregate 1 period of storage data for unit $unit exit 1 fi From aa86c929617da6804518fd9c57acd0ab4be58a24 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 30 Oct 2020 14:46:13 -0400 Subject: [PATCH 39/76] Reverted this test back to the format expected pre-Monolog --- tests/regression/post_ingest_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/regression/post_ingest_test.sh b/tests/regression/post_ingest_test.sh index cb0ab9abcd..ee764328d8 100755 --- a/tests/regression/post_ingest_test.sh +++ b/tests/regression/post_ingest_test.sh @@ -54,7 +54,7 @@ then agg_output=$(mktemp --tmpdir storage-aggregation-XXXXXXXX) sudo -u xdmod xdmod-ingestor --aggregate=storage --last-modified-start-date "$last_modified_start_date" | tee $agg_output for unit in day month quarter year; do - if ! grep -q "\"unit\":\"$unit\",\"periods\":1," $agg_output; then + if ! grep -q "unit: $unit, periods: 1," $agg_output; then echo Did not aggregate 1 period of storage data for unit $unit exit 1 fi From 369f8397053b131485bd1b6e7061322fe6096c74 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 30 Oct 2020 15:43:55 -0400 Subject: [PATCH 40/76] This was meant for the centos8 branch --- libraries/security.php | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/libraries/security.php b/libraries/security.php index 59c8de4c1a..085060f0a5 100644 --- a/libraries/security.php +++ b/libraries/security.php @@ -11,16 +11,14 @@ */ function start_session() { - if (session_status() !== PHP_SESSION_ACTIVE) { - $cParams = session_get_cookie_params(); - session_set_cookie_params( - $cParams["lifetime"], - $cParams["path"], - $cParams['domain'], - true - ); - @session_start(); - } + $cParams = session_get_cookie_params(); + session_set_cookie_params( + $cParams["lifetime"], + $cParams["path"], + $cParams['domain'], + true + ); + @session_start(); } /** From 26537f7cf0b4e630059a72ef4e067e58c3aff3c8 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 30 Oct 2020 15:44:15 -0400 Subject: [PATCH 41/76] Actually reverting the expected values for these tests. --- tests/component/lib/ETL/IngestorTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/component/lib/ETL/IngestorTest.php b/tests/component/lib/ETL/IngestorTest.php index e5bd39fe42..e7cf3fcd44 100644 --- a/tests/component/lib/ETL/IngestorTest.php +++ b/tests/component/lib/ETL/IngestorTest.php @@ -78,7 +78,7 @@ public function testSqlWarnings() { $numWarnings = 0; if ( ! empty($result['stdout']) ) { foreach ( explode(PHP_EOL, trim($result['stdout'])) as $line ) { - if ( false !== strpos($line, '[warning]') ) { + if ( false !== strpos($line, '\[warning\]') ) { $numWarnings++; } } @@ -127,7 +127,7 @@ public function testHideSqlWarningCodes() { if ( ! empty($result['stdout']) ) { foreach ( explode(PHP_EOL, trim($result['stdout'])) as $line ) { - if ( false !== strpos($line, '[warning]') ) { + if ( false !== strpos($line, '\[warning\]') ) { $numWarnings++; } } @@ -143,7 +143,7 @@ public function testHideSqlWarningCodes() { if ( ! empty($result['stdout']) ) { foreach ( explode(PHP_EOL, trim($result['stdout'])) as $line ) { - if ( false !== strpos($line, '[warning]') ) { + if ( false !== strpos($line, '\[warning\]') ) { $numWarnings++; } } From e81059f7a2049a85c21bd3f4342aa4e4486c6054 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 30 Oct 2020 16:24:14 -0400 Subject: [PATCH 42/76] strpos tests don't need characeters escaped --- tests/component/lib/ETL/IngestorTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/component/lib/ETL/IngestorTest.php b/tests/component/lib/ETL/IngestorTest.php index e7cf3fcd44..e5bd39fe42 100644 --- a/tests/component/lib/ETL/IngestorTest.php +++ b/tests/component/lib/ETL/IngestorTest.php @@ -78,7 +78,7 @@ public function testSqlWarnings() { $numWarnings = 0; if ( ! empty($result['stdout']) ) { foreach ( explode(PHP_EOL, trim($result['stdout'])) as $line ) { - if ( false !== strpos($line, '\[warning\]') ) { + if ( false !== strpos($line, '[warning]') ) { $numWarnings++; } } @@ -127,7 +127,7 @@ public function testHideSqlWarningCodes() { if ( ! empty($result['stdout']) ) { foreach ( explode(PHP_EOL, trim($result['stdout'])) as $line ) { - if ( false !== strpos($line, '\[warning\]') ) { + if ( false !== strpos($line, '[warning]') ) { $numWarnings++; } } @@ -143,7 +143,7 @@ public function testHideSqlWarningCodes() { if ( ! empty($result['stdout']) ) { foreach ( explode(PHP_EOL, trim($result['stdout'])) as $line ) { - if ( false !== strpos($line, '\[warning\]') ) { + if ( false !== strpos($line, '[warning]') ) { $numWarnings++; } } From ed57da3610e6fae3084b2f9bfba14b8360b10b4a Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Tue, 24 Nov 2020 16:00:27 -0500 Subject: [PATCH 43/76] Resetting the pesky security.php --- libraries/security.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/security.php b/libraries/security.php index 085060f0a5..a33f88f973 100644 --- a/libraries/security.php +++ b/libraries/security.php @@ -37,7 +37,7 @@ function detectUser($failover_methods = array()) } catch (\Exception $e) { if (count($failover_methods) == 0) { // Previously: Exception with 'Session Expired', No Logged In User code - throw new \SessionExpiredException(); + throw new \SessionExpiredException(); } switch ($failover_methods[0]) { From e7656b9cf7694222c5ee7d9d2b0e945ed786783c Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Tue, 1 Dec 2020 15:05:57 -0500 Subject: [PATCH 44/76] Minor Cleanup from reviewing Github changes - StateManager.php: Want to standardize on using CCR\Log as opposed to Monolog\Logger so that if we need to swap out Logging Frameworks in the future it will be easier. i.e. we're utilizing CCR\Log is a Facade - Other changes are just removing unused `use` statements. --- classes/ETL/Utilities.php | 1 - 1 file changed, 1 deletion(-) diff --git a/classes/ETL/Utilities.php b/classes/ETL/Utilities.php index f623bda31a..0628355774 100644 --- a/classes/ETL/Utilities.php +++ b/classes/ETL/Utilities.php @@ -9,7 +9,6 @@ namespace ETL; -use CCR\Log; use ETL\Configuration\EtlConfiguration; use Exception; use stdClass; From b6abc7d1367be32015f59bfb837fecdb2e836d90 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 29 Oct 2020 11:26:03 -0400 Subject: [PATCH 45/76] Taking care of a PHP Warning that was continually thrown This was an odd one as it was a `continue` in a `case` statement located in a `for` loop. A `break` would have sufficed to end the `case` statement. If we take into account the warning message above `Skipping filter...` and that the `for` loop is looping through filters we can, with reasonable certainty assume that the intent was to `continue` the `for` loop. To make that happen we needed to add the `2`. --- classes/ETL/DataEndpoint/aStructuredFile.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/classes/ETL/DataEndpoint/aStructuredFile.php b/classes/ETL/DataEndpoint/aStructuredFile.php index 43ad130ff9..f9a4bb3368 100644 --- a/classes/ETL/DataEndpoint/aStructuredFile.php +++ b/classes/ETL/DataEndpoint/aStructuredFile.php @@ -239,7 +239,7 @@ protected function attachFilters() $this->logger->warning( sprintf("Skipping filter '%s': %s", $config->name, implode(", ", $messages)) ); - continue; + continue 2; } $filterName = 'xdmod.external_process'; $resource = @stream_filter_prepend($fd, $filterName, STREAM_FILTER_READ, $config); From 5b46c42deda392fafc767d9a8c2160630af59dde Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 29 Oct 2020 13:22:20 -0400 Subject: [PATCH 46/76] Updates to XDUser::saveUser to accomodate MariaDB datetime values These changes initially started w/ just the update of this line: `$update_data['password_last_updated'] = 'NOW()';` to utilize `date('Y-m-d H:i:s');`. After a conversation w/ Ben, it was determined that the previous two functions `getInsertQuery` and `getUpdateQuery` were much more complicated then they needed to be and thus they've been combined into this much easier to read and understand function `getQuery` --- classes/XDUser.php | 95 +++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 51 deletions(-) diff --git a/classes/XDUser.php b/classes/XDUser.php index 8336e84489..c471c2f12e 100644 --- a/classes/XDUser.php +++ b/classes/XDUser.php @@ -831,53 +831,45 @@ public function issueNewToken() // --------------------------- /** - * Returns a parameterized Update query for the 'User' table. If the - * $updateToken parameter is set then it includes the 'token' - * and the 'token_expiration' fields. + * This function will construct a sql statement, either an UPDATE, if an `id` column name is found, or an INSERT + * statement from the provided array of $columnNames for the `moddb.Users` table. Regardless of the type of + * statement constructed, they will both be parameterized with the values being presented in the form + * `:column_name`. * - * @param bool $updateToken signifies whether or not to include the 'token' - * related columns in the return value. - * @param bool $includePassword signifies whether or not to include the - * 'password' related columns in the return value. + * @param array $columnNames an array containing the column names of the table to be used in generating the INSERT / UPDATE statement. * - * @return string a parameterized query for the 'User' table + * @return string a parameterized SQL INSERT or UPDATE statement */ - public function getUpdateQuery($updateToken = false, $includePassword = false) + public function getQuery(array $columnNames): string { - $result = 'UPDATE moddb.Users SET username = :username, email_address = :email_address, first_name = :first_name, middle_name = :middle_name, last_name = :last_name, account_is_active = :account_is_active, person_id = :person_id, organization_id = :organization_id, field_of_science = :field_of_science, user_type = :user_type, sticky = :sticky WHERE id = :id'; - if ($updateToken && $includePassword) { - $result = 'UPDATE moddb.Users SET username = :username, password = :password, email_address = :email_address, first_name = :first_name, middle_name = :middle_name, last_name = :last_name, account_is_active = :account_is_active, person_id = :person_id, organization_id = :organization_id, field_of_science = :field_of_science, token = :token, user_type = :user_type, password_last_updated = :password_last_updated, sticky = :sticky WHERE id = :id'; - } else if (!$updateToken && $includePassword) { - $result = 'UPDATE moddb.Users SET username = :username, password = :password, email_address = :email_address, first_name = :first_name, middle_name = :middle_name, last_name = :last_name, account_is_active = :account_is_active, person_id = :person_id, organization_id = :organization_id, field_of_science = :field_of_science, user_type = :user_type, password_last_updated = :password_last_updated, sticky = :sticky WHERE id = :id'; - } else if ($updateToken && !$includePassword) { - $result = 'UPDATE moddb.Users SET username = :usernam, email_address = :email_address, first_name = :first_name, middle_name = :middle_name, last_name = :last_name, account_is_active = :account_is_active, person_id = :person_id, organization_id = :organization_id, field_of_science = :field_of_science, token = :token, user_type = :user_type, sticky = :sticky WHERE id = :id'; - } - return $result; - } + if (in_array('id', $columnNames)) { - /** - * Returns a parameterized Insert query for the 'User' table. If the - * $updateToken parameter is set then it includes the 'token' - * and the 'token_expiration' fields. - * - * @param bool $updateToken signifies whether or not to include the 'token' - * related columns in the return value. - * @param bool $includePassword signifies whether or not to include the - * 'password' related columns in the return value. - * - * @return string a parameterized query for the 'User' table - */ - public function getInsertQuery($updateToken = false, $includePassword = false) - { - $result = 'INSERT INTO moddb.Users (username, email_address, first_name, middle_name, last_name, account_is_active, person_id, organization_id, field_of_science, user_type, sticky) VALUES (:username, :email_address, :first_name, :middle_name, :last_name, :account_is_active, :person_id, :organization_id, :field_of_science, :user_type, :sticky)'; - if ($updateToken && $includePassword) { - $result = 'INSERT INTO moddb.Users (username, password, password_last_updated, email_address, first_name, middle_name, last_name, account_is_active, person_id, organization_id, field_of_science, token, user_type, sticky) VALUES (:username, :password, :password_last_updated, :email_address, :first_name, :middle_name, :last_name, :account_is_active, :person_id, :organization_id, :field_of_science, :token, :user_type, :sticky)'; - } else if (!$updateToken && $includePassword) { - $result = 'INSERT INTO moddb.Users (username, password, password_last_updated, email_address, first_name, middle_name, last_name, account_is_active, person_id, organization_id, field_of_science, user_type, sticky) VALUES (:username, :password, :password_last_updated, :email_address, :first_name, :middle_name, :last_name, :account_is_active, :person_id, :organization_id, :field_of_science, :user_type, :sticky)'; - } else if ($updateToken && !$includePassword) { - $result = 'INSERT INTO moddb.Users (username, email_address, first_name, middle_name, last_name, account_is_active, person_id, organization_id, field_of_science, token, user_type, sticky) VALUES (:username, :email_address, :first_name, :middle_name, :last_name, :account_is_active, :person_id, :organization_id, :field_of_science, :token, :user_type, :sticky)'; + unset($columnNames['id']); + + $results = array(); + + foreach($columnNames as $key) { + $results[] = sprintf("%s = :%s", $key, $key); + } + + $setClauses = implode(', ', $results); + + return sprintf("UPDATE moddb.Users SET %s WHERE id = :id", $setClauses); + } else { + $columns = array(); + $values = array(); + + foreach($columnNames as $key) { + $columns[] = $key; + $values[] = ":$key"; + } + + return sprintf( + 'INSERT INTO moddb.Users (%s) VALUES(%s)', + implode(', ', $columns), + implode(', ', $values) + ); } - return $result; } /** @@ -984,12 +976,15 @@ public function saveUser() $update_data['middle_name'] = ($this->_middleName); $update_data['last_name'] = ($this->_lastName); $update_data['account_is_active'] = ($this->_account_is_active) ? '1' : '0'; - $update_data['person_id'] = $this->_personID == null - ? 'NULL' - : ($this->_personID); - $update_data['organization_id'] = $this->_organizationID == null - ? 'NULL' - : ($this->_organizationID); + + if ($this->_personID !== null) { + $update_data['person_id'] = $this->_personID; + } + + if ($this->_organizationID !== null) { + $update_data['organization_id'] =$this->_organizationID; + } + $update_data['field_of_science'] = ($this->_field_of_science); if ($this->_update_token) { $update_data['token'] = ($this->_generateToken()); @@ -1001,9 +996,7 @@ public function saveUser() /* END: Query Data Population */ try { /* BEGIN: Construct the parameterized query */ - $query = $forUpdate - ? $this->getUpdateQuery($this->_update_token, $includePassword) - : $this->getInsertQuery($this->_update_token, $includePassword); + $query = $this->getQuery(array_keys($update_data)); /* END: Construct the parameterized query */ /* BEGIN: Execute the query */ @@ -1017,7 +1010,7 @@ public function saveUser() $this->_id = $new_user_id; } } catch (Exception $e) { - throw new Exception("Exception occured while inserting / updating. UpdateToken: [{$this->_update_token}] Query: [$query] data: [{$this->arrayToString($update_data)}]", null, $e); + throw new Exception("Exception occurred while inserting / updating. UpdateToken: [{$this->_update_token}] Query: [$query] data: [{$this->arrayToString($update_data)}]", null, $e); } /* END: Execute the query */ From d395f81e45ed4b5d5b80a287e5e18d83e2d8520d Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 29 Oct 2020 13:42:29 -0400 Subject: [PATCH 47/76] Expected Test Updates made to accomodate Centos8 changes All of these changes are due to the versions of software being updated on Centos8 vs. Centos7. - normalized_table_definition.json: Default values are now being returned as single quoted strings now in MariaDB 10.3.17. - UsageExplorerTest.php: w/ PHP 7.2 installed these response header values have changed and needed to be updated. - RegressionTestHelper.php: w/ PHP 7.2 installed, when dealing with exported CSV data we sometimes encounter and expect JSON data instead. For instance, when a user requests data that they do not have access to a JSON object will be returned. Unfortunately we compare this JSON data as strings and not as objects / arrays. This coupled with JSON Pretty Print not including a new line after the opening square bracket of an empty array ( example below ): ```json { "property1": "", "property2": [ ] } ``` Versus ```json { "property1": "", "property2": [] } ``` This meant that these tests were failing. I've just added a secondary test if the intitial `$expected === $csvdata` condition fails that tests if $expected / $csvdata are actually json data. --- .../etlv2/configuration/output/normalized_table_definition.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json b/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json index f88f656a30..85d1a2280b 100644 --- a/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json +++ b/tests/artifacts/xdmod/etlv2/configuration/output/normalized_table_definition.json @@ -31,7 +31,7 @@ "charset": "utf8", "collation": "utf8_general_ci", "nullable": false, - "default": "first name", + "default": "'first name'", "extra": null, "comment": null, "hints": null, From e506a0457eed69a2ee33c0b1591c9cad21d34627 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 29 Oct 2020 14:25:05 -0400 Subject: [PATCH 48/76] Style Fix --- tests/integration/lib/Database/SharedJobsTest.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/integration/lib/Database/SharedJobsTest.php b/tests/integration/lib/Database/SharedJobsTest.php index c166e4ee2d..ce9588832a 100644 --- a/tests/integration/lib/Database/SharedJobsTest.php +++ b/tests/integration/lib/Database/SharedJobsTest.php @@ -34,8 +34,14 @@ public function testResourcesSharedJobsValues() $this->testFiles->getFile('schema/integration', 'shared_jobs.spec', ''), false ); - - $this->validateJson($actual, $schemaObject); + $validator = new Validator(); + $actualDecoded = json_decode(json_encode($actual)); + $validator->validate($actualDecoded, $schemaObject); + $errors = array(); + foreach ($validator->getErrors() as $err) { + $errors[] = sprintf("[%s] %s\n", $err['property'], $err['message']); + } + $this->assertEmpty($errors, implode("\n", $errors) . "\n" . json_encode($actual, JSON_PRETTY_PRINT)); # Check expected file foreach(self::$XDMOD_REALMS as $realm) { From 4924d3f2aa6b496b8619a4e18a25d620b381c30d Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 29 Oct 2020 14:25:19 -0400 Subject: [PATCH 49/76] Adding PHP 7.2 return type declarations and documentation --- classes/CCR/CCRDBHandler.php | 2 +- classes/CCR/Log.php | 18 +++++++++--------- classes/CCR/Logger.php | 1 - 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/classes/CCR/CCRDBHandler.php b/classes/CCR/CCRDBHandler.php index 058c740c4e..bf4b32ae4d 100644 --- a/classes/CCR/CCRDBHandler.php +++ b/classes/CCR/CCRDBHandler.php @@ -91,7 +91,7 @@ protected function write(array $record) * * @throws Exception if any of the sql statements fail to execute. */ - protected function getNextId() + protected function getNextId(): int { $this->db->beginTransaction(); diff --git a/classes/CCR/Log.php b/classes/CCR/Log.php index 0363617074..ac233b4e1f 100644 --- a/classes/CCR/Log.php +++ b/classes/CCR/Log.php @@ -97,7 +97,7 @@ private function __construct() * @throws Exception @see getLogger() */ public static function factory( - $ident = 'xdmod-logger', + string $ident = 'xdmod-logger', array $conf = array() ) { $conf['lineFormat'] @@ -145,7 +145,7 @@ public static function factory( * * @throws Exception If there is a problem instantiating the requested log handlers. */ - public static function singleton($ident, array $config = array('null' => array())) + public static function singleton(string $ident, array $config = array('null' => array())): LoggerInterface { if (!array_key_exists($ident, self::$loggers)) { self::$loggers[$ident] = self::factory($ident, $config); @@ -164,7 +164,7 @@ public static function singleton($ident, array $config = array('null' => array() * * @throws Exception If there are any problems w/ instantiating the requested handlers. */ - protected static function getLogger($ident, array $conf) + protected static function getLogger(string $ident, array $conf): LoggerInterface { $loggerTypes = array( 'console', @@ -213,7 +213,7 @@ protected static function getLogger($ident, array $conf) * * @throws Exception if a StreamHandler to `php://stdout` cannot be instantiated. */ - protected static function getConsoleHandler($ident, array $conf) + protected static function getConsoleHandler(string $ident, array $conf): HandlerInterface { $consoleLogLevel = isset($conf['consoleLogLevel']) @@ -243,7 +243,7 @@ protected static function getConsoleHandler($ident, array $conf) * * @throws Exception If there is a problem instantiating the StreamHandler to the requested file. */ - protected static function getFileHandler($ident, array $conf) + protected static function getFileHandler(string $ident, array $conf): HandlerInterface { $fileLogLevel = isset($conf['fileLogLevel']) @@ -278,7 +278,7 @@ protected static function getFileHandler($ident, array $conf) * * @throws Exception @see CCRDBHandler::__construct */ - protected static function getDbHandler($ident, array $conf) + protected static function getDbHandler(string $ident, array $conf): HandlerInterface { $dbLogLevel = isset($conf['dbLogLevel']) @@ -305,7 +305,7 @@ protected static function getDbHandler($ident, array $conf) * * @throws Exception @see self::getConfiguration() */ - protected static function getMailHandler($ident, array $conf) + protected static function getMailHandler(string $ident, array $conf): HandlerInterface { $mailLogLevel = isset($conf['mailLogLevel']) @@ -351,7 +351,7 @@ protected static function getMailHandler($ident, array $conf) * @param string $logType The log handler type to be used when retrieving the default log level. * @return int that corresponds w/ this class' constants. i.e. EMERG, ALERT, CRIT, ERR, WARNING, NOTICE, INFO, DEBUG */ - protected static function getDefaultLogLevel($logType) + protected static function getDefaultLogLevel(string $logType): int { $option = 'default_level_' . $logType; @@ -404,7 +404,7 @@ public static function convertToMonologLevel($ccrLevel) * @throws Exception If $option is not found in the logger section. * @throws Exception If the value of $option is empty. */ - protected static function getConfiguration($option) + protected static function getConfiguration(string $option) { return xd_utilities\getConfiguration('logger', $option); } diff --git a/classes/CCR/Logger.php b/classes/CCR/Logger.php index 0c3994a9a8..4bf6e8f1af 100644 --- a/classes/CCR/Logger.php +++ b/classes/CCR/Logger.php @@ -16,7 +16,6 @@ */ class Logger extends \Monolog\Logger implements LoggerInterface { - /** * @inheritDoc */ From 7e63a9fc04b4406081786f596d5751f3f1e92672 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 29 Oct 2020 16:47:43 -0400 Subject: [PATCH 50/76] Updating expected output to account for json_encode --- tests/regression/post_ingest_test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/regression/post_ingest_test.sh b/tests/regression/post_ingest_test.sh index ee764328d8..cb0ab9abcd 100755 --- a/tests/regression/post_ingest_test.sh +++ b/tests/regression/post_ingest_test.sh @@ -54,7 +54,7 @@ then agg_output=$(mktemp --tmpdir storage-aggregation-XXXXXXXX) sudo -u xdmod xdmod-ingestor --aggregate=storage --last-modified-start-date "$last_modified_start_date" | tee $agg_output for unit in day month quarter year; do - if ! grep -q "unit: $unit, periods: 1," $agg_output; then + if ! grep -q "\"unit\":\"$unit\",\"periods\":1," $agg_output; then echo Did not aggregate 1 period of storage data for unit $unit exit 1 fi From dad5bd1459dfa5c0e9c57ece8f7c787d0c6c5a72 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Tue, 12 Nov 2019 09:25:48 -0500 Subject: [PATCH 51/76] chekpoint --- .../Controllers/ETLControllerProvider.php | 115 ++++++++++ configuration/constants.php | 1 + configuration/internal_dashboard.json | 6 + configuration/rest.d/etl.json | 6 + html/internal_dashboard/index.php | 5 + .../js/etl_viewer/ETLViewer.js | 88 ++++++++ .../js/etl_viewer/ETLViewerTree.js | 149 ++++++++++++ .../js/etl_viewer/ETLViewerTreePanel.js | 213 ++++++++++++++++++ .../js/etl_viewer/ETLViewerTreeTab.js | 26 +++ 9 files changed, 609 insertions(+) create mode 100644 classes/Rest/Controllers/ETLControllerProvider.php create mode 100644 configuration/rest.d/etl.json create mode 100644 html/internal_dashboard/js/etl_viewer/ETLViewer.js create mode 100644 html/internal_dashboard/js/etl_viewer/ETLViewerTree.js create mode 100644 html/internal_dashboard/js/etl_viewer/ETLViewerTreePanel.js create mode 100644 html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php new file mode 100644 index 0000000000..0a3a37879d --- /dev/null +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -0,0 +1,115 @@ +prefix; + $class = get_class($this); + + $controller->get("$root/pipelines", "$class::getPipelines"); + } + + /** + * @param Request $request + * @param Application $app + * @return JsonResponse + * @throws Exception + */ + public function getPipelines(Request $request, Application $app) + { + $this->authorize($request, array(ROLE_ID_MANAGER)); + + $etlConfig = $this->retrieveETLConfig(); + + $pipelineNames = $etlConfig->getSectionNames(); + sort($pipelineNames); + + $results = array(); + foreach ($pipelineNames as $pipelineName) { + $pipeline = array( + 'name' => $pipelineName, + 'actions' => array() + ); + + $actions = $etlConfig->getConfiguredActionNames($pipelineName); + foreach ($actions as $actionName) { + $action = array( + 'name' => $actionName + ); + + $options = $etlConfig->getActionOptions($actionName, $pipelineName); + + foreach ($options as $key => $value) { + $translated = $value; + if (in_array($key, array('source', 'destination', 'utility'))) { + $endpoint = $etlConfig->getDataEndpoint($value); + if ($endpoint instanceof iRdbmsEndpoint) { + $translated = $endpoint->getSchema(); + } elseif ($endpoint instanceof File) { + $translated = realpath($endpoint->getPath()); + } else { + $translated = json_encode($translated); + } + } elseif ($key === 'definition_file' && isset($value)) { + $definitionPath = $options->paths->action_definition_dir . "/$value"; + $translated = Json::loadFile($definitionPath); + } + + $action[$key] = $translated; + } + $pipeline['actions'][] = $action; + } + + $results[] = $pipeline; + } + + return $app->json($results); + } + + /** + * @param array $scriptOptions + * @return \Configuration\Configuration + * @throws Exception + */ + public function retrieveETLConfig(array $scriptOptions = array( + 'config-file' => DEFAULT_ETL_CONFIG_FILE, + 'base-dir' => null, + 'default_module_name' => DEFAULT_MODULE_NAME) + ) + { + $etlConfig = EtlConfiguration::factory( + $scriptOptions['config-file'], + $scriptOptions['base-dir'], + null, + array( + 'default_module_name' => $scriptOptions['default_module_name'] + ) + ); + Utilities::setEtlConfig($etlConfig); + return $etlConfig; + } +} diff --git a/configuration/constants.php b/configuration/constants.php index 2470f448ea..500a81218b 100644 --- a/configuration/constants.php +++ b/configuration/constants.php @@ -66,6 +66,7 @@ */ define('CONFIG_PORTAL_SETTINGS', CONFIG_DIR.'/portal_settings.ini'); +define('DEFAULT_ETL_CONFIG_FILE', CONFIG_DIR.'/etl/etl.json'); /** * COMMON ERROR CODES diff --git a/configuration/internal_dashboard.json b/configuration/internal_dashboard.json index 4de9271d9d..0876304717 100644 --- a/configuration/internal_dashboard.json +++ b/configuration/internal_dashboard.json @@ -11,6 +11,12 @@ "config": { "title": "User Management" } + }, + { + "class": "XDMoD.Admin.ETL.ETLViewer", + "config": { + "title": "ETL Viewer" + } } ], "logs": [ diff --git a/configuration/rest.d/etl.json b/configuration/rest.d/etl.json new file mode 100644 index 0000000000..449e54fd85 --- /dev/null +++ b/configuration/rest.d/etl.json @@ -0,0 +1,6 @@ +{ + "etl": { + "prefix": "etl", + "controller": "Rest\\Controllers\\ETLControllerProvider" + } +} diff --git a/html/internal_dashboard/index.php b/html/internal_dashboard/index.php index 733e7defdf..992b758610 100644 --- a/html/internal_dashboard/index.php +++ b/html/internal_dashboard/index.php @@ -195,6 +195,11 @@ + + + + + + + + + + + + diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index 43b9c3546b..fdec682440 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -5,11 +5,33 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { layout: 'border', initComponent: function () { - this.tree = new XDMoD.Admin.ETL.ETLViewerTreePanel({ + /*this.tree = new XDMoD.Admin.ETL.ETLViewerTreePanel({ region: 'center', parentTab: this - }); + });*/ + this.tree = new Ext.ux.tree.TreeGrid({ + region: 'center', + closable: false, + updateHistory: true, + title: 'ETL Pipeline Viewer', + autoScroll: true, + columnResize: true, + enableDD: true, + dataUrl: XDMoD.REST.url + '/etl/pipelines', + columns: [ + { + header: 'Name', + dataIndex: 'name', + width: 500 + }, + { + header: 'Value', + dataIndex: 'value', + width: 500 + } + ] + }); Ext.apply(this, { items: [ From e9df9d53d401ff82da81cb510a1dd69fe5cb414d Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Tue, 17 Dec 2019 12:53:55 -0500 Subject: [PATCH 54/76] removing commented out code --- classes/Rest/Controllers/ETLControllerProvider.php | 1 - 1 file changed, 1 deletion(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 5a54067b63..7fdf32c312 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -98,7 +98,6 @@ public function getPipelines(Request $request, Application $app) $option['leaf'] = true; } - #$action[$key] = $translated; $action['children'][] = $option; } $pipeline['children'][] = $action; From 1f021bb312e175f132ae8a0e84049d3fe69736c8 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 13 Feb 2020 11:12:34 -0500 Subject: [PATCH 55/76] Beginnings of selecting a file to view in ETL Viewer --- .../Controllers/ETLControllerProvider.php | 44 +++++++++++++- .../js/etl_viewer/ETLViewerTreeTab.js | 58 +++++++++++++++++-- 2 files changed, 96 insertions(+), 6 deletions(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 7fdf32c312..e7aa9a5631 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -8,6 +8,7 @@ use ETL\DataEndpoint\iRdbmsEndpoint; use ETL\Utilities; use Exception; +use RecursiveRegexIterator; use Silex\Application; use Silex\ControllerCollection; use Symfony\Component\HttpFoundation\JsonResponse; @@ -31,6 +32,9 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $controller->get("$root/pipelines", "$class::getPipelines"); $controller->post("$root/pipelines", "$class::getPipelines"); + + $controller->get("$root/files", "$class::getFileNames"); + $controller->post("$root/files", "$class::getFileNames"); } /** @@ -84,7 +88,7 @@ public function getPipelines(Request $request, Application $app) $definitionPath = $options->paths->action_definition_dir . "/$value"; $translated = $this->convertForTreeGrid(Json::loadFile($definitionPath)); } elseif (is_object($value) || is_array($value)) { - $translated = $this->convertForTreeGrid($value); + $translated = $this->convertForTreeGrid($value); } $option = array( @@ -110,6 +114,42 @@ public function getPipelines(Request $request, Application $app) return $app->json($results); } + public function getFileNames(Request $request, Application $app) + { + $query = $request->get('query'); + + // Make sure that if they send an empty string then we still set query to null. + $query = !empty($query) ? $query : null; + + $etlDir = implode(DIRECTORY_SEPARATOR, array(CONFIG_DIR, 'etl')); + + $jsonFiles = new \RegexIterator( + new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($etlDir) + ), + '/^.+\.json$/', + RecursiveRegexIterator::GET_MATCH + ); + + $results = array(); + foreach ($jsonFiles as $jsonFile) { + $rawName = $jsonFile[0]; + $startPos = strpos($rawName, $etlDir) !== false ? strlen($etlDir) + 1 : 0; + $fileName = substr($rawName, $startPos); + if ($query === null || + ($query !== null && preg_match(".*$query.*", $fileName) !== false) + ) { + $results[] = array('name' => $fileName); + } + } + + return $app->json( + array( + 'results' => $results + ) + ); + } + /** * @param array $scriptOptions * @return \Configuration\Configuration @@ -147,7 +187,7 @@ protected function convertForTreeGrid($source) $keys = get_object_vars($source); } - foreach($keys as $key) { + foreach ($keys as $key) { $value = null; if ($isArray) { $value = $source[$key]; diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index fdec682440..e6f173c5ec 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -5,10 +5,59 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { layout: 'border', initComponent: function () { - /*this.tree = new XDMoD.Admin.ETL.ETLViewerTreePanel({ - region: 'center', - parentTab: this - });*/ + + this.fileSelect = new Ext.form.ComboBox({ + fieldLabel: 'ETL File', + valueField: 'name', + displayField: 'name', + typeAhead: true, + lazyRender: true, + triggerAction: 'all', + store: new Ext.data.JsonStore({ + autoLoad: true, + url: XDMoD.REST.url + '/etl/files', + root: 'results', + idProperty: 'name', + fields: ['name'] + }) + }); + + this.searchPanel = new Ext.Panel({ + title: 'Search', + region: 'west', + split: true, + collapsible: true, + collapsed: false, + collapseFirst: false, + width: 375, + layout: 'border', + margins: '2 0 2 2', + border: true, + items: [ + { + xtype: 'form', + layout: 'fit', + region: 'center', + height: 90, + border: false, + items: [ + { + xtype: 'fieldset', + header: false, + layout: 'form', + hideLabels: false, + border: false, + defaults: { + anchor: '0' + }, + items: [ + this.fileSelect + ] + } + ] + } + ] + }); this.tree = new Ext.ux.tree.TreeGrid({ region: 'center', @@ -35,6 +84,7 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { Ext.apply(this, { items: [ + this.searchPanel, this.tree ] }); From aee8fdce8876c85b8ad1b4c78856dfc7198b2047 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 17 Sep 2020 11:26:40 -0400 Subject: [PATCH 56/76] Exploring adding JsonSerializable to some ETL classes --- classes/ETL/DataEndpoint/File.php | 13 +++++++++- classes/ETL/DataEndpoint/aDataEndpoint.php | 14 +++++++++- classes/ETL/DataEndpoint/aRdbmsEndpoint.php | 17 +++++++++++- classes/ETL/DataEndpoint/aStructuredFile.php | 20 ++++++++++++++- classes/ETL/DbModel/Entity.php | 12 ++++++++- classes/ETL/EtlOverseerOptions.php | 27 +++++++++++++++++++- classes/ETL/aAction.php | 23 ++++++++++++++++- classes/ETL/aEtlObject.php | 10 +++++++- classes/ETL/aOptions.php | 10 +++++++- classes/ETL/aRdbmsDestinationAction.php | 14 +++++++++- 10 files changed, 150 insertions(+), 10 deletions(-) diff --git a/classes/ETL/DataEndpoint/File.php b/classes/ETL/DataEndpoint/File.php index 31f08f571e..a6542f925d 100644 --- a/classes/ETL/DataEndpoint/File.php +++ b/classes/ETL/DataEndpoint/File.php @@ -8,7 +8,7 @@ use ETL\DataEndpoint\DataEndpointOptions; use Psr\Log\LoggerInterface; -class File extends aDataEndpoint implements iDataEndpoint +class File extends aDataEndpoint implements iDataEndpoint, \JsonSerializable { /** @@ -176,4 +176,15 @@ public function __toString() { return sprintf('%s (name=%s, path=%s)', get_class($this), $this->name, $this->path); } + + public function jsonSerialize() + { + return array_merge( + parent::jsonSerialize(), + array( + 'path' => $this->path, + 'mode' => $this->mode + ) + ); + } } diff --git a/classes/ETL/DataEndpoint/aDataEndpoint.php b/classes/ETL/DataEndpoint/aDataEndpoint.php index bb70cd3b20..1f3ebadf37 100644 --- a/classes/ETL/DataEndpoint/aDataEndpoint.php +++ b/classes/ETL/DataEndpoint/aDataEndpoint.php @@ -11,7 +11,7 @@ use Exception; use Psr\Log\LoggerInterface; -abstract class aDataEndpoint extends aEtlObject +abstract class aDataEndpoint extends aEtlObject implements \JsonSerializable { /** * @var string The endpoint type (e.g., mysql, pdo, file, url) @@ -135,4 +135,16 @@ protected function generateUniqueKey() */ abstract public function connect(); + + public function jsonSerialize() + { + return array_merge( + parent::jsonSerialize(), + array( + 'type' => $this->type, + 'key' => $this->key, + 'key_separator' => $this->keySeparator + ) + ); + } } diff --git a/classes/ETL/DataEndpoint/aRdbmsEndpoint.php b/classes/ETL/DataEndpoint/aRdbmsEndpoint.php index fff5c1c4f8..e2aed8470f 100644 --- a/classes/ETL/DataEndpoint/aRdbmsEndpoint.php +++ b/classes/ETL/DataEndpoint/aRdbmsEndpoint.php @@ -12,7 +12,7 @@ use Exception; use PDOException; -abstract class aRdbmsEndpoint extends aDataEndpoint +abstract class aRdbmsEndpoint extends aDataEndpoint implements \JsonSerializable { /** * @ var string The database schema for this endpoint @@ -357,4 +357,19 @@ abstract public function schemaExists($schemaName = null); */ abstract public function createSchema($schemaName = null); + + public function jsonSerialize() + { + return array_merge( + parent::jsonSerialize(), + array( + 'config' => $this->config, + 'schema' => $this->schema, + 'host_name' => $this->hostname, + 'port'=> $this->port, + 'username'=> $this->username, + 'create_schema_if_not_exists' => $this->createSchemaIfNotExists + ) + ); + } } diff --git a/classes/ETL/DataEndpoint/aStructuredFile.php b/classes/ETL/DataEndpoint/aStructuredFile.php index f9a4bb3368..24fc4bd6e1 100644 --- a/classes/ETL/DataEndpoint/aStructuredFile.php +++ b/classes/ETL/DataEndpoint/aStructuredFile.php @@ -13,7 +13,7 @@ use Psr\Log\LoggerInterface; -abstract class aStructuredFile extends File +abstract class aStructuredFile extends File implements \JsonSerializable { /** * @const integer The default number of bytes for file read operations. @@ -613,4 +613,22 @@ abstract protected function verifyData(); */ abstract protected function discoverRecordFieldNames(); + + public function jsonSerialize() + { + return array_merge( + parent::jsonSerialize(), + array( + 'record_schema_path' => $this->recordSchemaPath, + 'filter_list' => $this->filterList, + 'filter_definitions' => $this->filterDefinitions, + 'record_separator' => $this->recordSeparator, + 'field_separator' => $this->fieldSeparator, + 'has_header' => $this->hasHeaderRecord, + 'requested_record_field_names' => $this->requestedRecordFieldNames, + 'discovered_record_field_names' => $this->discoveredRecordFieldNames , + 'record_pass_through' => $this->recordPassthrough + ) + ); + } } diff --git a/classes/ETL/DbModel/Entity.php b/classes/ETL/DbModel/Entity.php index a5ed29851d..3fbb90b219 100644 --- a/classes/ETL/DbModel/Entity.php +++ b/classes/ETL/DbModel/Entity.php @@ -52,7 +52,7 @@ use ETL\DataEndpoint; use ETL\DataEndpoint\DataEndpointOptions; -class Entity extends Loggable +class Entity extends Loggable implements \JsonSerializable { // The list of required properties for this model. If extending classes define their // own required properties they should merge them in the constructor by calling @@ -499,4 +499,14 @@ public function __toString() { return get_class($this); } // __toString() + + public function jsonSerialize() + { + return array( + 'properties' => $this->properties, + 'required_properties' => $this->requiredProperties, + 'default_property_values'=> $this->defaultPropertyValues, + 'system_quote_char' => $this->systemQuoteChar + ); + } } // class Entity diff --git a/classes/ETL/EtlOverseerOptions.php b/classes/ETL/EtlOverseerOptions.php index feb6909eb5..5aafb783ed 100644 --- a/classes/ETL/EtlOverseerOptions.php +++ b/classes/ETL/EtlOverseerOptions.php @@ -15,7 +15,7 @@ use ETL\DbModel\Query; use Psr\Log\LoggerInterface; -class EtlOverseerOptions extends \CCR\Loggable +class EtlOverseerOptions extends \CCR\Loggable implements \JsonSerializable { // Start of the ETL period private $startDate = null; @@ -953,4 +953,29 @@ private function generateEtlChunkList() $this->etlPeriodChunkList = $chunkList; } // generateEtlChunkList() + + public function jsonSerialize() + { + return array( + 'start_date' => $this->startDate, + 'end_date' => $this->endDate, + 'number_of_days'=> $this->numberOfDays, + 'last_modified_start_date' => $this->lastModifiedStartDate, + 'last_modified_end_date' => $this->lastModifiedEndDate, + 'etl_interval_chunk_size_days' => $this->etlIntervalChunkSizeDays, + 'etl_period_chunk_list' => $this->etlPeriodChunkList, + 'force_operation' => $this->forceOperation, + 'include_only_resource_codes' => $this->includeOnlyResourceCodes, + 'exclude_resource_codes'=> $this->excludeResourceCodes, + 'lock_dir' => $this->lockDir, + 'lock_file_prefix' => $this->lockFilePrefix, + 'default_module_name' => $this->defaultModuleName, + 'resource_code_to_id_map_sql'=> $this->resourcecodeToIdMapSql, + 'section_names'=> $this->sectionNames, + 'action_names' => $this->actionNames, + 'dry_run' => $this->dryrun, + 'verbose' => $this->verbose, + 'supported_overseer_restrictions' => $this->supportedOverseerRestrictions + ); + } } // class EtlOverseerOptions diff --git a/classes/ETL/aAction.php b/classes/ETL/aAction.php index c17ef4cfbc..aace1f19b5 100644 --- a/classes/ETL/aAction.php +++ b/classes/ETL/aAction.php @@ -18,7 +18,7 @@ use ETL\Configuration\EtlConfiguration; use Psr\Log\LoggerInterface; -abstract class aAction extends aEtlObject +abstract class aAction extends aEtlObject implements \JsonSerializable { /** * @var aOptions object with configuration information for this action @@ -526,4 +526,25 @@ abstract protected function performPreExecuteTasks(); */ abstract protected function performPostExecuteTasks($numRecordsProcessed = null); + + public function jsonSerialize() + { + return array_merge( + $parent = parent::jsonSerialize(), + array( + 'options' => $this->options, + 'etl_config' => $this->etlConfig, + 'etl_overseer_options' => $this->etlOverseerOptions, + 'overseer_restriction_overrides' => $this->overseerRestrictionOverrides, + 'variable_store'=> $this->variableStore, + 'definition_file' => $this->definitionFile, + 'support_date_range_chunking' => $this->supportDateRangeChunking, + 'current_start_date' => $this->currentStartDate, + 'current_end_date' => $this->currentEndDate, + 'source_end_point'=> $this->sourceEndpoint, + 'destination_end_point' => $this->destinationEndpoint, + 'utility_end_point' => $this->utilityEndpoint + ) + ); + } } // abstract class aAction diff --git a/classes/ETL/aEtlObject.php b/classes/ETL/aEtlObject.php index e0df25684b..de13c0142e 100644 --- a/classes/ETL/aEtlObject.php +++ b/classes/ETL/aEtlObject.php @@ -18,7 +18,7 @@ use Psr\Log\LoggerInterface; use stdClass; -abstract class aEtlObject extends \CCR\Loggable +abstract class aEtlObject extends \CCR\Loggable implements \JsonSerializable { // All ELT objects can be named protected $name = null; @@ -137,4 +137,12 @@ public function __toString() { return $this->name . " (" . get_class($this) . ")"; } // __toString() + + public function jsonSerialize() + { + return array( + 'name' => $this->name, + 'initialized' => $this->initialized + ); + } } // abstract class aEtlObject diff --git a/classes/ETL/aOptions.php b/classes/ETL/aOptions.php index f50543bb7d..ece08bc8ec 100644 --- a/classes/ETL/aOptions.php +++ b/classes/ETL/aOptions.php @@ -24,7 +24,7 @@ // Extending stdClass allows us to use aOptions with when a general class is used, such as verifying // required keys in an aOptions class or a standard parsed JSON object. -abstract class aOptions extends \stdClass implements \Iterator +abstract class aOptions extends \stdClass implements \Iterator, \JsonSerializable { // The list of required options. These options cannot be set to NULL or an empty string. protected $requiredOptions = array( @@ -317,4 +317,12 @@ public function valid() // data value. return null !== key($this->options); } // valid() + + public function jsonSerialize() + { + return array( + 'options' => $this->options, + 'required_options' => $this->requiredOptions + ); + } } // class aOptions diff --git a/classes/ETL/aRdbmsDestinationAction.php b/classes/ETL/aRdbmsDestinationAction.php index 5be0cfc5b0..d3f8395137 100644 --- a/classes/ETL/aRdbmsDestinationAction.php +++ b/classes/ETL/aRdbmsDestinationAction.php @@ -33,7 +33,7 @@ use Psr\Log\LoggerInterface; use stdClass; -abstract class aRdbmsDestinationAction extends aAction +abstract class aRdbmsDestinationAction extends aAction implements \JsonSerializable { /** ----------------------------------------------------------------------------------------- * An array of one or more Table objects representing the destination tables supported @@ -966,4 +966,16 @@ protected function quoteIdentifierNames(array $names, iRdbmsEndpoint $endpoint = return $quotedNames; } // quoteIdentifierNames() + + public function jsonSerialize() + { + return array_merge( + parent::jsonSerialize(), + array( + 'etl_destination_table_list'=> $this->etlDestinationTableList, + 'destination_field_mappings'=> $this->destinationFieldMappings, + 'full_source_to_destination_mapping' => $this->fullSourceToDestinationMapping + ) + ); + } } // abstract class aRdbmsDestinationAction From 193a3fd2c071ef67ba2d6f794fee982e9d0569c3 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Mon, 21 Sep 2020 09:49:06 -0400 Subject: [PATCH 57/76] Catching up --- classes/Configuration/Configuration.php | 7 +- classes/ETL/aAction.php | 2 +- .../Controllers/ETLControllerProvider.php | 291 ++++++++++++++++-- 3 files changed, 276 insertions(+), 24 deletions(-) diff --git a/classes/Configuration/Configuration.php b/classes/Configuration/Configuration.php index a625198d09..9106214bfb 100644 --- a/classes/Configuration/Configuration.php +++ b/classes/Configuration/Configuration.php @@ -73,7 +73,7 @@ use stdClass; use Traversable; -class Configuration extends Loggable implements iConfiguration +class Configuration extends Loggable implements iConfiguration, \JsonSerializable { // NOTE: Any properties that need to be accessed in a transformer defined in a subclass cannot be // private. @@ -1428,4 +1428,9 @@ public function __sleep() { return array_keys(get_object_vars($this)); } + + public function jsonSerialize() + { + return $this->toAssocArray(); + } } // class Configuration diff --git a/classes/ETL/aAction.php b/classes/ETL/aAction.php index aace1f19b5..95b46bb637 100644 --- a/classes/ETL/aAction.php +++ b/classes/ETL/aAction.php @@ -533,11 +533,11 @@ public function jsonSerialize() $parent = parent::jsonSerialize(), array( 'options' => $this->options, - 'etl_config' => $this->etlConfig, 'etl_overseer_options' => $this->etlOverseerOptions, 'overseer_restriction_overrides' => $this->overseerRestrictionOverrides, 'variable_store'=> $this->variableStore, 'definition_file' => $this->definitionFile, + 'parsed_definition_file' => $this->parsedDefinitionFile, 'support_date_range_chunking' => $this->supportDateRangeChunking, 'current_start_date' => $this->currentStartDate, 'current_end_date' => $this->currentEndDate, diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index e7aa9a5631..2cd8c01040 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -3,9 +3,12 @@ namespace Rest\Controllers; use CCR\Json; +use Configuration\Configuration; use ETL\Configuration\EtlConfiguration; use ETL\DataEndpoint\File; use ETL\DataEndpoint\iRdbmsEndpoint; +use ETL\EtlOverseer; +use ETL\EtlOverseerOptions; use ETL\Utilities; use Exception; use RecursiveRegexIterator; @@ -13,10 +16,16 @@ use Silex\ControllerCollection; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class ETLControllerProvider extends BaseControllerProvider { + private $etlDir; + + private $configFiles; + /** * This function is responsible for the setting up of any routes that this * ControllerProvider is going to be managing. It *must* be overridden by @@ -30,11 +39,15 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $root = $this->prefix; $class = get_class($this); + $controller->get("$root/pipelines/actions", "$class::getActionsForPipelines"); + $controller->get("$root/pipelines/{pipeline}/actions", "$class::getActionsForPipeline"); + $controller->get("$root/pipelines", "$class::getPipelines"); $controller->post("$root/pipelines", "$class::getPipelines"); $controller->get("$root/files", "$class::getFileNames"); $controller->post("$root/files", "$class::getFileNames"); + } /** @@ -59,9 +72,7 @@ public function getPipelines(Request $request, Application $app) ); $actions = $etlConfig->getConfiguredActionNames($pipelineName); - if (!empty($actions)) { - $pipeline['children'] = array(); - } + $pipeline['children'] = array(); foreach ($actions as $actionName) { $action = array( @@ -69,9 +80,7 @@ public function getPipelines(Request $request, Application $app) ); $options = $etlConfig->getActionOptions($actionName, $pipelineName); - if (!empty($options)) { - $action['children'] = array(); - } + $action['children'] = array(); foreach ($options as $key => $value) { $translated = $value; @@ -86,6 +95,7 @@ public function getPipelines(Request $request, Application $app) } } elseif ($key === 'definition_file' && isset($value)) { $definitionPath = $options->paths->action_definition_dir . "/$value"; + $definition = Configuration::factory($definitionPath); $translated = $this->convertForTreeGrid(Json::loadFile($definitionPath)); } elseif (is_object($value) || is_array($value)) { $translated = $this->convertForTreeGrid($value); @@ -116,6 +126,8 @@ public function getPipelines(Request $request, Application $app) public function getFileNames(Request $request, Application $app) { + $this->authorize($request, array(ROLE_ID_MANAGER)); + $query = $request->get('query'); // Make sure that if they send an empty string then we still set query to null. @@ -123,25 +135,20 @@ public function getFileNames(Request $request, Application $app) $etlDir = implode(DIRECTORY_SEPARATOR, array(CONFIG_DIR, 'etl')); - $jsonFiles = new \RegexIterator( - new \RecursiveIteratorIterator( - new \RecursiveDirectoryIterator($etlDir) - ), - '/^.+\.json$/', - RecursiveRegexIterator::GET_MATCH + $results = $this->retrieveFilenames($etlDir, $query); + + return $app->json( + array( + 'results' => $results + ) ); + } + public function getDataEndpoints(Request $request, Application $app) + { $results = array(); - foreach ($jsonFiles as $jsonFile) { - $rawName = $jsonFile[0]; - $startPos = strpos($rawName, $etlDir) !== false ? strlen($etlDir) + 1 : 0; - $fileName = substr($rawName, $startPos); - if ($query === null || - ($query !== null && preg_match(".*$query.*", $fileName) !== false) - ) { - $results[] = array('name' => $fileName); - } - } + + $etlConfig = $this->retrieveETLConfig(); return $app->json( array( @@ -211,4 +218,244 @@ protected function convertForTreeGrid($source) return $results; } + + private function retrieveFilenames($baseDir, $query) + { + return $this->retrieveFiles($baseDir, function ($filePath, &$carry) use ($query, $baseDir) { + $startPos = strpos($filePath, $baseDir) !== false ? strlen($baseDir) + 1 : 0; + $fileName = substr($filePath, $startPos); + + if ($query === null || preg_match(".*$query.*", $fileName) !== false) { + $carry[] = array('name' => $fileName); + } + }); + } + + + private function retrieveFiles($baseDir, callable $handler) + { + $results = array(); + + $jsonFiles = new \RegexIterator( + new \RecursiveIteratorIterator( + new \RecursiveDirectoryIterator($baseDir) + ), + '/^.+\.json$/', + RecursiveRegexIterator::GET_MATCH + ); + + foreach ($jsonFiles as $jsonFile) { + $rawName = $jsonFile[0]; + $handler($rawName, $results); + } + return $results; + } + + public function getActionsForPipelines(Request $request, Application $app) + { + $configOptions = array('default_module_name' => 'xdmod'); + $configOptions['config_variables'] = array( + 'CLOUD_EVENT_LOG_DIRECTORY' => 'cloud_openstack/events', + 'CLOUD_RESOURCE_SPECS_DIRECTORY' => 'cloud_openstack/resource_specs' + ); + + $etlConfig = EtlConfiguration::factory( + CONFIG_DIR . '/etl/etl.json', + null, + null, + $configOptions + ); + $pipelineNames = $etlConfig->getSectionNames(); + sort($pipelineNames); + + $results = array(); + foreach ($pipelineNames as $pipelineName) { + #echo "Getting Actions For: $pipelineName\n"; + try { + $results[$pipelineName] = $this->getPipelineActions($pipelineName); + } catch(NotFoundHttpException $e) { + #echo "\tSkipping $pipelineName\n"; + } catch (Exception $e) { + #echo "\t Skipping $pipelineName\n"; + } + } + return $app->json($results); + } + + public function getActionsForPipeline(Request $request, Application $app, $pipeline) + { + $results = $this->getPipelineActions($pipeline); + + return $app->json( + $results + ); + } + + private function getPipelineActions($pipeline) + { + $configOptions = array('default_module_name' => 'xdmod'); + $configOptions['config_variables'] = array( + 'CLOUD_EVENT_LOG_DIRECTORY' => 'cloud_openstack/events', + 'community-user' => 'community_user' + ); + + $etlConfig = EtlConfiguration::factory( + CONFIG_DIR . '/etl/etl.json', + null, + null, + $configOptions + ); + + if (!$etlConfig->getSectionData($pipeline)) { + throw new NotFoundHttpException("Requested pipeline [$pipeline] does not exist."); + } + + Utilities::setEtlConfig($etlConfig); + + $scriptOptions = array_merge( + array( + 'default-module-name' => 'xdmod', + 'process-sections' => array($pipeline) + ) + ); + $overseerOptions = new EtlOverseerOptions($scriptOptions); + + $utilitySchema = $etlConfig->getGlobalEndpoint('utility')->getSchema(); + $overseerOptions->setResourceCodeToIdMapSql(sprintf("SELECT id, code from %s.resourcefact", $utilitySchema)); + + $overseer = new EtlOverseer($overseerOptions); + + $actions = $overseer->verifySections($etlConfig, array($pipeline)); + + list($results, $endpoints) = $this->parseActions(json_decode(json_encode($actions)), $etlConfig); + + return $results; + } + + /** + * @param array $pipelineActions + * @param EtlConfiguration $etlConfig + * @return array + */ + private function parseActions($pipelineActions, $etlConfig) + { + $endpoints = array(); + $results = array(); + foreach ($pipelineActions as $pipelineName => $actions) { + $pipelineConfigs = array_reduce( + $etlConfig->$pipelineName, + function ($carry, $item) { + $carry[$item->name] = $item; + return $carry; + }, + array() + ); + + foreach ($actions as $actionName => $action) { + $actionConfig = $pipelineConfigs[$actionName]; + $configClass = $actionConfig->class; + + $sourceEndpoint = $this->getEndpointData($actionConfig->endpoints->source); + $destinationEndpoint = $this->getEndPointData($actionConfig->endpoints->destination); + + $source = json_decode(json_encode($sourceEndpoint), true); + $destination = json_decode(json_encode($destinationEndpoint), true); + + if (!array_key_exists($source->key, $endpoints)) { + $endpoints[$source->key] = $source; + } + if (!array_key_exists($destination->key, $endpoints)) { + $endpoints[$destination->key] = $destination; + } + + switch ($configClass) { + case "DatabaseIngestor": + case "JobListAggregator": + case "SimpleAggregator": + case "ExplodeTransformIngestor": + $parsed = $action->parsed_definition_file; + + $sourceTables = array_reduce( + $parsed->source_query->joins, + function ($carry, $item) { + $carry[$item->alias] = $item->name; + return $carry; + }, + array() + ); + + $source['tables'] = $sourceTables; + $source['records'] = $parsed->source_query->records; + + $destination['tables'] = array_keys(get_object_vars($action->etl_destination_table_list)); + $destination['field_mappings'] = json_decode(json_encode($action->destination_field_mappings), true); + break; + case "ManageTables": + $actionOptions = $etlConfig->getActionOptions($actionName, $pipelineName); + $source['definition_file_list'] = $actionOptions->definition_file_list; + + $destinationTables = array_keys(get_object_vars($action->etl_destination_table_list)); + $destination['tables'] = $destinationTables; + break; + default: + break; + } + + + $results[$pipelineName][] = array( + 'name' => $actionName, + 'class' => $configClass, + 'source' => $source, + 'destination' => $destination + ); + } + } + + return array($results, $endpoints); + } + + private function getEndpointData($endpoint) + { + $result = new \stdClass(); + + $result->name = $endpoint->name; + $result->type = $endpoint->type; + $result->key = $endpoint->key; + + switch ($endpoint->type) { + case "directoryscanner": + if (strpos($endpoint->path, DIRECTORY_SEPARATOR) != 0 && !empty($endpoint->paths->data_dir)) { + $path = implode(DIRECTORY_SEPARATOR, array($endpoint->paths->data_dir, $endpoint->path)); + } else { + $path = $endpoint->path; + } + + $result->path = $path; + $result->handlerType = $endpoint->handler->type; + break; + case "configurationfile": + case "file": + case "jsonconfigfile": + case "jsonfile": + if (strpos($endpoint->path, DIRECTORY_SEPARATOR) != 0 && !empty($endpoint->paths->data_dir)) { + $path = implode(DIRECTORY_SEPARATOR, array($endpoint->paths->data_dir, $endpoint->path)); + } else { + $path = $endpoint->path; + } + $result->path = realpath($path); + break; + case "mysql": + case "oracle": + case "postgres": + $result->schema = $endpoint->schema; + break; + case "rest": + $result->baseUrl = $endpoint->baseUrl; + break; + default: + break; + } + + return $result; + } } From b2dd0025b7f8b5d244ecad1891e14dfc386a904a Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Mon, 5 Oct 2020 09:46:10 -0400 Subject: [PATCH 58/76] checkpoint --- .../Controllers/ETLControllerProvider.php | 114 +++++++++++++++--- 1 file changed, 99 insertions(+), 15 deletions(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 2cd8c01040..7b3de83b9a 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -2,6 +2,7 @@ namespace Rest\Controllers; +use ArrayObject; use CCR\Json; use Configuration\Configuration; use ETL\Configuration\EtlConfiguration; @@ -41,6 +42,7 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $controller->get("$root/pipelines/actions", "$class::getActionsForPipelines"); $controller->get("$root/pipelines/{pipeline}/actions", "$class::getActionsForPipeline"); + $controller->get("$root/pipelines/{pipeline}/endpoints", "$class::getEndpointsForPipeline"); $controller->get("$root/pipelines", "$class::getPipelines"); $controller->post("$root/pipelines", "$class::getPipelines"); @@ -48,6 +50,9 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $controller->get("$root/files", "$class::getFileNames"); $controller->post("$root/files", "$class::getFileNames"); + $controller->get("$root/endpoints", "$class::getDataEndpoints"); + + } /** @@ -58,8 +63,6 @@ public function setupRoutes(Application $app, ControllerCollection $controller) */ public function getPipelines(Request $request, Application $app) { - $this->authorize($request, array(ROLE_ID_MANAGER)); - $etlConfig = $this->retrieveETLConfig(); $pipelineNames = $etlConfig->getSectionNames(); @@ -150,6 +153,13 @@ public function getDataEndpoints(Request $request, Application $app) $etlConfig = $this->retrieveETLConfig(); + $pipelineNames = $etlConfig->getSectionNames(); + sort($pipelineNames); + + foreach($pipelineNames as $pipelineName) { + $results[$pipelineName] = $this->getPipelineEndpoints($pipelineName); + } + return $app->json( array( 'results' => $results @@ -284,14 +294,47 @@ public function getActionsForPipelines(Request $request, Application $app) public function getActionsForPipeline(Request $request, Application $app, $pipeline) { - $results = $this->getPipelineActions($pipeline); + return $app->json( + $this->getPipelineActions($pipeline) + ); + } + + public function getEndpointsForPipeline(Request $request, Application $app, $pipeline) + { + $flattened = $request->get('flatten', false); + + $endpoints = $this->getPipelineEndpoints($pipeline); return $app->json( - $results + $flattened ? $this->flattenEndpoints($endpoints) : $endpoints ); } + private function getPipelineEndpoints($pipeline) + { + $results = array(); + list($actions, $endpoints) = $this->getPipelineActionsAndEndpoints($pipeline); + + foreach($endpoints as $key => $value) { + if (!isset($results[$value['type']])) { + $results[$value['type']] = array( + 'name'=> $value['type'], + 'endpoints' => array() + ); + } + $results[$value['type']]['endpoints'][] = $value; + } + return array_values($results); + } + private function getPipelineActions($pipeline) + { + list($actions, $endpoints) = $this->getPipelineActionsAndEndpoints($pipeline); + + return $actions; + } + + private function getPipelineActionsAndEndpoints($pipeline) { $configOptions = array('default_module_name' => 'xdmod'); $configOptions['config_variables'] = array( @@ -327,9 +370,7 @@ private function getPipelineActions($pipeline) $actions = $overseer->verifySections($etlConfig, array($pipeline)); - list($results, $endpoints) = $this->parseActions(json_decode(json_encode($actions)), $etlConfig); - - return $results; + return $this->parseActions(json_decode(json_encode($actions)), $etlConfig); } /** @@ -361,13 +402,6 @@ function ($carry, $item) { $source = json_decode(json_encode($sourceEndpoint), true); $destination = json_decode(json_encode($destinationEndpoint), true); - if (!array_key_exists($source->key, $endpoints)) { - $endpoints[$source->key] = $source; - } - if (!array_key_exists($destination->key, $endpoints)) { - $endpoints[$destination->key] = $destination; - } - switch ($configClass) { case "DatabaseIngestor": case "JobListAggregator": @@ -378,7 +412,7 @@ function ($carry, $item) { $sourceTables = array_reduce( $parsed->source_query->joins, function ($carry, $item) { - $carry[$item->alias] = $item->name; + $carry[] = $item->name; return $carry; }, array() @@ -397,10 +431,27 @@ function ($carry, $item) { $destinationTables = array_keys(get_object_vars($action->etl_destination_table_list)); $destination['tables'] = $destinationTables; break; + case "StructuredFileIngestor": + $parsed = $action->parsed_definition_file; + + $destination['tables'] = array_keys(get_object_vars($parsed->destination_record_map)); + break; default: break; } + if (!array_key_exists($source['key'], $endpoints)) { + if (isset($source['tables']) && count($source['tables']) > 1) { + + } else { + $endpoints[$source['key']] = $source; + } + + } + + if (!array_key_exists($destination['key'], $endpoints)) { + $endpoints[$destination['key']] = $destination; + } $results[$pipelineName][] = array( 'name' => $actionName, @@ -432,6 +483,9 @@ private function getEndpointData($endpoint) $result->path = $path; $result->handlerType = $endpoint->handler->type; + $result->directoryPattern = $endpoint->directory_pattern; + $result->filePattern = $endpoint->file_pattern; + $result->recursionDepth = $endpoint->recursion_depth; break; case "configurationfile": case "file": @@ -458,4 +512,34 @@ private function getEndpointData($endpoint) return $result; } + + /** + * @param array $typedEndpoints + * + * @return array + */ + private function flattenEndpoints($typedEndpoints) + { + $results = array(); + + foreach($typedEndpoints as $typedEndpoint) { + if (in_array($typedEndpoint['name'], array('mysql', 'oracle', 'postgres'))) { + $tableEndpoints = array(); + $endpoints = $typedEndpoint['endpoints']; + foreach($endpoints as $endpoint) { + $endpointObject =new ArrayObject($endpoint) ; + $tableEndpoint = $endpointObject->getArrayCopy(); + unset($tableEndpoint['tables']); + foreach($endpoint['tables'] as $table) { + $tableEndpoint['table'] = $table; + $tableEndpoints[$table] = $tableEndpoint; + } + } + $typedEndpoint['endpoints'] = array_values($tableEndpoints); + } + $results[] = $typedEndpoint; + } + + return $results; + } } From b629adb498aa4a8f8923120be3aceb2978a0223f Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 15 Jan 2021 10:59:57 -0500 Subject: [PATCH 59/76] Updates to allow `getActionsForPipelines` to be used as a TreeGrid source - Updated the url for the TreeGrid to point at `/etl/pipelines/actions` - Upated the `getActionsforPipelines` method chain so that it produces output suitable for use in an ExtJS TreeGrid. - The change @ #201 was needed due to `get_object_vars` returning a keyed array ` => `. - #289: This function preps the output for use use in an EXtJS TreeGrid. - #453: This was simplify / declutter the display of the action name from it's fully qualified form `xdmod.pipeline.action` to `action` as the nodes immediately preceeding the action node will already be displaying the full pipeline name. --- classes/Rest/Controllers/ETLControllerProvider.php | 11 ++++++----- .../js/etl_viewer/ETLViewerTreePanel.js | 2 +- .../js/etl_viewer/ETLViewerTreeTab.js | 3 +-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 7b3de83b9a..255731f466 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -41,6 +41,8 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $class = get_class($this); $controller->get("$root/pipelines/actions", "$class::getActionsForPipelines"); + $controller->post("$root/pipelines/actions", "$class::getActionsForPipelines"); + $controller->get("$root/pipelines/{pipeline}/actions", "$class::getActionsForPipeline"); $controller->get("$root/pipelines/{pipeline}/endpoints", "$class::getEndpointsForPipeline"); @@ -51,8 +53,6 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $controller->post("$root/files", "$class::getFileNames"); $controller->get("$root/endpoints", "$class::getDataEndpoints"); - - } /** @@ -201,7 +201,7 @@ protected function convertForTreeGrid($source) if ($isArray) { $keys = array_keys($source); } elseif ($isObject) { - $keys = get_object_vars($source); + $keys = array_keys(get_object_vars($source)); } foreach ($keys as $key) { @@ -289,7 +289,7 @@ public function getActionsForPipelines(Request $request, Application $app) #echo "\t Skipping $pipelineName\n"; } } - return $app->json($results); + return $app->json($this->convertForTreeGrid($results)); } public function getActionsForPipeline(Request $request, Application $app, $pipeline) @@ -453,7 +453,8 @@ function ($carry, $item) { $endpoints[$destination['key']] = $destination; } - $results[$pipelineName][] = array( + $name = substr($actionName, strlen($pipelineName) + 1); + $results[$name] = array( 'name' => $actionName, 'class' => $configClass, 'source' => $source, diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreePanel.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreePanel.js index f5dc05a10a..fb6914026f 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreePanel.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreePanel.js @@ -8,7 +8,7 @@ XDMoD.Admin.ETL.ETLViewerTreePanel = Ext.extend(XDMoD.Admin.ETL.ETLViewerTree, { url: null, initComponent: function () { - this.url = XDMoD.REST.url + '/etl/pipelines'; + this.url = XDMoD.REST.url + '/etl/pipelines/actions'; this.loaded = false; XDMoD.Admin.ETL.ETLViewerTreePanel.superclass.initComponent.call(this, arguments); diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index e6f173c5ec..10d90642e1 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -65,9 +65,8 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { updateHistory: true, title: 'ETL Pipeline Viewer', autoScroll: true, - columnResize: true, enableDD: true, - dataUrl: XDMoD.REST.url + '/etl/pipelines', + dataUrl: XDMoD.REST.url + '/etl/pipelines/actions', columns: [ { header: 'Name', From 7c45c24b37aba1176967007c18e5b9c3aeb9fc2e Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 20 Jan 2021 11:08:07 -0500 Subject: [PATCH 60/76] checkpoint --- .../Controllers/ETLControllerProvider.php | 79 +++++++++++++++++-- 1 file changed, 74 insertions(+), 5 deletions(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 255731f466..3bbed2720e 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -53,6 +53,9 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $controller->post("$root/files", "$class::getFileNames"); $controller->get("$root/endpoints", "$class::getDataEndpoints"); + + $controller->get("$root/search", "$class::search"); + $controller->post("$root/search", "$class::search"); } /** @@ -280,18 +283,46 @@ public function getActionsForPipelines(Request $request, Application $app) $results = array(); foreach ($pipelineNames as $pipelineName) { - #echo "Getting Actions For: $pipelineName\n"; try { $results[$pipelineName] = $this->getPipelineActions($pipelineName); - } catch(NotFoundHttpException $e) { - #echo "\tSkipping $pipelineName\n"; - } catch (Exception $e) { - #echo "\t Skipping $pipelineName\n"; + } catch (\Exception $e){ + } + } + return $app->json($this->convertForTreeGrid($results)); } + private function getAllActionsAndEndpoints() + { + $configOptions = array('default_module_name' => 'xdmod'); + $configOptions['config_variables'] = array( + 'CLOUD_EVENT_LOG_DIRECTORY' => 'cloud_openstack/events', + 'CLOUD_RESOURCE_SPECS_DIRECTORY' => 'cloud_openstack/resource_specs' + ); + + $etlConfig = EtlConfiguration::factory( + CONFIG_DIR . '/etl/etl.json', + null, + null, + $configOptions + ); + $pipelineNames = $etlConfig->getSectionNames(); + sort($pipelineNames); + + $results = array(); + foreach ($pipelineNames as $pipelineName) { + try { + $results[$pipelineName] = $this->getPipelineActionsAndEndpoints($pipelineName); + } catch (\Exception $e) { + + } + + } + return $results; + } + public function getActionsForPipeline(Request $request, Application $app, $pipeline) { return $app->json( @@ -310,6 +341,27 @@ public function getEndpointsForPipeline(Request $request, Application $app, $pip ); } + public function search(Request $request, Application $app) + { + $term = $this->getStringParam($request, 'term', true); + + $results = array(); + + $actionsAndEndPoints = $this->getAllActionsAndEndpoints(); + foreach($actionsAndEndPoints as $pipeline => list($actions, $endpoints)) { + $actionResults = $this->recursiveSearch($actions, $term); + $endpointResults = $this->recursiveSearch($endpoints, $term); + if (!empty($actionResults)) { + $results[$pipeline]['actions'] = $actionResults; + } + if (!empty($endpointResults)) { + $results[$pipeline]['endpoints'] = $endpointResults; + } + } + + return $app->json($results); + } + private function getPipelineEndpoints($pipeline) { $results = array(); @@ -466,6 +518,22 @@ function ($carry, $item) { return array($results, $endpoints); } + private function recursiveSearch(array $source, $term, array $breadcrumbs = array()) + { + $results = array(); + + foreach($source as $key => $value) { + if (is_array($value)) { + $breadcrumbs[] = $key; + return $this->recursiveSearch($value, $term, $breadcrumbs); + } else if(strpos((string)$value, $term) !== false) { + $results[implode('.', $breadcrumbs)] = $value; + } + } + + return $results; + } + private function getEndpointData($endpoint) { $result = new \stdClass(); @@ -543,4 +611,5 @@ private function flattenEndpoints($typedEndpoints) return $results; } + } From eeb53f634f2f372eb7879b95e72ea1a35cfc0181 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 26 Feb 2021 10:28:52 -0500 Subject: [PATCH 61/76] Adding Cytoscape Dependencies Just adding Cytoscape & Dagre layout engine that we'll be using for the visualization of Pipeline's / Actions. --- composer.json | 51 +++++++++++++++++++++++++++++-- composer.lock | 42 +++++++++++++++++++++++++ html/internal_dashboard/index.php | 4 +++ 3 files changed, 94 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index c9ba9a4721..4e37361100 100644 --- a/composer.json +++ b/composer.json @@ -24,10 +24,12 @@ "ubccr/simplesamlphp-module-authoidcoauth2": "^1.1", "phpoffice/phpword": "^0.17.0", "monolog/monolog": "^1.25", - "plotly/plotly": "^1.57.1", "kassner/log-parser": "~1.5", "geoip2/geoip2": "~2.0", - "ua-parser/uap-php": "^3.9" + "ua-parser/uap-php": "^3.9", + "cytoscape/cytoscape": "^3.16", + "cytoscape/cytoscape-dagre": "^2.3", + "plotly/plotly": "^1.57.1" }, "require-dev": { "phpunit/phpunit": "~4.8", @@ -225,6 +227,47 @@ "installer-name": "plotly" } } + }, + { + "type": "package", + "package": { + "name": "cytoscape/cytoscape", + "type": "vanilla-plugin", + "version": "3.16.1", + "license": "MIT", + "homepage": "https://github.com/cytoscape/cytoscape.js", + "dist": { + "type": "file", + "url": "https://github.com/cytoscape/cytoscape.js/blob/v3.16.1/dist/cytoscape.min.js", + "shasum": "556dc2b91ac4f91c24544313ca790c514c6952fb" + }, + "require": { + "composer/installers": "~1.0" + }, + "extra": { + "installer-name": "cytoscape" + } + } + }, + { + "type": "package", + "package": { + "name": "cytoscape/cytoscape-dagre", + "type": "vanilla-plugin", + "version": "2.3.2", + "license": "MIT", + "homepage": "https://github.com/cytoscape/cytoscape.js-dagre", + "dist": { + "type": "file", + "url": "https://github.com/cytoscape/cytoscape.js-dagre/blob/v2.3.2/cytoscape-dagre.js" + }, + "require": { + "composer/installers": "~1.0" + }, + "extra": { + "installer-name": "cytoscape-dagre" + } + } } ], "extra": { @@ -236,7 +279,9 @@ "moment/moment-timezone-min-file", "jquery/jquery-min-file", "tildeio/rsvpjs-min-file", - "plotly/plotly" + "plotly/plotly", + "cytoscape/cytoscape", + "cytoscape/cytoscape-dagre" ], "html/gui/lib/jquery-plugins/{$name}": [ "carlo/jquery-base64-file" diff --git a/composer.lock b/composer.lock index 21fa53b2de..647831ae3d 100644 --- a/composer.lock +++ b/composer.lock @@ -241,6 +241,48 @@ ], "time": "2021-01-14T11:07:16+00:00" }, + { + "name": "cytoscape/cytoscape", + "version": "3.16.1", + "dist": { + "type": "file", + "url": "https://github.com/cytoscape/cytoscape.js/blob/v3.16.1/dist/cytoscape.min.js", + "reference": null, + "shasum": null + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "vanilla-plugin", + "extra": { + "installer-name": "cytoscape" + }, + "license": [ + "MIT" + ], + "homepage": "https://github.com/cytoscape/cytoscape.js" + }, + { + "name": "cytoscape/cytoscape-dagre", + "version": "2.3.2", + "dist": { + "type": "file", + "url": "https://github.com/cytoscape/cytoscape.js-dagre/blob/v2.3.2/cytoscape-dagre.js", + "reference": null, + "shasum": null + }, + "require": { + "composer/installers": "~1.0" + }, + "type": "vanilla-plugin", + "extra": { + "installer-name": "cytoscape-dagre" + }, + "license": [ + "MIT" + ], + "homepage": "https://github.com/cytoscape/cytoscape.js-dagre" + }, { "name": "doctrine/lexer", "version": "1.0.2", diff --git a/html/internal_dashboard/index.php b/html/internal_dashboard/index.php index fefe228654..2b23fdddaa 100644 --- a/html/internal_dashboard/index.php +++ b/html/internal_dashboard/index.php @@ -207,6 +207,10 @@ + // ETL Viewer Dependencies + + + + // ETL Viewer Dependencies + + + + // ETL Viewer + + - // ETL Viewer Dependencies - - diff --git a/html/internal_dashboard/js/Dashboard/Viewport.js b/html/internal_dashboard/js/Dashboard/Viewport.js index 268c066335..770d7836ab 100644 --- a/html/internal_dashboard/js/Dashboard/Viewport.js +++ b/html/internal_dashboard/js/Dashboard/Viewport.js @@ -12,7 +12,14 @@ XDMoD.Dashboard.Viewport = Ext.extend(Ext.Viewport, { firstload:true, constructor: function (config) { config = config || {}; - + + document.addEventListener('keydown', function (event) { + CCR.xdmod.shiftKey = event.shiftKey; + }); + document.addEventListener('keyup', function(event) { + CCR.xdmod.shiftKey = event.shiftKey; + }); + var active_tab="top-tab-panel"; var i_active_tab=0; //var tabpanel=this.getComponent("dashboard-tabpanel"); @@ -74,7 +81,7 @@ XDMoD.Dashboard.Viewport = Ext.extend(Ext.Viewport, { } } } - + Ext.History.add(hist); }, scope: this @@ -204,4 +211,4 @@ XDMoD.Dashboard.getParameterByName=function(name, source) { return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); -} \ No newline at end of file +} diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewer.js b/html/internal_dashboard/js/etl_viewer/ETLViewer.js index d1d15bf56e..b4342fd353 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewer.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewer.js @@ -3,19 +3,56 @@ Ext.namespace('XDMoD', 'XDMoD.Admin', 'XDMoD.Admin.ETL'); /** * */ -XDMoD.Admin.ETL.ETLViewer = Ext.extend(Ext.TabPanel, { - frame: false, - border: false, - activeItem: 0, - defaults: { - tabCls: 'tab-strip' +XDMoD.Admin.ETL.ETLViewer = Ext.extend(Ext.Panel, { + id: 'etl_viewer', + layout: 'border', + initComponent: function() { + let self = this; + this.tabPanel = new Ext.TabPanel({ + id: 'etl_viewer_tab_panel', + region: 'center', + border: false, + activeItem: 0, + defaults: { + tabCls: 'tab-strip' + } + }); + Ext.apply(this, { + items: [ + this.tabPanel + ], + tbar: { + items: [ + { + xtype: 'button', + text: 'Tree View', + cls: 'x-btn-text-icon', + icon: '', + handler: function() { + var tab = new XDMoD.Admin.ETL.ETLViewerTreeTab(); + self.tabPanel.add(tab); + self.tabPanel.setActiveTab(tab); + } + }, + { + xtype: 'button', + text: 'Graph View', + cls: 'x-btn-text-icon', + icon: '', + handler: function () { + let tab = new XDMoD.Admin.ETL.GraphPanel({ + pipeline: 'xdmod.jobs-cloud-import-users-openstack' + }); + self.tabPanel.add(tab); + self.tabPanel.setActiveTab(tab); + } + } + ] + } + }); + XDMoD.Admin.ETL.ETLViewer.superclass.initComponent.apply(this, arguments); }, - - listeners: { - beforerender: function (tabPanel) { - tabPanel.initialize(tabPanel); - }, - + /*listeners: { activate: function () { if (!this.loadMask) { this.loadMask = new Ext.LoadMask(this.id); @@ -35,17 +72,7 @@ XDMoD.Admin.ETL.ETLViewer = Ext.extend(Ext.TabPanel, { return; } } - }, - - /** - * - * @param tabPanel - */ - initialize: function (tabPanel) { - this.viewerTreeTab = new XDMoD.Admin.ETL.ETLViewerTreeTab(); - - tabPanel.add(this.viewerTreeTab); - }, // initialize + },*/ /** * Retrieve the 'path' values from the provided tree node or window hash. diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index 4e77339ee7..aae207642a 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -3,6 +3,9 @@ Ext.namespace('XDMoD', 'XDMoD.Admin', 'XDMoD.Admin.ETL'); XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { title: 'ETL Tree View', layout: 'border', + closable: true, + height: '100%', + width: '100%', initComponent: function () { var self = this; this.tree = new Ext.ux.tree.TreeGrid({ @@ -17,7 +20,7 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { { xtype: 'button', text: 'Expand All', - iton: '', + icon: '', cls: 'x-btn-text-icon' }, { @@ -26,6 +29,7 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { icon: '', cls: 'x-btn-text-icon' }, + '-', { xtype: 'textfield', emptyText: 'Enter Search Term Here' @@ -65,9 +69,45 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { width: 500 } ], + + /** + * We override the parent's `updateColumnWidths` function so that we can add a call to `fitColumns` and thus + * have an autoExpanded column. + */ updateColumnWidths : function() { - Ext.ux.tree.TreeGrid.updateColumnWidths(); - this.fitColumns(); + var fit = arguments.length > 0 ? arguments[0] : true; + var cols = this.columns, + colCount = cols.length, + groups = this.outerCt.query('colgroup'), + groupCount = groups.length, + c, g, i, j; + + for(i = 0; i Date: Wed, 21 Apr 2021 10:14:22 -0400 Subject: [PATCH 66/76] Refactoring tab adding --- .../Controllers/ETLControllerProvider.php | 2 +- .../js/etl_viewer/ETLViewer.js | 41 ++++++++------ .../js/etl_viewer/ETLViewerTreeTab.js | 53 ++++++++++++++++++- 3 files changed, 79 insertions(+), 17 deletions(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 125947a6bf..4ced65f25b 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -430,7 +430,7 @@ public function getPipelinesForGraph(Request $request, Application $app, $pipeli 'group' => 'nodes', 'data' => array( 'id' => $actionName, - 'name' => $actionName, + 'name' => $key, 'parent' => $pipeline ) ); diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewer.js b/html/internal_dashboard/js/etl_viewer/ETLViewer.js index b4342fd353..8aa7ed7407 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewer.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewer.js @@ -29,22 +29,9 @@ XDMoD.Admin.ETL.ETLViewer = Ext.extend(Ext.Panel, { cls: 'x-btn-text-icon', icon: '', handler: function() { - var tab = new XDMoD.Admin.ETL.ETLViewerTreeTab(); - self.tabPanel.add(tab); - self.tabPanel.setActiveTab(tab); - } - }, - { - xtype: 'button', - text: 'Graph View', - cls: 'x-btn-text-icon', - icon: '', - handler: function () { - let tab = new XDMoD.Admin.ETL.GraphPanel({ - pipeline: 'xdmod.jobs-cloud-import-users-openstack' + self.addTab('tree', { + etlViewer: self }); - self.tabPanel.add(tab); - self.tabPanel.setActiveTab(tab); } } ] @@ -52,6 +39,30 @@ XDMoD.Admin.ETL.ETLViewer = Ext.extend(Ext.Panel, { }); XDMoD.Admin.ETL.ETLViewer.superclass.initComponent.apply(this, arguments); }, + + listeners: { + add_tab: function (type, config) { + this.addTab(type, config); + } + }, + + addTab: function (type, config = {}) { + let tab = null; + switch (type) { + case 'tree': + tab = new XDMoD.Admin.ETL.ETLViewerTreeTab(config); + break; + case 'graph': + tab = new XDMoD.Admin.ETL.GraphPanel(config); + break; + } + + if (tab !== null) { + this.tabPanel.add(tab); + this.tabPanel.setActiveTab(tab); + } + }, + /*listeners: { activate: function () { if (!this.loadMask) { diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index aae207642a..828a1f9546 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -6,8 +6,12 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { closable: true, height: '100%', width: '100%', + + etlViewer: null, initComponent: function () { - var self = this; + + + let self = this; this.tree = new Ext.ux.tree.TreeGrid({ region: 'center', closable: false, @@ -55,6 +59,52 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { if (CCR.xdmod.shiftKey === true && node.hasChildNodes()) { node.collapseChildNodes(true); } + }, + contextmenu: function (node, event) { + let isPipeline = node.parentNode.isRoot; + let isAction = node.parentNode && node.parentNode.parentNode && node.parentNode.parentNode.isRoot; + if (isPipeline || isAction) { + let title = 'Unknown'; + let config = {}; + + if (isPipeline) { + title = 'Pipeline'; + config['pipeline'] = node.attributes.name; + config['title'] = node.attributes.name; + } else if (isAction) { + title = 'Action'; + let pipeline = node.parentNode.parentNode.attributes.name; + config['action'] = `${pipeline}.${node.attributes.name}`; + } + + let items = [ + `${title}
`, + '-', + { + text: 'View in Graph Viewer', + iconCls: 'nodes', + id: 'etl-viewer-view-in-graph', + handler: function () { + self.etlViewer.fireEvent( + 'add_tab', + 'graph', + config + ); + } + } + ]; + + let menu = new Ext.menu.Menu({ + plain: true, + items: items, + listeners: { + hide: function() { + this.destroy(); + } + } + }); + menu.showAt(Ext.EventObject.getXY()); + } } }, columns: [ @@ -142,6 +192,7 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { this.tree ] }); + XDMoD.Admin.ETL.ETLViewerTreeTab.superclass.initComponent.apply(this, arguments); }, listeners: { From 6f06196df9a518eac6966f4aa0411e5beb308659 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 21 Apr 2021 10:15:11 -0400 Subject: [PATCH 67/76] Adding Cytoscape deps and the GraphPanel --- .../cytoscape-dagre/cytoscape-dagre-esm.js | 14567 +++++++ html/gui/lib/cytoscape/cytoscape.esm.js | 31608 ++++++++++++++++ .../js/etl_viewer/GraphPanel.js | 131 + 3 files changed, 46306 insertions(+) create mode 100644 html/gui/lib/cytoscape-dagre/cytoscape-dagre-esm.js create mode 100644 html/gui/lib/cytoscape/cytoscape.esm.js create mode 100644 html/internal_dashboard/js/etl_viewer/GraphPanel.js diff --git a/html/gui/lib/cytoscape-dagre/cytoscape-dagre-esm.js b/html/gui/lib/cytoscape-dagre/cytoscape-dagre-esm.js new file mode 100644 index 0000000000..4c01bf61ea --- /dev/null +++ b/html/gui/lib/cytoscape-dagre/cytoscape-dagre-esm.js @@ -0,0 +1,14567 @@ +var cytoscapeDagre = +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/dagre/index.js": +/*!*************************************!*\ + !*** ./node_modules/dagre/index.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* +Copyright (c) 2012-2014 Chris Pettitt + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +module.exports = { + graphlib: __webpack_require__(/*! ./lib/graphlib */ "./node_modules/dagre/lib/graphlib.js"), + + layout: __webpack_require__(/*! ./lib/layout */ "./node_modules/dagre/lib/layout.js"), + debug: __webpack_require__(/*! ./lib/debug */ "./node_modules/dagre/lib/debug.js"), + util: { + time: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").time, + notime: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").notime + }, + version: __webpack_require__(/*! ./lib/version */ "./node_modules/dagre/lib/version.js") +}; + + +/***/ }), + +/***/ "./node_modules/dagre/lib/acyclic.js": +/*!*******************************************!*\ + !*** ./node_modules/dagre/lib/acyclic.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var greedyFAS = __webpack_require__(/*! ./greedy-fas */ "./node_modules/dagre/lib/greedy-fas.js"); + +module.exports = { + run: run, + undo: undo +}; + +function run(g) { + var fas = (g.graph().acyclicer === "greedy" + ? greedyFAS(g, weightFn(g)) + : dfsFAS(g)); + _.forEach(fas, function(e) { + var label = g.edge(e); + g.removeEdge(e); + label.forwardName = e.name; + label.reversed = true; + g.setEdge(e.w, e.v, label, _.uniqueId("rev")); + }); + + function weightFn(g) { + return function(e) { + return g.edge(e).weight; + }; + } +} + +function dfsFAS(g) { + var fas = []; + var stack = {}; + var visited = {}; + + function dfs(v) { + if (_.has(visited, v)) { + return; + } + visited[v] = true; + stack[v] = true; + _.forEach(g.outEdges(v), function(e) { + if (_.has(stack, e.w)) { + fas.push(e); + } else { + dfs(e.w); + } + }); + delete stack[v]; + } + + _.forEach(g.nodes(), dfs); + return fas; +} + +function undo(g) { + _.forEach(g.edges(), function(e) { + var label = g.edge(e); + if (label.reversed) { + g.removeEdge(e); + + var forwardName = label.forwardName; + delete label.reversed; + delete label.forwardName; + g.setEdge(e.w, e.v, label, forwardName); + } + }); +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/add-border-segments.js": +/*!*******************************************************!*\ + !*** ./node_modules/dagre/lib/add-border-segments.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + +module.exports = addBorderSegments; + +function addBorderSegments(g) { + function dfs(v) { + var children = g.children(v); + var node = g.node(v); + if (children.length) { + _.forEach(children, dfs); + } + + if (_.has(node, "minRank")) { + node.borderLeft = []; + node.borderRight = []; + for (var rank = node.minRank, maxRank = node.maxRank + 1; + rank < maxRank; + ++rank) { + addBorderNode(g, "borderLeft", "_bl", v, node, rank); + addBorderNode(g, "borderRight", "_br", v, node, rank); + } + } + } + + _.forEach(g.children(), dfs); +} + +function addBorderNode(g, prop, prefix, sg, sgNode, rank) { + var label = { width: 0, height: 0, rank: rank, borderType: prop }; + var prev = sgNode[prop][rank - 1]; + var curr = util.addDummyNode(g, "border", label, prefix); + sgNode[prop][rank] = curr; + g.setParent(curr, sg); + if (prev) { + g.setEdge(prev, curr, { weight: 1 }); + } +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/coordinate-system.js": +/*!*****************************************************!*\ + !*** ./node_modules/dagre/lib/coordinate-system.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = { + adjust: adjust, + undo: undo +}; + +function adjust(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === "lr" || rankDir === "rl") { + swapWidthHeight(g); + } +} + +function undo(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === "bt" || rankDir === "rl") { + reverseY(g); + } + + if (rankDir === "lr" || rankDir === "rl") { + swapXY(g); + swapWidthHeight(g); + } +} + +function swapWidthHeight(g) { + _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); }); + _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); }); +} + +function swapWidthHeightOne(attrs) { + var w = attrs.width; + attrs.width = attrs.height; + attrs.height = w; +} + +function reverseY(g) { + _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); }); + + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + _.forEach(edge.points, reverseYOne); + if (_.has(edge, "y")) { + reverseYOne(edge); + } + }); +} + +function reverseYOne(attrs) { + attrs.y = -attrs.y; +} + +function swapXY(g) { + _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); }); + + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + _.forEach(edge.points, swapXYOne); + if (_.has(edge, "x")) { + swapXYOne(edge); + } + }); +} + +function swapXYOne(attrs) { + var x = attrs.x; + attrs.x = attrs.y; + attrs.y = x; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/data/list.js": +/*!*********************************************!*\ + !*** ./node_modules/dagre/lib/data/list.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/* + * Simple doubly linked list implementation derived from Cormen, et al., + * "Introduction to Algorithms". + */ + +module.exports = List; + +function List() { + var sentinel = {}; + sentinel._next = sentinel._prev = sentinel; + this._sentinel = sentinel; +} + +List.prototype.dequeue = function() { + var sentinel = this._sentinel; + var entry = sentinel._prev; + if (entry !== sentinel) { + unlink(entry); + return entry; + } +}; + +List.prototype.enqueue = function(entry) { + var sentinel = this._sentinel; + if (entry._prev && entry._next) { + unlink(entry); + } + entry._next = sentinel._next; + sentinel._next._prev = entry; + sentinel._next = entry; + entry._prev = sentinel; +}; + +List.prototype.toString = function() { + var strs = []; + var sentinel = this._sentinel; + var curr = sentinel._prev; + while (curr !== sentinel) { + strs.push(JSON.stringify(curr, filterOutLinks)); + curr = curr._prev; + } + return "[" + strs.join(", ") + "]"; +}; + +function unlink(entry) { + entry._prev._next = entry._next; + entry._next._prev = entry._prev; + delete entry._next; + delete entry._prev; +} + +function filterOutLinks(k, v) { + if (k !== "_next" && k !== "_prev") { + return v; + } +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/debug.js": +/*!*****************************************!*\ + !*** ./node_modules/dagre/lib/debug.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); +var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + +module.exports = { + debugOrdering: debugOrdering +}; + +/* istanbul ignore next */ +function debugOrdering(g) { + var layerMatrix = util.buildLayerMatrix(g); + + var h = new Graph({ compound: true, multigraph: true }).setGraph({}); + + _.forEach(g.nodes(), function(v) { + h.setNode(v, { label: v }); + h.setParent(v, "layer" + g.node(v).rank); + }); + + _.forEach(g.edges(), function(e) { + h.setEdge(e.v, e.w, {}, e.name); + }); + + _.forEach(layerMatrix, function(layer, i) { + var layerV = "layer" + i; + h.setNode(layerV, { rank: "same" }); + _.reduce(layer, function(u, v) { + h.setEdge(u, v, { style: "invis" }); + return v; + }); + }); + + return h; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/graphlib.js": +/*!********************************************!*\ + !*** ./node_modules/dagre/lib/graphlib.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* global window */ + +var graphlib; + +if (true) { + try { + graphlib = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js"); + } catch (e) { + // continue regardless of error + } +} + +if (!graphlib) { + graphlib = window.graphlib; +} + +module.exports = graphlib; + + +/***/ }), + +/***/ "./node_modules/dagre/lib/greedy-fas.js": +/*!**********************************************!*\ + !*** ./node_modules/dagre/lib/greedy-fas.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; +var List = __webpack_require__(/*! ./data/list */ "./node_modules/dagre/lib/data/list.js"); + +/* + * A greedy heuristic for finding a feedback arc set for a graph. A feedback + * arc set is a set of edges that can be removed to make a graph acyclic. + * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and + * effective heuristic for the feedback arc set problem." This implementation + * adjusts that from the paper to allow for weighted edges. + */ +module.exports = greedyFAS; + +var DEFAULT_WEIGHT_FN = _.constant(1); + +function greedyFAS(g, weightFn) { + if (g.nodeCount() <= 1) { + return []; + } + var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN); + var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx); + + // Expand multi-edges + return _.flatten(_.map(results, function(e) { + return g.outEdges(e.v, e.w); + }), true); +} + +function doGreedyFAS(g, buckets, zeroIdx) { + var results = []; + var sources = buckets[buckets.length - 1]; + var sinks = buckets[0]; + + var entry; + while (g.nodeCount()) { + while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } + while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } + if (g.nodeCount()) { + for (var i = buckets.length - 2; i > 0; --i) { + entry = buckets[i].dequeue(); + if (entry) { + results = results.concat(removeNode(g, buckets, zeroIdx, entry, true)); + break; + } + } + } + } + + return results; +} + +function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) { + var results = collectPredecessors ? [] : undefined; + + _.forEach(g.inEdges(entry.v), function(edge) { + var weight = g.edge(edge); + var uEntry = g.node(edge.v); + + if (collectPredecessors) { + results.push({ v: edge.v, w: edge.w }); + } + + uEntry.out -= weight; + assignBucket(buckets, zeroIdx, uEntry); + }); + + _.forEach(g.outEdges(entry.v), function(edge) { + var weight = g.edge(edge); + var w = edge.w; + var wEntry = g.node(w); + wEntry["in"] -= weight; + assignBucket(buckets, zeroIdx, wEntry); + }); + + g.removeNode(entry.v); + + return results; +} + +function buildState(g, weightFn) { + var fasGraph = new Graph(); + var maxIn = 0; + var maxOut = 0; + + _.forEach(g.nodes(), function(v) { + fasGraph.setNode(v, { v: v, "in": 0, out: 0 }); + }); + + // Aggregate weights on nodes, but also sum the weights across multi-edges + // into a single edge for the fasGraph. + _.forEach(g.edges(), function(e) { + var prevWeight = fasGraph.edge(e.v, e.w) || 0; + var weight = weightFn(e); + var edgeWeight = prevWeight + weight; + fasGraph.setEdge(e.v, e.w, edgeWeight); + maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight); + maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight); + }); + + var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); }); + var zeroIdx = maxIn + 1; + + _.forEach(fasGraph.nodes(), function(v) { + assignBucket(buckets, zeroIdx, fasGraph.node(v)); + }); + + return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx }; +} + +function assignBucket(buckets, zeroIdx, entry) { + if (!entry.out) { + buckets[0].enqueue(entry); + } else if (!entry["in"]) { + buckets[buckets.length - 1].enqueue(entry); + } else { + buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry); + } +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/layout.js": +/*!******************************************!*\ + !*** ./node_modules/dagre/lib/layout.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var acyclic = __webpack_require__(/*! ./acyclic */ "./node_modules/dagre/lib/acyclic.js"); +var normalize = __webpack_require__(/*! ./normalize */ "./node_modules/dagre/lib/normalize.js"); +var rank = __webpack_require__(/*! ./rank */ "./node_modules/dagre/lib/rank/index.js"); +var normalizeRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").normalizeRanks; +var parentDummyChains = __webpack_require__(/*! ./parent-dummy-chains */ "./node_modules/dagre/lib/parent-dummy-chains.js"); +var removeEmptyRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").removeEmptyRanks; +var nestingGraph = __webpack_require__(/*! ./nesting-graph */ "./node_modules/dagre/lib/nesting-graph.js"); +var addBorderSegments = __webpack_require__(/*! ./add-border-segments */ "./node_modules/dagre/lib/add-border-segments.js"); +var coordinateSystem = __webpack_require__(/*! ./coordinate-system */ "./node_modules/dagre/lib/coordinate-system.js"); +var order = __webpack_require__(/*! ./order */ "./node_modules/dagre/lib/order/index.js"); +var position = __webpack_require__(/*! ./position */ "./node_modules/dagre/lib/position/index.js"); +var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); +var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + +module.exports = layout; + +function layout(g, opts) { + var time = opts && opts.debugTiming ? util.time : util.notime; + time("layout", function() { + var layoutGraph = + time(" buildLayoutGraph", function() { return buildLayoutGraph(g); }); + time(" runLayout", function() { runLayout(layoutGraph, time); }); + time(" updateInputGraph", function() { updateInputGraph(g, layoutGraph); }); + }); +} + +function runLayout(g, time) { + time(" makeSpaceForEdgeLabels", function() { makeSpaceForEdgeLabels(g); }); + time(" removeSelfEdges", function() { removeSelfEdges(g); }); + time(" acyclic", function() { acyclic.run(g); }); + time(" nestingGraph.run", function() { nestingGraph.run(g); }); + time(" rank", function() { rank(util.asNonCompoundGraph(g)); }); + time(" injectEdgeLabelProxies", function() { injectEdgeLabelProxies(g); }); + time(" removeEmptyRanks", function() { removeEmptyRanks(g); }); + time(" nestingGraph.cleanup", function() { nestingGraph.cleanup(g); }); + time(" normalizeRanks", function() { normalizeRanks(g); }); + time(" assignRankMinMax", function() { assignRankMinMax(g); }); + time(" removeEdgeLabelProxies", function() { removeEdgeLabelProxies(g); }); + time(" normalize.run", function() { normalize.run(g); }); + time(" parentDummyChains", function() { parentDummyChains(g); }); + time(" addBorderSegments", function() { addBorderSegments(g); }); + time(" order", function() { order(g); }); + time(" insertSelfEdges", function() { insertSelfEdges(g); }); + time(" adjustCoordinateSystem", function() { coordinateSystem.adjust(g); }); + time(" position", function() { position(g); }); + time(" positionSelfEdges", function() { positionSelfEdges(g); }); + time(" removeBorderNodes", function() { removeBorderNodes(g); }); + time(" normalize.undo", function() { normalize.undo(g); }); + time(" fixupEdgeLabelCoords", function() { fixupEdgeLabelCoords(g); }); + time(" undoCoordinateSystem", function() { coordinateSystem.undo(g); }); + time(" translateGraph", function() { translateGraph(g); }); + time(" assignNodeIntersects", function() { assignNodeIntersects(g); }); + time(" reversePoints", function() { reversePointsForReversedEdges(g); }); + time(" acyclic.undo", function() { acyclic.undo(g); }); +} + +/* + * Copies final layout information from the layout graph back to the input + * graph. This process only copies whitelisted attributes from the layout graph + * to the input graph, so it serves as a good place to determine what + * attributes can influence layout. + */ +function updateInputGraph(inputGraph, layoutGraph) { + _.forEach(inputGraph.nodes(), function(v) { + var inputLabel = inputGraph.node(v); + var layoutLabel = layoutGraph.node(v); + + if (inputLabel) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + + if (layoutGraph.children(v).length) { + inputLabel.width = layoutLabel.width; + inputLabel.height = layoutLabel.height; + } + } + }); + + _.forEach(inputGraph.edges(), function(e) { + var inputLabel = inputGraph.edge(e); + var layoutLabel = layoutGraph.edge(e); + + inputLabel.points = layoutLabel.points; + if (_.has(layoutLabel, "x")) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + } + }); + + inputGraph.graph().width = layoutGraph.graph().width; + inputGraph.graph().height = layoutGraph.graph().height; +} + +var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"]; +var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }; +var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"]; +var nodeNumAttrs = ["width", "height"]; +var nodeDefaults = { width: 0, height: 0 }; +var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"]; +var edgeDefaults = { + minlen: 1, weight: 1, width: 0, height: 0, + labeloffset: 10, labelpos: "r" +}; +var edgeAttrs = ["labelpos"]; + +/* + * Constructs a new graph from the input graph, which can be used for layout. + * This process copies only whitelisted attributes from the input graph to the + * layout graph. Thus this function serves as a good place to determine what + * attributes can influence layout. + */ +function buildLayoutGraph(inputGraph) { + var g = new Graph({ multigraph: true, compound: true }); + var graph = canonicalize(inputGraph.graph()); + + g.setGraph(_.merge({}, + graphDefaults, + selectNumberAttrs(graph, graphNumAttrs), + _.pick(graph, graphAttrs))); + + _.forEach(inputGraph.nodes(), function(v) { + var node = canonicalize(inputGraph.node(v)); + g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults)); + g.setParent(v, inputGraph.parent(v)); + }); + + _.forEach(inputGraph.edges(), function(e) { + var edge = canonicalize(inputGraph.edge(e)); + g.setEdge(e, _.merge({}, + edgeDefaults, + selectNumberAttrs(edge, edgeNumAttrs), + _.pick(edge, edgeAttrs))); + }); + + return g; +} + +/* + * This idea comes from the Gansner paper: to account for edge labels in our + * layout we split each rank in half by doubling minlen and halving ranksep. + * Then we can place labels at these mid-points between nodes. + * + * We also add some minimal padding to the width to push the label for the edge + * away from the edge itself a bit. + */ +function makeSpaceForEdgeLabels(g) { + var graph = g.graph(); + graph.ranksep /= 2; + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + edge.minlen *= 2; + if (edge.labelpos.toLowerCase() !== "c") { + if (graph.rankdir === "TB" || graph.rankdir === "BT") { + edge.width += edge.labeloffset; + } else { + edge.height += edge.labeloffset; + } + } + }); +} + +/* + * Creates temporary dummy nodes that capture the rank in which each edge's + * label is going to, if it has one of non-zero width and height. We do this + * so that we can safely remove empty ranks while preserving balance for the + * label's position. + */ +function injectEdgeLabelProxies(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.width && edge.height) { + var v = g.node(e.v); + var w = g.node(e.w); + var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e }; + util.addDummyNode(g, "edge-proxy", label, "_ep"); + } + }); +} + +function assignRankMinMax(g) { + var maxRank = 0; + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.borderTop) { + node.minRank = g.node(node.borderTop).rank; + node.maxRank = g.node(node.borderBottom).rank; + maxRank = _.max(maxRank, node.maxRank); + } + }); + g.graph().maxRank = maxRank; +} + +function removeEdgeLabelProxies(g) { + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.dummy === "edge-proxy") { + g.edge(node.e).labelRank = node.rank; + g.removeNode(v); + } + }); +} + +function translateGraph(g) { + var minX = Number.POSITIVE_INFINITY; + var maxX = 0; + var minY = Number.POSITIVE_INFINITY; + var maxY = 0; + var graphLabel = g.graph(); + var marginX = graphLabel.marginx || 0; + var marginY = graphLabel.marginy || 0; + + function getExtremes(attrs) { + var x = attrs.x; + var y = attrs.y; + var w = attrs.width; + var h = attrs.height; + minX = Math.min(minX, x - w / 2); + maxX = Math.max(maxX, x + w / 2); + minY = Math.min(minY, y - h / 2); + maxY = Math.max(maxY, y + h / 2); + } + + _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); }); + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (_.has(edge, "x")) { + getExtremes(edge); + } + }); + + minX -= marginX; + minY -= marginY; + + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + node.x -= minX; + node.y -= minY; + }); + + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + _.forEach(edge.points, function(p) { + p.x -= minX; + p.y -= minY; + }); + if (_.has(edge, "x")) { edge.x -= minX; } + if (_.has(edge, "y")) { edge.y -= minY; } + }); + + graphLabel.width = maxX - minX + marginX; + graphLabel.height = maxY - minY + marginY; +} + +function assignNodeIntersects(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + var nodeV = g.node(e.v); + var nodeW = g.node(e.w); + var p1, p2; + if (!edge.points) { + edge.points = []; + p1 = nodeW; + p2 = nodeV; + } else { + p1 = edge.points[0]; + p2 = edge.points[edge.points.length - 1]; + } + edge.points.unshift(util.intersectRect(nodeV, p1)); + edge.points.push(util.intersectRect(nodeW, p2)); + }); +} + +function fixupEdgeLabelCoords(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (_.has(edge, "x")) { + if (edge.labelpos === "l" || edge.labelpos === "r") { + edge.width -= edge.labeloffset; + } + switch (edge.labelpos) { + case "l": edge.x -= edge.width / 2 + edge.labeloffset; break; + case "r": edge.x += edge.width / 2 + edge.labeloffset; break; + } + } + }); +} + +function reversePointsForReversedEdges(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.reversed) { + edge.points.reverse(); + } + }); +} + +function removeBorderNodes(g) { + _.forEach(g.nodes(), function(v) { + if (g.children(v).length) { + var node = g.node(v); + var t = g.node(node.borderTop); + var b = g.node(node.borderBottom); + var l = g.node(_.last(node.borderLeft)); + var r = g.node(_.last(node.borderRight)); + + node.width = Math.abs(r.x - l.x); + node.height = Math.abs(b.y - t.y); + node.x = l.x + node.width / 2; + node.y = t.y + node.height / 2; + } + }); + + _.forEach(g.nodes(), function(v) { + if (g.node(v).dummy === "border") { + g.removeNode(v); + } + }); +} + +function removeSelfEdges(g) { + _.forEach(g.edges(), function(e) { + if (e.v === e.w) { + var node = g.node(e.v); + if (!node.selfEdges) { + node.selfEdges = []; + } + node.selfEdges.push({ e: e, label: g.edge(e) }); + g.removeEdge(e); + } + }); +} + +function insertSelfEdges(g) { + var layers = util.buildLayerMatrix(g); + _.forEach(layers, function(layer) { + var orderShift = 0; + _.forEach(layer, function(v, i) { + var node = g.node(v); + node.order = i + orderShift; + _.forEach(node.selfEdges, function(selfEdge) { + util.addDummyNode(g, "selfedge", { + width: selfEdge.label.width, + height: selfEdge.label.height, + rank: node.rank, + order: i + (++orderShift), + e: selfEdge.e, + label: selfEdge.label + }, "_se"); + }); + delete node.selfEdges; + }); + }); +} + +function positionSelfEdges(g) { + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.dummy === "selfedge") { + var selfNode = g.node(node.e.v); + var x = selfNode.x + selfNode.width / 2; + var y = selfNode.y; + var dx = node.x - x; + var dy = selfNode.height / 2; + g.setEdge(node.e, node.label); + g.removeNode(v); + node.label.points = [ + { x: x + 2 * dx / 3, y: y - dy }, + { x: x + 5 * dx / 6, y: y - dy }, + { x: x + dx , y: y }, + { x: x + 5 * dx / 6, y: y + dy }, + { x: x + 2 * dx / 3, y: y + dy } + ]; + node.label.x = node.x; + node.label.y = node.y; + } + }); +} + +function selectNumberAttrs(obj, attrs) { + return _.mapValues(_.pick(obj, attrs), Number); +} + +function canonicalize(attrs) { + var newAttrs = {}; + _.forEach(attrs, function(v, k) { + newAttrs[k.toLowerCase()] = v; + }); + return newAttrs; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/lodash.js": +/*!******************************************!*\ + !*** ./node_modules/dagre/lib/lodash.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* global window */ + +var lodash; + +if (true) { + try { + lodash = { + cloneDeep: __webpack_require__(/*! lodash/cloneDeep */ "./node_modules/lodash/cloneDeep.js"), + constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"), + defaults: __webpack_require__(/*! lodash/defaults */ "./node_modules/lodash/defaults.js"), + each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"), + filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"), + find: __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js"), + flatten: __webpack_require__(/*! lodash/flatten */ "./node_modules/lodash/flatten.js"), + forEach: __webpack_require__(/*! lodash/forEach */ "./node_modules/lodash/forEach.js"), + forIn: __webpack_require__(/*! lodash/forIn */ "./node_modules/lodash/forIn.js"), + has: __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"), + isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"), + last: __webpack_require__(/*! lodash/last */ "./node_modules/lodash/last.js"), + map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"), + mapValues: __webpack_require__(/*! lodash/mapValues */ "./node_modules/lodash/mapValues.js"), + max: __webpack_require__(/*! lodash/max */ "./node_modules/lodash/max.js"), + merge: __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js"), + min: __webpack_require__(/*! lodash/min */ "./node_modules/lodash/min.js"), + minBy: __webpack_require__(/*! lodash/minBy */ "./node_modules/lodash/minBy.js"), + now: __webpack_require__(/*! lodash/now */ "./node_modules/lodash/now.js"), + pick: __webpack_require__(/*! lodash/pick */ "./node_modules/lodash/pick.js"), + range: __webpack_require__(/*! lodash/range */ "./node_modules/lodash/range.js"), + reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"), + sortBy: __webpack_require__(/*! lodash/sortBy */ "./node_modules/lodash/sortBy.js"), + uniqueId: __webpack_require__(/*! lodash/uniqueId */ "./node_modules/lodash/uniqueId.js"), + values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js"), + zipObject: __webpack_require__(/*! lodash/zipObject */ "./node_modules/lodash/zipObject.js"), + }; + } catch (e) { + // continue regardless of error + } +} + +if (!lodash) { + lodash = window._; +} + +module.exports = lodash; + + +/***/ }), + +/***/ "./node_modules/dagre/lib/nesting-graph.js": +/*!*************************************************!*\ + !*** ./node_modules/dagre/lib/nesting-graph.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + +module.exports = { + run: run, + cleanup: cleanup +}; + +/* + * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs, + * adds appropriate edges to ensure that all cluster nodes are placed between + * these boundries, and ensures that the graph is connected. + * + * In addition we ensure, through the use of the minlen property, that nodes + * and subgraph border nodes to not end up on the same rank. + * + * Preconditions: + * + * 1. Input graph is a DAG + * 2. Nodes in the input graph has a minlen attribute + * + * Postconditions: + * + * 1. Input graph is connected. + * 2. Dummy nodes are added for the tops and bottoms of subgraphs. + * 3. The minlen attribute for nodes is adjusted to ensure nodes do not + * get placed on the same rank as subgraph border nodes. + * + * The nesting graph idea comes from Sander, "Layout of Compound Directed + * Graphs." + */ +function run(g) { + var root = util.addDummyNode(g, "root", {}, "_root"); + var depths = treeDepths(g); + var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array + var nodeSep = 2 * height + 1; + + g.graph().nestingRoot = root; + + // Multiply minlen by nodeSep to align nodes on non-border ranks. + _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; }); + + // Calculate a weight that is sufficient to keep subgraphs vertically compact + var weight = sumWeights(g) + 1; + + // Create border nodes and link them up + _.forEach(g.children(), function(child) { + dfs(g, root, nodeSep, weight, height, depths, child); + }); + + // Save the multiplier for node layers for later removal of empty border + // layers. + g.graph().nodeRankFactor = nodeSep; +} + +function dfs(g, root, nodeSep, weight, height, depths, v) { + var children = g.children(v); + if (!children.length) { + if (v !== root) { + g.setEdge(root, v, { weight: 0, minlen: nodeSep }); + } + return; + } + + var top = util.addBorderNode(g, "_bt"); + var bottom = util.addBorderNode(g, "_bb"); + var label = g.node(v); + + g.setParent(top, v); + label.borderTop = top; + g.setParent(bottom, v); + label.borderBottom = bottom; + + _.forEach(children, function(child) { + dfs(g, root, nodeSep, weight, height, depths, child); + + var childNode = g.node(child); + var childTop = childNode.borderTop ? childNode.borderTop : child; + var childBottom = childNode.borderBottom ? childNode.borderBottom : child; + var thisWeight = childNode.borderTop ? weight : 2 * weight; + var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1; + + g.setEdge(top, childTop, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true + }); + + g.setEdge(childBottom, bottom, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true + }); + }); + + if (!g.parent(v)) { + g.setEdge(root, top, { weight: 0, minlen: height + depths[v] }); + } +} + +function treeDepths(g) { + var depths = {}; + function dfs(v, depth) { + var children = g.children(v); + if (children && children.length) { + _.forEach(children, function(child) { + dfs(child, depth + 1); + }); + } + depths[v] = depth; + } + _.forEach(g.children(), function(v) { dfs(v, 1); }); + return depths; +} + +function sumWeights(g) { + return _.reduce(g.edges(), function(acc, e) { + return acc + g.edge(e).weight; + }, 0); +} + +function cleanup(g) { + var graphLabel = g.graph(); + g.removeNode(graphLabel.nestingRoot); + delete graphLabel.nestingRoot; + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.nestingEdge) { + g.removeEdge(e); + } + }); +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/normalize.js": +/*!*********************************************!*\ + !*** ./node_modules/dagre/lib/normalize.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + +module.exports = { + run: run, + undo: undo +}; + +/* + * Breaks any long edges in the graph into short segments that span 1 layer + * each. This operation is undoable with the denormalize function. + * + * Pre-conditions: + * + * 1. The input graph is a DAG. + * 2. Each node in the graph has a "rank" property. + * + * Post-condition: + * + * 1. All edges in the graph have a length of 1. + * 2. Dummy nodes are added where edges have been split into segments. + * 3. The graph is augmented with a "dummyChains" attribute which contains + * the first dummy in each chain of dummy nodes produced. + */ +function run(g) { + g.graph().dummyChains = []; + _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); }); +} + +function normalizeEdge(g, e) { + var v = e.v; + var vRank = g.node(v).rank; + var w = e.w; + var wRank = g.node(w).rank; + var name = e.name; + var edgeLabel = g.edge(e); + var labelRank = edgeLabel.labelRank; + + if (wRank === vRank + 1) return; + + g.removeEdge(e); + + var dummy, attrs, i; + for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) { + edgeLabel.points = []; + attrs = { + width: 0, height: 0, + edgeLabel: edgeLabel, edgeObj: e, + rank: vRank + }; + dummy = util.addDummyNode(g, "edge", attrs, "_d"); + if (vRank === labelRank) { + attrs.width = edgeLabel.width; + attrs.height = edgeLabel.height; + attrs.dummy = "edge-label"; + attrs.labelpos = edgeLabel.labelpos; + } + g.setEdge(v, dummy, { weight: edgeLabel.weight }, name); + if (i === 0) { + g.graph().dummyChains.push(dummy); + } + v = dummy; + } + + g.setEdge(v, w, { weight: edgeLabel.weight }, name); +} + +function undo(g) { + _.forEach(g.graph().dummyChains, function(v) { + var node = g.node(v); + var origLabel = node.edgeLabel; + var w; + g.setEdge(node.edgeObj, origLabel); + while (node.dummy) { + w = g.successors(v)[0]; + g.removeNode(v); + origLabel.points.push({ x: node.x, y: node.y }); + if (node.dummy === "edge-label") { + origLabel.x = node.x; + origLabel.y = node.y; + origLabel.width = node.width; + origLabel.height = node.height; + } + v = w; + node = g.node(v); + } + }); +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/add-subgraph-constraints.js": +/*!******************************************************************!*\ + !*** ./node_modules/dagre/lib/order/add-subgraph-constraints.js ***! + \******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = addSubgraphConstraints; + +function addSubgraphConstraints(g, cg, vs) { + var prev = {}, + rootPrev; + + _.forEach(vs, function(v) { + var child = g.parent(v), + parent, + prevChild; + while (child) { + parent = g.parent(child); + if (parent) { + prevChild = prev[parent]; + prev[parent] = child; + } else { + prevChild = rootPrev; + rootPrev = child; + } + if (prevChild && prevChild !== child) { + cg.setEdge(prevChild, child); + return; + } + child = parent; + } + }); + + /* + function dfs(v) { + var children = v ? g.children(v) : g.children(); + if (children.length) { + var min = Number.POSITIVE_INFINITY, + subgraphs = []; + _.each(children, function(child) { + var childMin = dfs(child); + if (g.children(child).length) { + subgraphs.push({ v: child, order: childMin }); + } + min = Math.min(min, childMin); + }); + _.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) { + cg.setEdge(prev.v, curr.v); + return curr; + }); + return min; + } + return g.node(v).order; + } + dfs(undefined); + */ +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/barycenter.js": +/*!****************************************************!*\ + !*** ./node_modules/dagre/lib/order/barycenter.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = barycenter; + +function barycenter(g, movable) { + return _.map(movable, function(v) { + var inV = g.inEdges(v); + if (!inV.length) { + return { v: v }; + } else { + var result = _.reduce(inV, function(acc, e) { + var edge = g.edge(e), + nodeU = g.node(e.v); + return { + sum: acc.sum + (edge.weight * nodeU.order), + weight: acc.weight + edge.weight + }; + }, { sum: 0, weight: 0 }); + + return { + v: v, + barycenter: result.sum / result.weight, + weight: result.weight + }; + } + }); +} + + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/build-layer-graph.js": +/*!***********************************************************!*\ + !*** ./node_modules/dagre/lib/order/build-layer-graph.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + +module.exports = buildLayerGraph; + +/* + * Constructs a graph that can be used to sort a layer of nodes. The graph will + * contain all base and subgraph nodes from the request layer in their original + * hierarchy and any edges that are incident on these nodes and are of the type + * requested by the "relationship" parameter. + * + * Nodes from the requested rank that do not have parents are assigned a root + * node in the output graph, which is set in the root graph attribute. This + * makes it easy to walk the hierarchy of movable nodes during ordering. + * + * Pre-conditions: + * + * 1. Input graph is a DAG + * 2. Base nodes in the input graph have a rank attribute + * 3. Subgraph nodes in the input graph has minRank and maxRank attributes + * 4. Edges have an assigned weight + * + * Post-conditions: + * + * 1. Output graph has all nodes in the movable rank with preserved + * hierarchy. + * 2. Root nodes in the movable layer are made children of the node + * indicated by the root attribute of the graph. + * 3. Non-movable nodes incident on movable nodes, selected by the + * relationship parameter, are included in the graph (without hierarchy). + * 4. Edges incident on movable nodes, selected by the relationship + * parameter, are added to the output graph. + * 5. The weights for copied edges are aggregated as need, since the output + * graph is not a multi-graph. + */ +function buildLayerGraph(g, rank, relationship) { + var root = createRootNode(g), + result = new Graph({ compound: true }).setGraph({ root: root }) + .setDefaultNodeLabel(function(v) { return g.node(v); }); + + _.forEach(g.nodes(), function(v) { + var node = g.node(v), + parent = g.parent(v); + + if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) { + result.setNode(v); + result.setParent(v, parent || root); + + // This assumes we have only short edges! + _.forEach(g[relationship](v), function(e) { + var u = e.v === v ? e.w : e.v, + edge = result.edge(u, v), + weight = !_.isUndefined(edge) ? edge.weight : 0; + result.setEdge(u, v, { weight: g.edge(e).weight + weight }); + }); + + if (_.has(node, "minRank")) { + result.setNode(v, { + borderLeft: node.borderLeft[rank], + borderRight: node.borderRight[rank] + }); + } + } + }); + + return result; +} + +function createRootNode(g) { + var v; + while (g.hasNode((v = _.uniqueId("_root")))); + return v; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/cross-count.js": +/*!*****************************************************!*\ + !*** ./node_modules/dagre/lib/order/cross-count.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = crossCount; + +/* + * A function that takes a layering (an array of layers, each with an array of + * ordererd nodes) and a graph and returns a weighted crossing count. + * + * Pre-conditions: + * + * 1. Input graph must be simple (not a multigraph), directed, and include + * only simple edges. + * 2. Edges in the input graph must have assigned weights. + * + * Post-conditions: + * + * 1. The graph and layering matrix are left unchanged. + * + * This algorithm is derived from Barth, et al., "Bilayer Cross Counting." + */ +function crossCount(g, layering) { + var cc = 0; + for (var i = 1; i < layering.length; ++i) { + cc += twoLayerCrossCount(g, layering[i-1], layering[i]); + } + return cc; +} + +function twoLayerCrossCount(g, northLayer, southLayer) { + // Sort all of the edges between the north and south layers by their position + // in the north layer and then the south. Map these edges to the position of + // their head in the south layer. + var southPos = _.zipObject(southLayer, + _.map(southLayer, function (v, i) { return i; })); + var southEntries = _.flatten(_.map(northLayer, function(v) { + return _.sortBy(_.map(g.outEdges(v), function(e) { + return { pos: southPos[e.w], weight: g.edge(e).weight }; + }), "pos"); + }), true); + + // Build the accumulator tree + var firstIndex = 1; + while (firstIndex < southLayer.length) firstIndex <<= 1; + var treeSize = 2 * firstIndex - 1; + firstIndex -= 1; + var tree = _.map(new Array(treeSize), function() { return 0; }); + + // Calculate the weighted crossings + var cc = 0; + _.forEach(southEntries.forEach(function(entry) { + var index = entry.pos + firstIndex; + tree[index] += entry.weight; + var weightSum = 0; + while (index > 0) { + if (index % 2) { + weightSum += tree[index + 1]; + } + index = (index - 1) >> 1; + tree[index] += entry.weight; + } + cc += entry.weight * weightSum; + })); + + return cc; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/index.js": +/*!***********************************************!*\ + !*** ./node_modules/dagre/lib/order/index.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var initOrder = __webpack_require__(/*! ./init-order */ "./node_modules/dagre/lib/order/init-order.js"); +var crossCount = __webpack_require__(/*! ./cross-count */ "./node_modules/dagre/lib/order/cross-count.js"); +var sortSubgraph = __webpack_require__(/*! ./sort-subgraph */ "./node_modules/dagre/lib/order/sort-subgraph.js"); +var buildLayerGraph = __webpack_require__(/*! ./build-layer-graph */ "./node_modules/dagre/lib/order/build-layer-graph.js"); +var addSubgraphConstraints = __webpack_require__(/*! ./add-subgraph-constraints */ "./node_modules/dagre/lib/order/add-subgraph-constraints.js"); +var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; +var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); + +module.exports = order; + +/* + * Applies heuristics to minimize edge crossings in the graph and sets the best + * order solution as an order attribute on each node. + * + * Pre-conditions: + * + * 1. Graph must be DAG + * 2. Graph nodes must be objects with a "rank" attribute + * 3. Graph edges must have the "weight" attribute + * + * Post-conditions: + * + * 1. Graph nodes will have an "order" attribute based on the results of the + * algorithm. + */ +function order(g) { + var maxRank = util.maxRank(g), + downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), "inEdges"), + upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), "outEdges"); + + var layering = initOrder(g); + assignOrder(g, layering); + + var bestCC = Number.POSITIVE_INFINITY, + best; + + for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) { + sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2); + + layering = util.buildLayerMatrix(g); + var cc = crossCount(g, layering); + if (cc < bestCC) { + lastBest = 0; + best = _.cloneDeep(layering); + bestCC = cc; + } + } + + assignOrder(g, best); +} + +function buildLayerGraphs(g, ranks, relationship) { + return _.map(ranks, function(rank) { + return buildLayerGraph(g, rank, relationship); + }); +} + +function sweepLayerGraphs(layerGraphs, biasRight) { + var cg = new Graph(); + _.forEach(layerGraphs, function(lg) { + var root = lg.graph().root; + var sorted = sortSubgraph(lg, root, cg, biasRight); + _.forEach(sorted.vs, function(v, i) { + lg.node(v).order = i; + }); + addSubgraphConstraints(lg, cg, sorted.vs); + }); +} + +function assignOrder(g, layering) { + _.forEach(layering, function(layer) { + _.forEach(layer, function(v, i) { + g.node(v).order = i; + }); + }); +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/init-order.js": +/*!****************************************************!*\ + !*** ./node_modules/dagre/lib/order/init-order.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = initOrder; + +/* + * Assigns an initial order value for each node by performing a DFS search + * starting from nodes in the first rank. Nodes are assigned an order in their + * rank as they are first visited. + * + * This approach comes from Gansner, et al., "A Technique for Drawing Directed + * Graphs." + * + * Returns a layering matrix with an array per layer and each layer sorted by + * the order of its nodes. + */ +function initOrder(g) { + var visited = {}; + var simpleNodes = _.filter(g.nodes(), function(v) { + return !g.children(v).length; + }); + var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; })); + var layers = _.map(_.range(maxRank + 1), function() { return []; }); + + function dfs(v) { + if (_.has(visited, v)) return; + visited[v] = true; + var node = g.node(v); + layers[node.rank].push(v); + _.forEach(g.successors(v), dfs); + } + + var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; }); + _.forEach(orderedVs, dfs); + + return layers; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/resolve-conflicts.js": +/*!***********************************************************!*\ + !*** ./node_modules/dagre/lib/order/resolve-conflicts.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = resolveConflicts; + +/* + * Given a list of entries of the form {v, barycenter, weight} and a + * constraint graph this function will resolve any conflicts between the + * constraint graph and the barycenters for the entries. If the barycenters for + * an entry would violate a constraint in the constraint graph then we coalesce + * the nodes in the conflict into a new node that respects the contraint and + * aggregates barycenter and weight information. + * + * This implementation is based on the description in Forster, "A Fast and + * Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it + * differs in some specific details. + * + * Pre-conditions: + * + * 1. Each entry has the form {v, barycenter, weight}, or if the node has + * no barycenter, then {v}. + * + * Returns: + * + * A new list of entries of the form {vs, i, barycenter, weight}. The list + * `vs` may either be a singleton or it may be an aggregation of nodes + * ordered such that they do not violate constraints from the constraint + * graph. The property `i` is the lowest original index of any of the + * elements in `vs`. + */ +function resolveConflicts(entries, cg) { + var mappedEntries = {}; + _.forEach(entries, function(entry, i) { + var tmp = mappedEntries[entry.v] = { + indegree: 0, + "in": [], + out: [], + vs: [entry.v], + i: i + }; + if (!_.isUndefined(entry.barycenter)) { + tmp.barycenter = entry.barycenter; + tmp.weight = entry.weight; + } + }); + + _.forEach(cg.edges(), function(e) { + var entryV = mappedEntries[e.v]; + var entryW = mappedEntries[e.w]; + if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) { + entryW.indegree++; + entryV.out.push(mappedEntries[e.w]); + } + }); + + var sourceSet = _.filter(mappedEntries, function(entry) { + return !entry.indegree; + }); + + return doResolveConflicts(sourceSet); +} + +function doResolveConflicts(sourceSet) { + var entries = []; + + function handleIn(vEntry) { + return function(uEntry) { + if (uEntry.merged) { + return; + } + if (_.isUndefined(uEntry.barycenter) || + _.isUndefined(vEntry.barycenter) || + uEntry.barycenter >= vEntry.barycenter) { + mergeEntries(vEntry, uEntry); + } + }; + } + + function handleOut(vEntry) { + return function(wEntry) { + wEntry["in"].push(vEntry); + if (--wEntry.indegree === 0) { + sourceSet.push(wEntry); + } + }; + } + + while (sourceSet.length) { + var entry = sourceSet.pop(); + entries.push(entry); + _.forEach(entry["in"].reverse(), handleIn(entry)); + _.forEach(entry.out, handleOut(entry)); + } + + return _.map(_.filter(entries, function(entry) { return !entry.merged; }), + function(entry) { + return _.pick(entry, ["vs", "i", "barycenter", "weight"]); + }); + +} + +function mergeEntries(target, source) { + var sum = 0; + var weight = 0; + + if (target.weight) { + sum += target.barycenter * target.weight; + weight += target.weight; + } + + if (source.weight) { + sum += source.barycenter * source.weight; + weight += source.weight; + } + + target.vs = source.vs.concat(target.vs); + target.barycenter = sum / weight; + target.weight = weight; + target.i = Math.min(source.i, target.i); + source.merged = true; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/sort-subgraph.js": +/*!*******************************************************!*\ + !*** ./node_modules/dagre/lib/order/sort-subgraph.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var barycenter = __webpack_require__(/*! ./barycenter */ "./node_modules/dagre/lib/order/barycenter.js"); +var resolveConflicts = __webpack_require__(/*! ./resolve-conflicts */ "./node_modules/dagre/lib/order/resolve-conflicts.js"); +var sort = __webpack_require__(/*! ./sort */ "./node_modules/dagre/lib/order/sort.js"); + +module.exports = sortSubgraph; + +function sortSubgraph(g, v, cg, biasRight) { + var movable = g.children(v); + var node = g.node(v); + var bl = node ? node.borderLeft : undefined; + var br = node ? node.borderRight: undefined; + var subgraphs = {}; + + if (bl) { + movable = _.filter(movable, function(w) { + return w !== bl && w !== br; + }); + } + + var barycenters = barycenter(g, movable); + _.forEach(barycenters, function(entry) { + if (g.children(entry.v).length) { + var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight); + subgraphs[entry.v] = subgraphResult; + if (_.has(subgraphResult, "barycenter")) { + mergeBarycenters(entry, subgraphResult); + } + } + }); + + var entries = resolveConflicts(barycenters, cg); + expandSubgraphs(entries, subgraphs); + + var result = sort(entries, biasRight); + + if (bl) { + result.vs = _.flatten([bl, result.vs, br], true); + if (g.predecessors(bl).length) { + var blPred = g.node(g.predecessors(bl)[0]), + brPred = g.node(g.predecessors(br)[0]); + if (!_.has(result, "barycenter")) { + result.barycenter = 0; + result.weight = 0; + } + result.barycenter = (result.barycenter * result.weight + + blPred.order + brPred.order) / (result.weight + 2); + result.weight += 2; + } + } + + return result; +} + +function expandSubgraphs(entries, subgraphs) { + _.forEach(entries, function(entry) { + entry.vs = _.flatten(entry.vs.map(function(v) { + if (subgraphs[v]) { + return subgraphs[v].vs; + } + return v; + }), true); + }); +} + +function mergeBarycenters(target, other) { + if (!_.isUndefined(target.barycenter)) { + target.barycenter = (target.barycenter * target.weight + + other.barycenter * other.weight) / + (target.weight + other.weight); + target.weight += other.weight; + } else { + target.barycenter = other.barycenter; + target.weight = other.weight; + } +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/order/sort.js": +/*!**********************************************!*\ + !*** ./node_modules/dagre/lib/order/sort.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); + +module.exports = sort; + +function sort(entries, biasRight) { + var parts = util.partition(entries, function(entry) { + return _.has(entry, "barycenter"); + }); + var sortable = parts.lhs, + unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }), + vs = [], + sum = 0, + weight = 0, + vsIndex = 0; + + sortable.sort(compareWithBias(!!biasRight)); + + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + + _.forEach(sortable, function (entry) { + vsIndex += entry.vs.length; + vs.push(entry.vs); + sum += entry.barycenter * entry.weight; + weight += entry.weight; + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + }); + + var result = { vs: _.flatten(vs, true) }; + if (weight) { + result.barycenter = sum / weight; + result.weight = weight; + } + return result; +} + +function consumeUnsortable(vs, unsortable, index) { + var last; + while (unsortable.length && (last = _.last(unsortable)).i <= index) { + unsortable.pop(); + vs.push(last.vs); + index++; + } + return index; +} + +function compareWithBias(bias) { + return function(entryV, entryW) { + if (entryV.barycenter < entryW.barycenter) { + return -1; + } else if (entryV.barycenter > entryW.barycenter) { + return 1; + } + + return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; + }; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/parent-dummy-chains.js": +/*!*******************************************************!*\ + !*** ./node_modules/dagre/lib/parent-dummy-chains.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = parentDummyChains; + +function parentDummyChains(g) { + var postorderNums = postorder(g); + + _.forEach(g.graph().dummyChains, function(v) { + var node = g.node(v); + var edgeObj = node.edgeObj; + var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w); + var path = pathData.path; + var lca = pathData.lca; + var pathIdx = 0; + var pathV = path[pathIdx]; + var ascending = true; + + while (v !== edgeObj.w) { + node = g.node(v); + + if (ascending) { + while ((pathV = path[pathIdx]) !== lca && + g.node(pathV).maxRank < node.rank) { + pathIdx++; + } + + if (pathV === lca) { + ascending = false; + } + } + + if (!ascending) { + while (pathIdx < path.length - 1 && + g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) { + pathIdx++; + } + pathV = path[pathIdx]; + } + + g.setParent(v, pathV); + v = g.successors(v)[0]; + } + }); +} + +// Find a path from v to w through the lowest common ancestor (LCA). Return the +// full path and the LCA. +function findPath(g, postorderNums, v, w) { + var vPath = []; + var wPath = []; + var low = Math.min(postorderNums[v].low, postorderNums[w].low); + var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim); + var parent; + var lca; + + // Traverse up from v to find the LCA + parent = v; + do { + parent = g.parent(parent); + vPath.push(parent); + } while (parent && + (postorderNums[parent].low > low || lim > postorderNums[parent].lim)); + lca = parent; + + // Traverse from w to LCA + parent = w; + while ((parent = g.parent(parent)) !== lca) { + wPath.push(parent); + } + + return { path: vPath.concat(wPath.reverse()), lca: lca }; +} + +function postorder(g) { + var result = {}; + var lim = 0; + + function dfs(v) { + var low = lim; + _.forEach(g.children(v), dfs); + result[v] = { low: low, lim: lim++ }; + } + _.forEach(g.children(), dfs); + + return result; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/position/bk.js": +/*!***********************************************!*\ + !*** ./node_modules/dagre/lib/position/bk.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; +var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); + +/* + * This module provides coordinate assignment based on Brandes and Köpf, "Fast + * and Simple Horizontal Coordinate Assignment." + */ + +module.exports = { + positionX: positionX, + findType1Conflicts: findType1Conflicts, + findType2Conflicts: findType2Conflicts, + addConflict: addConflict, + hasConflict: hasConflict, + verticalAlignment: verticalAlignment, + horizontalCompaction: horizontalCompaction, + alignCoordinates: alignCoordinates, + findSmallestWidthAlignment: findSmallestWidthAlignment, + balance: balance +}; + +/* + * Marks all edges in the graph with a type-1 conflict with the "type1Conflict" + * property. A type-1 conflict is one where a non-inner segment crosses an + * inner segment. An inner segment is an edge with both incident nodes marked + * with the "dummy" property. + * + * This algorithm scans layer by layer, starting with the second, for type-1 + * conflicts between the current layer and the previous layer. For each layer + * it scans the nodes from left to right until it reaches one that is incident + * on an inner segment. It then scans predecessors to determine if they have + * edges that cross that inner segment. At the end a final scan is done for all + * nodes on the current rank to see if they cross the last visited inner + * segment. + * + * This algorithm (safely) assumes that a dummy node will only be incident on a + * single node in the layers being scanned. + */ +function findType1Conflicts(g, layering) { + var conflicts = {}; + + function visitLayer(prevLayer, layer) { + var + // last visited node in the previous layer that is incident on an inner + // segment. + k0 = 0, + // Tracks the last node in this layer scanned for crossings with a type-1 + // segment. + scanPos = 0, + prevLayerLength = prevLayer.length, + lastNode = _.last(layer); + + _.forEach(layer, function(v, i) { + var w = findOtherInnerSegmentNode(g, v), + k1 = w ? g.node(w).order : prevLayerLength; + + if (w || v === lastNode) { + _.forEach(layer.slice(scanPos, i +1), function(scanNode) { + _.forEach(g.predecessors(scanNode), function(u) { + var uLabel = g.node(u), + uPos = uLabel.order; + if ((uPos < k0 || k1 < uPos) && + !(uLabel.dummy && g.node(scanNode).dummy)) { + addConflict(conflicts, u, scanNode); + } + }); + }); + scanPos = i + 1; + k0 = k1; + } + }); + + return layer; + } + + _.reduce(layering, visitLayer); + return conflicts; +} + +function findType2Conflicts(g, layering) { + var conflicts = {}; + + function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) { + var v; + _.forEach(_.range(southPos, southEnd), function(i) { + v = south[i]; + if (g.node(v).dummy) { + _.forEach(g.predecessors(v), function(u) { + var uNode = g.node(u); + if (uNode.dummy && + (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) { + addConflict(conflicts, u, v); + } + }); + } + }); + } + + + function visitLayer(north, south) { + var prevNorthPos = -1, + nextNorthPos, + southPos = 0; + + _.forEach(south, function(v, southLookahead) { + if (g.node(v).dummy === "border") { + var predecessors = g.predecessors(v); + if (predecessors.length) { + nextNorthPos = g.node(predecessors[0]).order; + scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos); + southPos = southLookahead; + prevNorthPos = nextNorthPos; + } + } + scan(south, southPos, south.length, nextNorthPos, north.length); + }); + + return south; + } + + _.reduce(layering, visitLayer); + return conflicts; +} + +function findOtherInnerSegmentNode(g, v) { + if (g.node(v).dummy) { + return _.find(g.predecessors(v), function(u) { + return g.node(u).dummy; + }); + } +} + +function addConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + + var conflictsV = conflicts[v]; + if (!conflictsV) { + conflicts[v] = conflictsV = {}; + } + conflictsV[w] = true; +} + +function hasConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + return _.has(conflicts[v], w); +} + +/* + * Try to align nodes into vertical "blocks" where possible. This algorithm + * attempts to align a node with one of its median neighbors. If the edge + * connecting a neighbor is a type-1 conflict then we ignore that possibility. + * If a previous node has already formed a block with a node after the node + * we're trying to form a block with, we also ignore that possibility - our + * blocks would be split in that scenario. + */ +function verticalAlignment(g, layering, conflicts, neighborFn) { + var root = {}, + align = {}, + pos = {}; + + // We cache the position here based on the layering because the graph and + // layering may be out of sync. The layering matrix is manipulated to + // generate different extreme alignments. + _.forEach(layering, function(layer) { + _.forEach(layer, function(v, order) { + root[v] = v; + align[v] = v; + pos[v] = order; + }); + }); + + _.forEach(layering, function(layer) { + var prevIdx = -1; + _.forEach(layer, function(v) { + var ws = neighborFn(v); + if (ws.length) { + ws = _.sortBy(ws, function(w) { return pos[w]; }); + var mp = (ws.length - 1) / 2; + for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) { + var w = ws[i]; + if (align[v] === v && + prevIdx < pos[w] && + !hasConflict(conflicts, v, w)) { + align[w] = v; + align[v] = root[v] = root[w]; + prevIdx = pos[w]; + } + } + } + }); + }); + + return { root: root, align: align }; +} + +function horizontalCompaction(g, layering, root, align, reverseSep) { + // This portion of the algorithm differs from BK due to a number of problems. + // Instead of their algorithm we construct a new block graph and do two + // sweeps. The first sweep places blocks with the smallest possible + // coordinates. The second sweep removes unused space by moving blocks to the + // greatest coordinates without violating separation. + var xs = {}, + blockG = buildBlockGraph(g, layering, root, reverseSep), + borderType = reverseSep ? "borderLeft" : "borderRight"; + + function iterate(setXsFunc, nextNodesFunc) { + var stack = blockG.nodes(); + var elem = stack.pop(); + var visited = {}; + while (elem) { + if (visited[elem]) { + setXsFunc(elem); + } else { + visited[elem] = true; + stack.push(elem); + stack = stack.concat(nextNodesFunc(elem)); + } + + elem = stack.pop(); + } + } + + // First pass, assign smallest coordinates + function pass1(elem) { + xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) { + return Math.max(acc, xs[e.v] + blockG.edge(e)); + }, 0); + } + + // Second pass, assign greatest coordinates + function pass2(elem) { + var min = blockG.outEdges(elem).reduce(function(acc, e) { + return Math.min(acc, xs[e.w] - blockG.edge(e)); + }, Number.POSITIVE_INFINITY); + + var node = g.node(elem); + if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { + xs[elem] = Math.max(xs[elem], min); + } + } + + iterate(pass1, blockG.predecessors.bind(blockG)); + iterate(pass2, blockG.successors.bind(blockG)); + + // Assign x coordinates to all nodes + _.forEach(align, function(v) { + xs[v] = xs[root[v]]; + }); + + return xs; +} + + +function buildBlockGraph(g, layering, root, reverseSep) { + var blockGraph = new Graph(), + graphLabel = g.graph(), + sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); + + _.forEach(layering, function(layer) { + var u; + _.forEach(layer, function(v) { + var vRoot = root[v]; + blockGraph.setNode(vRoot); + if (u) { + var uRoot = root[u], + prevMax = blockGraph.edge(uRoot, vRoot); + blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0)); + } + u = v; + }); + }); + + return blockGraph; +} + +/* + * Returns the alignment that has the smallest width of the given alignments. + */ +function findSmallestWidthAlignment(g, xss) { + return _.minBy(_.values(xss), function (xs) { + var max = Number.NEGATIVE_INFINITY; + var min = Number.POSITIVE_INFINITY; + + _.forIn(xs, function (x, v) { + var halfWidth = width(g, v) / 2; + + max = Math.max(x + halfWidth, max); + min = Math.min(x - halfWidth, min); + }); + + return max - min; + }); +} + +/* + * Align the coordinates of each of the layout alignments such that + * left-biased alignments have their minimum coordinate at the same point as + * the minimum coordinate of the smallest width alignment and right-biased + * alignments have their maximum coordinate at the same point as the maximum + * coordinate of the smallest width alignment. + */ +function alignCoordinates(xss, alignTo) { + var alignToVals = _.values(alignTo), + alignToMin = _.min(alignToVals), + alignToMax = _.max(alignToVals); + + _.forEach(["u", "d"], function(vert) { + _.forEach(["l", "r"], function(horiz) { + var alignment = vert + horiz, + xs = xss[alignment], + delta; + if (xs === alignTo) return; + + var xsVals = _.values(xs); + delta = horiz === "l" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals); + + if (delta) { + xss[alignment] = _.mapValues(xs, function(x) { return x + delta; }); + } + }); + }); +} + +function balance(xss, align) { + return _.mapValues(xss.ul, function(ignore, v) { + if (align) { + return xss[align.toLowerCase()][v]; + } else { + var xs = _.sortBy(_.map(xss, v)); + return (xs[1] + xs[2]) / 2; + } + }); +} + +function positionX(g) { + var layering = util.buildLayerMatrix(g); + var conflicts = _.merge( + findType1Conflicts(g, layering), + findType2Conflicts(g, layering)); + + var xss = {}; + var adjustedLayering; + _.forEach(["u", "d"], function(vert) { + adjustedLayering = vert === "u" ? layering : _.values(layering).reverse(); + _.forEach(["l", "r"], function(horiz) { + if (horiz === "r") { + adjustedLayering = _.map(adjustedLayering, function(inner) { + return _.values(inner).reverse(); + }); + } + + var neighborFn = (vert === "u" ? g.predecessors : g.successors).bind(g); + var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn); + var xs = horizontalCompaction(g, adjustedLayering, + align.root, align.align, horiz === "r"); + if (horiz === "r") { + xs = _.mapValues(xs, function(x) { return -x; }); + } + xss[vert + horiz] = xs; + }); + }); + + var smallestWidth = findSmallestWidthAlignment(g, xss); + alignCoordinates(xss, smallestWidth); + return balance(xss, g.graph().align); +} + +function sep(nodeSep, edgeSep, reverseSep) { + return function(g, v, w) { + var vLabel = g.node(v); + var wLabel = g.node(w); + var sum = 0; + var delta; + + sum += vLabel.width / 2; + if (_.has(vLabel, "labelpos")) { + switch (vLabel.labelpos.toLowerCase()) { + case "l": delta = -vLabel.width / 2; break; + case "r": delta = vLabel.width / 2; break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + sum += (vLabel.dummy ? edgeSep : nodeSep) / 2; + sum += (wLabel.dummy ? edgeSep : nodeSep) / 2; + + sum += wLabel.width / 2; + if (_.has(wLabel, "labelpos")) { + switch (wLabel.labelpos.toLowerCase()) { + case "l": delta = wLabel.width / 2; break; + case "r": delta = -wLabel.width / 2; break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + return sum; + }; +} + +function width(g, v) { + return g.node(v).width; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/position/index.js": +/*!**************************************************!*\ + !*** ./node_modules/dagre/lib/position/index.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); +var positionX = __webpack_require__(/*! ./bk */ "./node_modules/dagre/lib/position/bk.js").positionX; + +module.exports = position; + +function position(g) { + g = util.asNonCompoundGraph(g); + + positionY(g); + _.forEach(positionX(g), function(x, v) { + g.node(v).x = x; + }); +} + +function positionY(g) { + var layering = util.buildLayerMatrix(g); + var rankSep = g.graph().ranksep; + var prevY = 0; + _.forEach(layering, function(layer) { + var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; })); + _.forEach(layer, function(v) { + g.node(v).y = prevY + maxHeight / 2; + }); + prevY += maxHeight + rankSep; + }); +} + + + +/***/ }), + +/***/ "./node_modules/dagre/lib/rank/feasible-tree.js": +/*!******************************************************!*\ + !*** ./node_modules/dagre/lib/rank/feasible-tree.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; +var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack; + +module.exports = feasibleTree; + +/* + * Constructs a spanning tree with tight edges and adjusted the input node's + * ranks to achieve this. A tight edge is one that is has a length that matches + * its "minlen" attribute. + * + * The basic structure for this function is derived from Gansner, et al., "A + * Technique for Drawing Directed Graphs." + * + * Pre-conditions: + * + * 1. Graph must be a DAG. + * 2. Graph must be connected. + * 3. Graph must have at least one node. + * 5. Graph nodes must have been previously assigned a "rank" property that + * respects the "minlen" property of incident edges. + * 6. Graph edges must have a "minlen" property. + * + * Post-conditions: + * + * - Graph nodes will have their rank adjusted to ensure that all edges are + * tight. + * + * Returns a tree (undirected graph) that is constructed using only "tight" + * edges. + */ +function feasibleTree(g) { + var t = new Graph({ directed: false }); + + // Choose arbitrary node from which to start our tree + var start = g.nodes()[0]; + var size = g.nodeCount(); + t.setNode(start, {}); + + var edge, delta; + while (tightTree(t, g) < size) { + edge = findMinSlackEdge(t, g); + delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge); + shiftRanks(t, g, delta); + } + + return t; +} + +/* + * Finds a maximal tree of tight edges and returns the number of nodes in the + * tree. + */ +function tightTree(t, g) { + function dfs(v) { + _.forEach(g.nodeEdges(v), function(e) { + var edgeV = e.v, + w = (v === edgeV) ? e.w : edgeV; + if (!t.hasNode(w) && !slack(g, e)) { + t.setNode(w, {}); + t.setEdge(v, w, {}); + dfs(w); + } + }); + } + + _.forEach(t.nodes(), dfs); + return t.nodeCount(); +} + +/* + * Finds the edge with the smallest slack that is incident on tree and returns + * it. + */ +function findMinSlackEdge(t, g) { + return _.minBy(g.edges(), function(e) { + if (t.hasNode(e.v) !== t.hasNode(e.w)) { + return slack(g, e); + } + }); +} + +function shiftRanks(t, g, delta) { + _.forEach(t.nodes(), function(v) { + g.node(v).rank += delta; + }); +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/rank/index.js": +/*!**********************************************!*\ + !*** ./node_modules/dagre/lib/rank/index.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var rankUtil = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js"); +var longestPath = rankUtil.longestPath; +var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js"); +var networkSimplex = __webpack_require__(/*! ./network-simplex */ "./node_modules/dagre/lib/rank/network-simplex.js"); + +module.exports = rank; + +/* + * Assigns a rank to each node in the input graph that respects the "minlen" + * constraint specified on edges between nodes. + * + * This basic structure is derived from Gansner, et al., "A Technique for + * Drawing Directed Graphs." + * + * Pre-conditions: + * + * 1. Graph must be a connected DAG + * 2. Graph nodes must be objects + * 3. Graph edges must have "weight" and "minlen" attributes + * + * Post-conditions: + * + * 1. Graph nodes will have a "rank" attribute based on the results of the + * algorithm. Ranks can start at any index (including negative), we'll + * fix them up later. + */ +function rank(g) { + switch(g.graph().ranker) { + case "network-simplex": networkSimplexRanker(g); break; + case "tight-tree": tightTreeRanker(g); break; + case "longest-path": longestPathRanker(g); break; + default: networkSimplexRanker(g); + } +} + +// A fast and simple ranker, but results are far from optimal. +var longestPathRanker = longestPath; + +function tightTreeRanker(g) { + longestPath(g); + feasibleTree(g); +} + +function networkSimplexRanker(g) { + networkSimplex(g); +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/rank/network-simplex.js": +/*!********************************************************!*\ + !*** ./node_modules/dagre/lib/rank/network-simplex.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); +var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js"); +var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack; +var initRank = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").longestPath; +var preorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.preorder; +var postorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.postorder; +var simplify = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js").simplify; + +module.exports = networkSimplex; + +// Expose some internals for testing purposes +networkSimplex.initLowLimValues = initLowLimValues; +networkSimplex.initCutValues = initCutValues; +networkSimplex.calcCutValue = calcCutValue; +networkSimplex.leaveEdge = leaveEdge; +networkSimplex.enterEdge = enterEdge; +networkSimplex.exchangeEdges = exchangeEdges; + +/* + * The network simplex algorithm assigns ranks to each node in the input graph + * and iteratively improves the ranking to reduce the length of edges. + * + * Preconditions: + * + * 1. The input graph must be a DAG. + * 2. All nodes in the graph must have an object value. + * 3. All edges in the graph must have "minlen" and "weight" attributes. + * + * Postconditions: + * + * 1. All nodes in the graph will have an assigned "rank" attribute that has + * been optimized by the network simplex algorithm. Ranks start at 0. + * + * + * A rough sketch of the algorithm is as follows: + * + * 1. Assign initial ranks to each node. We use the longest path algorithm, + * which assigns ranks to the lowest position possible. In general this + * leads to very wide bottom ranks and unnecessarily long edges. + * 2. Construct a feasible tight tree. A tight tree is one such that all + * edges in the tree have no slack (difference between length of edge + * and minlen for the edge). This by itself greatly improves the assigned + * rankings by shorting edges. + * 3. Iteratively find edges that have negative cut values. Generally a + * negative cut value indicates that the edge could be removed and a new + * tree edge could be added to produce a more compact graph. + * + * Much of the algorithms here are derived from Gansner, et al., "A Technique + * for Drawing Directed Graphs." The structure of the file roughly follows the + * structure of the overall algorithm. + */ +function networkSimplex(g) { + g = simplify(g); + initRank(g); + var t = feasibleTree(g); + initLowLimValues(t); + initCutValues(t, g); + + var e, f; + while ((e = leaveEdge(t))) { + f = enterEdge(t, g, e); + exchangeEdges(t, g, e, f); + } +} + +/* + * Initializes cut values for all edges in the tree. + */ +function initCutValues(t, g) { + var vs = postorder(t, t.nodes()); + vs = vs.slice(0, vs.length - 1); + _.forEach(vs, function(v) { + assignCutValue(t, g, v); + }); +} + +function assignCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + t.edge(child, parent).cutvalue = calcCutValue(t, g, child); +} + +/* + * Given the tight tree, its graph, and a child in the graph calculate and + * return the cut value for the edge between the child and its parent. + */ +function calcCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + // True if the child is on the tail end of the edge in the directed graph + var childIsTail = true; + // The graph's view of the tree edge we're inspecting + var graphEdge = g.edge(child, parent); + // The accumulated cut value for the edge between this node and its parent + var cutValue = 0; + + if (!graphEdge) { + childIsTail = false; + graphEdge = g.edge(parent, child); + } + + cutValue = graphEdge.weight; + + _.forEach(g.nodeEdges(child), function(e) { + var isOutEdge = e.v === child, + other = isOutEdge ? e.w : e.v; + + if (other !== parent) { + var pointsToHead = isOutEdge === childIsTail, + otherWeight = g.edge(e).weight; + + cutValue += pointsToHead ? otherWeight : -otherWeight; + if (isTreeEdge(t, child, other)) { + var otherCutValue = t.edge(child, other).cutvalue; + cutValue += pointsToHead ? -otherCutValue : otherCutValue; + } + } + }); + + return cutValue; +} + +function initLowLimValues(tree, root) { + if (arguments.length < 2) { + root = tree.nodes()[0]; + } + dfsAssignLowLim(tree, {}, 1, root); +} + +function dfsAssignLowLim(tree, visited, nextLim, v, parent) { + var low = nextLim; + var label = tree.node(v); + + visited[v] = true; + _.forEach(tree.neighbors(v), function(w) { + if (!_.has(visited, w)) { + nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v); + } + }); + + label.low = low; + label.lim = nextLim++; + if (parent) { + label.parent = parent; + } else { + // TODO should be able to remove this when we incrementally update low lim + delete label.parent; + } + + return nextLim; +} + +function leaveEdge(tree) { + return _.find(tree.edges(), function(e) { + return tree.edge(e).cutvalue < 0; + }); +} + +function enterEdge(t, g, edge) { + var v = edge.v; + var w = edge.w; + + // For the rest of this function we assume that v is the tail and w is the + // head, so if we don't have this edge in the graph we should flip it to + // match the correct orientation. + if (!g.hasEdge(v, w)) { + v = edge.w; + w = edge.v; + } + + var vLabel = t.node(v); + var wLabel = t.node(w); + var tailLabel = vLabel; + var flip = false; + + // If the root is in the tail of the edge then we need to flip the logic that + // checks for the head and tail nodes in the candidates function below. + if (vLabel.lim > wLabel.lim) { + tailLabel = wLabel; + flip = true; + } + + var candidates = _.filter(g.edges(), function(edge) { + return flip === isDescendant(t, t.node(edge.v), tailLabel) && + flip !== isDescendant(t, t.node(edge.w), tailLabel); + }); + + return _.minBy(candidates, function(edge) { return slack(g, edge); }); +} + +function exchangeEdges(t, g, e, f) { + var v = e.v; + var w = e.w; + t.removeEdge(v, w); + t.setEdge(f.v, f.w, {}); + initLowLimValues(t); + initCutValues(t, g); + updateRanks(t, g); +} + +function updateRanks(t, g) { + var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; }); + var vs = preorder(t, root); + vs = vs.slice(1); + _.forEach(vs, function(v) { + var parent = t.node(v).parent, + edge = g.edge(v, parent), + flipped = false; + + if (!edge) { + edge = g.edge(parent, v); + flipped = true; + } + + g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen); + }); +} + +/* + * Returns true if the edge is in the tree. + */ +function isTreeEdge(tree, u, v) { + return tree.hasEdge(u, v); +} + +/* + * Returns true if the specified node is descendant of the root node per the + * assigned low and lim attributes in the tree. + */ +function isDescendant(tree, vLabel, rootLabel) { + return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/rank/util.js": +/*!*********************************************!*\ + !*** ./node_modules/dagre/lib/rank/util.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + +module.exports = { + longestPath: longestPath, + slack: slack +}; + +/* + * Initializes ranks for the input graph using the longest path algorithm. This + * algorithm scales well and is fast in practice, it yields rather poor + * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom + * ranks wide and leaving edges longer than necessary. However, due to its + * speed, this algorithm is good for getting an initial ranking that can be fed + * into other algorithms. + * + * This algorithm does not normalize layers because it will be used by other + * algorithms in most cases. If using this algorithm directly, be sure to + * run normalize at the end. + * + * Pre-conditions: + * + * 1. Input graph is a DAG. + * 2. Input graph node labels can be assigned properties. + * + * Post-conditions: + * + * 1. Each node will be assign an (unnormalized) "rank" property. + */ +function longestPath(g) { + var visited = {}; + + function dfs(v) { + var label = g.node(v); + if (_.has(visited, v)) { + return label.rank; + } + visited[v] = true; + + var rank = _.min(_.map(g.outEdges(v), function(e) { + return dfs(e.w) - g.edge(e).minlen; + })); + + if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3 + rank === undefined || // return value of _.map([]) for Lodash 4 + rank === null) { // return value of _.map([null]) + rank = 0; + } + + return (label.rank = rank); + } + + _.forEach(g.sources(), dfs); +} + +/* + * Returns the amount of slack for the given edge. The slack is defined as the + * difference between the length of the edge and its minimum length. + */ +function slack(g, e) { + return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen; +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/util.js": +/*!****************************************!*\ + !*** ./node_modules/dagre/lib/util.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* eslint "no-console": off */ + + + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); +var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + +module.exports = { + addDummyNode: addDummyNode, + simplify: simplify, + asNonCompoundGraph: asNonCompoundGraph, + successorWeights: successorWeights, + predecessorWeights: predecessorWeights, + intersectRect: intersectRect, + buildLayerMatrix: buildLayerMatrix, + normalizeRanks: normalizeRanks, + removeEmptyRanks: removeEmptyRanks, + addBorderNode: addBorderNode, + maxRank: maxRank, + partition: partition, + time: time, + notime: notime +}; + +/* + * Adds a dummy node to the graph and return v. + */ +function addDummyNode(g, type, attrs, name) { + var v; + do { + v = _.uniqueId(name); + } while (g.hasNode(v)); + + attrs.dummy = type; + g.setNode(v, attrs); + return v; +} + +/* + * Returns a new graph with only simple edges. Handles aggregation of data + * associated with multi-edges. + */ +function simplify(g) { + var simplified = new Graph().setGraph(g.graph()); + _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); }); + _.forEach(g.edges(), function(e) { + var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 }; + var label = g.edge(e); + simplified.setEdge(e.v, e.w, { + weight: simpleLabel.weight + label.weight, + minlen: Math.max(simpleLabel.minlen, label.minlen) + }); + }); + return simplified; +} + +function asNonCompoundGraph(g) { + var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph()); + _.forEach(g.nodes(), function(v) { + if (!g.children(v).length) { + simplified.setNode(v, g.node(v)); + } + }); + _.forEach(g.edges(), function(e) { + simplified.setEdge(e, g.edge(e)); + }); + return simplified; +} + +function successorWeights(g) { + var weightMap = _.map(g.nodes(), function(v) { + var sucs = {}; + _.forEach(g.outEdges(v), function(e) { + sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight; + }); + return sucs; + }); + return _.zipObject(g.nodes(), weightMap); +} + +function predecessorWeights(g) { + var weightMap = _.map(g.nodes(), function(v) { + var preds = {}; + _.forEach(g.inEdges(v), function(e) { + preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight; + }); + return preds; + }); + return _.zipObject(g.nodes(), weightMap); +} + +/* + * Finds where a line starting at point ({x, y}) would intersect a rectangle + * ({x, y, width, height}) if it were pointing at the rectangle's center. + */ +function intersectRect(rect, point) { + var x = rect.x; + var y = rect.y; + + // Rectangle intersection algorithm from: + // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes + var dx = point.x - x; + var dy = point.y - y; + var w = rect.width / 2; + var h = rect.height / 2; + + if (!dx && !dy) { + throw new Error("Not possible to find intersection inside of the rectangle"); + } + + var sx, sy; + if (Math.abs(dy) * w > Math.abs(dx) * h) { + // Intersection is top or bottom of rect. + if (dy < 0) { + h = -h; + } + sx = h * dx / dy; + sy = h; + } else { + // Intersection is left or right of rect. + if (dx < 0) { + w = -w; + } + sx = w; + sy = w * dy / dx; + } + + return { x: x + sx, y: y + sy }; +} + +/* + * Given a DAG with each node assigned "rank" and "order" properties, this + * function will produce a matrix with the ids of each node. + */ +function buildLayerMatrix(g) { + var layering = _.map(_.range(maxRank(g) + 1), function() { return []; }); + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + var rank = node.rank; + if (!_.isUndefined(rank)) { + layering[rank][node.order] = v; + } + }); + return layering; +} + +/* + * Adjusts the ranks for all nodes in the graph such that all nodes v have + * rank(v) >= 0 and at least one node w has rank(w) = 0. + */ +function normalizeRanks(g) { + var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; })); + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (_.has(node, "rank")) { + node.rank -= min; + } + }); +} + +function removeEmptyRanks(g) { + // Ranks may not start at 0, so we need to offset them + var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; })); + + var layers = []; + _.forEach(g.nodes(), function(v) { + var rank = g.node(v).rank - offset; + if (!layers[rank]) { + layers[rank] = []; + } + layers[rank].push(v); + }); + + var delta = 0; + var nodeRankFactor = g.graph().nodeRankFactor; + _.forEach(layers, function(vs, i) { + if (_.isUndefined(vs) && i % nodeRankFactor !== 0) { + --delta; + } else if (delta) { + _.forEach(vs, function(v) { g.node(v).rank += delta; }); + } + }); +} + +function addBorderNode(g, prefix, rank, order) { + var node = { + width: 0, + height: 0 + }; + if (arguments.length >= 4) { + node.rank = rank; + node.order = order; + } + return addDummyNode(g, "border", node, prefix); +} + +function maxRank(g) { + return _.max(_.map(g.nodes(), function(v) { + var rank = g.node(v).rank; + if (!_.isUndefined(rank)) { + return rank; + } + })); +} + +/* + * Partition a collection into two groups: `lhs` and `rhs`. If the supplied + * function returns true for an entry it goes into `lhs`. Otherwise it goes + * into `rhs. + */ +function partition(collection, fn) { + var result = { lhs: [], rhs: [] }; + _.forEach(collection, function(value) { + if (fn(value)) { + result.lhs.push(value); + } else { + result.rhs.push(value); + } + }); + return result; +} + +/* + * Returns a new function that wraps `fn` with a timer. The wrapper logs the + * time it takes to execute the function. + */ +function time(name, fn) { + var start = _.now(); + try { + return fn(); + } finally { + console.log(name + " time: " + (_.now() - start) + "ms"); + } +} + +function notime(name, fn) { + return fn(); +} + + +/***/ }), + +/***/ "./node_modules/dagre/lib/version.js": +/*!*******************************************!*\ + !*** ./node_modules/dagre/lib/version.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = "0.8.5"; + + +/***/ }), + +/***/ "./node_modules/graphlib/index.js": +/*!****************************************!*\ + !*** ./node_modules/graphlib/index.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/** + * Copyright (c) 2014, Chris Pettitt + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +var lib = __webpack_require__(/*! ./lib */ "./node_modules/graphlib/lib/index.js"); + +module.exports = { + Graph: lib.Graph, + json: __webpack_require__(/*! ./lib/json */ "./node_modules/graphlib/lib/json.js"), + alg: __webpack_require__(/*! ./lib/alg */ "./node_modules/graphlib/lib/alg/index.js"), + version: lib.version +}; + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/components.js": +/*!*****************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/components.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = components; + +function components(g) { + var visited = {}; + var cmpts = []; + var cmpt; + + function dfs(v) { + if (_.has(visited, v)) return; + visited[v] = true; + cmpt.push(v); + _.each(g.successors(v), dfs); + _.each(g.predecessors(v), dfs); + } + + _.each(g.nodes(), function(v) { + cmpt = []; + dfs(v); + if (cmpt.length) { + cmpts.push(cmpt); + } + }); + + return cmpts; +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/dfs.js": +/*!**********************************************!*\ + !*** ./node_modules/graphlib/lib/alg/dfs.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = dfs; + +/* + * A helper that preforms a pre- or post-order traversal on the input graph + * and returns the nodes in the order they were visited. If the graph is + * undirected then this algorithm will navigate using neighbors. If the graph + * is directed then this algorithm will navigate using successors. + * + * Order must be one of "pre" or "post". + */ +function dfs(g, vs, order) { + if (!_.isArray(vs)) { + vs = [vs]; + } + + var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g); + + var acc = []; + var visited = {}; + _.each(vs, function(v) { + if (!g.hasNode(v)) { + throw new Error("Graph does not have node: " + v); + } + + doDfs(g, v, order === "post", visited, navigation, acc); + }); + return acc; +} + +function doDfs(g, v, postorder, visited, navigation, acc) { + if (!_.has(visited, v)) { + visited[v] = true; + + if (!postorder) { acc.push(v); } + _.each(navigation(v), function(w) { + doDfs(g, w, postorder, visited, navigation, acc); + }); + if (postorder) { acc.push(v); } + } +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/dijkstra-all.js": +/*!*******************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/dijkstra-all.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var dijkstra = __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js"); +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = dijkstraAll; + +function dijkstraAll(g, weightFunc, edgeFunc) { + return _.transform(g.nodes(), function(acc, v) { + acc[v] = dijkstra(g, v, weightFunc, edgeFunc); + }, {}); +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/dijkstra.js": +/*!***************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/dijkstra.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); +var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js"); + +module.exports = dijkstra; + +var DEFAULT_WEIGHT_FUNC = _.constant(1); + +function dijkstra(g, source, weightFn, edgeFn) { + return runDijkstra(g, String(source), + weightFn || DEFAULT_WEIGHT_FUNC, + edgeFn || function(v) { return g.outEdges(v); }); +} + +function runDijkstra(g, source, weightFn, edgeFn) { + var results = {}; + var pq = new PriorityQueue(); + var v, vEntry; + + var updateNeighbors = function(edge) { + var w = edge.v !== v ? edge.v : edge.w; + var wEntry = results[w]; + var weight = weightFn(edge); + var distance = vEntry.distance + weight; + + if (weight < 0) { + throw new Error("dijkstra does not allow negative edge weights. " + + "Bad edge: " + edge + " Weight: " + weight); + } + + if (distance < wEntry.distance) { + wEntry.distance = distance; + wEntry.predecessor = v; + pq.decrease(w, distance); + } + }; + + g.nodes().forEach(function(v) { + var distance = v === source ? 0 : Number.POSITIVE_INFINITY; + results[v] = { distance: distance }; + pq.add(v, distance); + }); + + while (pq.size() > 0) { + v = pq.removeMin(); + vEntry = results[v]; + if (vEntry.distance === Number.POSITIVE_INFINITY) { + break; + } + + edgeFn(v).forEach(updateNeighbors); + } + + return results; +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/find-cycles.js": +/*!******************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/find-cycles.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); +var tarjan = __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js"); + +module.exports = findCycles; + +function findCycles(g) { + return _.filter(tarjan(g), function(cmpt) { + return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0])); + }); +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/floyd-warshall.js": +/*!*********************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/floyd-warshall.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = floydWarshall; + +var DEFAULT_WEIGHT_FUNC = _.constant(1); + +function floydWarshall(g, weightFn, edgeFn) { + return runFloydWarshall(g, + weightFn || DEFAULT_WEIGHT_FUNC, + edgeFn || function(v) { return g.outEdges(v); }); +} + +function runFloydWarshall(g, weightFn, edgeFn) { + var results = {}; + var nodes = g.nodes(); + + nodes.forEach(function(v) { + results[v] = {}; + results[v][v] = { distance: 0 }; + nodes.forEach(function(w) { + if (v !== w) { + results[v][w] = { distance: Number.POSITIVE_INFINITY }; + } + }); + edgeFn(v).forEach(function(edge) { + var w = edge.v === v ? edge.w : edge.v; + var d = weightFn(edge); + results[v][w] = { distance: d, predecessor: v }; + }); + }); + + nodes.forEach(function(k) { + var rowK = results[k]; + nodes.forEach(function(i) { + var rowI = results[i]; + nodes.forEach(function(j) { + var ik = rowI[k]; + var kj = rowK[j]; + var ij = rowI[j]; + var altDistance = ik.distance + kj.distance; + if (altDistance < ij.distance) { + ij.distance = altDistance; + ij.predecessor = kj.predecessor; + } + }); + }); + }); + + return results; +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/index.js": +/*!************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/index.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = { + components: __webpack_require__(/*! ./components */ "./node_modules/graphlib/lib/alg/components.js"), + dijkstra: __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js"), + dijkstraAll: __webpack_require__(/*! ./dijkstra-all */ "./node_modules/graphlib/lib/alg/dijkstra-all.js"), + findCycles: __webpack_require__(/*! ./find-cycles */ "./node_modules/graphlib/lib/alg/find-cycles.js"), + floydWarshall: __webpack_require__(/*! ./floyd-warshall */ "./node_modules/graphlib/lib/alg/floyd-warshall.js"), + isAcyclic: __webpack_require__(/*! ./is-acyclic */ "./node_modules/graphlib/lib/alg/is-acyclic.js"), + postorder: __webpack_require__(/*! ./postorder */ "./node_modules/graphlib/lib/alg/postorder.js"), + preorder: __webpack_require__(/*! ./preorder */ "./node_modules/graphlib/lib/alg/preorder.js"), + prim: __webpack_require__(/*! ./prim */ "./node_modules/graphlib/lib/alg/prim.js"), + tarjan: __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js"), + topsort: __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js") +}; + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/is-acyclic.js": +/*!*****************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/is-acyclic.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var topsort = __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js"); + +module.exports = isAcyclic; + +function isAcyclic(g) { + try { + topsort(g); + } catch (e) { + if (e instanceof topsort.CycleException) { + return false; + } + throw e; + } + return true; +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/postorder.js": +/*!****************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/postorder.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js"); + +module.exports = postorder; + +function postorder(g, vs) { + return dfs(g, vs, "post"); +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/preorder.js": +/*!***************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/preorder.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js"); + +module.exports = preorder; + +function preorder(g, vs) { + return dfs(g, vs, "pre"); +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/prim.js": +/*!***********************************************!*\ + !*** ./node_modules/graphlib/lib/alg/prim.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); +var Graph = __webpack_require__(/*! ../graph */ "./node_modules/graphlib/lib/graph.js"); +var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js"); + +module.exports = prim; + +function prim(g, weightFunc) { + var result = new Graph(); + var parents = {}; + var pq = new PriorityQueue(); + var v; + + function updateNeighbors(edge) { + var w = edge.v === v ? edge.w : edge.v; + var pri = pq.priority(w); + if (pri !== undefined) { + var edgeWeight = weightFunc(edge); + if (edgeWeight < pri) { + parents[w] = v; + pq.decrease(w, edgeWeight); + } + } + } + + if (g.nodeCount() === 0) { + return result; + } + + _.each(g.nodes(), function(v) { + pq.add(v, Number.POSITIVE_INFINITY); + result.setNode(v); + }); + + // Start from an arbitrary node + pq.decrease(g.nodes()[0], 0); + + var init = false; + while (pq.size() > 0) { + v = pq.removeMin(); + if (_.has(parents, v)) { + result.setEdge(v, parents[v]); + } else if (init) { + throw new Error("Input graph is not connected: " + g); + } else { + init = true; + } + + g.nodeEdges(v).forEach(updateNeighbors); + } + + return result; +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/tarjan.js": +/*!*************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/tarjan.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = tarjan; + +function tarjan(g) { + var index = 0; + var stack = []; + var visited = {}; // node id -> { onStack, lowlink, index } + var results = []; + + function dfs(v) { + var entry = visited[v] = { + onStack: true, + lowlink: index, + index: index++ + }; + stack.push(v); + + g.successors(v).forEach(function(w) { + if (!_.has(visited, w)) { + dfs(w); + entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink); + } else if (visited[w].onStack) { + entry.lowlink = Math.min(entry.lowlink, visited[w].index); + } + }); + + if (entry.lowlink === entry.index) { + var cmpt = []; + var w; + do { + w = stack.pop(); + visited[w].onStack = false; + cmpt.push(w); + } while (v !== w); + results.push(cmpt); + } + } + + g.nodes().forEach(function(v) { + if (!_.has(visited, v)) { + dfs(v); + } + }); + + return results; +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/alg/topsort.js": +/*!**************************************************!*\ + !*** ./node_modules/graphlib/lib/alg/topsort.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = topsort; +topsort.CycleException = CycleException; + +function topsort(g) { + var visited = {}; + var stack = {}; + var results = []; + + function visit(node) { + if (_.has(stack, node)) { + throw new CycleException(); + } + + if (!_.has(visited, node)) { + stack[node] = true; + visited[node] = true; + _.each(g.predecessors(node), visit); + delete stack[node]; + results.push(node); + } + } + + _.each(g.sinks(), visit); + + if (_.size(visited) !== g.nodeCount()) { + throw new CycleException(); + } + + return results; +} + +function CycleException() {} +CycleException.prototype = new Error(); // must be an instance of Error to pass testing + +/***/ }), + +/***/ "./node_modules/graphlib/lib/data/priority-queue.js": +/*!**********************************************************!*\ + !*** ./node_modules/graphlib/lib/data/priority-queue.js ***! + \**********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = PriorityQueue; + +/** + * A min-priority queue data structure. This algorithm is derived from Cormen, + * et al., "Introduction to Algorithms". The basic idea of a min-priority + * queue is that you can efficiently (in O(1) time) get the smallest key in + * the queue. Adding and removing elements takes O(log n) time. A key can + * have its priority decreased in O(log n) time. + */ +function PriorityQueue() { + this._arr = []; + this._keyIndices = {}; +} + +/** + * Returns the number of elements in the queue. Takes `O(1)` time. + */ +PriorityQueue.prototype.size = function() { + return this._arr.length; +}; + +/** + * Returns the keys that are in the queue. Takes `O(n)` time. + */ +PriorityQueue.prototype.keys = function() { + return this._arr.map(function(x) { return x.key; }); +}; + +/** + * Returns `true` if **key** is in the queue and `false` if not. + */ +PriorityQueue.prototype.has = function(key) { + return _.has(this._keyIndices, key); +}; + +/** + * Returns the priority for **key**. If **key** is not present in the queue + * then this function returns `undefined`. Takes `O(1)` time. + * + * @param {Object} key + */ +PriorityQueue.prototype.priority = function(key) { + var index = this._keyIndices[key]; + if (index !== undefined) { + return this._arr[index].priority; + } +}; + +/** + * Returns the key for the minimum element in this queue. If the queue is + * empty this function throws an Error. Takes `O(1)` time. + */ +PriorityQueue.prototype.min = function() { + if (this.size() === 0) { + throw new Error("Queue underflow"); + } + return this._arr[0].key; +}; + +/** + * Inserts a new key into the priority queue. If the key already exists in + * the queue this function returns `false`; otherwise it will return `true`. + * Takes `O(n)` time. + * + * @param {Object} key the key to add + * @param {Number} priority the initial priority for the key + */ +PriorityQueue.prototype.add = function(key, priority) { + var keyIndices = this._keyIndices; + key = String(key); + if (!_.has(keyIndices, key)) { + var arr = this._arr; + var index = arr.length; + keyIndices[key] = index; + arr.push({key: key, priority: priority}); + this._decrease(index); + return true; + } + return false; +}; + +/** + * Removes and returns the smallest key in the queue. Takes `O(log n)` time. + */ +PriorityQueue.prototype.removeMin = function() { + this._swap(0, this._arr.length - 1); + var min = this._arr.pop(); + delete this._keyIndices[min.key]; + this._heapify(0); + return min.key; +}; + +/** + * Decreases the priority for **key** to **priority**. If the new priority is + * greater than the previous priority, this function will throw an Error. + * + * @param {Object} key the key for which to raise priority + * @param {Number} priority the new priority for the key + */ +PriorityQueue.prototype.decrease = function(key, priority) { + var index = this._keyIndices[key]; + if (priority > this._arr[index].priority) { + throw new Error("New priority is greater than current priority. " + + "Key: " + key + " Old: " + this._arr[index].priority + " New: " + priority); + } + this._arr[index].priority = priority; + this._decrease(index); +}; + +PriorityQueue.prototype._heapify = function(i) { + var arr = this._arr; + var l = 2 * i; + var r = l + 1; + var largest = i; + if (l < arr.length) { + largest = arr[l].priority < arr[largest].priority ? l : largest; + if (r < arr.length) { + largest = arr[r].priority < arr[largest].priority ? r : largest; + } + if (largest !== i) { + this._swap(i, largest); + this._heapify(largest); + } + } +}; + +PriorityQueue.prototype._decrease = function(index) { + var arr = this._arr; + var priority = arr[index].priority; + var parent; + while (index !== 0) { + parent = index >> 1; + if (arr[parent].priority < priority) { + break; + } + this._swap(index, parent); + index = parent; + } +}; + +PriorityQueue.prototype._swap = function(i, j) { + var arr = this._arr; + var keyIndices = this._keyIndices; + var origArrI = arr[i]; + var origArrJ = arr[j]; + arr[i] = origArrJ; + arr[j] = origArrI; + keyIndices[origArrJ.key] = i; + keyIndices[origArrI.key] = j; +}; + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/graph.js": +/*!********************************************!*\ + !*** ./node_modules/graphlib/lib/graph.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js"); + +module.exports = Graph; + +var DEFAULT_EDGE_NAME = "\x00"; +var GRAPH_NODE = "\x00"; +var EDGE_KEY_DELIM = "\x01"; + +// Implementation notes: +// +// * Node id query functions should return string ids for the nodes +// * Edge id query functions should return an "edgeObj", edge object, that is +// composed of enough information to uniquely identify an edge: {v, w, name}. +// * Internally we use an "edgeId", a stringified form of the edgeObj, to +// reference edges. This is because we need a performant way to look these +// edges up and, object properties, which have string keys, are the closest +// we're going to get to a performant hashtable in JavaScript. + +function Graph(opts) { + this._isDirected = _.has(opts, "directed") ? opts.directed : true; + this._isMultigraph = _.has(opts, "multigraph") ? opts.multigraph : false; + this._isCompound = _.has(opts, "compound") ? opts.compound : false; + + // Label for the graph itself + this._label = undefined; + + // Defaults to be set when creating a new node + this._defaultNodeLabelFn = _.constant(undefined); + + // Defaults to be set when creating a new edge + this._defaultEdgeLabelFn = _.constant(undefined); + + // v -> label + this._nodes = {}; + + if (this._isCompound) { + // v -> parent + this._parent = {}; + + // v -> children + this._children = {}; + this._children[GRAPH_NODE] = {}; + } + + // v -> edgeObj + this._in = {}; + + // u -> v -> Number + this._preds = {}; + + // v -> edgeObj + this._out = {}; + + // v -> w -> Number + this._sucs = {}; + + // e -> edgeObj + this._edgeObjs = {}; + + // e -> label + this._edgeLabels = {}; +} + +/* Number of nodes in the graph. Should only be changed by the implementation. */ +Graph.prototype._nodeCount = 0; + +/* Number of edges in the graph. Should only be changed by the implementation. */ +Graph.prototype._edgeCount = 0; + + +/* === Graph functions ========= */ + +Graph.prototype.isDirected = function() { + return this._isDirected; +}; + +Graph.prototype.isMultigraph = function() { + return this._isMultigraph; +}; + +Graph.prototype.isCompound = function() { + return this._isCompound; +}; + +Graph.prototype.setGraph = function(label) { + this._label = label; + return this; +}; + +Graph.prototype.graph = function() { + return this._label; +}; + + +/* === Node functions ========== */ + +Graph.prototype.setDefaultNodeLabel = function(newDefault) { + if (!_.isFunction(newDefault)) { + newDefault = _.constant(newDefault); + } + this._defaultNodeLabelFn = newDefault; + return this; +}; + +Graph.prototype.nodeCount = function() { + return this._nodeCount; +}; + +Graph.prototype.nodes = function() { + return _.keys(this._nodes); +}; + +Graph.prototype.sources = function() { + var self = this; + return _.filter(this.nodes(), function(v) { + return _.isEmpty(self._in[v]); + }); +}; + +Graph.prototype.sinks = function() { + var self = this; + return _.filter(this.nodes(), function(v) { + return _.isEmpty(self._out[v]); + }); +}; + +Graph.prototype.setNodes = function(vs, value) { + var args = arguments; + var self = this; + _.each(vs, function(v) { + if (args.length > 1) { + self.setNode(v, value); + } else { + self.setNode(v); + } + }); + return this; +}; + +Graph.prototype.setNode = function(v, value) { + if (_.has(this._nodes, v)) { + if (arguments.length > 1) { + this._nodes[v] = value; + } + return this; + } + + this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v); + if (this._isCompound) { + this._parent[v] = GRAPH_NODE; + this._children[v] = {}; + this._children[GRAPH_NODE][v] = true; + } + this._in[v] = {}; + this._preds[v] = {}; + this._out[v] = {}; + this._sucs[v] = {}; + ++this._nodeCount; + return this; +}; + +Graph.prototype.node = function(v) { + return this._nodes[v]; +}; + +Graph.prototype.hasNode = function(v) { + return _.has(this._nodes, v); +}; + +Graph.prototype.removeNode = function(v) { + var self = this; + if (_.has(this._nodes, v)) { + var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); }; + delete this._nodes[v]; + if (this._isCompound) { + this._removeFromParentsChildList(v); + delete this._parent[v]; + _.each(this.children(v), function(child) { + self.setParent(child); + }); + delete this._children[v]; + } + _.each(_.keys(this._in[v]), removeEdge); + delete this._in[v]; + delete this._preds[v]; + _.each(_.keys(this._out[v]), removeEdge); + delete this._out[v]; + delete this._sucs[v]; + --this._nodeCount; + } + return this; +}; + +Graph.prototype.setParent = function(v, parent) { + if (!this._isCompound) { + throw new Error("Cannot set parent in a non-compound graph"); + } + + if (_.isUndefined(parent)) { + parent = GRAPH_NODE; + } else { + // Coerce parent to string + parent += ""; + for (var ancestor = parent; + !_.isUndefined(ancestor); + ancestor = this.parent(ancestor)) { + if (ancestor === v) { + throw new Error("Setting " + parent+ " as parent of " + v + + " would create a cycle"); + } + } + + this.setNode(parent); + } + + this.setNode(v); + this._removeFromParentsChildList(v); + this._parent[v] = parent; + this._children[parent][v] = true; + return this; +}; + +Graph.prototype._removeFromParentsChildList = function(v) { + delete this._children[this._parent[v]][v]; +}; + +Graph.prototype.parent = function(v) { + if (this._isCompound) { + var parent = this._parent[v]; + if (parent !== GRAPH_NODE) { + return parent; + } + } +}; + +Graph.prototype.children = function(v) { + if (_.isUndefined(v)) { + v = GRAPH_NODE; + } + + if (this._isCompound) { + var children = this._children[v]; + if (children) { + return _.keys(children); + } + } else if (v === GRAPH_NODE) { + return this.nodes(); + } else if (this.hasNode(v)) { + return []; + } +}; + +Graph.prototype.predecessors = function(v) { + var predsV = this._preds[v]; + if (predsV) { + return _.keys(predsV); + } +}; + +Graph.prototype.successors = function(v) { + var sucsV = this._sucs[v]; + if (sucsV) { + return _.keys(sucsV); + } +}; + +Graph.prototype.neighbors = function(v) { + var preds = this.predecessors(v); + if (preds) { + return _.union(preds, this.successors(v)); + } +}; + +Graph.prototype.isLeaf = function (v) { + var neighbors; + if (this.isDirected()) { + neighbors = this.successors(v); + } else { + neighbors = this.neighbors(v); + } + return neighbors.length === 0; +}; + +Graph.prototype.filterNodes = function(filter) { + var copy = new this.constructor({ + directed: this._isDirected, + multigraph: this._isMultigraph, + compound: this._isCompound + }); + + copy.setGraph(this.graph()); + + var self = this; + _.each(this._nodes, function(value, v) { + if (filter(v)) { + copy.setNode(v, value); + } + }); + + _.each(this._edgeObjs, function(e) { + if (copy.hasNode(e.v) && copy.hasNode(e.w)) { + copy.setEdge(e, self.edge(e)); + } + }); + + var parents = {}; + function findParent(v) { + var parent = self.parent(v); + if (parent === undefined || copy.hasNode(parent)) { + parents[v] = parent; + return parent; + } else if (parent in parents) { + return parents[parent]; + } else { + return findParent(parent); + } + } + + if (this._isCompound) { + _.each(copy.nodes(), function(v) { + copy.setParent(v, findParent(v)); + }); + } + + return copy; +}; + +/* === Edge functions ========== */ + +Graph.prototype.setDefaultEdgeLabel = function(newDefault) { + if (!_.isFunction(newDefault)) { + newDefault = _.constant(newDefault); + } + this._defaultEdgeLabelFn = newDefault; + return this; +}; + +Graph.prototype.edgeCount = function() { + return this._edgeCount; +}; + +Graph.prototype.edges = function() { + return _.values(this._edgeObjs); +}; + +Graph.prototype.setPath = function(vs, value) { + var self = this; + var args = arguments; + _.reduce(vs, function(v, w) { + if (args.length > 1) { + self.setEdge(v, w, value); + } else { + self.setEdge(v, w); + } + return w; + }); + return this; +}; + +/* + * setEdge(v, w, [value, [name]]) + * setEdge({ v, w, [name] }, [value]) + */ +Graph.prototype.setEdge = function() { + var v, w, name, value; + var valueSpecified = false; + var arg0 = arguments[0]; + + if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) { + v = arg0.v; + w = arg0.w; + name = arg0.name; + if (arguments.length === 2) { + value = arguments[1]; + valueSpecified = true; + } + } else { + v = arg0; + w = arguments[1]; + name = arguments[3]; + if (arguments.length > 2) { + value = arguments[2]; + valueSpecified = true; + } + } + + v = "" + v; + w = "" + w; + if (!_.isUndefined(name)) { + name = "" + name; + } + + var e = edgeArgsToId(this._isDirected, v, w, name); + if (_.has(this._edgeLabels, e)) { + if (valueSpecified) { + this._edgeLabels[e] = value; + } + return this; + } + + if (!_.isUndefined(name) && !this._isMultigraph) { + throw new Error("Cannot set a named edge when isMultigraph = false"); + } + + // It didn't exist, so we need to create it. + // First ensure the nodes exist. + this.setNode(v); + this.setNode(w); + + this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name); + + var edgeObj = edgeArgsToObj(this._isDirected, v, w, name); + // Ensure we add undirected edges in a consistent way. + v = edgeObj.v; + w = edgeObj.w; + + Object.freeze(edgeObj); + this._edgeObjs[e] = edgeObj; + incrementOrInitEntry(this._preds[w], v); + incrementOrInitEntry(this._sucs[v], w); + this._in[w][e] = edgeObj; + this._out[v][e] = edgeObj; + this._edgeCount++; + return this; +}; + +Graph.prototype.edge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + return this._edgeLabels[e]; +}; + +Graph.prototype.hasEdge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + return _.has(this._edgeLabels, e); +}; + +Graph.prototype.removeEdge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + var edge = this._edgeObjs[e]; + if (edge) { + v = edge.v; + w = edge.w; + delete this._edgeLabels[e]; + delete this._edgeObjs[e]; + decrementOrRemoveEntry(this._preds[w], v); + decrementOrRemoveEntry(this._sucs[v], w); + delete this._in[w][e]; + delete this._out[v][e]; + this._edgeCount--; + } + return this; +}; + +Graph.prototype.inEdges = function(v, u) { + var inV = this._in[v]; + if (inV) { + var edges = _.values(inV); + if (!u) { + return edges; + } + return _.filter(edges, function(edge) { return edge.v === u; }); + } +}; + +Graph.prototype.outEdges = function(v, w) { + var outV = this._out[v]; + if (outV) { + var edges = _.values(outV); + if (!w) { + return edges; + } + return _.filter(edges, function(edge) { return edge.w === w; }); + } +}; + +Graph.prototype.nodeEdges = function(v, w) { + var inEdges = this.inEdges(v, w); + if (inEdges) { + return inEdges.concat(this.outEdges(v, w)); + } +}; + +function incrementOrInitEntry(map, k) { + if (map[k]) { + map[k]++; + } else { + map[k] = 1; + } +} + +function decrementOrRemoveEntry(map, k) { + if (!--map[k]) { delete map[k]; } +} + +function edgeArgsToId(isDirected, v_, w_, name) { + var v = "" + v_; + var w = "" + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name); +} + +function edgeArgsToObj(isDirected, v_, w_, name) { + var v = "" + v_; + var w = "" + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + var edgeObj = { v: v, w: w }; + if (name) { + edgeObj.name = name; + } + return edgeObj; +} + +function edgeObjToId(isDirected, edgeObj) { + return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name); +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/index.js": +/*!********************************************!*\ + !*** ./node_modules/graphlib/lib/index.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// Includes only the "core" of graphlib +module.exports = { + Graph: __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js"), + version: __webpack_require__(/*! ./version */ "./node_modules/graphlib/lib/version.js") +}; + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/json.js": +/*!*******************************************!*\ + !*** ./node_modules/graphlib/lib/json.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js"); +var Graph = __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js"); + +module.exports = { + write: write, + read: read +}; + +function write(g) { + var json = { + options: { + directed: g.isDirected(), + multigraph: g.isMultigraph(), + compound: g.isCompound() + }, + nodes: writeNodes(g), + edges: writeEdges(g) + }; + if (!_.isUndefined(g.graph())) { + json.value = _.clone(g.graph()); + } + return json; +} + +function writeNodes(g) { + return _.map(g.nodes(), function(v) { + var nodeValue = g.node(v); + var parent = g.parent(v); + var node = { v: v }; + if (!_.isUndefined(nodeValue)) { + node.value = nodeValue; + } + if (!_.isUndefined(parent)) { + node.parent = parent; + } + return node; + }); +} + +function writeEdges(g) { + return _.map(g.edges(), function(e) { + var edgeValue = g.edge(e); + var edge = { v: e.v, w: e.w }; + if (!_.isUndefined(e.name)) { + edge.name = e.name; + } + if (!_.isUndefined(edgeValue)) { + edge.value = edgeValue; + } + return edge; + }); +} + +function read(json) { + var g = new Graph(json.options).setGraph(json.value); + _.each(json.nodes, function(entry) { + g.setNode(entry.v, entry.value); + if (entry.parent) { + g.setParent(entry.v, entry.parent); + } + }); + _.each(json.edges, function(entry) { + g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value); + }); + return g; +} + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/lodash.js": +/*!*********************************************!*\ + !*** ./node_modules/graphlib/lib/lodash.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* global window */ + +var lodash; + +if (true) { + try { + lodash = { + clone: __webpack_require__(/*! lodash/clone */ "./node_modules/lodash/clone.js"), + constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"), + each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"), + filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"), + has: __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"), + isArray: __webpack_require__(/*! lodash/isArray */ "./node_modules/lodash/isArray.js"), + isEmpty: __webpack_require__(/*! lodash/isEmpty */ "./node_modules/lodash/isEmpty.js"), + isFunction: __webpack_require__(/*! lodash/isFunction */ "./node_modules/lodash/isFunction.js"), + isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"), + keys: __webpack_require__(/*! lodash/keys */ "./node_modules/lodash/keys.js"), + map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"), + reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"), + size: __webpack_require__(/*! lodash/size */ "./node_modules/lodash/size.js"), + transform: __webpack_require__(/*! lodash/transform */ "./node_modules/lodash/transform.js"), + union: __webpack_require__(/*! lodash/union */ "./node_modules/lodash/union.js"), + values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js") + }; + } catch (e) { + // continue regardless of error + } +} + +if (!lodash) { + lodash = window._; +} + +module.exports = lodash; + + +/***/ }), + +/***/ "./node_modules/graphlib/lib/version.js": +/*!**********************************************!*\ + !*** ./node_modules/graphlib/lib/version.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = '2.1.8'; + + +/***/ }), + +/***/ "./node_modules/lodash/_DataView.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_DataView.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/* Built-in method references that are verified to be native. */ +var DataView = getNative(root, 'DataView'); + +module.exports = DataView; + + +/***/ }), + +/***/ "./node_modules/lodash/_Hash.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/_Hash.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"), + hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"), + hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"), + hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"), + hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js"); + +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `Hash`. +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; + +module.exports = Hash; + + +/***/ }), + +/***/ "./node_modules/lodash/_ListCache.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_ListCache.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"), + listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"), + listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"), + listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"), + listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js"); + +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `ListCache`. +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; + +module.exports = ListCache; + + +/***/ }), + +/***/ "./node_modules/lodash/_Map.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/_Map.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/* Built-in method references that are verified to be native. */ +var Map = getNative(root, 'Map'); + +module.exports = Map; + + +/***/ }), + +/***/ "./node_modules/lodash/_MapCache.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_MapCache.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"), + mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"), + mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"), + mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"), + mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js"); + +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} + +// Add methods to `MapCache`. +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; + +module.exports = MapCache; + + +/***/ }), + +/***/ "./node_modules/lodash/_Promise.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_Promise.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/* Built-in method references that are verified to be native. */ +var Promise = getNative(root, 'Promise'); + +module.exports = Promise; + + +/***/ }), + +/***/ "./node_modules/lodash/_Set.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/_Set.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/* Built-in method references that are verified to be native. */ +var Set = getNative(root, 'Set'); + +module.exports = Set; + + +/***/ }), + +/***/ "./node_modules/lodash/_SetCache.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_SetCache.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"), + setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/lodash/_setCacheAdd.js"), + setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/lodash/_setCacheHas.js"); + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; +SetCache.prototype.has = setCacheHas; + +module.exports = SetCache; + + +/***/ }), + +/***/ "./node_modules/lodash/_Stack.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/_Stack.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), + stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"), + stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"), + stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"), + stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"), + stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js"); + +/** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ +function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; +} + +// Add methods to `Stack`. +Stack.prototype.clear = stackClear; +Stack.prototype['delete'] = stackDelete; +Stack.prototype.get = stackGet; +Stack.prototype.has = stackHas; +Stack.prototype.set = stackSet; + +module.exports = Stack; + + +/***/ }), + +/***/ "./node_modules/lodash/_Symbol.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/_Symbol.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/** Built-in value references. */ +var Symbol = root.Symbol; + +module.exports = Symbol; + + +/***/ }), + +/***/ "./node_modules/lodash/_Uint8Array.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_Uint8Array.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/** Built-in value references. */ +var Uint8Array = root.Uint8Array; + +module.exports = Uint8Array; + + +/***/ }), + +/***/ "./node_modules/lodash/_WeakMap.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_WeakMap.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/* Built-in method references that are verified to be native. */ +var WeakMap = getNative(root, 'WeakMap'); + +module.exports = WeakMap; + + +/***/ }), + +/***/ "./node_modules/lodash/_apply.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/_apply.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ +function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); +} + +module.exports = apply; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayEach.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_arrayEach.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +module.exports = arrayEach; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayFilter.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_arrayFilter.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +module.exports = arrayFilter; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayIncludes.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_arrayIncludes.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/lodash/_baseIndexOf.js"); + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; +} + +module.exports = arrayIncludes; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayIncludesWith.js": +/*!***************************************************!*\ + !*** ./node_modules/lodash/_arrayIncludesWith.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +module.exports = arrayIncludesWith; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayLikeKeys.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_arrayLikeKeys.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/lodash/_baseTimes.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ +function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; +} + +module.exports = arrayLikeKeys; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayMap.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_arrayMap.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +module.exports = arrayMap; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayPush.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_arrayPush.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +module.exports = arrayPush; + + +/***/ }), + +/***/ "./node_modules/lodash/_arrayReduce.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_arrayReduce.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +module.exports = arrayReduce; + + +/***/ }), + +/***/ "./node_modules/lodash/_arraySome.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_arraySome.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +module.exports = arraySome; + + +/***/ }), + +/***/ "./node_modules/lodash/_asciiSize.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_asciiSize.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"); + +/** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +var asciiSize = baseProperty('length'); + +module.exports = asciiSize; + + +/***/ }), + +/***/ "./node_modules/lodash/_assignMergeValue.js": +/*!**************************************************!*\ + !*** ./node_modules/lodash/_assignMergeValue.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); + +/** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignMergeValue; + + +/***/ }), + +/***/ "./node_modules/lodash/_assignValue.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_assignValue.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } +} + +module.exports = assignValue; + + +/***/ }), + +/***/ "./node_modules/lodash/_assocIndexOf.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_assocIndexOf.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); + +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; +} + +module.exports = assocIndexOf; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseAssign.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseAssign.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); +} + +module.exports = baseAssign; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseAssignIn.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_baseAssignIn.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); +} + +module.exports = baseAssignIn; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseAssignValue.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_baseAssignValue.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"); + +/** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ +function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } +} + +module.exports = baseAssignValue; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseClone.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseClone.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), + assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + baseAssign = __webpack_require__(/*! ./_baseAssign */ "./node_modules/lodash/_baseAssign.js"), + baseAssignIn = __webpack_require__(/*! ./_baseAssignIn */ "./node_modules/lodash/_baseAssignIn.js"), + cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"), + copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"), + copySymbols = __webpack_require__(/*! ./_copySymbols */ "./node_modules/lodash/_copySymbols.js"), + copySymbolsIn = __webpack_require__(/*! ./_copySymbolsIn */ "./node_modules/lodash/_copySymbolsIn.js"), + getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"), + getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ "./node_modules/lodash/_getAllKeysIn.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + initCloneArray = __webpack_require__(/*! ./_initCloneArray */ "./node_modules/lodash/_initCloneArray.js"), + initCloneByTag = __webpack_require__(/*! ./_initCloneByTag */ "./node_modules/lodash/_initCloneByTag.js"), + initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isMap = __webpack_require__(/*! ./isMap */ "./node_modules/lodash/isMap.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isSet = __webpack_require__(/*! ./isSet */ "./node_modules/lodash/isSet.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = +cloneableTags[boolTag] = cloneableTags[dateTag] = +cloneableTags[float32Tag] = cloneableTags[float64Tag] = +cloneableTags[int8Tag] = cloneableTags[int16Tag] = +cloneableTags[int32Tag] = cloneableTags[mapTag] = +cloneableTags[numberTag] = cloneableTags[objectTag] = +cloneableTags[regexpTag] = cloneableTags[setTag] = +cloneableTags[stringTag] = cloneableTags[symbolTag] = +cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = +cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +module.exports = baseClone; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseCreate.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseCreate.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + +/** Built-in value references. */ +var objectCreate = Object.create; + +/** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ +var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; +}()); + +module.exports = baseCreate; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseEach.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_baseEach.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), + createBaseEach = __webpack_require__(/*! ./_createBaseEach */ "./node_modules/lodash/_createBaseEach.js"); + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = createBaseEach(baseForOwn); + +module.exports = baseEach; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseExtremum.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_baseExtremum.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + +/** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ +function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; +} + +module.exports = baseExtremum; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseFilter.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseFilter.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"); + +/** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; +} + +module.exports = baseFilter; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseFindIndex.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_baseFindIndex.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +module.exports = baseFindIndex; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseFlatten.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_baseFlatten.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), + isFlattenable = __webpack_require__(/*! ./_isFlattenable */ "./node_modules/lodash/_isFlattenable.js"); + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +module.exports = baseFlatten; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseFor.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_baseFor.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ "./node_modules/lodash/_createBaseFor.js"); + +/** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ +var baseFor = createBaseFor(); + +module.exports = baseFor; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseForOwn.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseForOwn.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); +} + +module.exports = baseForOwn; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseGet.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_baseGet.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +module.exports = baseGet; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseGetAllKeys.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_baseGetAllKeys.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); +} + +module.exports = baseGetAllKeys; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseGetTag.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseGetTag.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js"); + +/** `Object#toString` result references. */ +var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); +} + +module.exports = baseGetTag; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseGt.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/_baseGt.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ +function baseGt(value, other) { + return value > other; +} + +module.exports = baseGt; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseHas.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_baseHas.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); +} + +module.exports = baseHas; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseHasIn.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseHasIn.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +module.exports = baseHasIn; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIndexOf.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_baseIndexOf.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"), + baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/lodash/_baseIsNaN.js"), + strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/lodash/_strictIndexOf.js"); + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); +} + +module.exports = baseIndexOf; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsArguments.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_baseIsArguments.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]'; + +/** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ +function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; +} + +module.exports = baseIsArguments; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsEqual.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_baseIsEqual.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/lodash/_baseIsEqualDeep.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +module.exports = baseIsEqual; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsEqualDeep.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_baseIsEqualDeep.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), + equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/lodash/_equalByTag.js"), + equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/lodash/_equalObjects.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +module.exports = baseIsEqualDeep; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsMap.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseIsMap.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; +} + +module.exports = baseIsMap; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsMatch.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_baseIsMatch.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +module.exports = baseIsMatch; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsNaN.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseIsNaN.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +module.exports = baseIsNaN; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsNative.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_baseIsNative.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/lodash/_isMasked.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); + +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + +/** Used to detect host constructors (Safari). */ +var reIsHostCtor = /^\[object .+?Constructor\]$/; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to detect if a method is native. */ +var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ +function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} + +module.exports = baseIsNative; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsSet.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseIsSet.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var setTag = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; +} + +module.exports = baseIsSet; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIsTypedArray.js": +/*!**************************************************!*\ + !*** ./node_modules/lodash/_baseIsTypedArray.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values of typed arrays. */ +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = +typedArrayTags[errorTag] = typedArrayTags[funcTag] = +typedArrayTags[mapTag] = typedArrayTags[numberTag] = +typedArrayTags[objectTag] = typedArrayTags[regexpTag] = +typedArrayTags[setTag] = typedArrayTags[stringTag] = +typedArrayTags[weakMapTag] = false; + +/** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ +function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; +} + +module.exports = baseIsTypedArray; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseIteratee.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_baseIteratee.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/lodash/_baseMatches.js"), + baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/lodash/_baseMatchesProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + property = __webpack_require__(/*! ./property */ "./node_modules/lodash/property.js"); + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); +} + +module.exports = baseIteratee; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseKeys.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_baseKeys.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), + nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; +} + +module.exports = baseKeys; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseKeysIn.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseKeysIn.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), + nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = baseKeysIn; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseLt.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/_baseLt.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ +function baseLt(value, other) { + return value < other; +} + +module.exports = baseLt; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseMap.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_baseMap.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +module.exports = baseMap; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseMatches.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_baseMatches.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/lodash/_baseIsMatch.js"), + getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/lodash/_getMatchData.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"); + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; +} + +module.exports = baseMatches; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseMatchesProperty.js": +/*!*****************************************************!*\ + !*** ./node_modules/lodash/_baseMatchesProperty.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"), + get = __webpack_require__(/*! ./get */ "./node_modules/lodash/get.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), + isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; +} + +module.exports = baseMatchesProperty; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseMerge.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseMerge.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), + baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), + baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ "./node_modules/lodash/_baseMergeDeep.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"), + safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"); + +/** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); +} + +module.exports = baseMerge; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseMergeDeep.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_baseMergeDeep.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), + cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"), + cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"), + copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"), + initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isPlainObject = __webpack_require__(/*! ./isPlainObject */ "./node_modules/lodash/isPlainObject.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"), + safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"), + toPlainObject = __webpack_require__(/*! ./toPlainObject */ "./node_modules/lodash/toPlainObject.js"); + +/** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ +function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); +} + +module.exports = baseMergeDeep; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseOrderBy.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_baseOrderBy.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), + baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"), + baseSortBy = __webpack_require__(/*! ./_baseSortBy */ "./node_modules/lodash/_baseSortBy.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + compareMultiple = __webpack_require__(/*! ./_compareMultiple */ "./node_modules/lodash/_compareMultiple.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); +} + +module.exports = baseOrderBy; + + +/***/ }), + +/***/ "./node_modules/lodash/_basePick.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_basePick.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var basePickBy = __webpack_require__(/*! ./_basePickBy */ "./node_modules/lodash/_basePickBy.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"); + +/** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ +function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); +} + +module.exports = basePick; + + +/***/ }), + +/***/ "./node_modules/lodash/_basePickBy.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_basePickBy.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), + baseSet = __webpack_require__(/*! ./_baseSet */ "./node_modules/lodash/_baseSet.js"), + castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"); + +/** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ +function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; +} + +module.exports = basePickBy; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseProperty.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_baseProperty.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +module.exports = baseProperty; + + +/***/ }), + +/***/ "./node_modules/lodash/_basePropertyDeep.js": +/*!**************************************************!*\ + !*** ./node_modules/lodash/_basePropertyDeep.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; +} + +module.exports = basePropertyDeep; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseRange.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseRange.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeMax = Math.max; + +/** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ +function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; +} + +module.exports = baseRange; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseReduce.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseReduce.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ +function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; +} + +module.exports = baseReduce; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseRest.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_baseRest.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), + overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), + setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); + +/** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ +function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); +} + +module.exports = baseRest; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseSet.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_baseSet.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; +} + +module.exports = baseSet; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseSetToString.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_baseSetToString.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var constant = __webpack_require__(/*! ./constant */ "./node_modules/lodash/constant.js"), + defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + +/** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); +}; + +module.exports = baseSetToString; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseSortBy.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseSortBy.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; +} + +module.exports = baseSortBy; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseTimes.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseTimes.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ +function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; +} + +module.exports = baseTimes; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseToString.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_baseToString.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = baseToString; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseUnary.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_baseUnary.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ +function baseUnary(func) { + return function(value) { + return func(value); + }; +} + +module.exports = baseUnary; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseUniq.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_baseUniq.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), + arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/lodash/_arrayIncludes.js"), + arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/lodash/_arrayIncludesWith.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"), + createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/lodash/_createSet.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +module.exports = baseUniq; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseValues.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_baseValues.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"); + +/** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ +function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); +} + +module.exports = baseValues; + + +/***/ }), + +/***/ "./node_modules/lodash/_baseZipObject.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_baseZipObject.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ +function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; +} + +module.exports = baseZipObject; + + +/***/ }), + +/***/ "./node_modules/lodash/_cacheHas.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_cacheHas.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +module.exports = cacheHas; + + +/***/ }), + +/***/ "./node_modules/lodash/_castFunction.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_castFunction.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + +/** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ +function castFunction(value) { + return typeof value == 'function' ? value : identity; +} + +module.exports = castFunction; + + +/***/ }), + +/***/ "./node_modules/lodash/_castPath.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_castPath.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), + stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"), + toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); +} + +module.exports = castPath; + + +/***/ }), + +/***/ "./node_modules/lodash/_cloneArrayBuffer.js": +/*!**************************************************!*\ + !*** ./node_modules/lodash/_cloneArrayBuffer.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"); + +/** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ +function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; +} + +module.exports = cloneArrayBuffer; + + +/***/ }), + +/***/ "./node_modules/lodash/_cloneBuffer.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_cloneBuffer.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + +/** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ +function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + + buffer.copy(result); + return result; +} + +module.exports = cloneBuffer; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + +/***/ }), + +/***/ "./node_modules/lodash/_cloneDataView.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_cloneDataView.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"); + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +module.exports = cloneDataView; + + +/***/ }), + +/***/ "./node_modules/lodash/_cloneRegExp.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_cloneRegExp.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +module.exports = cloneRegExp; + + +/***/ }), + +/***/ "./node_modules/lodash/_cloneSymbol.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_cloneSymbol.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +module.exports = cloneSymbol; + + +/***/ }), + +/***/ "./node_modules/lodash/_cloneTypedArray.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_cloneTypedArray.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"); + +/** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ +function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); +} + +module.exports = cloneTypedArray; + + +/***/ }), + +/***/ "./node_modules/lodash/_compareAscending.js": +/*!**************************************************!*\ + !*** ./node_modules/lodash/_compareAscending.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; +} + +module.exports = compareAscending; + + +/***/ }), + +/***/ "./node_modules/lodash/_compareMultiple.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_compareMultiple.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var compareAscending = __webpack_require__(/*! ./_compareAscending */ "./node_modules/lodash/_compareAscending.js"); + +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; +} + +module.exports = compareMultiple; + + +/***/ }), + +/***/ "./node_modules/lodash/_copyArray.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_copyArray.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ +function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; +} + +module.exports = copyArray; + + +/***/ }), + +/***/ "./node_modules/lodash/_copyObject.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_copyObject.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"); + +/** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ +function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; +} + +module.exports = copyObject; + + +/***/ }), + +/***/ "./node_modules/lodash/_copySymbols.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_copySymbols.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"); + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); +} + +module.exports = copySymbols; + + +/***/ }), + +/***/ "./node_modules/lodash/_copySymbolsIn.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_copySymbolsIn.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"); + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); +} + +module.exports = copySymbolsIn; + + +/***/ }), + +/***/ "./node_modules/lodash/_coreJsData.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_coreJsData.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/** Used to detect overreaching core-js shims. */ +var coreJsData = root['__core-js_shared__']; + +module.exports = coreJsData; + + +/***/ }), + +/***/ "./node_modules/lodash/_createAssigner.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_createAssigner.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); + +/** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ +function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); +} + +module.exports = createAssigner; + + +/***/ }), + +/***/ "./node_modules/lodash/_createBaseEach.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_createBaseEach.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +module.exports = createBaseEach; + + +/***/ }), + +/***/ "./node_modules/lodash/_createBaseFor.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_createBaseFor.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; +} + +module.exports = createBaseFor; + + +/***/ }), + +/***/ "./node_modules/lodash/_createFind.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_createFind.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + +/** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ +function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = baseIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; +} + +module.exports = createFind; + + +/***/ }), + +/***/ "./node_modules/lodash/_createRange.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_createRange.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseRange = __webpack_require__(/*! ./_baseRange */ "./node_modules/lodash/_baseRange.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"), + toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js"); + +/** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ +function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; +} + +module.exports = createRange; + + +/***/ }), + +/***/ "./node_modules/lodash/_createSet.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_createSet.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), + noop = __webpack_require__(/*! ./noop */ "./node_modules/lodash/noop.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); +}; + +module.exports = createSet; + + +/***/ }), + +/***/ "./node_modules/lodash/_defineProperty.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_defineProperty.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); + +var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} +}()); + +module.exports = defineProperty; + + +/***/ }), + +/***/ "./node_modules/lodash/_equalArrays.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_equalArrays.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), + arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/lodash/_arraySome.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +module.exports = equalArrays; + + +/***/ }), + +/***/ "./node_modules/lodash/_equalByTag.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_equalByTag.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), + mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/lodash/_mapToArray.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +module.exports = equalByTag; + + +/***/ }), + +/***/ "./node_modules/lodash/_equalObjects.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_equalObjects.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"); + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +module.exports = equalObjects; + + +/***/ }), + +/***/ "./node_modules/lodash/_flatRest.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_flatRest.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var flatten = __webpack_require__(/*! ./flatten */ "./node_modules/lodash/flatten.js"), + overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), + setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); + +/** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ +function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); +} + +module.exports = flatRest; + + +/***/ }), + +/***/ "./node_modules/lodash/_freeGlobal.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_freeGlobal.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ +var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + +module.exports = freeGlobal; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/lodash/_getAllKeys.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_getAllKeys.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); +} + +module.exports = getAllKeys; + + +/***/ }), + +/***/ "./node_modules/lodash/_getAllKeysIn.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_getAllKeysIn.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"), + getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); +} + +module.exports = getAllKeysIn; + + +/***/ }), + +/***/ "./node_modules/lodash/_getMapData.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_getMapData.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/lodash/_isKeyable.js"); + +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; +} + +module.exports = getMapData; + + +/***/ }), + +/***/ "./node_modules/lodash/_getMatchData.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_getMatchData.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; +} + +module.exports = getMatchData; + + +/***/ }), + +/***/ "./node_modules/lodash/_getNative.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_getNative.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"), + getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js"); + +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} + +module.exports = getNative; + + +/***/ }), + +/***/ "./node_modules/lodash/_getPrototype.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_getPrototype.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); + +/** Built-in value references. */ +var getPrototype = overArg(Object.getPrototypeOf, Object); + +module.exports = getPrototype; + + +/***/ }), + +/***/ "./node_modules/lodash/_getRawTag.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_getRawTag.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** Built-in value references. */ +var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + +/** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ +function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; +} + +module.exports = getRawTag; + + +/***/ }), + +/***/ "./node_modules/lodash/_getSymbols.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_getSymbols.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +module.exports = getSymbols; + + +/***/ }), + +/***/ "./node_modules/lodash/_getSymbolsIn.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_getSymbolsIn.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js"); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; +}; + +module.exports = getSymbolsIn; + + +/***/ }), + +/***/ "./node_modules/lodash/_getTag.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/_getTag.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/lodash/_DataView.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), + Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/lodash/_Promise.js"), + Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), + WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/lodash/_WeakMap.js"), + baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + +var dataViewTag = '[object DataView]'; + +/** Used to detect maps, sets, and weakmaps. */ +var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + +/** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ +var getTag = baseGetTag; + +// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. +if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; +} + +module.exports = getTag; + + +/***/ }), + +/***/ "./node_modules/lodash/_getValue.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_getValue.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function getValue(object, key) { + return object == null ? undefined : object[key]; +} + +module.exports = getValue; + + +/***/ }), + +/***/ "./node_modules/lodash/_hasPath.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_hasPath.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); +} + +module.exports = hasPath; + + +/***/ }), + +/***/ "./node_modules/lodash/_hasUnicode.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_hasUnicode.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsZWJ = '\\u200d'; + +/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ +var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + +/** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ +function hasUnicode(string) { + return reHasUnicode.test(string); +} + +module.exports = hasUnicode; + + +/***/ }), + +/***/ "./node_modules/lodash/_hashClear.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_hashClear.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; +} + +module.exports = hashClear; + + +/***/ }), + +/***/ "./node_modules/lodash/_hashDelete.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_hashDelete.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; +} + +module.exports = hashDelete; + + +/***/ }), + +/***/ "./node_modules/lodash/_hashGet.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_hashGet.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; +} + +module.exports = hashGet; + + +/***/ }), + +/***/ "./node_modules/lodash/_hashHas.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_hashHas.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); +} + +module.exports = hashHas; + + +/***/ }), + +/***/ "./node_modules/lodash/_hashSet.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_hashSet.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ +function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; +} + +module.exports = hashSet; + + +/***/ }), + +/***/ "./node_modules/lodash/_initCloneArray.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_initCloneArray.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +module.exports = initCloneArray; + + +/***/ }), + +/***/ "./node_modules/lodash/_initCloneByTag.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_initCloneByTag.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"), + cloneDataView = __webpack_require__(/*! ./_cloneDataView */ "./node_modules/lodash/_cloneDataView.js"), + cloneRegExp = __webpack_require__(/*! ./_cloneRegExp */ "./node_modules/lodash/_cloneRegExp.js"), + cloneSymbol = __webpack_require__(/*! ./_cloneSymbol */ "./node_modules/lodash/_cloneSymbol.js"), + cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"); + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } +} + +module.exports = initCloneByTag; + + +/***/ }), + +/***/ "./node_modules/lodash/_initCloneObject.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_initCloneObject.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"); + +/** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; +} + +module.exports = initCloneObject; + + +/***/ }), + +/***/ "./node_modules/lodash/_isFlattenable.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_isFlattenable.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + +/** Built-in value references. */ +var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +module.exports = isFlattenable; + + +/***/ }), + +/***/ "./node_modules/lodash/_isIndex.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_isIndex.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** Used to detect unsigned integer values. */ +var reIsUint = /^(?:0|[1-9]\d*)$/; + +/** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ +function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); +} + +module.exports = isIndex; + + +/***/ }), + +/***/ "./node_modules/lodash/_isIterateeCall.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_isIterateeCall.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + +/** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; +} + +module.exports = isIterateeCall; + + +/***/ }), + +/***/ "./node_modules/lodash/_isKey.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/_isKey.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +module.exports = isKey; + + +/***/ }), + +/***/ "./node_modules/lodash/_isKeyable.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/_isKeyable.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ +function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); +} + +module.exports = isKeyable; + + +/***/ }), + +/***/ "./node_modules/lodash/_isMasked.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_isMasked.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/lodash/_coreJsData.js"); + +/** Used to detect methods masquerading as native. */ +var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; +}()); + +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ +function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); +} + +module.exports = isMasked; + + +/***/ }), + +/***/ "./node_modules/lodash/_isPrototype.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_isPrototype.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ +function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; +} + +module.exports = isPrototype; + + +/***/ }), + +/***/ "./node_modules/lodash/_isStrictComparable.js": +/*!****************************************************!*\ + !*** ./node_modules/lodash/_isStrictComparable.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !isObject(value); +} + +module.exports = isStrictComparable; + + +/***/ }), + +/***/ "./node_modules/lodash/_listCacheClear.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_listCacheClear.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ +function listCacheClear() { + this.__data__ = []; + this.size = 0; +} + +module.exports = listCacheClear; + + +/***/ }), + +/***/ "./node_modules/lodash/_listCacheDelete.js": +/*!*************************************************!*\ + !*** ./node_modules/lodash/_listCacheDelete.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + +/** Used for built-in method references. */ +var arrayProto = Array.prototype; + +/** Built-in value references. */ +var splice = arrayProto.splice; + +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; +} + +module.exports = listCacheDelete; + + +/***/ }), + +/***/ "./node_modules/lodash/_listCacheGet.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_listCacheGet.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; +} + +module.exports = listCacheGet; + + +/***/ }), + +/***/ "./node_modules/lodash/_listCacheHas.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_listCacheHas.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} + +module.exports = listCacheHas; + + +/***/ }), + +/***/ "./node_modules/lodash/_listCacheSet.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_listCacheSet.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; +} + +module.exports = listCacheSet; + + +/***/ }), + +/***/ "./node_modules/lodash/_mapCacheClear.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_mapCacheClear.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/lodash/_Hash.js"), + ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"); + +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ +function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; +} + +module.exports = mapCacheClear; + + +/***/ }), + +/***/ "./node_modules/lodash/_mapCacheDelete.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_mapCacheDelete.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; +} + +module.exports = mapCacheDelete; + + +/***/ }), + +/***/ "./node_modules/lodash/_mapCacheGet.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_mapCacheGet.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} + +module.exports = mapCacheGet; + + +/***/ }), + +/***/ "./node_modules/lodash/_mapCacheHas.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_mapCacheHas.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} + +module.exports = mapCacheHas; + + +/***/ }), + +/***/ "./node_modules/lodash/_mapCacheSet.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_mapCacheSet.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ +function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; +} + +module.exports = mapCacheSet; + + +/***/ }), + +/***/ "./node_modules/lodash/_mapToArray.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_mapToArray.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +module.exports = mapToArray; + + +/***/ }), + +/***/ "./node_modules/lodash/_matchesStrictComparable.js": +/*!*********************************************************!*\ + !*** ./node_modules/lodash/_matchesStrictComparable.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +module.exports = matchesStrictComparable; + + +/***/ }), + +/***/ "./node_modules/lodash/_memoizeCapped.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_memoizeCapped.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js"); + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +module.exports = memoizeCapped; + + +/***/ }), + +/***/ "./node_modules/lodash/_nativeCreate.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_nativeCreate.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); + +/* Built-in method references that are verified to be native. */ +var nativeCreate = getNative(Object, 'create'); + +module.exports = nativeCreate; + + +/***/ }), + +/***/ "./node_modules/lodash/_nativeKeys.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_nativeKeys.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeKeys = overArg(Object.keys, Object); + +module.exports = nativeKeys; + + +/***/ }), + +/***/ "./node_modules/lodash/_nativeKeysIn.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_nativeKeysIn.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ +function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; +} + +module.exports = nativeKeysIn; + + +/***/ }), + +/***/ "./node_modules/lodash/_nodeUtil.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_nodeUtil.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); + +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Detect free variable `process` from Node.js. */ +var freeProcess = moduleExports && freeGlobal.process; + +/** Used to access faster Node.js helpers. */ +var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; + + if (types) { + return types; + } + + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} +}()); + +module.exports = nodeUtil; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + +/***/ }), + +/***/ "./node_modules/lodash/_objectToString.js": +/*!************************************************!*\ + !*** ./node_modules/lodash/_objectToString.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ +var nativeObjectToString = objectProto.toString; + +/** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ +function objectToString(value) { + return nativeObjectToString.call(value); +} + +module.exports = objectToString; + + +/***/ }), + +/***/ "./node_modules/lodash/_overArg.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_overArg.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ +function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; +} + +module.exports = overArg; + + +/***/ }), + +/***/ "./node_modules/lodash/_overRest.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_overRest.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var apply = __webpack_require__(/*! ./_apply */ "./node_modules/lodash/_apply.js"); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ +function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; +} + +module.exports = overRest; + + +/***/ }), + +/***/ "./node_modules/lodash/_root.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/_root.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); + +/** Detect free variable `self`. */ +var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + +/** Used as a reference to the global object. */ +var root = freeGlobal || freeSelf || Function('return this')(); + +module.exports = root; + + +/***/ }), + +/***/ "./node_modules/lodash/_safeGet.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/_safeGet.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ +function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; +} + +module.exports = safeGet; + + +/***/ }), + +/***/ "./node_modules/lodash/_setCacheAdd.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_setCacheAdd.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +module.exports = setCacheAdd; + + +/***/ }), + +/***/ "./node_modules/lodash/_setCacheHas.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_setCacheHas.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +module.exports = setCacheHas; + + +/***/ }), + +/***/ "./node_modules/lodash/_setToArray.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_setToArray.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +module.exports = setToArray; + + +/***/ }), + +/***/ "./node_modules/lodash/_setToString.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_setToString.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseSetToString = __webpack_require__(/*! ./_baseSetToString */ "./node_modules/lodash/_baseSetToString.js"), + shortOut = __webpack_require__(/*! ./_shortOut */ "./node_modules/lodash/_shortOut.js"); + +/** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ +var setToString = shortOut(baseSetToString); + +module.exports = setToString; + + +/***/ }), + +/***/ "./node_modules/lodash/_shortOut.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_shortOut.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used to detect hot functions by number of calls within a span of milliseconds. */ +var HOT_COUNT = 800, + HOT_SPAN = 16; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeNow = Date.now; + +/** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ +function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; +} + +module.exports = shortOut; + + +/***/ }), + +/***/ "./node_modules/lodash/_stackClear.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_stackClear.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"); + +/** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ +function stackClear() { + this.__data__ = new ListCache; + this.size = 0; +} + +module.exports = stackClear; + + +/***/ }), + +/***/ "./node_modules/lodash/_stackDelete.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_stackDelete.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ +function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; +} + +module.exports = stackDelete; + + +/***/ }), + +/***/ "./node_modules/lodash/_stackGet.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_stackGet.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ +function stackGet(key) { + return this.__data__.get(key); +} + +module.exports = stackGet; + + +/***/ }), + +/***/ "./node_modules/lodash/_stackHas.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_stackHas.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function stackHas(key) { + return this.__data__.has(key); +} + +module.exports = stackHas; + + +/***/ }), + +/***/ "./node_modules/lodash/_stackSet.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_stackSet.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), + MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ +function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; +} + +module.exports = stackSet; + + +/***/ }), + +/***/ "./node_modules/lodash/_strictIndexOf.js": +/*!***********************************************!*\ + !*** ./node_modules/lodash/_strictIndexOf.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +module.exports = strictIndexOf; + + +/***/ }), + +/***/ "./node_modules/lodash/_stringSize.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/_stringSize.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var asciiSize = __webpack_require__(/*! ./_asciiSize */ "./node_modules/lodash/_asciiSize.js"), + hasUnicode = __webpack_require__(/*! ./_hasUnicode */ "./node_modules/lodash/_hasUnicode.js"), + unicodeSize = __webpack_require__(/*! ./_unicodeSize */ "./node_modules/lodash/_unicodeSize.js"); + +/** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ +function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); +} + +module.exports = stringSize; + + +/***/ }), + +/***/ "./node_modules/lodash/_stringToPath.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/_stringToPath.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/lodash/_memoizeCapped.js"); + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +module.exports = stringToPath; + + +/***/ }), + +/***/ "./node_modules/lodash/_toKey.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/_toKey.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +module.exports = toKey; + + +/***/ }), + +/***/ "./node_modules/lodash/_toSource.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/_toSource.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used for built-in method references. */ +var funcProto = Function.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; +} + +module.exports = toSource; + + +/***/ }), + +/***/ "./node_modules/lodash/_unicodeSize.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/_unicodeSize.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; +} + +module.exports = unicodeSize; + + +/***/ }), + +/***/ "./node_modules/lodash/clone.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/clone.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js"); + +/** Used to compose bitmasks for cloning. */ +var CLONE_SYMBOLS_FLAG = 4; + +/** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ +function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); +} + +module.exports = clone; + + +/***/ }), + +/***/ "./node_modules/lodash/cloneDeep.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/cloneDeep.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js"); + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +module.exports = cloneDeep; + + +/***/ }), + +/***/ "./node_modules/lodash/constant.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/constant.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ +function constant(value) { + return function() { + return value; + }; +} + +module.exports = constant; + + +/***/ }), + +/***/ "./node_modules/lodash/defaults.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/defaults.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; +}); + +module.exports = defaults; + + +/***/ }), + +/***/ "./node_modules/lodash/each.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/each.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(/*! ./forEach */ "./node_modules/lodash/forEach.js"); + + +/***/ }), + +/***/ "./node_modules/lodash/eq.js": +/*!***********************************!*\ + !*** ./node_modules/lodash/eq.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ +function eq(value, other) { + return value === other || (value !== value && other !== other); +} + +module.exports = eq; + + +/***/ }), + +/***/ "./node_modules/lodash/filter.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/filter.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"), + baseFilter = __webpack_require__(/*! ./_baseFilter */ "./node_modules/lodash/_baseFilter.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + +/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ +function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, baseIteratee(predicate, 3)); +} + +module.exports = filter; + + +/***/ }), + +/***/ "./node_modules/lodash/find.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/find.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var createFind = __webpack_require__(/*! ./_createFind */ "./node_modules/lodash/_createFind.js"), + findIndex = __webpack_require__(/*! ./findIndex */ "./node_modules/lodash/findIndex.js"); + +/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ +var find = createFind(findIndex); + +module.exports = find; + + +/***/ }), + +/***/ "./node_modules/lodash/findIndex.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/findIndex.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + toInteger = __webpack_require__(/*! ./toInteger */ "./node_modules/lodash/toInteger.js"); + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ +function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index); +} + +module.exports = findIndex; + + +/***/ }), + +/***/ "./node_modules/lodash/flatten.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/flatten.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"); + +/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ +function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; +} + +module.exports = flatten; + + +/***/ }), + +/***/ "./node_modules/lodash/forEach.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/forEach.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), + baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), + castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, castFunction(iteratee)); +} + +module.exports = forEach; + + +/***/ }), + +/***/ "./node_modules/lodash/forIn.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/forIn.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), + castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + +/** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ +function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, castFunction(iteratee), keysIn); +} + +module.exports = forIn; + + +/***/ }), + +/***/ "./node_modules/lodash/get.js": +/*!************************************!*\ + !*** ./node_modules/lodash/get.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +module.exports = get; + + +/***/ }), + +/***/ "./node_modules/lodash/has.js": +/*!************************************!*\ + !*** ./node_modules/lodash/has.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseHas = __webpack_require__(/*! ./_baseHas */ "./node_modules/lodash/_baseHas.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js"); + +/** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ +function has(object, path) { + return object != null && hasPath(object, path, baseHas); +} + +module.exports = has; + + +/***/ }), + +/***/ "./node_modules/lodash/hasIn.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/hasIn.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/lodash/_baseHasIn.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js"); + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); +} + +module.exports = hasIn; + + +/***/ }), + +/***/ "./node_modules/lodash/identity.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/identity.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ +function identity(value) { + return value; +} + +module.exports = identity; + + +/***/ }), + +/***/ "./node_modules/lodash/isArguments.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/isArguments.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/lodash/_baseIsArguments.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ +var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); +}; + +module.exports = isArguments; + + +/***/ }), + +/***/ "./node_modules/lodash/isArray.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/isArray.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ +var isArray = Array.isArray; + +module.exports = isArray; + + +/***/ }), + +/***/ "./node_modules/lodash/isArrayLike.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/isArrayLike.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"); + +/** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ +function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); +} + +module.exports = isArrayLike; + + +/***/ }), + +/***/ "./node_modules/lodash/isArrayLikeObject.js": +/*!**************************************************!*\ + !*** ./node_modules/lodash/isArrayLikeObject.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ +function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); +} + +module.exports = isArrayLikeObject; + + +/***/ }), + +/***/ "./node_modules/lodash/isBuffer.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/isBuffer.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"), + stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js"); + +/** Detect free variable `exports`. */ +var freeExports = true && exports && !exports.nodeType && exports; + +/** Detect free variable `module`. */ +var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + +/** Detect the popular CommonJS extension `module.exports`. */ +var moduleExports = freeModule && freeModule.exports === freeExports; + +/** Built-in value references. */ +var Buffer = moduleExports ? root.Buffer : undefined; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + +/** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ +var isBuffer = nativeIsBuffer || stubFalse; + +module.exports = isBuffer; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + +/***/ }), + +/***/ "./node_modules/lodash/isEmpty.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/isEmpty.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ +function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; +} + +module.exports = isEmpty; + + +/***/ }), + +/***/ "./node_modules/lodash/isFunction.js": +/*!*******************************************!*\ + !*** ./node_modules/lodash/isFunction.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + +/** `Object#toString` result references. */ +var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ +function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; +} + +module.exports = isFunction; + + +/***/ }), + +/***/ "./node_modules/lodash/isLength.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/isLength.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** Used as references for various `Number` constants. */ +var MAX_SAFE_INTEGER = 9007199254740991; + +/** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ +function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; + + +/***/ }), + +/***/ "./node_modules/lodash/isMap.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/isMap.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsMap = __webpack_require__(/*! ./_baseIsMap */ "./node_modules/lodash/_baseIsMap.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); + +/* Node.js helper references. */ +var nodeIsMap = nodeUtil && nodeUtil.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + +module.exports = isMap; + + +/***/ }), + +/***/ "./node_modules/lodash/isObject.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/isObject.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ +function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); +} + +module.exports = isObject; + + +/***/ }), + +/***/ "./node_modules/lodash/isObjectLike.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/isObjectLike.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ +function isObjectLike(value) { + return value != null && typeof value == 'object'; +} + +module.exports = isObjectLike; + + +/***/ }), + +/***/ "./node_modules/lodash/isPlainObject.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/isPlainObject.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var funcProto = Function.prototype, + objectProto = Object.prototype; + +/** Used to resolve the decompiled source of functions. */ +var funcToString = funcProto.toString; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** Used to infer the `Object` constructor. */ +var objectCtorString = funcToString.call(Object); + +/** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ +function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; +} + +module.exports = isPlainObject; + + +/***/ }), + +/***/ "./node_modules/lodash/isSet.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/isSet.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsSet = __webpack_require__(/*! ./_baseIsSet */ "./node_modules/lodash/_baseIsSet.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); + +/* Node.js helper references. */ +var nodeIsSet = nodeUtil && nodeUtil.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + +module.exports = isSet; + + +/***/ }), + +/***/ "./node_modules/lodash/isString.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/isString.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); +} + +module.exports = isString; + + +/***/ }), + +/***/ "./node_modules/lodash/isSymbol.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/isSymbol.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); +} + +module.exports = isSymbol; + + +/***/ }), + +/***/ "./node_modules/lodash/isTypedArray.js": +/*!*********************************************!*\ + !*** ./node_modules/lodash/isTypedArray.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); + +/* Node.js helper references. */ +var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + +/** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ +var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + +module.exports = isTypedArray; + + +/***/ }), + +/***/ "./node_modules/lodash/isUndefined.js": +/*!********************************************!*\ + !*** ./node_modules/lodash/isUndefined.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +module.exports = isUndefined; + + +/***/ }), + +/***/ "./node_modules/lodash/keys.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/keys.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), + baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); +} + +module.exports = keys; + + +/***/ }), + +/***/ "./node_modules/lodash/keysIn.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/keysIn.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), + baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ "./node_modules/lodash/_baseKeysIn.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + +/** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ +function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); +} + +module.exports = keysIn; + + +/***/ }), + +/***/ "./node_modules/lodash/last.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/last.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ +function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; +} + +module.exports = last; + + +/***/ }), + +/***/ "./node_modules/lodash/map.js": +/*!************************************!*\ + !*** ./node_modules/lodash/map.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, baseIteratee(iteratee, 3)); +} + +module.exports = map; + + +/***/ }), + +/***/ "./node_modules/lodash/mapValues.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/mapValues.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), + baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"); + +/** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ +function mapValues(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; +} + +module.exports = mapValues; + + +/***/ }), + +/***/ "./node_modules/lodash/max.js": +/*!************************************!*\ + !*** ./node_modules/lodash/max.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), + baseGt = __webpack_require__(/*! ./_baseGt */ "./node_modules/lodash/_baseGt.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + +/** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ +function max(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseGt) + : undefined; +} + +module.exports = max; + + +/***/ }), + +/***/ "./node_modules/lodash/memoize.js": +/*!****************************************!*\ + !*** ./node_modules/lodash/memoize.js ***! + \****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); + +/** Error message constants. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; +} + +// Expose `MapCache`. +memoize.Cache = MapCache; + +module.exports = memoize; + + +/***/ }), + +/***/ "./node_modules/lodash/merge.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/merge.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseMerge = __webpack_require__(/*! ./_baseMerge */ "./node_modules/lodash/_baseMerge.js"), + createAssigner = __webpack_require__(/*! ./_createAssigner */ "./node_modules/lodash/_createAssigner.js"); + +/** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ +var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); +}); + +module.exports = merge; + + +/***/ }), + +/***/ "./node_modules/lodash/min.js": +/*!************************************!*\ + !*** ./node_modules/lodash/min.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), + baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + +/** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ +function min(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseLt) + : undefined; +} + +module.exports = min; + + +/***/ }), + +/***/ "./node_modules/lodash/minBy.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/minBy.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js"); + +/** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ +function minBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt) + : undefined; +} + +module.exports = minBy; + + +/***/ }), + +/***/ "./node_modules/lodash/noop.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/noop.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} + +module.exports = noop; + + +/***/ }), + +/***/ "./node_modules/lodash/now.js": +/*!************************************!*\ + !*** ./node_modules/lodash/now.js ***! + \************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return root.Date.now(); +}; + +module.exports = now; + + +/***/ }), + +/***/ "./node_modules/lodash/pick.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/pick.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var basePick = __webpack_require__(/*! ./_basePick */ "./node_modules/lodash/_basePick.js"), + flatRest = __webpack_require__(/*! ./_flatRest */ "./node_modules/lodash/_flatRest.js"); + +/** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ +var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); +}); + +module.exports = pick; + + +/***/ }), + +/***/ "./node_modules/lodash/property.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/property.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"), + basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/lodash/_basePropertyDeep.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); +} + +module.exports = property; + + +/***/ }), + +/***/ "./node_modules/lodash/range.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/range.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var createRange = __webpack_require__(/*! ./_createRange */ "./node_modules/lodash/_createRange.js"); + +/** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ +var range = createRange(); + +module.exports = range; + + +/***/ }), + +/***/ "./node_modules/lodash/reduce.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/reduce.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayReduce = __webpack_require__(/*! ./_arrayReduce */ "./node_modules/lodash/_arrayReduce.js"), + baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseReduce = __webpack_require__(/*! ./_baseReduce */ "./node_modules/lodash/_baseReduce.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + +/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ +function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); +} + +module.exports = reduce; + + +/***/ }), + +/***/ "./node_modules/lodash/size.js": +/*!*************************************!*\ + !*** ./node_modules/lodash/size.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isString = __webpack_require__(/*! ./isString */ "./node_modules/lodash/isString.js"), + stringSize = __webpack_require__(/*! ./_stringSize */ "./node_modules/lodash/_stringSize.js"); + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ +function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; +} + +module.exports = size; + + +/***/ }), + +/***/ "./node_modules/lodash/sortBy.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/sortBy.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"), + baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ "./node_modules/lodash/_baseOrderBy.js"), + baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); + +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ +var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); +}); + +module.exports = sortBy; + + +/***/ }), + +/***/ "./node_modules/lodash/stubArray.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/stubArray.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +module.exports = stubArray; + + +/***/ }), + +/***/ "./node_modules/lodash/stubFalse.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/stubFalse.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ +function stubFalse() { + return false; +} + +module.exports = stubFalse; + + +/***/ }), + +/***/ "./node_modules/lodash/toFinite.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/toFinite.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toNumber = __webpack_require__(/*! ./toNumber */ "./node_modules/lodash/toNumber.js"); + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308; + +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +module.exports = toFinite; + + +/***/ }), + +/***/ "./node_modules/lodash/toInteger.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/toInteger.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js"); + +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ +function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} + +module.exports = toInteger; + + +/***/ }), + +/***/ "./node_modules/lodash/toNumber.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/toNumber.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to match leading and trailing whitespace. */ +var reTrim = /^\s+|\s+$/g; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +module.exports = toNumber; + + +/***/ }), + +/***/ "./node_modules/lodash/toPlainObject.js": +/*!**********************************************!*\ + !*** ./node_modules/lodash/toPlainObject.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + +/** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ +function toPlainObject(value) { + return copyObject(value, keysIn(value)); +} + +module.exports = toPlainObject; + + +/***/ }), + +/***/ "./node_modules/lodash/toString.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/toString.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/lodash/_baseToString.js"); + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString(value) { + return value == null ? '' : baseToString(value); +} + +module.exports = toString; + + +/***/ }), + +/***/ "./node_modules/lodash/transform.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/transform.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), + baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"), + baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + +/** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ +function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = baseIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; +} + +module.exports = transform; + + +/***/ }), + +/***/ "./node_modules/lodash/union.js": +/*!**************************************!*\ + !*** ./node_modules/lodash/union.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"), + baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/lodash/_baseUniq.js"), + isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"); + +/** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ +var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); +}); + +module.exports = union; + + +/***/ }), + +/***/ "./node_modules/lodash/uniqueId.js": +/*!*****************************************!*\ + !*** ./node_modules/lodash/uniqueId.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); + +/** Used to generate unique IDs. */ +var idCounter = 0; + +/** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ +function uniqueId(prefix) { + var id = ++idCounter; + return toString(prefix) + id; +} + +module.exports = uniqueId; + + +/***/ }), + +/***/ "./node_modules/lodash/values.js": +/*!***************************************!*\ + !*** ./node_modules/lodash/values.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var baseValues = __webpack_require__(/*! ./_baseValues */ "./node_modules/lodash/_baseValues.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + +/** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ +function values(object) { + return object == null ? [] : baseValues(object, keys(object)); +} + +module.exports = values; + + +/***/ }), + +/***/ "./node_modules/lodash/zipObject.js": +/*!******************************************!*\ + !*** ./node_modules/lodash/zipObject.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + baseZipObject = __webpack_require__(/*! ./_baseZipObject */ "./node_modules/lodash/_baseZipObject.js"); + +/** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ +function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); +} + +module.exports = zipObject; + + +/***/ }), + +/***/ "./node_modules/webpack/buildin/global.js": +/*!***********************************!*\ + !*** (webpack)/buildin/global.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var g; + +// This works in non-strict mode +g = (function() { + return this; +})(); + +try { + // This works if eval is allowed (see CSP) + g = g || new Function("return this")(); +} catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; +} + +// g can still be undefined, but nothing to do about it... +// We return undefined, instead of nothing here, so it's +// easier to handle this case. if(!global) { ...} + +module.exports = g; + + +/***/ }), + +/***/ "./node_modules/webpack/buildin/module.js": +/*!***********************************!*\ + !*** (webpack)/buildin/module.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +module.exports = function(module) { + if (!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if (!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; +}; + + +/***/ }), + +/***/ "./src/assign.js": +/*!***********************!*\ + !*** ./src/assign.js ***! + \***********************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +// Simple, internal Object.assign() polyfill for options objects etc. +module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + return tgt; +}; + +/***/ }), + +/***/ "./src/defaults.js": +/*!*************************!*\ + !*** ./src/defaults.js ***! + \*************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +var defaults = { + // dagre algo options, uses default value on undefined + nodeSep: undefined, + // the separation between adjacent nodes in the same rank + edgeSep: undefined, + // the separation between adjacent edges in the same rank + rankSep: undefined, + // the separation between adjacent nodes in the same rank + rankDir: undefined, + // 'TB' for top to bottom flow, 'LR' for left to right, + ranker: undefined, + // Type of algorithm to assigns a rank to each node in the input graph. + // Possible values: network-simplex, tight-tree or longest-path + minLen: function minLen(edge) { + return 1; + }, + // number of ranks to keep between the source and target of the edge + edgeWeight: function edgeWeight(edge) { + return 1; + }, + // higher weight edges are generally made shorter and straighter than lower weight edges + // general layout options + fit: true, + // whether to fit to viewport + padding: 30, + // fit padding + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + nodeDimensionsIncludeLabels: false, + // whether labels should be included in determining the space used by a node + animate: false, + // whether to transition the node positions + animateFilter: function animateFilter(node, i) { + return true; + }, + // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + transform: function transform(node, pos) { + return pos; + }, + // a function that applies a transform to the final node position + ready: function ready() {}, + // on layoutready + stop: function stop() {} // on layoutstop + +}; +module.exports = defaults; + +/***/ }), + +/***/ "./src/index.js": +/*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var impl = __webpack_require__(/*! ./layout */ "./src/layout.js"); // registers the extension on a cytoscape lib ref + + +var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified + + + cytoscape('layout', 'dagre', impl); // register with cytoscape.js +}; + +if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); +} + +module.exports = register; + +/***/ }), + +/***/ "./src/layout.js": +/*!***********************!*\ + !*** ./src/layout.js ***! + \***********************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +var isFunction = function isFunction(o) { + return typeof o === 'function'; +}; + +var defaults = __webpack_require__(/*! ./defaults */ "./src/defaults.js"); + +var assign = __webpack_require__(/*! ./assign */ "./src/assign.js"); + +var dagre = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js"); // constructor +// options : object containing layout options + + +function DagreLayout(options) { + this.options = assign({}, defaults, options); +} // runs the layout + + +DagreLayout.prototype.run = function () { + var options = this.options; + var layout = this; + var cy = options.cy; // cy is automatically populated for us in the constructor + + var eles = options.eles; + + var getVal = function getVal(ele, val) { + return isFunction(val) ? val.apply(ele, [ele]) : val; + }; + + var bb = options.boundingBox || { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }; + + if (bb.x2 === undefined) { + bb.x2 = bb.x1 + bb.w; + } + + if (bb.w === undefined) { + bb.w = bb.x2 - bb.x1; + } + + if (bb.y2 === undefined) { + bb.y2 = bb.y1 + bb.h; + } + + if (bb.h === undefined) { + bb.h = bb.y2 - bb.y1; + } + + var g = new dagre.graphlib.Graph({ + multigraph: true, + compound: true + }); + var gObj = {}; + + var setGObj = function setGObj(name, val) { + if (val != null) { + gObj[name] = val; + } + }; + + setGObj('nodesep', options.nodeSep); + setGObj('edgesep', options.edgeSep); + setGObj('ranksep', options.rankSep); + setGObj('rankdir', options.rankDir); + setGObj('ranker', options.ranker); + g.setGraph(gObj); + g.setDefaultEdgeLabel(function () { + return {}; + }); + g.setDefaultNodeLabel(function () { + return {}; + }); // add nodes to dagre + + var nodes = eles.nodes(); + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var nbb = node.layoutDimensions(options); + g.setNode(node.id(), { + width: nbb.w, + height: nbb.h, + name: node.id() + }); // console.log( g.node(node.id()) ); + } // set compound parents + + + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + + if (_node.isChild()) { + g.setParent(_node.id(), _node.parent().id()); + } + } // add edges to dagre + + + var edges = eles.edges().stdFilter(function (edge) { + return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes + }); + + for (var _i2 = 0; _i2 < edges.length; _i2++) { + var edge = edges[_i2]; + g.setEdge(edge.source().id(), edge.target().id(), { + minlen: getVal(edge, options.minLen), + weight: getVal(edge, options.edgeWeight), + name: edge.id() + }, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) ); + } + + dagre.layout(g); + var gNodeIds = g.nodes(); + + for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) { + var id = gNodeIds[_i3]; + var n = g.node(id); + cy.getElementById(id).scratch().dagre = n; + } + + var dagreBB; + + if (options.boundingBox) { + dagreBB = { + x1: Infinity, + x2: -Infinity, + y1: Infinity, + y2: -Infinity + }; + nodes.forEach(function (node) { + var dModel = node.scratch().dagre; + dagreBB.x1 = Math.min(dagreBB.x1, dModel.x); + dagreBB.x2 = Math.max(dagreBB.x2, dModel.x); + dagreBB.y1 = Math.min(dagreBB.y1, dModel.y); + dagreBB.y2 = Math.max(dagreBB.y2, dModel.y); + }); + dagreBB.w = dagreBB.x2 - dagreBB.x1; + dagreBB.h = dagreBB.y2 - dagreBB.y1; + } else { + dagreBB = bb; + } + + var constrainPos = function constrainPos(p) { + if (options.boundingBox) { + var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w; + var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h; + return { + x: bb.x1 + xPct * bb.w, + y: bb.y1 + yPct * bb.h + }; + } else { + return p; + } + }; + + nodes.layoutPositions(layout, options, function (ele) { + ele = _typeof(ele) === "object" ? ele : this; + var dModel = ele.scratch().dagre; + return constrainPos({ + x: dModel.x, + y: dModel.y + }); + }); + return this; // chaining +}; + +module.exports = DagreLayout; + +/***/ }) + +/******/ }); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWN5Y2xpYy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWRkLWJvcmRlci1zZWdtZW50cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvY29vcmRpbmF0ZS1zeXN0ZW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2RhdGEvbGlzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvZGVidWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2dyYXBobGliLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmVlZHktZmFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9sYXlvdXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2xvZGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvbmVzdGluZy1ncmFwaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvbm9ybWFsaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2JhcnljZW50ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2J1aWxkLWxheWVyLWdyYXBoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9jcm9zcy1jb3VudC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2luaXQtb3JkZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL3Jlc29sdmUtY29uZmxpY3RzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9zb3J0LXN1YmdyYXBoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9zb3J0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wYXJlbnQtZHVtbXktY2hhaW5zLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wb3NpdGlvbi9iay5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcG9zaXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvZmVhc2libGUtdHJlZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9uZXR3b3JrLXNpbXBsZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvdXRpbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvdXRpbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kZnMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS1hbGwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2lzLWFjeWNsaWMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wb3N0b3JkZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wcmVvcmRlci5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3ByaW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90YXJqYW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9ncmFwaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2pzb24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2xvZGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVJlZHVjZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U29tZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FzY2lpU2l6ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnbk1lcmdlVmFsdWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRXh0cmVtdW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmlsdGVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZpbmRJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUhhcy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbmRleE9mLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hTi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWFwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VPcmRlckJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5nZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU29ydEJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuaXEuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVmFsdWVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVppcE9iamVjdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvbXBhcmVBc2NlbmRpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlTXVsdGlwbGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUFzc2lnbmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJhbmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlU2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQnlUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE5hdGl2ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNVbmljb2RlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaENsZWFyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hHZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0ZsYXR0ZW5hYmxlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlclJlc3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmljdEluZGV4T2YuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdTaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVTaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVmYXVsdHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmRJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmxhdHRlbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9ySW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaWRlbnRpdHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VtcHR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNVbmRlZmluZWQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tYXBWYWx1ZXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21heC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVtb2l6ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21pbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWluQnkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JhbmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NpemUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViRmFsc2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcXVlSWQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvemlwT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9zcmMvYXNzaWduLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2RlZmF1bHRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2luZGV4LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2xheW91dC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRndCIsInNyY3MiLCJmb3JFYWNoIiwic3JjIiwia2V5cyIsImsiLCJkZWZhdWx0cyIsIm5vZGVTZXAiLCJ1bmRlZmluZWQiLCJlZGdlU2VwIiwicmFua1NlcCIsInJhbmtEaXIiLCJyYW5rZXIiLCJtaW5MZW4iLCJlZGdlIiwiZWRnZVdlaWdodCIsImZpdCIsInBhZGRpbmciLCJzcGFjaW5nRmFjdG9yIiwibm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzIiwiYW5pbWF0ZSIsImFuaW1hdGVGaWx0ZXIiLCJub2RlIiwiaSIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiYm91bmRpbmdCb3giLCJ0cmFuc2Zvcm0iLCJwb3MiLCJyZWFkeSIsInN0b3AiLCJpbXBsIiwicmVxdWlyZSIsInJlZ2lzdGVyIiwiY3l0b3NjYXBlIiwiaXNGdW5jdGlvbiIsIm8iLCJkYWdyZSIsIkRhZ3JlTGF5b3V0Iiwib3B0aW9ucyIsInByb3RvdHlwZSIsInJ1biIsImxheW91dCIsImN5IiwiZWxlcyIsImdldFZhbCIsImVsZSIsInZhbCIsImFwcGx5IiwiYmIiLCJ4MSIsInkxIiwidyIsIndpZHRoIiwiaCIsImhlaWdodCIsIngyIiwieTIiLCJnIiwiZ3JhcGhsaWIiLCJHcmFwaCIsIm11bHRpZ3JhcGgiLCJjb21wb3VuZCIsImdPYmoiLCJzZXRHT2JqIiwibmFtZSIsInNldEdyYXBoIiwic2V0RGVmYXVsdEVkZ2VMYWJlbCIsInNldERlZmF1bHROb2RlTGFiZWwiLCJub2RlcyIsImxlbmd0aCIsIm5iYiIsImxheW91dERpbWVuc2lvbnMiLCJzZXROb2RlIiwiaWQiLCJpc0NoaWxkIiwic2V0UGFyZW50IiwicGFyZW50IiwiZWRnZXMiLCJzdGRGaWx0ZXIiLCJzb3VyY2UiLCJpc1BhcmVudCIsInRhcmdldCIsInNldEVkZ2UiLCJtaW5sZW4iLCJ3ZWlnaHQiLCJnTm9kZUlkcyIsIm4iLCJnZXRFbGVtZW50QnlJZCIsInNjcmF0Y2giLCJkYWdyZUJCIiwiSW5maW5pdHkiLCJkTW9kZWwiLCJNYXRoIiwibWluIiwieCIsIm1heCIsInkiLCJjb25zdHJhaW5Qb3MiLCJwIiwieFBjdCIsInlQY3QiLCJsYXlvdXRQb3NpdGlvbnMiXSwibWFwcGluZ3MiOiI7O1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxtQkFBTyxDQUFDLDREQUFnQjs7QUFFcEMsVUFBVSxtQkFBTyxDQUFDLHdEQUFjO0FBQ2hDLFNBQVMsbUJBQU8sQ0FBQyxzREFBYTtBQUM5QjtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxvREFBWTtBQUM5QixZQUFZLG1CQUFPLENBQUMsb0RBQVk7QUFDaEMsR0FBRztBQUNILFdBQVcsbUJBQU8sQ0FBQywwREFBZTtBQUNsQzs7Ozs7Ozs7Ozs7OztBQ2hDYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsZ0JBQWdCLG1CQUFPLENBQUMsNERBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUNsRUEsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxnREFBUTs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsWUFBWTtBQUN2QztBQUNBOzs7Ozs7Ozs7Ozs7O0FDckNhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxvREFBVTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQywrQkFBK0IsRUFBRTtBQUNyRSxvQ0FBb0MsK0JBQStCLEVBQUU7QUFDckU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyx3QkFBd0IsRUFBRTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxzQkFBc0IsRUFBRTs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3ZFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3ZEQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLGdEQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsbUNBQW1DLGFBQWE7O0FBRXJFO0FBQ0Esa0JBQWtCLFdBQVc7QUFDN0I7QUFDQSxHQUFHOztBQUVIO0FBQ0EsMEJBQTBCO0FBQzFCLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QztBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pDQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLGtEQUFVO0FBQ2pDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTtBQUNoQyxXQUFXLG1CQUFPLENBQUMsMERBQWE7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUNBQXlDLHdDQUF3QztBQUNqRix5Q0FBeUMsd0NBQXdDO0FBQ2pGO0FBQ0Esc0NBQXNDLE9BQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsd0JBQXdCO0FBQ2pELEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCw0REFBNEQsbUJBQW1CLEVBQUU7QUFDakY7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUgsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNySGE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxzREFBVztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBYTtBQUNyQyxXQUFXLG1CQUFPLENBQUMsc0RBQVE7QUFDM0IscUJBQXFCLG1CQUFPLENBQUMsZ0RBQVE7QUFDckMsd0JBQXdCLG1CQUFPLENBQUMsOEVBQXVCO0FBQ3ZELHVCQUF1QixtQkFBTyxDQUFDLGdEQUFRO0FBQ3ZDLG1CQUFtQixtQkFBTyxDQUFDLGtFQUFpQjtBQUM1Qyx3QkFBd0IsbUJBQU8sQ0FBQyw4RUFBdUI7QUFDdkQsdUJBQXVCLG1CQUFPLENBQUMsMEVBQXFCO0FBQ3BELFlBQVksbUJBQU8sQ0FBQyx3REFBUztBQUM3QixlQUFlLG1CQUFPLENBQUMsOERBQVk7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLGdEQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsNEJBQTRCLEVBQUU7QUFDM0UsMkNBQTJDLDhCQUE4QixFQUFFO0FBQzNFLDJDQUEyQyxrQ0FBa0MsRUFBRTtBQUMvRSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxpREFBaUQsMkJBQTJCLEVBQUU7QUFDOUUsaURBQWlELG9CQUFvQixFQUFFO0FBQ3ZFLGlEQUFpRCxnQkFBZ0IsRUFBRTtBQUNuRSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELGtDQUFrQyxFQUFFO0FBQ3JGLGlEQUFpRCwyQkFBMkIsRUFBRTtBQUM5RSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELHlCQUF5QixFQUFFO0FBQzVFLGlEQUFpRCxtQkFBbUIsRUFBRTtBQUN0RSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELDJCQUEyQixFQUFFO0FBQzlFLGlEQUFpRCxrQkFBa0IsRUFBRTtBQUNyRSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekUsaURBQWlELHNCQUFzQixFQUFFO0FBQ3pFLGlEQUFpRCxVQUFVLEVBQUU7QUFDN0QsaURBQWlELG9CQUFvQixFQUFFO0FBQ3ZFLGlEQUFpRCw0QkFBNEIsRUFBRTtBQUMvRSxpREFBaUQsYUFBYSxFQUFFO0FBQ2hFLGlEQUFpRCxzQkFBc0IsRUFBRTtBQUN6RSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekUsaURBQWlELG1CQUFtQixFQUFFO0FBQ3RFLGlEQUFpRCx5QkFBeUIsRUFBRTtBQUM1RSxpREFBaUQsMEJBQTBCLEVBQUU7QUFDN0UsaURBQWlELG1CQUFtQixFQUFFO0FBQ3RFLGlEQUFpRCx5QkFBeUIsRUFBRTtBQUM1RSxpREFBaUQsa0NBQWtDLEVBQUU7QUFDckYsaURBQWlELGlCQUFpQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG1DQUFtQztBQUN4RDs7QUFFQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9DQUFvQyx3QkFBd0IsRUFBRTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQixnQkFBZ0I7QUFDM0MsMkJBQTJCLGdCQUFnQjtBQUMzQyxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseUJBQXlCO0FBQ3BEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywwQkFBMEI7QUFDbkMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7Ozs7Ozs7QUN2WUE7O0FBRUE7O0FBRUEsSUFBSSxJQUE2QjtBQUNqQztBQUNBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDLGdCQUFnQixtQkFBTyxDQUFDLDBEQUFpQjtBQUN6QyxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBaUI7QUFDekMsWUFBWSxtQkFBTyxDQUFDLGtEQUFhO0FBQ2pDLGNBQWMsbUJBQU8sQ0FBQyxzREFBZTtBQUNyQyxZQUFZLG1CQUFPLENBQUMsa0RBQWE7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHdEQUFnQjtBQUN2QyxlQUFlLG1CQUFPLENBQUMsd0RBQWdCO0FBQ3ZDLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxZQUFZLG1CQUFPLENBQUMsZ0RBQVk7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsZ0VBQW9CO0FBQy9DLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDLFdBQVcsbUJBQU8sQ0FBQyxnREFBWTtBQUMvQixhQUFhLG1CQUFPLENBQUMsb0RBQWM7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLGdEQUFZO0FBQy9CLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsWUFBWSxtQkFBTyxDQUFDLGtEQUFhO0FBQ2pDLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsY0FBYyxtQkFBTyxDQUFDLHNEQUFlO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLDBEQUFpQjtBQUN6QyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNDQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLGdEQUFROztBQUUzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQSwyQ0FBMkM7QUFDM0M7O0FBRUE7O0FBRUE7QUFDQSxvQ0FBb0MsNkJBQTZCLEVBQUU7O0FBRW5FO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiw2QkFBNkI7QUFDdkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSwwQkFBMEIsd0NBQXdDO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLFdBQVcsRUFBRTtBQUNwRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUNuSWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxnREFBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHdCQUF3QixFQUFFO0FBQ2pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQkFBMkI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1QkFBdUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUN6RkEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjs7QUFFQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNEJBQTRCO0FBQ3REO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNwREEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEdBQUcsb0JBQW9COztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUMxQkEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5REFBYTs7QUFFakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUIsWUFBWSxhQUFhO0FBQ2xFLHdDQUF3QyxrQkFBa0IsRUFBRTs7QUFFNUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9DQUFvQztBQUNsRSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3hFYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxVQUFVLEVBQUU7QUFDbkQ7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELFVBQVUsRUFBRTs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7Ozs7OztBQ2xFYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsZ0JBQWdCLG1CQUFPLENBQUMsa0VBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsb0VBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsd0VBQWlCO0FBQzVDLHNCQUFzQixtQkFBTyxDQUFDLGdGQUFxQjtBQUNuRCw2QkFBNkIsbUJBQU8sQ0FBQyw4RkFBNEI7QUFDakUsWUFBWSxtQkFBTyxDQUFDLHlEQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLCtCQUErQixjQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDOUVhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxREFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHNEQUFzRCx1QkFBdUIsRUFBRTtBQUMvRSx1REFBdUQsV0FBVyxFQUFFOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxREFBcUQsdUJBQXVCLEVBQUU7QUFDOUU7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3JDYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7O0FBRTNCOztBQUVBO0FBQ0Esd0NBQXdDLHNCQUFzQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msc0JBQXNCO0FBQ3hELDhCQUE4QixFQUFFO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QywwQkFBMEI7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtEQUFrRCxzQkFBc0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUN6SEEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLGlCQUFpQixtQkFBTyxDQUFDLGtFQUFjO0FBQ3ZDLHVCQUF1QixtQkFBTyxDQUFDLGdGQUFxQjtBQUNwRCxXQUFXLG1CQUFPLENBQUMsc0RBQVE7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUMzRUEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esc0RBQXNELGlCQUFpQixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3hEQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7O0FBRTFCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3JGYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLHlEQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGVBQWUsRUFBRTtBQUN4RDtBQUNBLHdEQUF3RCxTQUFTO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUgsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0RBQXNELGtCQUFrQixFQUFFO0FBQzFFO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsV0FBVyxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDbGFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxREFBVztBQUMzQixXQUFXLG1CQUFPLENBQUMsaURBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMscURBQU07O0FBRTlCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QseUJBQXlCLEVBQUU7QUFDL0U7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7QUM1QmE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5REFBYTtBQUNqQyxZQUFZLG1CQUFPLENBQUMscURBQVE7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0JBQWtCOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDeEZhOztBQUViLGVBQWUsbUJBQU8sQ0FBQyxxREFBUTtBQUMvQjtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLHVFQUFpQjtBQUM1QyxxQkFBcUIsbUJBQU8sQ0FBQywyRUFBbUI7O0FBRWhEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQy9DYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsbUJBQW1CLG1CQUFPLENBQUMsdUVBQWlCO0FBQzVDLFlBQVksbUJBQU8sQ0FBQyxxREFBUTtBQUM1QixlQUFlLG1CQUFPLENBQUMscURBQVE7QUFDL0IsZUFBZSxtQkFBTyxDQUFDLHlEQUFhO0FBQ3BDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFhO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxpREFBUzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsNkNBQTZDLHVCQUF1QixFQUFFO0FBQ3RFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLDBCQUEwQixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUN6T2E7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDOURBOztBQUVhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxvREFBVTtBQUMxQixZQUFZLG1CQUFPLENBQUMsd0RBQVk7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0NBQWtDLEVBQUU7QUFDeEU7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsK0JBQStCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLEtBQUs7QUFDL0MsS0FBSyxvQkFBb0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELFdBQVcsRUFBRTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHVCQUF1QixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLG1EQUFtRCx1QkFBdUIsRUFBRTs7QUFFNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUNBQWlDLHlCQUF5QixFQUFFO0FBQzVEO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDN09BOzs7Ozs7Ozs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtCQUErQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLG1CQUFPLENBQUMsbURBQU87O0FBRXpCO0FBQ0E7QUFDQSxRQUFRLG1CQUFPLENBQUMsdURBQVk7QUFDNUIsT0FBTyxtQkFBTyxDQUFDLDJEQUFXO0FBQzFCO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3JDQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7Ozs7O0FDMUJBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsYUFBYTtBQUNsQztBQUNBO0FBQ0EsS0FBSztBQUNMLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3pDQSxlQUFlLG1CQUFPLENBQUMsK0RBQVk7QUFDbkMsUUFBUSxtQkFBTyxDQUFDLHdEQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7Ozs7Ozs7Ozs7O0FDVEEsUUFBUSxtQkFBTyxDQUFDLHdEQUFXO0FBQzNCLG9CQUFvQixtQkFBTyxDQUFDLGtGQUF3Qjs7QUFFcEQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQixFQUFFO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3JEQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLDJEQUFVOztBQUUvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7OztBQ1RBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQixFQUFFO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pEQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxtRUFBYztBQUNwQyxZQUFZLG1CQUFPLENBQUMsK0RBQVk7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFnQjtBQUN2QyxjQUFjLG1CQUFPLENBQUMscUVBQWU7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWtCO0FBQzNDLGFBQWEsbUJBQU8sQ0FBQyxtRUFBYztBQUNuQyxhQUFhLG1CQUFPLENBQUMsaUVBQWE7QUFDbEMsWUFBWSxtQkFBTyxDQUFDLCtEQUFZO0FBQ2hDLFFBQVEsbUJBQU8sQ0FBQyx1REFBUTtBQUN4QixVQUFVLG1CQUFPLENBQUMsMkRBQVU7QUFDNUIsV0FBVyxtQkFBTyxDQUFDLDZEQUFXO0FBQzlCOzs7Ozs7Ozs7Ozs7QUNaQSxjQUFjLG1CQUFPLENBQUMsNkRBQVc7O0FBRWpDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDZEEsVUFBVSxtQkFBTyxDQUFDLHFEQUFPOztBQUV6Qjs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ05BLFVBQVUsbUJBQU8sQ0FBQyxxREFBTzs7QUFFekI7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNOQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLHNEQUFVO0FBQzlCLG9CQUFvQixtQkFBTyxDQUFDLGtGQUF3Qjs7QUFFcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7O0FDbkRBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQzlDQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QyxnRDs7Ozs7Ozs7Ozs7QUNsQ3ZDLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsY0FBYyxFQUFFO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDZCQUE2QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3ZKYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsdURBQVU7O0FBRTFCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxXQUFXO0FBQy9FO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxvQ0FBb0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLGVBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHFCQUFxQixFQUFFO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMscUJBQXFCLEVBQUU7QUFDbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixlQUFlO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbmhCQTtBQUNBO0FBQ0EsU0FBUyxtQkFBTyxDQUFDLHFEQUFTO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyx5REFBVztBQUM5Qjs7Ozs7Ozs7Ozs7O0FDSkEsUUFBUSxtQkFBTyxDQUFDLHVEQUFVO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyxxREFBUzs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSwyQ0FBMkM7QUFDMUQsR0FBRztBQUNIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pFQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsb0RBQWM7QUFDbkMsZ0JBQWdCLG1CQUFPLENBQUMsMERBQWlCO0FBQ3pDLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsWUFBWSxtQkFBTyxDQUFDLGdEQUFZO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyx3REFBZ0I7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHdEQUFnQjtBQUN2QyxrQkFBa0IsbUJBQU8sQ0FBQyw4REFBbUI7QUFDN0MsbUJBQW1CLG1CQUFPLENBQUMsZ0VBQW9CO0FBQy9DLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHNEQUFlO0FBQ3JDLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxpQkFBaUIsbUJBQU8sQ0FBQyw0REFBa0I7QUFDM0MsYUFBYSxtQkFBTyxDQUFDLG9EQUFjO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxzREFBZTtBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0E7Ozs7Ozs7Ozs7OztBQ0FBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNOQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ05BLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQSxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ0xBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNYQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsU0FBUyxtQkFBTyxDQUFDLHlDQUFNOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNCQSxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hCQSxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsK0NBQVM7QUFDN0IsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQywrQ0FBUztBQUM3QixXQUFXLG1CQUFPLENBQUMsNkNBQVE7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcktBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUM3QkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQ0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNaQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkEsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEZBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDWEEsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzlDQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzREEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLDBCQUEwQixtQkFBTyxDQUFDLDZFQUF3QjtBQUMxRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDOUJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDckJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsOEJBQThCLG1CQUFPLENBQUMscUZBQTRCOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsVUFBVSxtQkFBTyxDQUFDLDJDQUFPO0FBQ3pCLFlBQVksbUJBQU8sQ0FBQywrQ0FBUztBQUM3QixZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIseUJBQXlCLG1CQUFPLENBQUMsMkVBQXVCO0FBQ3hELDhCQUE4QixtQkFBTyxDQUFDLHFGQUE0QjtBQUNsRSxZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0EsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxhQUFhLG1CQUFPLENBQUMsaURBQVU7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pDQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7QUFDcEQsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLHdCQUF3QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNyRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG9CQUFvQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM3QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDM0MsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLG9CQUFvQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3RkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLDZCQUE2QjtBQUN4QyxXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFlBQVk7QUFDWixHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hEQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxZQUFZLG1CQUFPLENBQUMsK0NBQVM7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEJBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDM0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdEJBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsREEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLHdCQUF3QixtQkFBTyxDQUFDLHlFQUFzQjtBQUN0RCxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN2RUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNaQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QixhQUFhLFlBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSx5REFBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBLGtCQUFrQixLQUEwQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ2xDQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeENBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLG1CQUFtQjtBQUM5QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU8sV0FBVztBQUM3QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZDQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPLFdBQVc7QUFDN0IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxXQUFXO0FBQzdCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNMQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrQ0FBK0M7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixXQUFXLG1CQUFPLENBQUMsNkNBQVE7QUFDM0IsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUNWQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuRkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvR0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6RkEsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ0hBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBLHlCQUF5QixtQkFBTyxDQUFDLDJFQUF1QjtBQUN4RCxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3Q0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsVUFBVSxtQkFBTyxDQUFDLDZDQUFRO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ1pBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDekJBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVFQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4QkEsU0FBUyxtQkFBTyxDQUFDLHlDQUFNO0FBQ3ZCLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZEEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ1pBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xDQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQkEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsK0RBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7QUM3QkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZEEsWUFBWSxtQkFBTyxDQUFDLGlEQUFVOztBQUU5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQ0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsVUFBVSxtQkFBTyxDQUFDLDZDQUFRO0FBQzFCLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUMxQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxjQUFjO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsRUFBRTtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25DQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0Esd0NBQXdDLFNBQVM7QUFDakQ7QUFDQTtBQUNBLFdBQVcsU0FBUyxHQUFHLFNBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLEdBQUcsU0FBUyxHQUFHLFNBQVM7QUFDaEQsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQy9EQSxpQkFBaUIsbUJBQU8sQ0FBQyxtREFBVzs7Ozs7Ozs7Ozs7O0FDQXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUE4QztBQUNwRCxNQUFNO0FBQ047QUFDQTtBQUNBLGdDQUFnQyxrQkFBa0IsRUFBRTtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsWUFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25EQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsTUFBTSwrQ0FBK0M7QUFDckQsTUFBTSxnREFBZ0Q7QUFDdEQsTUFBTTtBQUNOO0FBQ0E7QUFDQSw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJCQUEyQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6Q0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLE1BQU0scUNBQXFDO0FBQzNDLE1BQU0scUNBQXFDO0FBQzNDLE1BQU07QUFDTjtBQUNBO0FBQ0EsbUNBQW1DLDJCQUEyQixFQUFFO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0REEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsYUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3hDQSxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RDQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUSxPQUFPLFNBQVMsRUFBRTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0EsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCLE9BQU8sU0FBUztBQUNqQyx5QkFBeUIsZ0JBQWdCLFNBQVMsR0FBRztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbENBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQixTQUFTLEdBQUc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0JBQWtCLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxrQkFBa0IsRUFBRTtBQUNsRTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxpQkFBaUIsbUJBQU8sQ0FBQyx5REFBYztBQUN2QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0Esa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaENBLHlEQUFXLG1CQUFPLENBQUMsK0NBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsdURBQWE7O0FBRXJDO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ3JDQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVFQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdEQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMxQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQ0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpQkFBaUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsTUFBTSxtQkFBbUI7QUFDekIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwREEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwrQkFBK0I7QUFDaEQsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxtQ0FBbUMsY0FBYyxFQUFFO0FBQ25ELFVBQVUsMkJBQTJCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMkJBQTJCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDMUNBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4RUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVMsR0FBRyxTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUyxHQUFHLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsVUFBVSxRQUFRLGlCQUFpQixHQUFHLGlCQUFpQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUN0Q0EsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0EsaUNBQWlDLFlBQVksRUFBRTtBQUMvQyxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxxQkFBcUI7QUFDaEMsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQ3hCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxNQUFNLE9BQU8sU0FBUyxFQUFFO0FBQ3hCLE1BQU0sT0FBTyxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQy9CQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3Q0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsYUFBYSx5QkFBeUI7QUFDdEM7QUFDQTtBQUNBLElBQUksSUFBSTtBQUNSLFVBQVUsOEJBQThCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xEQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9CQUFvQjtBQUMvQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0NBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQSxhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7QUFDQSxpQ0FBaUMsZUFBZSxFQUFFO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pDQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkNBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqRUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsVUFBVTtBQUNWO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGlCQUFpQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3ZDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGdCQUFnQix5QkFBeUI7QUFDekM7QUFDQSxJQUFJLElBQUk7QUFDUixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hFQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyx3QkFBd0IsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUN6QkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdkJBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1Qzs7Ozs7Ozs7Ozs7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDckJBO0FBRUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkMsTUFBTSxDQUFDQyxNQUFQLElBQWlCLElBQWpCLEdBQXdCRCxNQUFNLENBQUNDLE1BQVAsQ0FBY0MsSUFBZCxDQUFvQkYsTUFBcEIsQ0FBeEIsR0FBdUQsVUFBVUcsR0FBVixFQUF3QjtBQUFBLG9DQUFOQyxJQUFNO0FBQU5BLFFBQU07QUFBQTs7QUFDOUZBLE1BQUksQ0FBQ0MsT0FBTCxDQUFjLFVBQUFDLEdBQUcsRUFBSTtBQUNuQk4sVUFBTSxDQUFDTyxJQUFQLENBQWFELEdBQWIsRUFBbUJELE9BQW5CLENBQTRCLFVBQUFHLENBQUM7QUFBQSxhQUFJTCxHQUFHLENBQUNLLENBQUQsQ0FBSCxHQUFTRixHQUFHLENBQUNFLENBQUQsQ0FBaEI7QUFBQSxLQUE3QjtBQUNELEdBRkQ7QUFJQSxTQUFPTCxHQUFQO0FBQ0QsQ0FORCxDOzs7Ozs7Ozs7OztBQ0ZBLElBQUlNLFFBQVEsR0FBRztBQUNiO0FBQ0FDLFNBQU8sRUFBRUMsU0FGSTtBQUVPO0FBQ3BCQyxTQUFPLEVBQUVELFNBSEk7QUFHTztBQUNwQkUsU0FBTyxFQUFFRixTQUpJO0FBSU87QUFDcEJHLFNBQU8sRUFBRUgsU0FMSTtBQUtPO0FBQ3BCSSxRQUFNLEVBQUdKLFNBTkk7QUFNTztBQUNBO0FBQ3BCSyxRQUFNLEVBQUUsZ0JBQVVDLElBQVYsRUFBZ0I7QUFBRSxXQUFPLENBQVA7QUFBVyxHQVJ4QjtBQVEwQjtBQUN2Q0MsWUFBVSxFQUFFLG9CQUFVRCxJQUFWLEVBQWdCO0FBQUUsV0FBTyxDQUFQO0FBQVcsR0FUNUI7QUFTOEI7QUFFM0M7QUFDQUUsS0FBRyxFQUFFLElBWlE7QUFZRjtBQUNYQyxTQUFPLEVBQUUsRUFiSTtBQWFBO0FBQ2JDLGVBQWEsRUFBRVYsU0FkRjtBQWNhO0FBQzFCVyw2QkFBMkIsRUFBRSxLQWZoQjtBQWV1QjtBQUNwQ0MsU0FBTyxFQUFFLEtBaEJJO0FBZ0JHO0FBQ2hCQyxlQUFhLEVBQUUsdUJBQVVDLElBQVYsRUFBZ0JDLENBQWhCLEVBQW1CO0FBQUUsV0FBTyxJQUFQO0FBQWMsR0FqQnJDO0FBaUJ1QztBQUNwREMsbUJBQWlCLEVBQUUsR0FsQk47QUFrQlc7QUFDeEJDLGlCQUFlLEVBQUVqQixTQW5CSjtBQW1CZTtBQUM1QmtCLGFBQVcsRUFBRWxCLFNBcEJBO0FBb0JXO0FBQ3hCbUIsV0FBUyxFQUFFLG1CQUFVTCxJQUFWLEVBQWdCTSxHQUFoQixFQUFxQjtBQUFFLFdBQU9BLEdBQVA7QUFBYSxHQXJCbEM7QUFxQm9DO0FBQ2pEQyxPQUFLLEVBQUUsaUJBQVUsQ0FBRSxDQXRCTjtBQXNCUTtBQUNyQkMsTUFBSSxFQUFFLGdCQUFVLENBQUUsQ0F2QkwsQ0F1Qk07O0FBdkJOLENBQWY7QUEwQkFuQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJVLFFBQWpCLEM7Ozs7Ozs7Ozs7O0FDMUJBLElBQU15QixJQUFJLEdBQUdDLG1CQUFPLENBQUMsaUNBQUQsQ0FBcEIsQyxDQUVBOzs7QUFDQSxJQUFJQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFVQyxTQUFWLEVBQXFCO0FBQ2xDLE1BQUksQ0FBQ0EsU0FBTCxFQUFnQjtBQUFFO0FBQVMsR0FETyxDQUNOOzs7QUFFNUJBLFdBQVMsQ0FBRSxRQUFGLEVBQVksT0FBWixFQUFxQkgsSUFBckIsQ0FBVCxDQUhrQyxDQUdJO0FBQ3ZDLENBSkQ7O0FBTUEsSUFBSSxPQUFPRyxTQUFQLEtBQXFCLFdBQXpCLEVBQXNDO0FBQUU7QUFDdENELFVBQVEsQ0FBRUMsU0FBRixDQUFSO0FBQ0Q7O0FBRUR2QyxNQUFNLENBQUNDLE9BQVAsR0FBaUJxQyxRQUFqQixDOzs7Ozs7Ozs7Ozs7O0FDYkEsSUFBTUUsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBU0MsQ0FBVCxFQUFXO0FBQUUsU0FBTyxPQUFPQSxDQUFQLEtBQWEsVUFBcEI7QUFBaUMsQ0FBakU7O0FBQ0EsSUFBTTlCLFFBQVEsR0FBRzBCLG1CQUFPLENBQUMscUNBQUQsQ0FBeEI7O0FBQ0EsSUFBTWxDLE1BQU0sR0FBR2tDLG1CQUFPLENBQUMsaUNBQUQsQ0FBdEI7O0FBQ0EsSUFBTUssS0FBSyxHQUFHTCxtQkFBTyxDQUFDLDRDQUFELENBQXJCLEMsQ0FFQTtBQUNBOzs7QUFDQSxTQUFTTSxXQUFULENBQXNCQyxPQUF0QixFQUErQjtBQUM3QixPQUFLQSxPQUFMLEdBQWV6QyxNQUFNLENBQUUsRUFBRixFQUFNUSxRQUFOLEVBQWdCaUMsT0FBaEIsQ0FBckI7QUFDRCxDLENBRUQ7OztBQUNBRCxXQUFXLENBQUNFLFNBQVosQ0FBc0JDLEdBQXRCLEdBQTRCLFlBQVU7QUFDcEMsTUFBSUYsT0FBTyxHQUFHLEtBQUtBLE9BQW5CO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQWI7QUFFQSxNQUFJQyxFQUFFLEdBQUdKLE9BQU8sQ0FBQ0ksRUFBakIsQ0FKb0MsQ0FJZjs7QUFDckIsTUFBSUMsSUFBSSxHQUFHTCxPQUFPLENBQUNLLElBQW5COztBQUVBLE1BQUlDLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQVVDLEdBQVYsRUFBZUMsR0FBZixFQUFvQjtBQUMvQixXQUFPWixVQUFVLENBQUNZLEdBQUQsQ0FBVixHQUFrQkEsR0FBRyxDQUFDQyxLQUFKLENBQVdGLEdBQVgsRUFBZ0IsQ0FBRUEsR0FBRixDQUFoQixDQUFsQixHQUE4Q0MsR0FBckQ7QUFDRCxHQUZEOztBQUlBLE1BQUlFLEVBQUUsR0FBR1YsT0FBTyxDQUFDYixXQUFSLElBQXVCO0FBQUV3QixNQUFFLEVBQUUsQ0FBTjtBQUFTQyxNQUFFLEVBQUUsQ0FBYjtBQUFnQkMsS0FBQyxFQUFFVCxFQUFFLENBQUNVLEtBQUgsRUFBbkI7QUFBK0JDLEtBQUMsRUFBRVgsRUFBRSxDQUFDWSxNQUFIO0FBQWxDLEdBQWhDOztBQUNBLE1BQUlOLEVBQUUsQ0FBQ08sRUFBSCxLQUFVaEQsU0FBZCxFQUF5QjtBQUFFeUMsTUFBRSxDQUFDTyxFQUFILEdBQVFQLEVBQUUsQ0FBQ0MsRUFBSCxHQUFRRCxFQUFFLENBQUNHLENBQW5CO0FBQXVCOztBQUNsRCxNQUFJSCxFQUFFLENBQUNHLENBQUgsS0FBUzVDLFNBQWIsRUFBd0I7QUFBRXlDLE1BQUUsQ0FBQ0csQ0FBSCxHQUFPSCxFQUFFLENBQUNPLEVBQUgsR0FBUVAsRUFBRSxDQUFDQyxFQUFsQjtBQUF1Qjs7QUFDakQsTUFBSUQsRUFBRSxDQUFDUSxFQUFILEtBQVVqRCxTQUFkLEVBQXlCO0FBQUV5QyxNQUFFLENBQUNRLEVBQUgsR0FBUVIsRUFBRSxDQUFDRSxFQUFILEdBQVFGLEVBQUUsQ0FBQ0ssQ0FBbkI7QUFBdUI7O0FBQ2xELE1BQUlMLEVBQUUsQ0FBQ0ssQ0FBSCxLQUFTOUMsU0FBYixFQUF3QjtBQUFFeUMsTUFBRSxDQUFDSyxDQUFILEdBQU9MLEVBQUUsQ0FBQ1EsRUFBSCxHQUFRUixFQUFFLENBQUNFLEVBQWxCO0FBQXVCOztBQUVqRCxNQUFJTyxDQUFDLEdBQUcsSUFBSXJCLEtBQUssQ0FBQ3NCLFFBQU4sQ0FBZUMsS0FBbkIsQ0FBeUI7QUFDL0JDLGNBQVUsRUFBRSxJQURtQjtBQUUvQkMsWUFBUSxFQUFFO0FBRnFCLEdBQXpCLENBQVI7QUFLQSxNQUFJQyxJQUFJLEdBQUcsRUFBWDs7QUFDQSxNQUFJQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFVQyxJQUFWLEVBQWdCbEIsR0FBaEIsRUFBcUI7QUFDakMsUUFBSUEsR0FBRyxJQUFJLElBQVgsRUFBaUI7QUFDZmdCLFVBQUksQ0FBRUUsSUFBRixDQUFKLEdBQWVsQixHQUFmO0FBQ0Q7QUFDRixHQUpEOztBQU1BaUIsU0FBTyxDQUFFLFNBQUYsRUFBYXpCLE9BQU8sQ0FBQ2hDLE9BQXJCLENBQVA7QUFDQXlELFNBQU8sQ0FBRSxTQUFGLEVBQWF6QixPQUFPLENBQUM5QixPQUFyQixDQUFQO0FBQ0F1RCxTQUFPLENBQUUsU0FBRixFQUFhekIsT0FBTyxDQUFDN0IsT0FBckIsQ0FBUDtBQUNBc0QsU0FBTyxDQUFFLFNBQUYsRUFBYXpCLE9BQU8sQ0FBQzVCLE9BQXJCLENBQVA7QUFDQXFELFNBQU8sQ0FBRSxRQUFGLEVBQVl6QixPQUFPLENBQUMzQixNQUFwQixDQUFQO0FBRUE4QyxHQUFDLENBQUNRLFFBQUYsQ0FBWUgsSUFBWjtBQUVBTCxHQUFDLENBQUNTLG1CQUFGLENBQXNCLFlBQVc7QUFBRSxXQUFPLEVBQVA7QUFBWSxHQUEvQztBQUNBVCxHQUFDLENBQUNVLG1CQUFGLENBQXNCLFlBQVc7QUFBRSxXQUFPLEVBQVA7QUFBWSxHQUEvQyxFQXRDb0MsQ0F3Q3BDOztBQUNBLE1BQUlDLEtBQUssR0FBR3pCLElBQUksQ0FBQ3lCLEtBQUwsRUFBWjs7QUFDQSxPQUFLLElBQUk5QyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHOEMsS0FBSyxDQUFDQyxNQUExQixFQUFrQy9DLENBQUMsRUFBbkMsRUFBdUM7QUFDckMsUUFBSUQsSUFBSSxHQUFHK0MsS0FBSyxDQUFDOUMsQ0FBRCxDQUFoQjtBQUNBLFFBQUlnRCxHQUFHLEdBQUdqRCxJQUFJLENBQUNrRCxnQkFBTCxDQUF1QmpDLE9BQXZCLENBQVY7QUFFQW1CLEtBQUMsQ0FBQ2UsT0FBRixDQUFXbkQsSUFBSSxDQUFDb0QsRUFBTCxFQUFYLEVBQXNCO0FBQ3BCckIsV0FBSyxFQUFFa0IsR0FBRyxDQUFDbkIsQ0FEUztBQUVwQkcsWUFBTSxFQUFFZ0IsR0FBRyxDQUFDakIsQ0FGUTtBQUdwQlcsVUFBSSxFQUFFM0MsSUFBSSxDQUFDb0QsRUFBTDtBQUhjLEtBQXRCLEVBSnFDLENBVXJDO0FBQ0QsR0FyRG1DLENBdURwQzs7O0FBQ0EsT0FBSyxJQUFJbkQsRUFBQyxHQUFHLENBQWIsRUFBZ0JBLEVBQUMsR0FBRzhDLEtBQUssQ0FBQ0MsTUFBMUIsRUFBa0MvQyxFQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFFBQUlELEtBQUksR0FBRytDLEtBQUssQ0FBQzlDLEVBQUQsQ0FBaEI7O0FBRUEsUUFBSUQsS0FBSSxDQUFDcUQsT0FBTCxFQUFKLEVBQW9CO0FBQ2xCakIsT0FBQyxDQUFDa0IsU0FBRixDQUFhdEQsS0FBSSxDQUFDb0QsRUFBTCxFQUFiLEVBQXdCcEQsS0FBSSxDQUFDdUQsTUFBTCxHQUFjSCxFQUFkLEVBQXhCO0FBQ0Q7QUFDRixHQTlEbUMsQ0FnRXBDOzs7QUFDQSxNQUFJSSxLQUFLLEdBQUdsQyxJQUFJLENBQUNrQyxLQUFMLEdBQWFDLFNBQWIsQ0FBdUIsVUFBVWpFLElBQVYsRUFBZ0I7QUFDakQsV0FBTyxDQUFDQSxJQUFJLENBQUNrRSxNQUFMLEdBQWNDLFFBQWQsRUFBRCxJQUE2QixDQUFDbkUsSUFBSSxDQUFDb0UsTUFBTCxHQUFjRCxRQUFkLEVBQXJDLENBRGlELENBQ2M7QUFDaEUsR0FGVyxDQUFaOztBQUdBLE9BQUssSUFBSTFELEdBQUMsR0FBRyxDQUFiLEVBQWdCQSxHQUFDLEdBQUd1RCxLQUFLLENBQUNSLE1BQTFCLEVBQWtDL0MsR0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJVCxJQUFJLEdBQUdnRSxLQUFLLENBQUN2RCxHQUFELENBQWhCO0FBRUFtQyxLQUFDLENBQUN5QixPQUFGLENBQVdyRSxJQUFJLENBQUNrRSxNQUFMLEdBQWNOLEVBQWQsRUFBWCxFQUErQjVELElBQUksQ0FBQ29FLE1BQUwsR0FBY1IsRUFBZCxFQUEvQixFQUFtRDtBQUNqRFUsWUFBTSxFQUFFdkMsTUFBTSxDQUFFL0IsSUFBRixFQUFReUIsT0FBTyxDQUFDMUIsTUFBaEIsQ0FEbUM7QUFFakR3RSxZQUFNLEVBQUV4QyxNQUFNLENBQUUvQixJQUFGLEVBQVF5QixPQUFPLENBQUN4QixVQUFoQixDQUZtQztBQUdqRGtELFVBQUksRUFBRW5ELElBQUksQ0FBQzRELEVBQUw7QUFIMkMsS0FBbkQsRUFJRzVELElBQUksQ0FBQzRELEVBQUwsRUFKSCxFQUhxQyxDQVNyQztBQUNEOztBQUVEckMsT0FBSyxDQUFDSyxNQUFOLENBQWNnQixDQUFkO0FBRUEsTUFBSTRCLFFBQVEsR0FBRzVCLENBQUMsQ0FBQ1csS0FBRixFQUFmOztBQUNBLE9BQUssSUFBSTlDLEdBQUMsR0FBRyxDQUFiLEVBQWdCQSxHQUFDLEdBQUcrRCxRQUFRLENBQUNoQixNQUE3QixFQUFxQy9DLEdBQUMsRUFBdEMsRUFBMEM7QUFDeEMsUUFBSW1ELEVBQUUsR0FBR1ksUUFBUSxDQUFDL0QsR0FBRCxDQUFqQjtBQUNBLFFBQUlnRSxDQUFDLEdBQUc3QixDQUFDLENBQUNwQyxJQUFGLENBQVFvRCxFQUFSLENBQVI7QUFFQS9CLE1BQUUsQ0FBQzZDLGNBQUgsQ0FBa0JkLEVBQWxCLEVBQXNCZSxPQUF0QixHQUFnQ3BELEtBQWhDLEdBQXdDa0QsQ0FBeEM7QUFDRDs7QUFFRCxNQUFJRyxPQUFKOztBQUVBLE1BQUluRCxPQUFPLENBQUNiLFdBQVosRUFBeUI7QUFDdkJnRSxXQUFPLEdBQUc7QUFBRXhDLFFBQUUsRUFBRXlDLFFBQU47QUFBZ0JuQyxRQUFFLEVBQUUsQ0FBQ21DLFFBQXJCO0FBQStCeEMsUUFBRSxFQUFFd0MsUUFBbkM7QUFBNkNsQyxRQUFFLEVBQUUsQ0FBQ2tDO0FBQWxELEtBQVY7QUFDQXRCLFNBQUssQ0FBQ25FLE9BQU4sQ0FBYyxVQUFVb0IsSUFBVixFQUFnQjtBQUM1QixVQUFJc0UsTUFBTSxHQUFHdEUsSUFBSSxDQUFDbUUsT0FBTCxHQUFlcEQsS0FBNUI7QUFFQXFELGFBQU8sQ0FBQ3hDLEVBQVIsR0FBYTJDLElBQUksQ0FBQ0MsR0FBTCxDQUFVSixPQUFPLENBQUN4QyxFQUFsQixFQUFzQjBDLE1BQU0sQ0FBQ0csQ0FBN0IsQ0FBYjtBQUNBTCxhQUFPLENBQUNsQyxFQUFSLEdBQWFxQyxJQUFJLENBQUNHLEdBQUwsQ0FBVU4sT0FBTyxDQUFDbEMsRUFBbEIsRUFBc0JvQyxNQUFNLENBQUNHLENBQTdCLENBQWI7QUFFQUwsYUFBTyxDQUFDdkMsRUFBUixHQUFhMEMsSUFBSSxDQUFDQyxHQUFMLENBQVVKLE9BQU8sQ0FBQ3ZDLEVBQWxCLEVBQXNCeUMsTUFBTSxDQUFDSyxDQUE3QixDQUFiO0FBQ0FQLGFBQU8sQ0FBQ2pDLEVBQVIsR0FBYW9DLElBQUksQ0FBQ0csR0FBTCxDQUFVTixPQUFPLENBQUNqQyxFQUFsQixFQUFzQm1DLE1BQU0sQ0FBQ0ssQ0FBN0IsQ0FBYjtBQUNELEtBUkQ7QUFVQVAsV0FBTyxDQUFDdEMsQ0FBUixHQUFZc0MsT0FBTyxDQUFDbEMsRUFBUixHQUFha0MsT0FBTyxDQUFDeEMsRUFBakM7QUFDQXdDLFdBQU8sQ0FBQ3BDLENBQVIsR0FBWW9DLE9BQU8sQ0FBQ2pDLEVBQVIsR0FBYWlDLE9BQU8sQ0FBQ3ZDLEVBQWpDO0FBQ0QsR0FkRCxNQWNPO0FBQ0x1QyxXQUFPLEdBQUd6QyxFQUFWO0FBQ0Q7O0FBRUQsTUFBSWlELFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVDLENBQVYsRUFBYTtBQUM5QixRQUFJNUQsT0FBTyxDQUFDYixXQUFaLEVBQXlCO0FBQ3ZCLFVBQUkwRSxJQUFJLEdBQUdWLE9BQU8sQ0FBQ3RDLENBQVIsS0FBYyxDQUFkLEdBQWtCLENBQWxCLEdBQXNCLENBQUMrQyxDQUFDLENBQUNKLENBQUYsR0FBTUwsT0FBTyxDQUFDeEMsRUFBZixJQUFxQndDLE9BQU8sQ0FBQ3RDLENBQTlEO0FBQ0EsVUFBSWlELElBQUksR0FBR1gsT0FBTyxDQUFDcEMsQ0FBUixLQUFjLENBQWQsR0FBa0IsQ0FBbEIsR0FBc0IsQ0FBQzZDLENBQUMsQ0FBQ0YsQ0FBRixHQUFNUCxPQUFPLENBQUN2QyxFQUFmLElBQXFCdUMsT0FBTyxDQUFDcEMsQ0FBOUQ7QUFFQSxhQUFPO0FBQ0x5QyxTQUFDLEVBQUU5QyxFQUFFLENBQUNDLEVBQUgsR0FBUWtELElBQUksR0FBR25ELEVBQUUsQ0FBQ0csQ0FEaEI7QUFFTDZDLFNBQUMsRUFBRWhELEVBQUUsQ0FBQ0UsRUFBSCxHQUFRa0QsSUFBSSxHQUFHcEQsRUFBRSxDQUFDSztBQUZoQixPQUFQO0FBSUQsS0FSRCxNQVFPO0FBQ0wsYUFBTzZDLENBQVA7QUFDRDtBQUNGLEdBWkQ7O0FBY0E5QixPQUFLLENBQUNpQyxlQUFOLENBQXNCNUQsTUFBdEIsRUFBOEJILE9BQTlCLEVBQXVDLFVBQVVPLEdBQVYsRUFBZTtBQUNwREEsT0FBRyxHQUFHLFFBQU9BLEdBQVAsTUFBZSxRQUFmLEdBQTBCQSxHQUExQixHQUFnQyxJQUF0QztBQUNBLFFBQUk4QyxNQUFNLEdBQUc5QyxHQUFHLENBQUMyQyxPQUFKLEdBQWNwRCxLQUEzQjtBQUVBLFdBQU82RCxZQUFZLENBQUM7QUFDbEJILE9BQUMsRUFBRUgsTUFBTSxDQUFDRyxDQURRO0FBRWxCRSxPQUFDLEVBQUVMLE1BQU0sQ0FBQ0s7QUFGUSxLQUFELENBQW5CO0FBSUQsR0FSRDtBQVVBLFNBQU8sSUFBUCxDQXRJb0MsQ0FzSXZCO0FBQ2QsQ0F2SUQ7O0FBeUlBdEcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCMEMsV0FBakIsQyIsImZpbGUiOiJjeXRvc2NhcGUtZGFncmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC5qc1wiKTtcbiIsIi8qXG5Db3B5cmlnaHQgKGMpIDIwMTItMjAxNCBDaHJpcyBQZXR0aXR0XG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cblRIRSBTT0ZUV0FSRS5cbiovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBncmFwaGxpYjogcmVxdWlyZShcIi4vbGliL2dyYXBobGliXCIpLFxuXG4gIGxheW91dDogcmVxdWlyZShcIi4vbGliL2xheW91dFwiKSxcbiAgZGVidWc6IHJlcXVpcmUoXCIuL2xpYi9kZWJ1Z1wiKSxcbiAgdXRpbDoge1xuICAgIHRpbWU6IHJlcXVpcmUoXCIuL2xpYi91dGlsXCIpLnRpbWUsXG4gICAgbm90aW1lOiByZXF1aXJlKFwiLi9saWIvdXRpbFwiKS5ub3RpbWVcbiAgfSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vbGliL3ZlcnNpb25cIilcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgZ3JlZWR5RkFTID0gcmVxdWlyZShcIi4vZ3JlZWR5LWZhc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICB1bmRvOiB1bmRvXG59O1xuXG5mdW5jdGlvbiBydW4oZykge1xuICB2YXIgZmFzID0gKGcuZ3JhcGgoKS5hY3ljbGljZXIgPT09IFwiZ3JlZWR5XCJcbiAgICA/IGdyZWVkeUZBUyhnLCB3ZWlnaHRGbihnKSlcbiAgICA6IGRmc0ZBUyhnKSk7XG4gIF8uZm9yRWFjaChmYXMsIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgIGxhYmVsLmZvcndhcmROYW1lID0gZS5uYW1lO1xuICAgIGxhYmVsLnJldmVyc2VkID0gdHJ1ZTtcbiAgICBnLnNldEVkZ2UoZS53LCBlLnYsIGxhYmVsLCBfLnVuaXF1ZUlkKFwicmV2XCIpKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gd2VpZ2h0Rm4oZykge1xuICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gZy5lZGdlKGUpLndlaWdodDtcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGRmc0ZBUyhnKSB7XG4gIHZhciBmYXMgPSBbXTtcbiAgdmFyIHN0YWNrID0ge307XG4gIHZhciB2aXNpdGVkID0ge307XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgc3RhY2tbdl0gPSB0cnVlO1xuICAgIF8uZm9yRWFjaChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBpZiAoXy5oYXMoc3RhY2ssIGUudykpIHtcbiAgICAgICAgZmFzLnB1c2goZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZnMoZS53KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWxldGUgc3RhY2tbdl07XG4gIH1cblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBkZnMpO1xuICByZXR1cm4gZmFzO1xufVxuXG5mdW5jdGlvbiB1bmRvKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBsYWJlbCA9IGcuZWRnZShlKTtcbiAgICBpZiAobGFiZWwucmV2ZXJzZWQpIHtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcblxuICAgICAgdmFyIGZvcndhcmROYW1lID0gbGFiZWwuZm9yd2FyZE5hbWU7XG4gICAgICBkZWxldGUgbGFiZWwucmV2ZXJzZWQ7XG4gICAgICBkZWxldGUgbGFiZWwuZm9yd2FyZE5hbWU7XG4gICAgICBnLnNldEVkZ2UoZS53LCBlLnYsIGxhYmVsLCBmb3J3YXJkTmFtZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZEJvcmRlclNlZ21lbnRzO1xuXG5mdW5jdGlvbiBhZGRCb3JkZXJTZWdtZW50cyhnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGRmcyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgbm9kZS5ib3JkZXJMZWZ0ID0gW107XG4gICAgICBub2RlLmJvcmRlclJpZ2h0ID0gW107XG4gICAgICBmb3IgKHZhciByYW5rID0gbm9kZS5taW5SYW5rLCBtYXhSYW5rID0gbm9kZS5tYXhSYW5rICsgMTtcbiAgICAgICAgcmFuayA8IG1heFJhbms7XG4gICAgICAgICsrcmFuaykge1xuICAgICAgICBhZGRCb3JkZXJOb2RlKGcsIFwiYm9yZGVyTGVmdFwiLCBcIl9ibFwiLCB2LCBub2RlLCByYW5rKTtcbiAgICAgICAgYWRkQm9yZGVyTm9kZShnLCBcImJvcmRlclJpZ2h0XCIsIFwiX2JyXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGRmcyk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJvcCwgcHJlZml4LCBzZywgc2dOb2RlLCByYW5rKSB7XG4gIHZhciBsYWJlbCA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFuazogcmFuaywgYm9yZGVyVHlwZTogcHJvcCB9O1xuICB2YXIgcHJldiA9IHNnTm9kZVtwcm9wXVtyYW5rIC0gMV07XG4gIHZhciBjdXJyID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJib3JkZXJcIiwgbGFiZWwsIHByZWZpeCk7XG4gIHNnTm9kZVtwcm9wXVtyYW5rXSA9IGN1cnI7XG4gIGcuc2V0UGFyZW50KGN1cnIsIHNnKTtcbiAgaWYgKHByZXYpIHtcbiAgICBnLnNldEVkZ2UocHJldiwgY3VyciwgeyB3ZWlnaHQ6IDEgfSk7XG4gIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkanVzdDogYWRqdXN0LFxuICB1bmRvOiB1bmRvXG59O1xuXG5mdW5jdGlvbiBhZGp1c3QoZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImxyXCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgc3dhcFdpZHRoSGVpZ2h0KGcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImJ0XCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgcmV2ZXJzZVkoZyk7XG4gIH1cblxuICBpZiAocmFua0RpciA9PT0gXCJsclwiIHx8IHJhbmtEaXIgPT09IFwicmxcIikge1xuICAgIHN3YXBYWShnKTtcbiAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3dhcFdpZHRoSGVpZ2h0KGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBzd2FwV2lkdGhIZWlnaHRPbmUoZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHsgc3dhcFdpZHRoSGVpZ2h0T25lKGcuZWRnZShlKSk7IH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHRPbmUoYXR0cnMpIHtcbiAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgYXR0cnMud2lkdGggPSBhdHRycy5oZWlnaHQ7XG4gIGF0dHJzLmhlaWdodCA9IHc7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VZKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXZlcnNlWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCByZXZlcnNlWU9uZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieVwiKSkge1xuICAgICAgcmV2ZXJzZVlPbmUoZWRnZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVlPbmUoYXR0cnMpIHtcbiAgYXR0cnMueSA9IC1hdHRycy55O1xufVxuXG5mdW5jdGlvbiBzd2FwWFkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHN3YXBYWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCBzd2FwWFlPbmUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIHN3YXBYWU9uZShlZGdlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwWFlPbmUoYXR0cnMpIHtcbiAgdmFyIHggPSBhdHRycy54O1xuICBhdHRycy54ID0gYXR0cnMueTtcbiAgYXR0cnMueSA9IHg7XG59XG4iLCIvKlxuICogU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCBpbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gQ29ybWVuLCBldCBhbC4sXG4gKiBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0O1xuXG5mdW5jdGlvbiBMaXN0KCkge1xuICB2YXIgc2VudGluZWwgPSB7fTtcbiAgc2VudGluZWwuX25leHQgPSBzZW50aW5lbC5fcHJldiA9IHNlbnRpbmVsO1xuICB0aGlzLl9zZW50aW5lbCA9IHNlbnRpbmVsO1xufVxuXG5MaXN0LnByb3RvdHlwZS5kZXF1ZXVlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgZW50cnkgPSBzZW50aW5lbC5fcHJldjtcbiAgaWYgKGVudHJ5ICE9PSBzZW50aW5lbCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5MaXN0LnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24oZW50cnkpIHtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIGlmIChlbnRyeS5fcHJldiAmJiBlbnRyeS5fbmV4dCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gIH1cbiAgZW50cnkuX25leHQgPSBzZW50aW5lbC5fbmV4dDtcbiAgc2VudGluZWwuX25leHQuX3ByZXYgPSBlbnRyeTtcbiAgc2VudGluZWwuX25leHQgPSBlbnRyeTtcbiAgZW50cnkuX3ByZXYgPSBzZW50aW5lbDtcbn07XG5cbkxpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJzID0gW107XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgY3VyciA9IHNlbnRpbmVsLl9wcmV2O1xuICB3aGlsZSAoY3VyciAhPT0gc2VudGluZWwpIHtcbiAgICBzdHJzLnB1c2goSlNPTi5zdHJpbmdpZnkoY3VyciwgZmlsdGVyT3V0TGlua3MpKTtcbiAgICBjdXJyID0gY3Vyci5fcHJldjtcbiAgfVxuICByZXR1cm4gXCJbXCIgKyBzdHJzLmpvaW4oXCIsIFwiKSArIFwiXVwiO1xufTtcblxuZnVuY3Rpb24gdW5saW5rKGVudHJ5KSB7XG4gIGVudHJ5Ll9wcmV2Ll9uZXh0ID0gZW50cnkuX25leHQ7XG4gIGVudHJ5Ll9uZXh0Ll9wcmV2ID0gZW50cnkuX3ByZXY7XG4gIGRlbGV0ZSBlbnRyeS5fbmV4dDtcbiAgZGVsZXRlIGVudHJ5Ll9wcmV2O1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJPdXRMaW5rcyhrLCB2KSB7XG4gIGlmIChrICE9PSBcIl9uZXh0XCIgJiYgayAhPT0gXCJfcHJldlwiKSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBkZWJ1Z09yZGVyaW5nOiBkZWJ1Z09yZGVyaW5nXG59O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gZGVidWdPcmRlcmluZyhnKSB7XG4gIHZhciBsYXllck1hdHJpeCA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcblxuICB2YXIgaCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlLCBtdWx0aWdyYXBoOiB0cnVlIH0pLnNldEdyYXBoKHt9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaC5zZXROb2RlKHYsIHsgbGFiZWw6IHYgfSk7XG4gICAgaC5zZXRQYXJlbnQodiwgXCJsYXllclwiICsgZy5ub2RlKHYpLnJhbmspO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaC5zZXRFZGdlKGUudiwgZS53LCB7fSwgZS5uYW1lKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyTWF0cml4LCBmdW5jdGlvbihsYXllciwgaSkge1xuICAgIHZhciBsYXllclYgPSBcImxheWVyXCIgKyBpO1xuICAgIGguc2V0Tm9kZShsYXllclYsIHsgcmFuazogXCJzYW1lXCIgfSk7XG4gICAgXy5yZWR1Y2UobGF5ZXIsIGZ1bmN0aW9uKHUsIHYpIHtcbiAgICAgIGguc2V0RWRnZSh1LCB2LCB7IHN0eWxlOiBcImludmlzXCIgfSk7XG4gICAgICByZXR1cm4gdjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGg7XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBncmFwaGxpYjtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBncmFwaGxpYiA9IHJlcXVpcmUoXCJncmFwaGxpYlwiKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWdyYXBobGliKSB7XG4gIGdyYXBobGliID0gd2luZG93LmdyYXBobGliO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdyYXBobGliO1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciBMaXN0ID0gcmVxdWlyZShcIi4vZGF0YS9saXN0XCIpO1xuXG4vKlxuICogQSBncmVlZHkgaGV1cmlzdGljIGZvciBmaW5kaW5nIGEgZmVlZGJhY2sgYXJjIHNldCBmb3IgYSBncmFwaC4gQSBmZWVkYmFja1xuICogYXJjIHNldCBpcyBhIHNldCBvZiBlZGdlcyB0aGF0IGNhbiBiZSByZW1vdmVkIHRvIG1ha2UgYSBncmFwaCBhY3ljbGljLlxuICogVGhlIGFsZ29yaXRobSBjb21lcyBmcm9tOiBQLiBFYWRlcywgWC4gTGluLCBhbmQgVy4gRi4gU215dGgsIFwiQSBmYXN0IGFuZFxuICogZWZmZWN0aXZlIGhldXJpc3RpYyBmb3IgdGhlIGZlZWRiYWNrIGFyYyBzZXQgcHJvYmxlbS5cIiBUaGlzIGltcGxlbWVudGF0aW9uXG4gKiBhZGp1c3RzIHRoYXQgZnJvbSB0aGUgcGFwZXIgdG8gYWxsb3cgZm9yIHdlaWdodGVkIGVkZ2VzLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGdyZWVkeUZBUztcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZOID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZ3JlZWR5RkFTKGcsIHdlaWdodEZuKSB7XG4gIGlmIChnLm5vZGVDb3VudCgpIDw9IDEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIHN0YXRlID0gYnVpbGRTdGF0ZShnLCB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GTik7XG4gIHZhciByZXN1bHRzID0gZG9HcmVlZHlGQVMoc3RhdGUuZ3JhcGgsIHN0YXRlLmJ1Y2tldHMsIHN0YXRlLnplcm9JZHgpO1xuXG4gIC8vIEV4cGFuZCBtdWx0aS1lZGdlc1xuICByZXR1cm4gXy5mbGF0dGVuKF8ubWFwKHJlc3VsdHMsIGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gZy5vdXRFZGdlcyhlLnYsIGUudyk7XG4gIH0pLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZG9HcmVlZHlGQVMoZywgYnVja2V0cywgemVyb0lkeCkge1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgc291cmNlcyA9IGJ1Y2tldHNbYnVja2V0cy5sZW5ndGggLSAxXTtcbiAgdmFyIHNpbmtzID0gYnVja2V0c1swXTtcblxuICB2YXIgZW50cnk7XG4gIHdoaWxlIChnLm5vZGVDb3VudCgpKSB7XG4gICAgd2hpbGUgKChlbnRyeSA9IHNpbmtzLmRlcXVldWUoKSkpICAgeyByZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KTsgfVxuICAgIHdoaWxlICgoZW50cnkgPSBzb3VyY2VzLmRlcXVldWUoKSkpIHsgcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSk7IH1cbiAgICBpZiAoZy5ub2RlQ291bnQoKSkge1xuICAgICAgZm9yICh2YXIgaSA9IGJ1Y2tldHMubGVuZ3RoIC0gMjsgaSA+IDA7IC0taSkge1xuICAgICAgICBlbnRyeSA9IGJ1Y2tldHNbaV0uZGVxdWV1ZSgpO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQocmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSwgdHJ1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIGNvbGxlY3RQcmVkZWNlc3NvcnMpIHtcbiAgdmFyIHJlc3VsdHMgPSBjb2xsZWN0UHJlZGVjZXNzb3JzID8gW10gOiB1bmRlZmluZWQ7XG5cbiAgXy5mb3JFYWNoKGcuaW5FZGdlcyhlbnRyeS52KSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ZWlnaHQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgdmFyIHVFbnRyeSA9IGcubm9kZShlZGdlLnYpO1xuXG4gICAgaWYgKGNvbGxlY3RQcmVkZWNlc3NvcnMpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh7IHY6IGVkZ2UudiwgdzogZWRnZS53IH0pO1xuICAgIH1cblxuICAgIHVFbnRyeS5vdXQgLT0gd2VpZ2h0O1xuICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCB1RW50cnkpO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5vdXRFZGdlcyhlbnRyeS52KSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ZWlnaHQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgdmFyIHcgPSBlZGdlLnc7XG4gICAgdmFyIHdFbnRyeSA9IGcubm9kZSh3KTtcbiAgICB3RW50cnlbXCJpblwiXSAtPSB3ZWlnaHQ7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIHdFbnRyeSk7XG4gIH0pO1xuXG4gIGcucmVtb3ZlTm9kZShlbnRyeS52KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gYnVpbGRTdGF0ZShnLCB3ZWlnaHRGbikge1xuICB2YXIgZmFzR3JhcGggPSBuZXcgR3JhcGgoKTtcbiAgdmFyIG1heEluID0gMDtcbiAgdmFyIG1heE91dCA9IDA7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGZhc0dyYXBoLnNldE5vZGUodiwgeyB2OiB2LCBcImluXCI6IDAsIG91dDogMCB9KTtcbiAgfSk7XG5cbiAgLy8gQWdncmVnYXRlIHdlaWdodHMgb24gbm9kZXMsIGJ1dCBhbHNvIHN1bSB0aGUgd2VpZ2h0cyBhY3Jvc3MgbXVsdGktZWRnZXNcbiAgLy8gaW50byBhIHNpbmdsZSBlZGdlIGZvciB0aGUgZmFzR3JhcGguXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgcHJldldlaWdodCA9IGZhc0dyYXBoLmVkZ2UoZS52LCBlLncpIHx8IDA7XG4gICAgdmFyIHdlaWdodCA9IHdlaWdodEZuKGUpO1xuICAgIHZhciBlZGdlV2VpZ2h0ID0gcHJldldlaWdodCArIHdlaWdodDtcbiAgICBmYXNHcmFwaC5zZXRFZGdlKGUudiwgZS53LCBlZGdlV2VpZ2h0KTtcbiAgICBtYXhPdXQgPSBNYXRoLm1heChtYXhPdXQsIGZhc0dyYXBoLm5vZGUoZS52KS5vdXQgKz0gd2VpZ2h0KTtcbiAgICBtYXhJbiAgPSBNYXRoLm1heChtYXhJbiwgIGZhc0dyYXBoLm5vZGUoZS53KVtcImluXCJdICArPSB3ZWlnaHQpO1xuICB9KTtcblxuICB2YXIgYnVja2V0cyA9IF8ucmFuZ2UobWF4T3V0ICsgbWF4SW4gKyAzKS5tYXAoZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgTGlzdCgpOyB9KTtcbiAgdmFyIHplcm9JZHggPSBtYXhJbiArIDE7XG5cbiAgXy5mb3JFYWNoKGZhc0dyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgZmFzR3JhcGgubm9kZSh2KSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IGdyYXBoOiBmYXNHcmFwaCwgYnVja2V0czogYnVja2V0cywgemVyb0lkeDogemVyb0lkeCB9O1xufVxuXG5mdW5jdGlvbiBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgZW50cnkpIHtcbiAgaWYgKCFlbnRyeS5vdXQpIHtcbiAgICBidWNrZXRzWzBdLmVucXVldWUoZW50cnkpO1xuICB9IGVsc2UgaWYgKCFlbnRyeVtcImluXCJdKSB7XG4gICAgYnVja2V0c1tidWNrZXRzLmxlbmd0aCAtIDFdLmVucXVldWUoZW50cnkpO1xuICB9IGVsc2Uge1xuICAgIGJ1Y2tldHNbZW50cnkub3V0IC0gZW50cnlbXCJpblwiXSArIHplcm9JZHhdLmVucXVldWUoZW50cnkpO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgYWN5Y2xpYyA9IHJlcXVpcmUoXCIuL2FjeWNsaWNcIik7XG52YXIgbm9ybWFsaXplID0gcmVxdWlyZShcIi4vbm9ybWFsaXplXCIpO1xudmFyIHJhbmsgPSByZXF1aXJlKFwiLi9yYW5rXCIpO1xudmFyIG5vcm1hbGl6ZVJhbmtzID0gcmVxdWlyZShcIi4vdXRpbFwiKS5ub3JtYWxpemVSYW5rcztcbnZhciBwYXJlbnREdW1teUNoYWlucyA9IHJlcXVpcmUoXCIuL3BhcmVudC1kdW1teS1jaGFpbnNcIik7XG52YXIgcmVtb3ZlRW1wdHlSYW5rcyA9IHJlcXVpcmUoXCIuL3V0aWxcIikucmVtb3ZlRW1wdHlSYW5rcztcbnZhciBuZXN0aW5nR3JhcGggPSByZXF1aXJlKFwiLi9uZXN0aW5nLWdyYXBoXCIpO1xudmFyIGFkZEJvcmRlclNlZ21lbnRzID0gcmVxdWlyZShcIi4vYWRkLWJvcmRlci1zZWdtZW50c1wiKTtcbnZhciBjb29yZGluYXRlU3lzdGVtID0gcmVxdWlyZShcIi4vY29vcmRpbmF0ZS1zeXN0ZW1cIik7XG52YXIgb3JkZXIgPSByZXF1aXJlKFwiLi9vcmRlclwiKTtcbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoXCIuL3Bvc2l0aW9uXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0gbGF5b3V0O1xuXG5mdW5jdGlvbiBsYXlvdXQoZywgb3B0cykge1xuICB2YXIgdGltZSA9IG9wdHMgJiYgb3B0cy5kZWJ1Z1RpbWluZyA/IHV0aWwudGltZSA6IHV0aWwubm90aW1lO1xuICB0aW1lKFwibGF5b3V0XCIsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsYXlvdXRHcmFwaCA9IFxuICAgICAgdGltZShcIiAgYnVpbGRMYXlvdXRHcmFwaFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGJ1aWxkTGF5b3V0R3JhcGgoZyk7IH0pO1xuICAgIHRpbWUoXCIgIHJ1bkxheW91dFwiLCAgICAgICAgZnVuY3Rpb24oKSB7IHJ1bkxheW91dChsYXlvdXRHcmFwaCwgdGltZSk7IH0pO1xuICAgIHRpbWUoXCIgIHVwZGF0ZUlucHV0R3JhcGhcIiwgZnVuY3Rpb24oKSB7IHVwZGF0ZUlucHV0R3JhcGgoZywgbGF5b3V0R3JhcGgpOyB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkxheW91dChnLCB0aW1lKSB7XG4gIHRpbWUoXCIgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVsc1wiLCBmdW5jdGlvbigpIHsgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlU2VsZkVkZ2VzXCIsICAgICAgICBmdW5jdGlvbigpIHsgcmVtb3ZlU2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhY3ljbGljXCIsICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBhY3ljbGljLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgbmVzdGluZ0dyYXBoLnJ1blwiLCAgICAgICBmdW5jdGlvbigpIHsgbmVzdGluZ0dyYXBoLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmFua1wiLCAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmFuayh1dGlsLmFzTm9uQ29tcG91bmRHcmFwaChnKSk7IH0pO1xuICB0aW1lKFwiICAgIGluamVjdEVkZ2VMYWJlbFByb3hpZXNcIiwgZnVuY3Rpb24oKSB7IGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZUVtcHR5UmFua3NcIiwgICAgICAgZnVuY3Rpb24oKSB7IHJlbW92ZUVtcHR5UmFua3MoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwXCIsICAgZnVuY3Rpb24oKSB7IG5lc3RpbmdHcmFwaC5jbGVhbnVwKGcpOyB9KTtcbiAgdGltZShcIiAgICBub3JtYWxpemVSYW5rc1wiLCAgICAgICAgIGZ1bmN0aW9uKCkgeyBub3JtYWxpemVSYW5rcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYXNzaWduUmFua01pbk1heFwiLCAgICAgICBmdW5jdGlvbigpIHsgYXNzaWduUmFua01pbk1heChnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllc1wiLCBmdW5jdGlvbigpIHsgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplLnJ1blwiLCAgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcGFyZW50RHVtbXlDaGFpbnNcIiwgICAgICBmdW5jdGlvbigpIHsgcGFyZW50RHVtbXlDaGFpbnMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFkZEJvcmRlclNlZ21lbnRzXCIsICAgICAgZnVuY3Rpb24oKSB7IGFkZEJvcmRlclNlZ21lbnRzKGcpOyB9KTtcbiAgdGltZShcIiAgICBvcmRlclwiLCAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBvcmRlcihnKTsgfSk7XG4gIHRpbWUoXCIgICAgaW5zZXJ0U2VsZkVkZ2VzXCIsICAgICAgICBmdW5jdGlvbigpIHsgaW5zZXJ0U2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhZGp1c3RDb29yZGluYXRlU3lzdGVtXCIsIGZ1bmN0aW9uKCkgeyBjb29yZGluYXRlU3lzdGVtLmFkanVzdChnKTsgfSk7XG4gIHRpbWUoXCIgICAgcG9zaXRpb25cIiwgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcG9zaXRpb24oZyk7IH0pO1xuICB0aW1lKFwiICAgIHBvc2l0aW9uU2VsZkVkZ2VzXCIsICAgICAgZnVuY3Rpb24oKSB7IHBvc2l0aW9uU2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVCb3JkZXJOb2Rlc1wiLCAgICAgIGZ1bmN0aW9uKCkgeyByZW1vdmVCb3JkZXJOb2RlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplLnVuZG9cIiwgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplLnVuZG8oZyk7IH0pO1xuICB0aW1lKFwiICAgIGZpeHVwRWRnZUxhYmVsQ29vcmRzXCIsICAgZnVuY3Rpb24oKSB7IGZpeHVwRWRnZUxhYmVsQ29vcmRzKGcpOyB9KTtcbiAgdGltZShcIiAgICB1bmRvQ29vcmRpbmF0ZVN5c3RlbVwiLCAgIGZ1bmN0aW9uKCkgeyBjb29yZGluYXRlU3lzdGVtLnVuZG8oZyk7IH0pO1xuICB0aW1lKFwiICAgIHRyYW5zbGF0ZUdyYXBoXCIsICAgICAgICAgZnVuY3Rpb24oKSB7IHRyYW5zbGF0ZUdyYXBoKGcpOyB9KTtcbiAgdGltZShcIiAgICBhc3NpZ25Ob2RlSW50ZXJzZWN0c1wiLCAgIGZ1bmN0aW9uKCkgeyBhc3NpZ25Ob2RlSW50ZXJzZWN0cyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmV2ZXJzZVBvaW50c1wiLCAgICAgICAgICBmdW5jdGlvbigpIHsgcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFjeWNsaWMudW5kb1wiLCAgICAgICAgICAgZnVuY3Rpb24oKSB7IGFjeWNsaWMudW5kbyhnKTsgfSk7XG59XG5cbi8qXG4gKiBDb3BpZXMgZmluYWwgbGF5b3V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGxheW91dCBncmFwaCBiYWNrIHRvIHRoZSBpbnB1dFxuICogZ3JhcGguIFRoaXMgcHJvY2VzcyBvbmx5IGNvcGllcyB3aGl0ZWxpc3RlZCBhdHRyaWJ1dGVzIGZyb20gdGhlIGxheW91dCBncmFwaFxuICogdG8gdGhlIGlucHV0IGdyYXBoLCBzbyBpdCBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiB1cGRhdGVJbnB1dEdyYXBoKGlucHV0R3JhcGgsIGxheW91dEdyYXBoKSB7XG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGgubm9kZSh2KTtcbiAgICB2YXIgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5ub2RlKHYpO1xuXG4gICAgaWYgKGlucHV0TGFiZWwpIHtcbiAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuXG4gICAgICBpZiAobGF5b3V0R3JhcGguY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICAgIGlucHV0TGFiZWwud2lkdGggPSBsYXlvdXRMYWJlbC53aWR0aDtcbiAgICAgICAgaW5wdXRMYWJlbC5oZWlnaHQgPSBsYXlvdXRMYWJlbC5oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGlucHV0TGFiZWwgPSBpbnB1dEdyYXBoLmVkZ2UoZSk7XG4gICAgdmFyIGxheW91dExhYmVsID0gbGF5b3V0R3JhcGguZWRnZShlKTtcblxuICAgIGlucHV0TGFiZWwucG9pbnRzID0gbGF5b3V0TGFiZWwucG9pbnRzO1xuICAgIGlmIChfLmhhcyhsYXlvdXRMYWJlbCwgXCJ4XCIpKSB7XG4gICAgICBpbnB1dExhYmVsLnggPSBsYXlvdXRMYWJlbC54O1xuICAgICAgaW5wdXRMYWJlbC55ID0gbGF5b3V0TGFiZWwueTtcbiAgICB9XG4gIH0pO1xuXG4gIGlucHV0R3JhcGguZ3JhcGgoKS53aWR0aCA9IGxheW91dEdyYXBoLmdyYXBoKCkud2lkdGg7XG4gIGlucHV0R3JhcGguZ3JhcGgoKS5oZWlnaHQgPSBsYXlvdXRHcmFwaC5ncmFwaCgpLmhlaWdodDtcbn1cblxudmFyIGdyYXBoTnVtQXR0cnMgPSBbXCJub2Rlc2VwXCIsIFwiZWRnZXNlcFwiLCBcInJhbmtzZXBcIiwgXCJtYXJnaW54XCIsIFwibWFyZ2lueVwiXTtcbnZhciBncmFwaERlZmF1bHRzID0geyByYW5rc2VwOiA1MCwgZWRnZXNlcDogMjAsIG5vZGVzZXA6IDUwLCByYW5rZGlyOiBcInRiXCIgfTtcbnZhciBncmFwaEF0dHJzID0gW1wiYWN5Y2xpY2VyXCIsIFwicmFua2VyXCIsIFwicmFua2RpclwiLCBcImFsaWduXCJdO1xudmFyIG5vZGVOdW1BdHRycyA9IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCJdO1xudmFyIG5vZGVEZWZhdWx0cyA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xudmFyIGVkZ2VOdW1BdHRycyA9IFtcIm1pbmxlblwiLCBcIndlaWdodFwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwibGFiZWxvZmZzZXRcIl07XG52YXIgZWRnZURlZmF1bHRzID0ge1xuICBtaW5sZW46IDEsIHdlaWdodDogMSwgd2lkdGg6IDAsIGhlaWdodDogMCxcbiAgbGFiZWxvZmZzZXQ6IDEwLCBsYWJlbHBvczogXCJyXCJcbn07XG52YXIgZWRnZUF0dHJzID0gW1wibGFiZWxwb3NcIl07XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IGdyYXBoIGZyb20gdGhlIGlucHV0IGdyYXBoLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgbGF5b3V0LlxuICogVGhpcyBwcm9jZXNzIGNvcGllcyBvbmx5IHdoaXRlbGlzdGVkIGF0dHJpYnV0ZXMgZnJvbSB0aGUgaW5wdXQgZ3JhcGggdG8gdGhlXG4gKiBsYXlvdXQgZ3JhcGguIFRodXMgdGhpcyBmdW5jdGlvbiBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiBidWlsZExheW91dEdyYXBoKGlucHV0R3JhcGgpIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoeyBtdWx0aWdyYXBoOiB0cnVlLCBjb21wb3VuZDogdHJ1ZSB9KTtcbiAgdmFyIGdyYXBoID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZ3JhcGgoKSk7XG5cbiAgZy5zZXRHcmFwaChfLm1lcmdlKHt9LFxuICAgIGdyYXBoRGVmYXVsdHMsXG4gICAgc2VsZWN0TnVtYmVyQXR0cnMoZ3JhcGgsIGdyYXBoTnVtQXR0cnMpLFxuICAgIF8ucGljayhncmFwaCwgZ3JhcGhBdHRycykpKTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ub2RlKHYpKTtcbiAgICBnLnNldE5vZGUodiwgXy5kZWZhdWx0cyhzZWxlY3ROdW1iZXJBdHRycyhub2RlLCBub2RlTnVtQXR0cnMpLCBub2RlRGVmYXVsdHMpKTtcbiAgICBnLnNldFBhcmVudCh2LCBpbnB1dEdyYXBoLnBhcmVudCh2KSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLmVkZ2UoZSkpO1xuICAgIGcuc2V0RWRnZShlLCBfLm1lcmdlKHt9LFxuICAgICAgZWRnZURlZmF1bHRzLFxuICAgICAgc2VsZWN0TnVtYmVyQXR0cnMoZWRnZSwgZWRnZU51bUF0dHJzKSxcbiAgICAgIF8ucGljayhlZGdlLCBlZGdlQXR0cnMpKSk7XG4gIH0pO1xuXG4gIHJldHVybiBnO1xufVxuXG4vKlxuICogVGhpcyBpZGVhIGNvbWVzIGZyb20gdGhlIEdhbnNuZXIgcGFwZXI6IHRvIGFjY291bnQgZm9yIGVkZ2UgbGFiZWxzIGluIG91clxuICogbGF5b3V0IHdlIHNwbGl0IGVhY2ggcmFuayBpbiBoYWxmIGJ5IGRvdWJsaW5nIG1pbmxlbiBhbmQgaGFsdmluZyByYW5rc2VwLlxuICogVGhlbiB3ZSBjYW4gcGxhY2UgbGFiZWxzIGF0IHRoZXNlIG1pZC1wb2ludHMgYmV0d2VlbiBub2Rlcy5cbiAqXG4gKiBXZSBhbHNvIGFkZCBzb21lIG1pbmltYWwgcGFkZGluZyB0byB0aGUgd2lkdGggdG8gcHVzaCB0aGUgbGFiZWwgZm9yIHRoZSBlZGdlXG4gKiBhd2F5IGZyb20gdGhlIGVkZ2UgaXRzZWxmIGEgYml0LlxuICovXG5mdW5jdGlvbiBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzKGcpIHtcbiAgdmFyIGdyYXBoID0gZy5ncmFwaCgpO1xuICBncmFwaC5yYW5rc2VwIC89IDI7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBlZGdlLm1pbmxlbiAqPSAyO1xuICAgIGlmIChlZGdlLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkgIT09IFwiY1wiKSB7XG4gICAgICBpZiAoZ3JhcGgucmFua2RpciA9PT0gXCJUQlwiIHx8IGdyYXBoLnJhbmtkaXIgPT09IFwiQlRcIikge1xuICAgICAgICBlZGdlLndpZHRoICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlLmhlaWdodCArPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qXG4gKiBDcmVhdGVzIHRlbXBvcmFyeSBkdW1teSBub2RlcyB0aGF0IGNhcHR1cmUgdGhlIHJhbmsgaW4gd2hpY2ggZWFjaCBlZGdlJ3NcbiAqIGxhYmVsIGlzIGdvaW5nIHRvLCBpZiBpdCBoYXMgb25lIG9mIG5vbi16ZXJvIHdpZHRoIGFuZCBoZWlnaHQuIFdlIGRvIHRoaXNcbiAqIHNvIHRoYXQgd2UgY2FuIHNhZmVseSByZW1vdmUgZW1wdHkgcmFua3Mgd2hpbGUgcHJlc2VydmluZyBiYWxhbmNlIGZvciB0aGVcbiAqIGxhYmVsJ3MgcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2Uud2lkdGggJiYgZWRnZS5oZWlnaHQpIHtcbiAgICAgIHZhciB2ID0gZy5ub2RlKGUudik7XG4gICAgICB2YXIgdyA9IGcubm9kZShlLncpO1xuICAgICAgdmFyIGxhYmVsID0geyByYW5rOiAody5yYW5rIC0gdi5yYW5rKSAvIDIgKyB2LnJhbmssIGU6IGUgfTtcbiAgICAgIHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwiZWRnZS1wcm94eVwiLCBsYWJlbCwgXCJfZXBcIik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduUmFua01pbk1heChnKSB7XG4gIHZhciBtYXhSYW5rID0gMDtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmJvcmRlclRvcCkge1xuICAgICAgbm9kZS5taW5SYW5rID0gZy5ub2RlKG5vZGUuYm9yZGVyVG9wKS5yYW5rO1xuICAgICAgbm9kZS5tYXhSYW5rID0gZy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKS5yYW5rO1xuICAgICAgbWF4UmFuayA9IF8ubWF4KG1heFJhbmssIG5vZGUubWF4UmFuayk7XG4gICAgfVxuICB9KTtcbiAgZy5ncmFwaCgpLm1heFJhbmsgPSBtYXhSYW5rO1xufVxuXG5mdW5jdGlvbiByZW1vdmVFZGdlTGFiZWxQcm94aWVzKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmR1bW15ID09PSBcImVkZ2UtcHJveHlcIikge1xuICAgICAgZy5lZGdlKG5vZGUuZSkubGFiZWxSYW5rID0gbm9kZS5yYW5rO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUdyYXBoKGcpIHtcbiAgdmFyIG1pblggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhYID0gMDtcbiAgdmFyIG1pblkgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhZID0gMDtcbiAgdmFyIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCk7XG4gIHZhciBtYXJnaW5YID0gZ3JhcGhMYWJlbC5tYXJnaW54IHx8IDA7XG4gIHZhciBtYXJnaW5ZID0gZ3JhcGhMYWJlbC5tYXJnaW55IHx8IDA7XG5cbiAgZnVuY3Rpb24gZ2V0RXh0cmVtZXMoYXR0cnMpIHtcbiAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgdmFyIHkgPSBhdHRycy55O1xuICAgIHZhciB3ID0gYXR0cnMud2lkdGg7XG4gICAgdmFyIGggPSBhdHRycy5oZWlnaHQ7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHggLSB3IC8gMik7XG4gICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHggKyB3IC8gMik7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkgLSBoIC8gMik7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkgKyBoIC8gMik7XG4gIH1cblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IGdldEV4dHJlbWVzKGcubm9kZSh2KSk7IH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkge1xuICAgICAgZ2V0RXh0cmVtZXMoZWRnZSk7XG4gICAgfVxuICB9KTtcblxuICBtaW5YIC09IG1hcmdpblg7XG4gIG1pblkgLT0gbWFyZ2luWTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgbm9kZS54IC09IG1pblg7XG4gICAgbm9kZS55IC09IG1pblk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIGZ1bmN0aW9uKHApIHtcbiAgICAgIHAueCAtPSBtaW5YO1xuICAgICAgcC55IC09IG1pblk7XG4gICAgfSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkgeyBlZGdlLnggLT0gbWluWDsgfVxuICAgIGlmIChfLmhhcyhlZGdlLCBcInlcIikpIHsgZWRnZS55IC09IG1pblk7IH1cbiAgfSk7XG5cbiAgZ3JhcGhMYWJlbC53aWR0aCA9IG1heFggLSBtaW5YICsgbWFyZ2luWDtcbiAgZ3JhcGhMYWJlbC5oZWlnaHQgPSBtYXhZIC0gbWluWSArIG1hcmdpblk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbk5vZGVJbnRlcnNlY3RzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIHZhciBub2RlViA9IGcubm9kZShlLnYpO1xuICAgIHZhciBub2RlVyA9IGcubm9kZShlLncpO1xuICAgIHZhciBwMSwgcDI7XG4gICAgaWYgKCFlZGdlLnBvaW50cykge1xuICAgICAgZWRnZS5wb2ludHMgPSBbXTtcbiAgICAgIHAxID0gbm9kZVc7XG4gICAgICBwMiA9IG5vZGVWO1xuICAgIH0gZWxzZSB7XG4gICAgICBwMSA9IGVkZ2UucG9pbnRzWzBdO1xuICAgICAgcDIgPSBlZGdlLnBvaW50c1tlZGdlLnBvaW50cy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgZWRnZS5wb2ludHMudW5zaGlmdCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVYsIHAxKSk7XG4gICAgZWRnZS5wb2ludHMucHVzaCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVcsIHAyKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaXh1cEVkZ2VMYWJlbENvb3JkcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7XG4gICAgICBpZiAoZWRnZS5sYWJlbHBvcyA9PT0gXCJsXCIgfHwgZWRnZS5sYWJlbHBvcyA9PT0gXCJyXCIpIHtcbiAgICAgICAgZWRnZS53aWR0aCAtPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc3dpdGNoIChlZGdlLmxhYmVscG9zKSB7XG4gICAgICBjYXNlIFwibFwiOiBlZGdlLnggLT0gZWRnZS53aWR0aCAvIDIgKyBlZGdlLmxhYmVsb2Zmc2V0OyBicmVhaztcbiAgICAgIGNhc2UgXCJyXCI6IGVkZ2UueCArPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VQb2ludHNGb3JSZXZlcnNlZEVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLnJldmVyc2VkKSB7XG4gICAgICBlZGdlLnBvaW50cy5yZXZlcnNlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQm9yZGVyTm9kZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGcuY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgIHZhciB0ID0gZy5ub2RlKG5vZGUuYm9yZGVyVG9wKTtcbiAgICAgIHZhciBiID0gZy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKTtcbiAgICAgIHZhciBsID0gZy5ub2RlKF8ubGFzdChub2RlLmJvcmRlckxlZnQpKTtcbiAgICAgIHZhciByID0gZy5ub2RlKF8ubGFzdChub2RlLmJvcmRlclJpZ2h0KSk7XG5cbiAgICAgIG5vZGUud2lkdGggPSBNYXRoLmFicyhyLnggLSBsLngpO1xuICAgICAgbm9kZS5oZWlnaHQgPSBNYXRoLmFicyhiLnkgLSB0LnkpO1xuICAgICAgbm9kZS54ID0gbC54ICsgbm9kZS53aWR0aCAvIDI7XG4gICAgICBub2RlLnkgPSB0LnkgKyBub2RlLmhlaWdodCAvIDI7XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGcubm9kZSh2KS5kdW1teSA9PT0gXCJib3JkZXJcIikge1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNlbGZFZGdlcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoZS52ID09PSBlLncpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKGUudik7XG4gICAgICBpZiAoIW5vZGUuc2VsZkVkZ2VzKSB7XG4gICAgICAgIG5vZGUuc2VsZkVkZ2VzID0gW107XG4gICAgICB9XG4gICAgICBub2RlLnNlbGZFZGdlcy5wdXNoKHsgZTogZSwgbGFiZWw6IGcuZWRnZShlKSB9KTtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTZWxmRWRnZXMoZykge1xuICB2YXIgbGF5ZXJzID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICBfLmZvckVhY2gobGF5ZXJzLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBvcmRlclNoaWZ0ID0gMDtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgbm9kZS5vcmRlciA9IGkgKyBvcmRlclNoaWZ0O1xuICAgICAgXy5mb3JFYWNoKG5vZGUuc2VsZkVkZ2VzLCBmdW5jdGlvbihzZWxmRWRnZSkge1xuICAgICAgICB1dGlsLmFkZER1bW15Tm9kZShnLCBcInNlbGZlZGdlXCIsIHtcbiAgICAgICAgICB3aWR0aDogc2VsZkVkZ2UubGFiZWwud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBzZWxmRWRnZS5sYWJlbC5oZWlnaHQsXG4gICAgICAgICAgcmFuazogbm9kZS5yYW5rLFxuICAgICAgICAgIG9yZGVyOiBpICsgKCsrb3JkZXJTaGlmdCksXG4gICAgICAgICAgZTogc2VsZkVkZ2UuZSxcbiAgICAgICAgICBsYWJlbDogc2VsZkVkZ2UubGFiZWxcbiAgICAgICAgfSwgXCJfc2VcIik7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSBub2RlLnNlbGZFZGdlcztcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uU2VsZkVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmR1bW15ID09PSBcInNlbGZlZGdlXCIpIHtcbiAgICAgIHZhciBzZWxmTm9kZSA9IGcubm9kZShub2RlLmUudik7XG4gICAgICB2YXIgeCA9IHNlbGZOb2RlLnggKyBzZWxmTm9kZS53aWR0aCAvIDI7XG4gICAgICB2YXIgeSA9IHNlbGZOb2RlLnk7XG4gICAgICB2YXIgZHggPSBub2RlLnggLSB4O1xuICAgICAgdmFyIGR5ID0gc2VsZk5vZGUuaGVpZ2h0IC8gMjtcbiAgICAgIGcuc2V0RWRnZShub2RlLmUsIG5vZGUubGFiZWwpO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgICAgbm9kZS5sYWJlbC5wb2ludHMgPSBbXG4gICAgICAgIHsgeDogeCArIDIgKiBkeCAvIDMsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyA1ICogZHggLyA2LCB5OiB5IC0gZHkgfSxcbiAgICAgICAgeyB4OiB4ICsgICAgIGR4ICAgICwgeTogeSB9LFxuICAgICAgICB7IHg6IHggKyA1ICogZHggLyA2LCB5OiB5ICsgZHkgfSxcbiAgICAgICAgeyB4OiB4ICsgMiAqIGR4IC8gMywgeTogeSArIGR5IH1cbiAgICAgIF07XG4gICAgICBub2RlLmxhYmVsLnggPSBub2RlLng7XG4gICAgICBub2RlLmxhYmVsLnkgPSBub2RlLnk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0TnVtYmVyQXR0cnMob2JqLCBhdHRycykge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoXy5waWNrKG9iaiwgYXR0cnMpLCBOdW1iZXIpO1xufVxuXG5mdW5jdGlvbiBjYW5vbmljYWxpemUoYXR0cnMpIHtcbiAgdmFyIG5ld0F0dHJzID0ge307XG4gIF8uZm9yRWFjaChhdHRycywgZnVuY3Rpb24odiwgaykge1xuICAgIG5ld0F0dHJzW2sudG9Mb3dlckNhc2UoKV0gPSB2O1xuICB9KTtcbiAgcmV0dXJuIG5ld0F0dHJzO1xufVxuIiwiLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgbG9kYXNoO1xuXG5pZiAodHlwZW9mIHJlcXVpcmUgPT09IFwiZnVuY3Rpb25cIikge1xuICB0cnkge1xuICAgIGxvZGFzaCA9IHtcbiAgICAgIGNsb25lRGVlcDogcmVxdWlyZShcImxvZGFzaC9jbG9uZURlZXBcIiksXG4gICAgICBjb25zdGFudDogcmVxdWlyZShcImxvZGFzaC9jb25zdGFudFwiKSxcbiAgICAgIGRlZmF1bHRzOiByZXF1aXJlKFwibG9kYXNoL2RlZmF1bHRzXCIpLFxuICAgICAgZWFjaDogcmVxdWlyZShcImxvZGFzaC9lYWNoXCIpLFxuICAgICAgZmlsdGVyOiByZXF1aXJlKFwibG9kYXNoL2ZpbHRlclwiKSxcbiAgICAgIGZpbmQ6IHJlcXVpcmUoXCJsb2Rhc2gvZmluZFwiKSxcbiAgICAgIGZsYXR0ZW46IHJlcXVpcmUoXCJsb2Rhc2gvZmxhdHRlblwiKSxcbiAgICAgIGZvckVhY2g6IHJlcXVpcmUoXCJsb2Rhc2gvZm9yRWFjaFwiKSxcbiAgICAgIGZvckluOiByZXF1aXJlKFwibG9kYXNoL2ZvckluXCIpLFxuICAgICAgaGFzOiAgcmVxdWlyZShcImxvZGFzaC9oYXNcIiksXG4gICAgICBpc1VuZGVmaW5lZDogcmVxdWlyZShcImxvZGFzaC9pc1VuZGVmaW5lZFwiKSxcbiAgICAgIGxhc3Q6IHJlcXVpcmUoXCJsb2Rhc2gvbGFzdFwiKSxcbiAgICAgIG1hcDogcmVxdWlyZShcImxvZGFzaC9tYXBcIiksXG4gICAgICBtYXBWYWx1ZXM6IHJlcXVpcmUoXCJsb2Rhc2gvbWFwVmFsdWVzXCIpLFxuICAgICAgbWF4OiByZXF1aXJlKFwibG9kYXNoL21heFwiKSxcbiAgICAgIG1lcmdlOiByZXF1aXJlKFwibG9kYXNoL21lcmdlXCIpLFxuICAgICAgbWluOiByZXF1aXJlKFwibG9kYXNoL21pblwiKSxcbiAgICAgIG1pbkJ5OiByZXF1aXJlKFwibG9kYXNoL21pbkJ5XCIpLFxuICAgICAgbm93OiByZXF1aXJlKFwibG9kYXNoL25vd1wiKSxcbiAgICAgIHBpY2s6IHJlcXVpcmUoXCJsb2Rhc2gvcGlja1wiKSxcbiAgICAgIHJhbmdlOiByZXF1aXJlKFwibG9kYXNoL3JhbmdlXCIpLFxuICAgICAgcmVkdWNlOiByZXF1aXJlKFwibG9kYXNoL3JlZHVjZVwiKSxcbiAgICAgIHNvcnRCeTogcmVxdWlyZShcImxvZGFzaC9zb3J0QnlcIiksXG4gICAgICB1bmlxdWVJZDogcmVxdWlyZShcImxvZGFzaC91bmlxdWVJZFwiKSxcbiAgICAgIHZhbHVlczogcmVxdWlyZShcImxvZGFzaC92YWx1ZXNcIiksXG4gICAgICB6aXBPYmplY3Q6IHJlcXVpcmUoXCJsb2Rhc2gvemlwT2JqZWN0XCIpLFxuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gIH1cbn1cblxuaWYgKCFsb2Rhc2gpIHtcbiAgbG9kYXNoID0gd2luZG93Ll87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbG9kYXNoO1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgY2xlYW51cDogY2xlYW51cFxufTtcblxuLypcbiAqIEEgbmVzdGluZyBncmFwaCBjcmVhdGVzIGR1bW15IG5vZGVzIGZvciB0aGUgdG9wcyBhbmQgYm90dG9tcyBvZiBzdWJncmFwaHMsXG4gKiBhZGRzIGFwcHJvcHJpYXRlIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBjbHVzdGVyIG5vZGVzIGFyZSBwbGFjZWQgYmV0d2VlblxuICogdGhlc2UgYm91bmRyaWVzLCBhbmQgZW5zdXJlcyB0aGF0IHRoZSBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKlxuICogSW4gYWRkaXRpb24gd2UgZW5zdXJlLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG1pbmxlbiBwcm9wZXJ0eSwgdGhhdCBub2Rlc1xuICogYW5kIHN1YmdyYXBoIGJvcmRlciBub2RlcyB0byBub3QgZW5kIHVwIG9uIHRoZSBzYW1lIHJhbmsuXG4gKlxuICogUHJlY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gTm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBhIG1pbmxlbiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0Y29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKiAgICAyLiBEdW1teSBub2RlcyBhcmUgYWRkZWQgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocy5cbiAqICAgIDMuIFRoZSBtaW5sZW4gYXR0cmlidXRlIGZvciBub2RlcyBpcyBhZGp1c3RlZCB0byBlbnN1cmUgbm9kZXMgZG8gbm90XG4gKiAgICAgICBnZXQgcGxhY2VkIG9uIHRoZSBzYW1lIHJhbmsgYXMgc3ViZ3JhcGggYm9yZGVyIG5vZGVzLlxuICpcbiAqIFRoZSBuZXN0aW5nIGdyYXBoIGlkZWEgY29tZXMgZnJvbSBTYW5kZXIsIFwiTGF5b3V0IG9mIENvbXBvdW5kIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqL1xuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIHJvb3QgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcInJvb3RcIiwge30sIFwiX3Jvb3RcIik7XG4gIHZhciBkZXB0aHMgPSB0cmVlRGVwdGhzKGcpO1xuICB2YXIgaGVpZ2h0ID0gXy5tYXgoXy52YWx1ZXMoZGVwdGhzKSkgLSAxOyAvLyBOb3RlOiBkZXB0aHMgaXMgYW4gT2JqZWN0IG5vdCBhbiBhcnJheVxuICB2YXIgbm9kZVNlcCA9IDIgKiBoZWlnaHQgKyAxO1xuXG4gIGcuZ3JhcGgoKS5uZXN0aW5nUm9vdCA9IHJvb3Q7XG5cbiAgLy8gTXVsdGlwbHkgbWlubGVuIGJ5IG5vZGVTZXAgdG8gYWxpZ24gbm9kZXMgb24gbm9uLWJvcmRlciByYW5rcy5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBnLmVkZ2UoZSkubWlubGVuICo9IG5vZGVTZXA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSBhIHdlaWdodCB0aGF0IGlzIHN1ZmZpY2llbnQgdG8ga2VlcCBzdWJncmFwaHMgdmVydGljYWxseSBjb21wYWN0XG4gIHZhciB3ZWlnaHQgPSBzdW1XZWlnaHRzKGcpICsgMTtcblxuICAvLyBDcmVhdGUgYm9yZGVyIG5vZGVzIGFuZCBsaW5rIHRoZW0gdXBcbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuICB9KTtcblxuICAvLyBTYXZlIHRoZSBtdWx0aXBsaWVyIGZvciBub2RlIGxheWVycyBmb3IgbGF0ZXIgcmVtb3ZhbCBvZiBlbXB0eSBib3JkZXJcbiAgLy8gbGF5ZXJzLlxuICBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3IgPSBub2RlU2VwO1xufVxuXG5mdW5jdGlvbiBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgdikge1xuICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmICh2ICE9PSByb290KSB7XG4gICAgICBnLnNldEVkZ2Uocm9vdCwgdiwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogbm9kZVNlcCB9KTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvcCA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9idFwiKTtcbiAgdmFyIGJvdHRvbSA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9iYlwiKTtcbiAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuXG4gIGcuc2V0UGFyZW50KHRvcCwgdik7XG4gIGxhYmVsLmJvcmRlclRvcCA9IHRvcDtcbiAgZy5zZXRQYXJlbnQoYm90dG9tLCB2KTtcbiAgbGFiZWwuYm9yZGVyQm90dG9tID0gYm90dG9tO1xuXG4gIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuXG4gICAgdmFyIGNoaWxkTm9kZSA9IGcubm9kZShjaGlsZCk7XG4gICAgdmFyIGNoaWxkVG9wID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IGNoaWxkTm9kZS5ib3JkZXJUb3AgOiBjaGlsZDtcbiAgICB2YXIgY2hpbGRCb3R0b20gPSBjaGlsZE5vZGUuYm9yZGVyQm90dG9tID8gY2hpbGROb2RlLmJvcmRlckJvdHRvbSA6IGNoaWxkO1xuICAgIHZhciB0aGlzV2VpZ2h0ID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IHdlaWdodCA6IDIgKiB3ZWlnaHQ7XG4gICAgdmFyIG1pbmxlbiA9IGNoaWxkVG9wICE9PSBjaGlsZEJvdHRvbSA/IDEgOiBoZWlnaHQgLSBkZXB0aHNbdl0gKyAxO1xuXG4gICAgZy5zZXRFZGdlKHRvcCwgY2hpbGRUb3AsIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICB9KTtcblxuICAgIGcuc2V0RWRnZShjaGlsZEJvdHRvbSwgYm90dG9tLCB7XG4gICAgICB3ZWlnaHQ6IHRoaXNXZWlnaHQsXG4gICAgICBtaW5sZW46IG1pbmxlbixcbiAgICAgIG5lc3RpbmdFZGdlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICghZy5wYXJlbnQodikpIHtcbiAgICBnLnNldEVkZ2Uocm9vdCwgdG9wLCB7IHdlaWdodDogMCwgbWlubGVuOiBoZWlnaHQgKyBkZXB0aHNbdl0gfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJlZURlcHRocyhnKSB7XG4gIHZhciBkZXB0aHMgPSB7fTtcbiAgZnVuY3Rpb24gZGZzKHYsIGRlcHRoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIGRmcyhjaGlsZCwgZGVwdGggKyAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBkZXB0aHNbdl0gPSBkZXB0aDtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbih2KSB7IGRmcyh2LCAxKTsgfSk7XG4gIHJldHVybiBkZXB0aHM7XG59XG5cbmZ1bmN0aW9uIHN1bVdlaWdodHMoZykge1xuICByZXR1cm4gXy5yZWR1Y2UoZy5lZGdlcygpLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICByZXR1cm4gYWNjICsgZy5lZGdlKGUpLndlaWdodDtcbiAgfSwgMCk7XG59XG5cbmZ1bmN0aW9uIGNsZWFudXAoZykge1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgZy5yZW1vdmVOb2RlKGdyYXBoTGFiZWwubmVzdGluZ1Jvb3QpO1xuICBkZWxldGUgZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdDtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLm5lc3RpbmdFZGdlKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICB1bmRvOiB1bmRvXG59O1xuXG4vKlxuICogQnJlYWtzIGFueSBsb25nIGVkZ2VzIGluIHRoZSBncmFwaCBpbnRvIHNob3J0IHNlZ21lbnRzIHRoYXQgc3BhbiAxIGxheWVyXG4gKiBlYWNoLiBUaGlzIG9wZXJhdGlvbiBpcyB1bmRvYWJsZSB3aXRoIHRoZSBkZW5vcm1hbGl6ZSBmdW5jdGlvbi5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgaW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBFYWNoIG5vZGUgaW4gdGhlIGdyYXBoIGhhcyBhIFwicmFua1wiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uOlxuICpcbiAqICAgIDEuIEFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggaGF2ZSBhIGxlbmd0aCBvZiAxLlxuICogICAgMi4gRHVtbXkgbm9kZXMgYXJlIGFkZGVkIHdoZXJlIGVkZ2VzIGhhdmUgYmVlbiBzcGxpdCBpbnRvIHNlZ21lbnRzLlxuICogICAgMy4gVGhlIGdyYXBoIGlzIGF1Z21lbnRlZCB3aXRoIGEgXCJkdW1teUNoYWluc1wiIGF0dHJpYnV0ZSB3aGljaCBjb250YWluc1xuICogICAgICAgdGhlIGZpcnN0IGR1bW15IGluIGVhY2ggY2hhaW4gb2YgZHVtbXkgbm9kZXMgcHJvZHVjZWQuXG4gKi9cbmZ1bmN0aW9uIHJ1bihnKSB7XG4gIGcuZ3JhcGgoKS5kdW1teUNoYWlucyA9IFtdO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlZGdlKSB7IG5vcm1hbGl6ZUVkZ2UoZywgZWRnZSk7IH0pO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVFZGdlKGcsIGUpIHtcbiAgdmFyIHYgPSBlLnY7XG4gIHZhciB2UmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICB2YXIgdyA9IGUudztcbiAgdmFyIHdSYW5rID0gZy5ub2RlKHcpLnJhbms7XG4gIHZhciBuYW1lID0gZS5uYW1lO1xuICB2YXIgZWRnZUxhYmVsID0gZy5lZGdlKGUpO1xuICB2YXIgbGFiZWxSYW5rID0gZWRnZUxhYmVsLmxhYmVsUmFuaztcblxuICBpZiAod1JhbmsgPT09IHZSYW5rICsgMSkgcmV0dXJuO1xuXG4gIGcucmVtb3ZlRWRnZShlKTtcblxuICB2YXIgZHVtbXksIGF0dHJzLCBpO1xuICBmb3IgKGkgPSAwLCArK3ZSYW5rOyB2UmFuayA8IHdSYW5rOyArK2ksICsrdlJhbmspIHtcbiAgICBlZGdlTGFiZWwucG9pbnRzID0gW107XG4gICAgYXR0cnMgPSB7XG4gICAgICB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsIGVkZ2VPYmo6IGUsXG4gICAgICByYW5rOiB2UmFua1xuICAgIH07XG4gICAgZHVtbXkgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImVkZ2VcIiwgYXR0cnMsIFwiX2RcIik7XG4gICAgaWYgKHZSYW5rID09PSBsYWJlbFJhbmspIHtcbiAgICAgIGF0dHJzLndpZHRoID0gZWRnZUxhYmVsLndpZHRoO1xuICAgICAgYXR0cnMuaGVpZ2h0ID0gZWRnZUxhYmVsLmhlaWdodDtcbiAgICAgIGF0dHJzLmR1bW15ID0gXCJlZGdlLWxhYmVsXCI7XG4gICAgICBhdHRycy5sYWJlbHBvcyA9IGVkZ2VMYWJlbC5sYWJlbHBvcztcbiAgICB9XG4gICAgZy5zZXRFZGdlKHYsIGR1bW15LCB7IHdlaWdodDogZWRnZUxhYmVsLndlaWdodCB9LCBuYW1lKTtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgZy5ncmFwaCgpLmR1bW15Q2hhaW5zLnB1c2goZHVtbXkpO1xuICAgIH1cbiAgICB2ID0gZHVtbXk7XG4gIH1cblxuICBnLnNldEVkZ2UodiwgdywgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICBfLmZvckVhY2goZy5ncmFwaCgpLmR1bW15Q2hhaW5zLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIG9yaWdMYWJlbCA9IG5vZGUuZWRnZUxhYmVsO1xuICAgIHZhciB3O1xuICAgIGcuc2V0RWRnZShub2RlLmVkZ2VPYmosIG9yaWdMYWJlbCk7XG4gICAgd2hpbGUgKG5vZGUuZHVtbXkpIHtcbiAgICAgIHcgPSBnLnN1Y2Nlc3NvcnModilbMF07XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBvcmlnTGFiZWwucG9pbnRzLnB1c2goeyB4OiBub2RlLngsIHk6IG5vZGUueSB9KTtcbiAgICAgIGlmIChub2RlLmR1bW15ID09PSBcImVkZ2UtbGFiZWxcIikge1xuICAgICAgICBvcmlnTGFiZWwueCA9IG5vZGUueDtcbiAgICAgICAgb3JpZ0xhYmVsLnkgPSBub2RlLnk7XG4gICAgICAgIG9yaWdMYWJlbC53aWR0aCA9IG5vZGUud2lkdGg7XG4gICAgICAgIG9yaWdMYWJlbC5oZWlnaHQgPSBub2RlLmhlaWdodDtcbiAgICAgIH1cbiAgICAgIHYgPSB3O1xuICAgICAgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZFN1YmdyYXBoQ29uc3RyYWludHM7XG5cbmZ1bmN0aW9uIGFkZFN1YmdyYXBoQ29uc3RyYWludHMoZywgY2csIHZzKSB7XG4gIHZhciBwcmV2ID0ge30sXG4gICAgcm9vdFByZXY7XG5cbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIGNoaWxkID0gZy5wYXJlbnQodiksXG4gICAgICBwYXJlbnQsXG4gICAgICBwcmV2Q2hpbGQ7XG4gICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICBwYXJlbnQgPSBnLnBhcmVudChjaGlsZCk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHByZXZDaGlsZCA9IHByZXZbcGFyZW50XTtcbiAgICAgICAgcHJldltwYXJlbnRdID0gY2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2Q2hpbGQgPSByb290UHJldjtcbiAgICAgICAgcm9vdFByZXYgPSBjaGlsZDtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2Q2hpbGQgJiYgcHJldkNoaWxkICE9PSBjaGlsZCkge1xuICAgICAgICBjZy5zZXRFZGdlKHByZXZDaGlsZCwgY2hpbGQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGlsZCA9IHBhcmVudDtcbiAgICB9XG4gIH0pO1xuXG4gIC8qXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdiA/IGcuY2hpbGRyZW4odikgOiBnLmNoaWxkcmVuKCk7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdmFyIG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICBzdWJncmFwaHMgPSBbXTtcbiAgICAgIF8uZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgdmFyIGNoaWxkTWluID0gZGZzKGNoaWxkKTtcbiAgICAgICAgaWYgKGcuY2hpbGRyZW4oY2hpbGQpLmxlbmd0aCkge1xuICAgICAgICAgIHN1YmdyYXBocy5wdXNoKHsgdjogY2hpbGQsIG9yZGVyOiBjaGlsZE1pbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBtaW4gPSBNYXRoLm1pbihtaW4sIGNoaWxkTWluKTtcbiAgICAgIH0pO1xuICAgICAgXy5yZWR1Y2UoXy5zb3J0Qnkoc3ViZ3JhcGhzLCBcIm9yZGVyXCIpLCBmdW5jdGlvbihwcmV2LCBjdXJyKSB7XG4gICAgICAgIGNnLnNldEVkZ2UocHJldi52LCBjdXJyLnYpO1xuICAgICAgICByZXR1cm4gY3VycjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgcmV0dXJuIGcubm9kZSh2KS5vcmRlcjtcbiAgfVxuICBkZnModW5kZWZpbmVkKTtcbiAgKi9cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXJ5Y2VudGVyO1xuXG5mdW5jdGlvbiBiYXJ5Y2VudGVyKGcsIG1vdmFibGUpIHtcbiAgcmV0dXJuIF8ubWFwKG1vdmFibGUsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5WID0gZy5pbkVkZ2VzKHYpO1xuICAgIGlmICghaW5WLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgdjogdiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzdWx0ID0gXy5yZWR1Y2UoaW5WLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSksXG4gICAgICAgICAgbm9kZVUgPSBnLm5vZGUoZS52KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdW06IGFjYy5zdW0gKyAoZWRnZS53ZWlnaHQgKiBub2RlVS5vcmRlciksXG4gICAgICAgICAgd2VpZ2h0OiBhY2Mud2VpZ2h0ICsgZWRnZS53ZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH0sIHsgc3VtOiAwLCB3ZWlnaHQ6IDAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHY6IHYsXG4gICAgICAgIGJhcnljZW50ZXI6IHJlc3VsdC5zdW0gLyByZXN1bHQud2VpZ2h0LFxuICAgICAgICB3ZWlnaHQ6IHJlc3VsdC53ZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1aWxkTGF5ZXJHcmFwaDtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBncmFwaCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNvcnQgYSBsYXllciBvZiBub2Rlcy4gVGhlIGdyYXBoIHdpbGxcbiAqIGNvbnRhaW4gYWxsIGJhc2UgYW5kIHN1YmdyYXBoIG5vZGVzIGZyb20gdGhlIHJlcXVlc3QgbGF5ZXIgaW4gdGhlaXIgb3JpZ2luYWxcbiAqIGhpZXJhcmNoeSBhbmQgYW55IGVkZ2VzIHRoYXQgYXJlIGluY2lkZW50IG9uIHRoZXNlIG5vZGVzIGFuZCBhcmUgb2YgdGhlIHR5cGVcbiAqIHJlcXVlc3RlZCBieSB0aGUgXCJyZWxhdGlvbnNoaXBcIiBwYXJhbWV0ZXIuXG4gKlxuICogTm9kZXMgZnJvbSB0aGUgcmVxdWVzdGVkIHJhbmsgdGhhdCBkbyBub3QgaGF2ZSBwYXJlbnRzIGFyZSBhc3NpZ25lZCBhIHJvb3RcbiAqIG5vZGUgaW4gdGhlIG91dHB1dCBncmFwaCwgd2hpY2ggaXMgc2V0IGluIHRoZSByb290IGdyYXBoIGF0dHJpYnV0ZS4gVGhpc1xuICogbWFrZXMgaXQgZWFzeSB0byB3YWxrIHRoZSBoaWVyYXJjaHkgb2YgbW92YWJsZSBub2RlcyBkdXJpbmcgb3JkZXJpbmcuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUdcbiAqICAgIDIuIEJhc2Ugbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhdmUgYSByYW5rIGF0dHJpYnV0ZVxuICogICAgMy4gU3ViZ3JhcGggbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBtaW5SYW5rIGFuZCBtYXhSYW5rIGF0dHJpYnV0ZXNcbiAqICAgIDQuIEVkZ2VzIGhhdmUgYW4gYXNzaWduZWQgd2VpZ2h0XG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIE91dHB1dCBncmFwaCBoYXMgYWxsIG5vZGVzIGluIHRoZSBtb3ZhYmxlIHJhbmsgd2l0aCBwcmVzZXJ2ZWRcbiAqICAgICAgIGhpZXJhcmNoeS5cbiAqICAgIDIuIFJvb3Qgbm9kZXMgaW4gdGhlIG1vdmFibGUgbGF5ZXIgYXJlIG1hZGUgY2hpbGRyZW4gb2YgdGhlIG5vZGVcbiAqICAgICAgIGluZGljYXRlZCBieSB0aGUgcm9vdCBhdHRyaWJ1dGUgb2YgdGhlIGdyYXBoLlxuICogICAgMy4gTm9uLW1vdmFibGUgbm9kZXMgaW5jaWRlbnQgb24gbW92YWJsZSBub2Rlcywgc2VsZWN0ZWQgYnkgdGhlXG4gKiAgICAgICByZWxhdGlvbnNoaXAgcGFyYW1ldGVyLCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdyYXBoICh3aXRob3V0IGhpZXJhcmNoeSkuXG4gKiAgICA0LiBFZGdlcyBpbmNpZGVudCBvbiBtb3ZhYmxlIG5vZGVzLCBzZWxlY3RlZCBieSB0aGUgcmVsYXRpb25zaGlwXG4gKiAgICAgICBwYXJhbWV0ZXIsIGFyZSBhZGRlZCB0byB0aGUgb3V0cHV0IGdyYXBoLlxuICogICAgNS4gVGhlIHdlaWdodHMgZm9yIGNvcGllZCBlZGdlcyBhcmUgYWdncmVnYXRlZCBhcyBuZWVkLCBzaW5jZSB0aGUgb3V0cHV0XG4gKiAgICAgICBncmFwaCBpcyBub3QgYSBtdWx0aS1ncmFwaC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCkge1xuICB2YXIgcm9vdCA9IGNyZWF0ZVJvb3ROb2RlKGcpLFxuICAgIHJlc3VsdCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlIH0pLnNldEdyYXBoKHsgcm9vdDogcm9vdCB9KVxuICAgICAgLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpOyB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodiksXG4gICAgICBwYXJlbnQgPSBnLnBhcmVudCh2KTtcblxuICAgIGlmIChub2RlLnJhbmsgPT09IHJhbmsgfHwgbm9kZS5taW5SYW5rIDw9IHJhbmsgJiYgcmFuayA8PSBub2RlLm1heFJhbmspIHtcbiAgICAgIHJlc3VsdC5zZXROb2RlKHYpO1xuICAgICAgcmVzdWx0LnNldFBhcmVudCh2LCBwYXJlbnQgfHwgcm9vdCk7XG5cbiAgICAgIC8vIFRoaXMgYXNzdW1lcyB3ZSBoYXZlIG9ubHkgc2hvcnQgZWRnZXMhXG4gICAgICBfLmZvckVhY2goZ1tyZWxhdGlvbnNoaXBdKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciB1ID0gZS52ID09PSB2ID8gZS53IDogZS52LFxuICAgICAgICAgIGVkZ2UgPSByZXN1bHQuZWRnZSh1LCB2KSxcbiAgICAgICAgICB3ZWlnaHQgPSAhXy5pc1VuZGVmaW5lZChlZGdlKSA/IGVkZ2Uud2VpZ2h0IDogMDtcbiAgICAgICAgcmVzdWx0LnNldEVkZ2UodSwgdiwgeyB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgKyB3ZWlnaHQgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgICByZXN1bHQuc2V0Tm9kZSh2LCB7XG4gICAgICAgICAgYm9yZGVyTGVmdDogbm9kZS5ib3JkZXJMZWZ0W3JhbmtdLFxuICAgICAgICAgIGJvcmRlclJpZ2h0OiBub2RlLmJvcmRlclJpZ2h0W3JhbmtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm9vdE5vZGUoZykge1xuICB2YXIgdjtcbiAgd2hpbGUgKGcuaGFzTm9kZSgodiA9IF8udW5pcXVlSWQoXCJfcm9vdFwiKSkpKTtcbiAgcmV0dXJuIHY7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyb3NzQ291bnQ7XG5cbi8qXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsYXllcmluZyAoYW4gYXJyYXkgb2YgbGF5ZXJzLCBlYWNoIHdpdGggYW4gYXJyYXkgb2ZcbiAqIG9yZGVyZXJkIG5vZGVzKSBhbmQgYSBncmFwaCBhbmQgcmV0dXJucyBhIHdlaWdodGVkIGNyb3NzaW5nIGNvdW50LlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIG11c3QgYmUgc2ltcGxlIChub3QgYSBtdWx0aWdyYXBoKSwgZGlyZWN0ZWQsIGFuZCBpbmNsdWRlXG4gKiAgICAgICBvbmx5IHNpbXBsZSBlZGdlcy5cbiAqICAgIDIuIEVkZ2VzIGluIHRoZSBpbnB1dCBncmFwaCBtdXN0IGhhdmUgYXNzaWduZWQgd2VpZ2h0cy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGdyYXBoIGFuZCBsYXllcmluZyBtYXRyaXggYXJlIGxlZnQgdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBCYXJ0aCwgZXQgYWwuLCBcIkJpbGF5ZXIgQ3Jvc3MgQ291bnRpbmcuXCJcbiAqL1xuZnVuY3Rpb24gY3Jvc3NDb3VudChnLCBsYXllcmluZykge1xuICB2YXIgY2MgPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxheWVyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgY2MgKz0gdHdvTGF5ZXJDcm9zc0NvdW50KGcsIGxheWVyaW5nW2ktMV0sIGxheWVyaW5nW2ldKTtcbiAgfVxuICByZXR1cm4gY2M7XG59XG5cbmZ1bmN0aW9uIHR3b0xheWVyQ3Jvc3NDb3VudChnLCBub3J0aExheWVyLCBzb3V0aExheWVyKSB7XG4gIC8vIFNvcnQgYWxsIG9mIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBub3J0aCBhbmQgc291dGggbGF5ZXJzIGJ5IHRoZWlyIHBvc2l0aW9uXG4gIC8vIGluIHRoZSBub3J0aCBsYXllciBhbmQgdGhlbiB0aGUgc291dGguIE1hcCB0aGVzZSBlZGdlcyB0byB0aGUgcG9zaXRpb24gb2ZcbiAgLy8gdGhlaXIgaGVhZCBpbiB0aGUgc291dGggbGF5ZXIuXG4gIHZhciBzb3V0aFBvcyA9IF8uemlwT2JqZWN0KHNvdXRoTGF5ZXIsXG4gICAgXy5tYXAoc291dGhMYXllciwgZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIGk7IH0pKTtcbiAgdmFyIHNvdXRoRW50cmllcyA9IF8uZmxhdHRlbihfLm1hcChub3J0aExheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uc29ydEJ5KF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB7IHBvczogc291dGhQb3NbZS53XSwgd2VpZ2h0OiBnLmVkZ2UoZSkud2VpZ2h0IH07XG4gICAgfSksIFwicG9zXCIpO1xuICB9KSwgdHJ1ZSk7XG5cbiAgLy8gQnVpbGQgdGhlIGFjY3VtdWxhdG9yIHRyZWVcbiAgdmFyIGZpcnN0SW5kZXggPSAxO1xuICB3aGlsZSAoZmlyc3RJbmRleCA8IHNvdXRoTGF5ZXIubGVuZ3RoKSBmaXJzdEluZGV4IDw8PSAxO1xuICB2YXIgdHJlZVNpemUgPSAyICogZmlyc3RJbmRleCAtIDE7XG4gIGZpcnN0SW5kZXggLT0gMTtcbiAgdmFyIHRyZWUgPSBfLm1hcChuZXcgQXJyYXkodHJlZVNpemUpLCBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgd2VpZ2h0ZWQgY3Jvc3NpbmdzXG4gIHZhciBjYyA9IDA7XG4gIF8uZm9yRWFjaChzb3V0aEVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkge1xuICAgIHZhciBpbmRleCA9IGVudHJ5LnBvcyArIGZpcnN0SW5kZXg7XG4gICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgIHZhciB3ZWlnaHRTdW0gPSAwO1xuICAgIHdoaWxlIChpbmRleCA+IDApIHtcbiAgICAgIGlmIChpbmRleCAlIDIpIHtcbiAgICAgICAgd2VpZ2h0U3VtICs9IHRyZWVbaW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICAgIGluZGV4ID0gKGluZGV4IC0gMSkgPj4gMTtcbiAgICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gICAgY2MgKz0gZW50cnkud2VpZ2h0ICogd2VpZ2h0U3VtO1xuICB9KSk7XG5cbiAgcmV0dXJuIGNjO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBpbml0T3JkZXIgPSByZXF1aXJlKFwiLi9pbml0LW9yZGVyXCIpO1xudmFyIGNyb3NzQ291bnQgPSByZXF1aXJlKFwiLi9jcm9zcy1jb3VudFwiKTtcbnZhciBzb3J0U3ViZ3JhcGggPSByZXF1aXJlKFwiLi9zb3J0LXN1YmdyYXBoXCIpO1xudmFyIGJ1aWxkTGF5ZXJHcmFwaCA9IHJlcXVpcmUoXCIuL2J1aWxkLWxheWVyLWdyYXBoXCIpO1xudmFyIGFkZFN1YmdyYXBoQ29uc3RyYWludHMgPSByZXF1aXJlKFwiLi9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHNcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9yZGVyO1xuXG4vKlxuICogQXBwbGllcyBoZXVyaXN0aWNzIHRvIG1pbmltaXplIGVkZ2UgY3Jvc3NpbmdzIGluIHRoZSBncmFwaCBhbmQgc2V0cyB0aGUgYmVzdFxuICogb3JkZXIgc29sdXRpb24gYXMgYW4gb3JkZXIgYXR0cmlidXRlIG9uIGVhY2ggbm9kZS5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIERBR1xuICogICAgMi4gR3JhcGggbm9kZXMgbXVzdCBiZSBvYmplY3RzIHdpdGggYSBcInJhbmtcIiBhdHRyaWJ1dGVcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSB0aGUgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGFuIFwib3JkZXJcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIG9yZGVyKGcpIHtcbiAgdmFyIG1heFJhbmsgPSB1dGlsLm1heFJhbmsoZyksXG4gICAgZG93bkxheWVyR3JhcGhzID0gYnVpbGRMYXllckdyYXBocyhnLCBfLnJhbmdlKDEsIG1heFJhbmsgKyAxKSwgXCJpbkVkZ2VzXCIpLFxuICAgIHVwTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UobWF4UmFuayAtIDEsIC0xLCAtMSksIFwib3V0RWRnZXNcIik7XG5cbiAgdmFyIGxheWVyaW5nID0gaW5pdE9yZGVyKGcpO1xuICBhc3NpZ25PcmRlcihnLCBsYXllcmluZyk7XG5cbiAgdmFyIGJlc3RDQyA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBiZXN0O1xuXG4gIGZvciAodmFyIGkgPSAwLCBsYXN0QmVzdCA9IDA7IGxhc3RCZXN0IDwgNDsgKytpLCArK2xhc3RCZXN0KSB7XG4gICAgc3dlZXBMYXllckdyYXBocyhpICUgMiA/IGRvd25MYXllckdyYXBocyA6IHVwTGF5ZXJHcmFwaHMsIGkgJSA0ID49IDIpO1xuXG4gICAgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gICAgdmFyIGNjID0gY3Jvc3NDb3VudChnLCBsYXllcmluZyk7XG4gICAgaWYgKGNjIDwgYmVzdENDKSB7XG4gICAgICBsYXN0QmVzdCA9IDA7XG4gICAgICBiZXN0ID0gXy5jbG9uZURlZXAobGF5ZXJpbmcpO1xuICAgICAgYmVzdENDID0gY2M7XG4gICAgfVxuICB9XG5cbiAgYXNzaWduT3JkZXIoZywgYmVzdCk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJHcmFwaHMoZywgcmFua3MsIHJlbGF0aW9uc2hpcCkge1xuICByZXR1cm4gXy5tYXAocmFua3MsIGZ1bmN0aW9uKHJhbmspIHtcbiAgICByZXR1cm4gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2VlcExheWVyR3JhcGhzKGxheWVyR3JhcGhzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIGNnID0gbmV3IEdyYXBoKCk7XG4gIF8uZm9yRWFjaChsYXllckdyYXBocywgZnVuY3Rpb24obGcpIHtcbiAgICB2YXIgcm9vdCA9IGxnLmdyYXBoKCkucm9vdDtcbiAgICB2YXIgc29ydGVkID0gc29ydFN1YmdyYXBoKGxnLCByb290LCBjZywgYmlhc1JpZ2h0KTtcbiAgICBfLmZvckVhY2goc29ydGVkLnZzLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICBsZy5ub2RlKHYpLm9yZGVyID0gaTtcbiAgICB9KTtcbiAgICBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGxnLCBjZywgc29ydGVkLnZzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKSB7XG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIGcubm9kZSh2KS5vcmRlciA9IGk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbml0T3JkZXI7XG5cbi8qXG4gKiBBc3NpZ25zIGFuIGluaXRpYWwgb3JkZXIgdmFsdWUgZm9yIGVhY2ggbm9kZSBieSBwZXJmb3JtaW5nIGEgREZTIHNlYXJjaFxuICogc3RhcnRpbmcgZnJvbSBub2RlcyBpbiB0aGUgZmlyc3QgcmFuay4gTm9kZXMgYXJlIGFzc2lnbmVkIGFuIG9yZGVyIGluIHRoZWlyXG4gKiByYW5rIGFzIHRoZXkgYXJlIGZpcnN0IHZpc2l0ZWQuXG4gKlxuICogVGhpcyBhcHByb2FjaCBjb21lcyBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZFxuICogR3JhcGhzLlwiXG4gKlxuICogUmV0dXJucyBhIGxheWVyaW5nIG1hdHJpeCB3aXRoIGFuIGFycmF5IHBlciBsYXllciBhbmQgZWFjaCBsYXllciBzb3J0ZWQgYnlcbiAqIHRoZSBvcmRlciBvZiBpdHMgbm9kZXMuXG4gKi9cbmZ1bmN0aW9uIGluaXRPcmRlcihnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBzaW1wbGVOb2RlcyA9IF8uZmlsdGVyKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiAhZy5jaGlsZHJlbih2KS5sZW5ndGg7XG4gIH0pO1xuICB2YXIgbWF4UmFuayA9IF8ubWF4KF8ubWFwKHNpbXBsZU5vZGVzLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuICB2YXIgbGF5ZXJzID0gXy5tYXAoXy5yYW5nZShtYXhSYW5rICsgMSksIGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0pO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSByZXR1cm47XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgbGF5ZXJzW25vZGUucmFua10ucHVzaCh2KTtcbiAgICBfLmZvckVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICB9XG5cbiAgdmFyIG9yZGVyZWRWcyA9IF8uc29ydEJ5KHNpbXBsZU5vZGVzLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSk7XG4gIF8uZm9yRWFjaChvcmRlcmVkVnMsIGRmcyk7XG5cbiAgcmV0dXJuIGxheWVycztcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVzb2x2ZUNvbmZsaWN0cztcblxuLypcbiAqIEdpdmVuIGEgbGlzdCBvZiBlbnRyaWVzIG9mIHRoZSBmb3JtIHt2LCBiYXJ5Y2VudGVyLCB3ZWlnaHR9IGFuZCBhXG4gKiBjb25zdHJhaW50IGdyYXBoIHRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGVcbiAqIGNvbnN0cmFpbnQgZ3JhcGggYW5kIHRoZSBiYXJ5Y2VudGVycyBmb3IgdGhlIGVudHJpZXMuIElmIHRoZSBiYXJ5Y2VudGVycyBmb3JcbiAqIGFuIGVudHJ5IHdvdWxkIHZpb2xhdGUgYSBjb25zdHJhaW50IGluIHRoZSBjb25zdHJhaW50IGdyYXBoIHRoZW4gd2UgY29hbGVzY2VcbiAqIHRoZSBub2RlcyBpbiB0aGUgY29uZmxpY3QgaW50byBhIG5ldyBub2RlIHRoYXQgcmVzcGVjdHMgdGhlIGNvbnRyYWludCBhbmRcbiAqIGFnZ3JlZ2F0ZXMgYmFyeWNlbnRlciBhbmQgd2VpZ2h0IGluZm9ybWF0aW9uLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIGluIEZvcnN0ZXIsIFwiQSBGYXN0IGFuZFxuICogU2ltcGxlIEh1ZXJpc3RpYyBmb3IgQ29uc3RyYWluZWQgVHdvLUxldmVsIENyb3NzaW5nIFJlZHVjdGlvbixcIiB0aG91Z2h0IGl0XG4gKiBkaWZmZXJzIGluIHNvbWUgc3BlY2lmaWMgZGV0YWlscy5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIGVudHJ5IGhhcyB0aGUgZm9ybSB7diwgYmFyeWNlbnRlciwgd2VpZ2h0fSwgb3IgaWYgdGhlIG5vZGUgaGFzXG4gKiAgICAgICBubyBiYXJ5Y2VudGVyLCB0aGVuIHt2fS5cbiAqXG4gKiBSZXR1cm5zOlxuICpcbiAqICAgIEEgbmV3IGxpc3Qgb2YgZW50cmllcyBvZiB0aGUgZm9ybSB7dnMsIGksIGJhcnljZW50ZXIsIHdlaWdodH0uIFRoZSBsaXN0XG4gKiAgICBgdnNgIG1heSBlaXRoZXIgYmUgYSBzaW5nbGV0b24gb3IgaXQgbWF5IGJlIGFuIGFnZ3JlZ2F0aW9uIG9mIG5vZGVzXG4gKiAgICBvcmRlcmVkIHN1Y2ggdGhhdCB0aGV5IGRvIG5vdCB2aW9sYXRlIGNvbnN0cmFpbnRzIGZyb20gdGhlIGNvbnN0cmFpbnRcbiAqICAgIGdyYXBoLiBUaGUgcHJvcGVydHkgYGlgIGlzIHRoZSBsb3dlc3Qgb3JpZ2luYWwgaW5kZXggb2YgYW55IG9mIHRoZVxuICogICAgZWxlbWVudHMgaW4gYHZzYC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNvbmZsaWN0cyhlbnRyaWVzLCBjZykge1xuICB2YXIgbWFwcGVkRW50cmllcyA9IHt9O1xuICBfLmZvckVhY2goZW50cmllcywgZnVuY3Rpb24oZW50cnksIGkpIHtcbiAgICB2YXIgdG1wID0gbWFwcGVkRW50cmllc1tlbnRyeS52XSA9IHtcbiAgICAgIGluZGVncmVlOiAwLFxuICAgICAgXCJpblwiOiBbXSxcbiAgICAgIG91dDogW10sXG4gICAgICB2czogW2VudHJ5LnZdLFxuICAgICAgaTogaVxuICAgIH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVudHJ5LmJhcnljZW50ZXIpKSB7XG4gICAgICB0bXAuYmFyeWNlbnRlciA9IGVudHJ5LmJhcnljZW50ZXI7XG4gICAgICB0bXAud2VpZ2h0ID0gZW50cnkud2VpZ2h0O1xuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGNnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZW50cnlWID0gbWFwcGVkRW50cmllc1tlLnZdO1xuICAgIHZhciBlbnRyeVcgPSBtYXBwZWRFbnRyaWVzW2Uud107XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVudHJ5VikgJiYgIV8uaXNVbmRlZmluZWQoZW50cnlXKSkge1xuICAgICAgZW50cnlXLmluZGVncmVlKys7XG4gICAgICBlbnRyeVYub3V0LnB1c2gobWFwcGVkRW50cmllc1tlLnddKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBzb3VyY2VTZXQgPSBfLmZpbHRlcihtYXBwZWRFbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIHJldHVybiAhZW50cnkuaW5kZWdyZWU7XG4gIH0pO1xuXG4gIHJldHVybiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KTtcbn1cblxuZnVuY3Rpb24gZG9SZXNvbHZlQ29uZmxpY3RzKHNvdXJjZVNldCkge1xuICB2YXIgZW50cmllcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZUluKHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbih1RW50cnkpIHtcbiAgICAgIGlmICh1RW50cnkubWVyZ2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHVFbnRyeS5iYXJ5Y2VudGVyKSB8fFxuICAgICAgICAgIF8uaXNVbmRlZmluZWQodkVudHJ5LmJhcnljZW50ZXIpIHx8XG4gICAgICAgICAgdUVudHJ5LmJhcnljZW50ZXIgPj0gdkVudHJ5LmJhcnljZW50ZXIpIHtcbiAgICAgICAgbWVyZ2VFbnRyaWVzKHZFbnRyeSwgdUVudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlT3V0KHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbih3RW50cnkpIHtcbiAgICAgIHdFbnRyeVtcImluXCJdLnB1c2godkVudHJ5KTtcbiAgICAgIGlmICgtLXdFbnRyeS5pbmRlZ3JlZSA9PT0gMCkge1xuICAgICAgICBzb3VyY2VTZXQucHVzaCh3RW50cnkpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB3aGlsZSAoc291cmNlU2V0Lmxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IHNvdXJjZVNldC5wb3AoKTtcbiAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIF8uZm9yRWFjaChlbnRyeVtcImluXCJdLnJldmVyc2UoKSwgaGFuZGxlSW4oZW50cnkpKTtcbiAgICBfLmZvckVhY2goZW50cnkub3V0LCBoYW5kbGVPdXQoZW50cnkpKTtcbiAgfVxuXG4gIHJldHVybiBfLm1hcChfLmZpbHRlcihlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gIWVudHJ5Lm1lcmdlZDsgfSksXG4gICAgZnVuY3Rpb24oZW50cnkpIHtcbiAgICAgIHJldHVybiBfLnBpY2soZW50cnksIFtcInZzXCIsIFwiaVwiLCBcImJhcnljZW50ZXJcIiwgXCJ3ZWlnaHRcIl0pO1xuICAgIH0pO1xuXG59XG5cbmZ1bmN0aW9uIG1lcmdlRW50cmllcyh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIgc3VtID0gMDtcbiAgdmFyIHdlaWdodCA9IDA7XG5cbiAgaWYgKHRhcmdldC53ZWlnaHQpIHtcbiAgICBzdW0gKz0gdGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0O1xuICAgIHdlaWdodCArPSB0YXJnZXQud2VpZ2h0O1xuICB9XG5cbiAgaWYgKHNvdXJjZS53ZWlnaHQpIHtcbiAgICBzdW0gKz0gc291cmNlLmJhcnljZW50ZXIgKiBzb3VyY2Uud2VpZ2h0O1xuICAgIHdlaWdodCArPSBzb3VyY2Uud2VpZ2h0O1xuICB9XG5cbiAgdGFyZ2V0LnZzID0gc291cmNlLnZzLmNvbmNhdCh0YXJnZXQudnMpO1xuICB0YXJnZXQuYmFyeWNlbnRlciA9IHN1bSAvIHdlaWdodDtcbiAgdGFyZ2V0LndlaWdodCA9IHdlaWdodDtcbiAgdGFyZ2V0LmkgPSBNYXRoLm1pbihzb3VyY2UuaSwgdGFyZ2V0LmkpO1xuICBzb3VyY2UubWVyZ2VkID0gdHJ1ZTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBiYXJ5Y2VudGVyID0gcmVxdWlyZShcIi4vYmFyeWNlbnRlclwiKTtcbnZhciByZXNvbHZlQ29uZmxpY3RzID0gcmVxdWlyZShcIi4vcmVzb2x2ZS1jb25mbGljdHNcIik7XG52YXIgc29ydCA9IHJlcXVpcmUoXCIuL3NvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydFN1YmdyYXBoO1xuXG5mdW5jdGlvbiBzb3J0U3ViZ3JhcGgoZywgdiwgY2csIGJpYXNSaWdodCkge1xuICB2YXIgbW92YWJsZSA9IGcuY2hpbGRyZW4odik7XG4gIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICB2YXIgYmwgPSBub2RlID8gbm9kZS5ib3JkZXJMZWZ0IDogdW5kZWZpbmVkO1xuICB2YXIgYnIgPSBub2RlID8gbm9kZS5ib3JkZXJSaWdodDogdW5kZWZpbmVkO1xuICB2YXIgc3ViZ3JhcGhzID0ge307XG5cbiAgaWYgKGJsKSB7XG4gICAgbW92YWJsZSA9IF8uZmlsdGVyKG1vdmFibGUsIGZ1bmN0aW9uKHcpIHtcbiAgICAgIHJldHVybiB3ICE9PSBibCAmJiB3ICE9PSBicjtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBiYXJ5Y2VudGVycyA9IGJhcnljZW50ZXIoZywgbW92YWJsZSk7XG4gIF8uZm9yRWFjaChiYXJ5Y2VudGVycywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBpZiAoZy5jaGlsZHJlbihlbnRyeS52KS5sZW5ndGgpIHtcbiAgICAgIHZhciBzdWJncmFwaFJlc3VsdCA9IHNvcnRTdWJncmFwaChnLCBlbnRyeS52LCBjZywgYmlhc1JpZ2h0KTtcbiAgICAgIHN1YmdyYXBoc1tlbnRyeS52XSA9IHN1YmdyYXBoUmVzdWx0O1xuICAgICAgaWYgKF8uaGFzKHN1YmdyYXBoUmVzdWx0LCBcImJhcnljZW50ZXJcIikpIHtcbiAgICAgICAgbWVyZ2VCYXJ5Y2VudGVycyhlbnRyeSwgc3ViZ3JhcGhSZXN1bHQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGVudHJpZXMgPSByZXNvbHZlQ29uZmxpY3RzKGJhcnljZW50ZXJzLCBjZyk7XG4gIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpO1xuXG4gIHZhciByZXN1bHQgPSBzb3J0KGVudHJpZXMsIGJpYXNSaWdodCk7XG5cbiAgaWYgKGJsKSB7XG4gICAgcmVzdWx0LnZzID0gXy5mbGF0dGVuKFtibCwgcmVzdWx0LnZzLCBicl0sIHRydWUpO1xuICAgIGlmIChnLnByZWRlY2Vzc29ycyhibCkubGVuZ3RoKSB7XG4gICAgICB2YXIgYmxQcmVkID0gZy5ub2RlKGcucHJlZGVjZXNzb3JzKGJsKVswXSksXG4gICAgICAgIGJyUHJlZCA9IGcubm9kZShnLnByZWRlY2Vzc29ycyhicilbMF0pO1xuICAgICAgaWYgKCFfLmhhcyhyZXN1bHQsIFwiYmFyeWNlbnRlclwiKSkge1xuICAgICAgICByZXN1bHQuYmFyeWNlbnRlciA9IDA7XG4gICAgICAgIHJlc3VsdC53ZWlnaHQgPSAwO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSAocmVzdWx0LmJhcnljZW50ZXIgKiByZXN1bHQud2VpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsUHJlZC5vcmRlciArIGJyUHJlZC5vcmRlcikgLyAocmVzdWx0LndlaWdodCArIDIpO1xuICAgICAgcmVzdWx0LndlaWdodCArPSAyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpIHtcbiAgXy5mb3JFYWNoKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZW50cnkudnMgPSBfLmZsYXR0ZW4oZW50cnkudnMubWFwKGZ1bmN0aW9uKHYpIHtcbiAgICAgIGlmIChzdWJncmFwaHNbdl0pIHtcbiAgICAgICAgcmV0dXJuIHN1YmdyYXBoc1t2XS52cztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pLCB0cnVlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1lcmdlQmFyeWNlbnRlcnModGFyZ2V0LCBvdGhlcikge1xuICBpZiAoIV8uaXNVbmRlZmluZWQodGFyZ2V0LmJhcnljZW50ZXIpKSB7XG4gICAgdGFyZ2V0LmJhcnljZW50ZXIgPSAodGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5iYXJ5Y2VudGVyICogb3RoZXIud2VpZ2h0KSAvXG4gICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LndlaWdodCArIG90aGVyLndlaWdodCk7XG4gICAgdGFyZ2V0LndlaWdodCArPSBvdGhlci53ZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0LmJhcnljZW50ZXIgPSBvdGhlci5iYXJ5Y2VudGVyO1xuICAgIHRhcmdldC53ZWlnaHQgPSBvdGhlci53ZWlnaHQ7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydDtcblxuZnVuY3Rpb24gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIHBhcnRzID0gdXRpbC5wYXJ0aXRpb24oZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICByZXR1cm4gXy5oYXMoZW50cnksIFwiYmFyeWNlbnRlclwiKTtcbiAgfSk7XG4gIHZhciBzb3J0YWJsZSA9IHBhcnRzLmxocyxcbiAgICB1bnNvcnRhYmxlID0gXy5zb3J0QnkocGFydHMucmhzLCBmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gLWVudHJ5Lmk7IH0pLFxuICAgIHZzID0gW10sXG4gICAgc3VtID0gMCxcbiAgICB3ZWlnaHQgPSAwLFxuICAgIHZzSW5kZXggPSAwO1xuXG4gIHNvcnRhYmxlLnNvcnQoY29tcGFyZVdpdGhCaWFzKCEhYmlhc1JpZ2h0KSk7XG5cbiAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcblxuICBfLmZvckVhY2goc29ydGFibGUsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHZzSW5kZXggKz0gZW50cnkudnMubGVuZ3RoO1xuICAgIHZzLnB1c2goZW50cnkudnMpO1xuICAgIHN1bSArPSBlbnRyeS5iYXJ5Y2VudGVyICogZW50cnkud2VpZ2h0O1xuICAgIHdlaWdodCArPSBlbnRyeS53ZWlnaHQ7XG4gICAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcbiAgfSk7XG5cbiAgdmFyIHJlc3VsdCA9IHsgdnM6IF8uZmxhdHRlbih2cywgdHJ1ZSkgfTtcbiAgaWYgKHdlaWdodCkge1xuICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICAgIHJlc3VsdC53ZWlnaHQgPSB3ZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29uc3VtZVVuc29ydGFibGUodnMsIHVuc29ydGFibGUsIGluZGV4KSB7XG4gIHZhciBsYXN0O1xuICB3aGlsZSAodW5zb3J0YWJsZS5sZW5ndGggJiYgKGxhc3QgPSBfLmxhc3QodW5zb3J0YWJsZSkpLmkgPD0gaW5kZXgpIHtcbiAgICB1bnNvcnRhYmxlLnBvcCgpO1xuICAgIHZzLnB1c2gobGFzdC52cyk7XG4gICAgaW5kZXgrKztcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVXaXRoQmlhcyhiaWFzKSB7XG4gIHJldHVybiBmdW5jdGlvbihlbnRyeVYsIGVudHJ5Vykge1xuICAgIGlmIChlbnRyeVYuYmFyeWNlbnRlciA8IGVudHJ5Vy5iYXJ5Y2VudGVyKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlIGlmIChlbnRyeVYuYmFyeWNlbnRlciA+IGVudHJ5Vy5iYXJ5Y2VudGVyKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWJpYXMgPyBlbnRyeVYuaSAtIGVudHJ5Vy5pIDogZW50cnlXLmkgLSBlbnRyeVYuaTtcbiAgfTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudER1bW15Q2hhaW5zO1xuXG5mdW5jdGlvbiBwYXJlbnREdW1teUNoYWlucyhnKSB7XG4gIHZhciBwb3N0b3JkZXJOdW1zID0gcG9zdG9yZGVyKGcpO1xuXG4gIF8uZm9yRWFjaChnLmdyYXBoKCkuZHVtbXlDaGFpbnMsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgZWRnZU9iaiA9IG5vZGUuZWRnZU9iajtcbiAgICB2YXIgcGF0aERhdGEgPSBmaW5kUGF0aChnLCBwb3N0b3JkZXJOdW1zLCBlZGdlT2JqLnYsIGVkZ2VPYmoudyk7XG4gICAgdmFyIHBhdGggPSBwYXRoRGF0YS5wYXRoO1xuICAgIHZhciBsY2EgPSBwYXRoRGF0YS5sY2E7XG4gICAgdmFyIHBhdGhJZHggPSAwO1xuICAgIHZhciBwYXRoViA9IHBhdGhbcGF0aElkeF07XG4gICAgdmFyIGFzY2VuZGluZyA9IHRydWU7XG5cbiAgICB3aGlsZSAodiAhPT0gZWRnZU9iai53KSB7XG4gICAgICBub2RlID0gZy5ub2RlKHYpO1xuXG4gICAgICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlICgocGF0aFYgPSBwYXRoW3BhdGhJZHhdKSAhPT0gbGNhICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYpLm1heFJhbmsgPCBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aFYgPT09IGxjYSkge1xuICAgICAgICAgIGFzY2VuZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlIChwYXRoSWR4IDwgcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYgPSBwYXRoW3BhdGhJZHggKyAxXSkubWluUmFuayA8PSBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cbiAgICAgICAgcGF0aFYgPSBwYXRoW3BhdGhJZHhdO1xuICAgICAgfVxuXG4gICAgICBnLnNldFBhcmVudCh2LCBwYXRoVik7XG4gICAgICB2ID0gZy5zdWNjZXNzb3JzKHYpWzBdO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEZpbmQgYSBwYXRoIGZyb20gdiB0byB3IHRocm91Z2ggdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3IgKExDQSkuIFJldHVybiB0aGVcbi8vIGZ1bGwgcGF0aCBhbmQgdGhlIExDQS5cbmZ1bmN0aW9uIGZpbmRQYXRoKGcsIHBvc3RvcmRlck51bXMsIHYsIHcpIHtcbiAgdmFyIHZQYXRoID0gW107XG4gIHZhciB3UGF0aCA9IFtdO1xuICB2YXIgbG93ID0gTWF0aC5taW4ocG9zdG9yZGVyTnVtc1t2XS5sb3csIHBvc3RvcmRlck51bXNbd10ubG93KTtcbiAgdmFyIGxpbSA9IE1hdGgubWF4KHBvc3RvcmRlck51bXNbdl0ubGltLCBwb3N0b3JkZXJOdW1zW3ddLmxpbSk7XG4gIHZhciBwYXJlbnQ7XG4gIHZhciBsY2E7XG5cbiAgLy8gVHJhdmVyc2UgdXAgZnJvbSB2IHRvIGZpbmQgdGhlIExDQVxuICBwYXJlbnQgPSB2O1xuICBkbyB7XG4gICAgcGFyZW50ID0gZy5wYXJlbnQocGFyZW50KTtcbiAgICB2UGF0aC5wdXNoKHBhcmVudCk7XG4gIH0gd2hpbGUgKHBhcmVudCAmJlxuICAgICAgICAgICAocG9zdG9yZGVyTnVtc1twYXJlbnRdLmxvdyA+IGxvdyB8fCBsaW0gPiBwb3N0b3JkZXJOdW1zW3BhcmVudF0ubGltKSk7XG4gIGxjYSA9IHBhcmVudDtcblxuICAvLyBUcmF2ZXJzZSBmcm9tIHcgdG8gTENBXG4gIHBhcmVudCA9IHc7XG4gIHdoaWxlICgocGFyZW50ID0gZy5wYXJlbnQocGFyZW50KSkgIT09IGxjYSkge1xuICAgIHdQYXRoLnB1c2gocGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiB7IHBhdGg6IHZQYXRoLmNvbmNhdCh3UGF0aC5yZXZlcnNlKCkpLCBsY2E6IGxjYSB9O1xufVxuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBsaW0gPSAwO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGxvdyA9IGxpbTtcbiAgICBfLmZvckVhY2goZy5jaGlsZHJlbih2KSwgZGZzKTtcbiAgICByZXN1bHRbdl0gPSB7IGxvdzogbG93LCBsaW06IGxpbSsrIH07XG4gIH1cbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZGZzKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbi8qXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjb29yZGluYXRlIGFzc2lnbm1lbnQgYmFzZWQgb24gQnJhbmRlcyBhbmQgS8O2cGYsIFwiRmFzdFxuICogYW5kIFNpbXBsZSBIb3Jpem9udGFsIENvb3JkaW5hdGUgQXNzaWdubWVudC5cIlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvblg6IHBvc2l0aW9uWCxcbiAgZmluZFR5cGUxQ29uZmxpY3RzOiBmaW5kVHlwZTFDb25mbGljdHMsXG4gIGZpbmRUeXBlMkNvbmZsaWN0czogZmluZFR5cGUyQ29uZmxpY3RzLFxuICBhZGRDb25mbGljdDogYWRkQ29uZmxpY3QsXG4gIGhhc0NvbmZsaWN0OiBoYXNDb25mbGljdCxcbiAgdmVydGljYWxBbGlnbm1lbnQ6IHZlcnRpY2FsQWxpZ25tZW50LFxuICBob3Jpem9udGFsQ29tcGFjdGlvbjogaG9yaXpvbnRhbENvbXBhY3Rpb24sXG4gIGFsaWduQ29vcmRpbmF0ZXM6IGFsaWduQ29vcmRpbmF0ZXMsXG4gIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50OiBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCxcbiAgYmFsYW5jZTogYmFsYW5jZVxufTtcblxuLypcbiAqIE1hcmtzIGFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggd2l0aCBhIHR5cGUtMSBjb25mbGljdCB3aXRoIHRoZSBcInR5cGUxQ29uZmxpY3RcIlxuICogcHJvcGVydHkuIEEgdHlwZS0xIGNvbmZsaWN0IGlzIG9uZSB3aGVyZSBhIG5vbi1pbm5lciBzZWdtZW50IGNyb3NzZXMgYW5cbiAqIGlubmVyIHNlZ21lbnQuIEFuIGlubmVyIHNlZ21lbnQgaXMgYW4gZWRnZSB3aXRoIGJvdGggaW5jaWRlbnQgbm9kZXMgbWFya2VkXG4gKiB3aXRoIHRoZSBcImR1bW15XCIgcHJvcGVydHkuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gc2NhbnMgbGF5ZXIgYnkgbGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGhlIHNlY29uZCwgZm9yIHR5cGUtMVxuICogY29uZmxpY3RzIGJldHdlZW4gdGhlIGN1cnJlbnQgbGF5ZXIgYW5kIHRoZSBwcmV2aW91cyBsYXllci4gRm9yIGVhY2ggbGF5ZXJcbiAqIGl0IHNjYW5zIHRoZSBub2RlcyBmcm9tIGxlZnQgdG8gcmlnaHQgdW50aWwgaXQgcmVhY2hlcyBvbmUgdGhhdCBpcyBpbmNpZGVudFxuICogb24gYW4gaW5uZXIgc2VnbWVudC4gSXQgdGhlbiBzY2FucyBwcmVkZWNlc3NvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgaGF2ZVxuICogZWRnZXMgdGhhdCBjcm9zcyB0aGF0IGlubmVyIHNlZ21lbnQuIEF0IHRoZSBlbmQgYSBmaW5hbCBzY2FuIGlzIGRvbmUgZm9yIGFsbFxuICogbm9kZXMgb24gdGhlIGN1cnJlbnQgcmFuayB0byBzZWUgaWYgdGhleSBjcm9zcyB0aGUgbGFzdCB2aXNpdGVkIGlubmVyXG4gKiBzZWdtZW50LlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIChzYWZlbHkpIGFzc3VtZXMgdGhhdCBhIGR1bW15IG5vZGUgd2lsbCBvbmx5IGJlIGluY2lkZW50IG9uIGFcbiAqIHNpbmdsZSBub2RlIGluIHRoZSBsYXllcnMgYmVpbmcgc2Nhbm5lZC5cbiAqL1xuZnVuY3Rpb24gZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSB7XG4gIHZhciBjb25mbGljdHMgPSB7fTtcblxuICBmdW5jdGlvbiB2aXNpdExheWVyKHByZXZMYXllciwgbGF5ZXIpIHtcbiAgICB2YXJcbiAgICAgIC8vIGxhc3QgdmlzaXRlZCBub2RlIGluIHRoZSBwcmV2aW91cyBsYXllciB0aGF0IGlzIGluY2lkZW50IG9uIGFuIGlubmVyXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgazAgPSAwLFxuICAgICAgLy8gVHJhY2tzIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBsYXllciBzY2FubmVkIGZvciBjcm9zc2luZ3Mgd2l0aCBhIHR5cGUtMVxuICAgICAgLy8gc2VnbWVudC5cbiAgICAgIHNjYW5Qb3MgPSAwLFxuICAgICAgcHJldkxheWVyTGVuZ3RoID0gcHJldkxheWVyLmxlbmd0aCxcbiAgICAgIGxhc3ROb2RlID0gXy5sYXN0KGxheWVyKTtcblxuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIHcgPSBmaW5kT3RoZXJJbm5lclNlZ21lbnROb2RlKGcsIHYpLFxuICAgICAgICBrMSA9IHcgPyBnLm5vZGUodykub3JkZXIgOiBwcmV2TGF5ZXJMZW5ndGg7XG5cbiAgICAgIGlmICh3IHx8IHYgPT09IGxhc3ROb2RlKSB7XG4gICAgICAgIF8uZm9yRWFjaChsYXllci5zbGljZShzY2FuUG9zLCBpICsxKSwgZnVuY3Rpb24oc2Nhbk5vZGUpIHtcbiAgICAgICAgICBfLmZvckVhY2goZy5wcmVkZWNlc3NvcnMoc2Nhbk5vZGUpLCBmdW5jdGlvbih1KSB7XG4gICAgICAgICAgICB2YXIgdUxhYmVsID0gZy5ub2RlKHUpLFxuICAgICAgICAgICAgICB1UG9zID0gdUxhYmVsLm9yZGVyO1xuICAgICAgICAgICAgaWYgKCh1UG9zIDwgazAgfHwgazEgPCB1UG9zKSAmJlxuICAgICAgICAgICAgICAgICEodUxhYmVsLmR1bW15ICYmIGcubm9kZShzY2FuTm9kZSkuZHVtbXkpKSB7XG4gICAgICAgICAgICAgIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdSwgc2Nhbk5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2NhblBvcyA9IGkgKyAxO1xuICAgICAgICBrMCA9IGsxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgXy5yZWR1Y2UobGF5ZXJpbmcsIHZpc2l0TGF5ZXIpO1xuICByZXR1cm4gY29uZmxpY3RzO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZTJDb25mbGljdHMoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aEVuZCwgcHJldk5vcnRoQm9yZGVyLCBuZXh0Tm9ydGhCb3JkZXIpIHtcbiAgICB2YXIgdjtcbiAgICBfLmZvckVhY2goXy5yYW5nZShzb3V0aFBvcywgc291dGhFbmQpLCBmdW5jdGlvbihpKSB7XG4gICAgICB2ID0gc291dGhbaV07XG4gICAgICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgICAgIF8uZm9yRWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgICAgIHZhciB1Tm9kZSA9IGcubm9kZSh1KTtcbiAgICAgICAgICBpZiAodU5vZGUuZHVtbXkgJiZcbiAgICAgICAgICAgICAgKHVOb2RlLm9yZGVyIDwgcHJldk5vcnRoQm9yZGVyIHx8IHVOb2RlLm9yZGVyID4gbmV4dE5vcnRoQm9yZGVyKSkge1xuICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBmdW5jdGlvbiB2aXNpdExheWVyKG5vcnRoLCBzb3V0aCkge1xuICAgIHZhciBwcmV2Tm9ydGhQb3MgPSAtMSxcbiAgICAgIG5leHROb3J0aFBvcyxcbiAgICAgIHNvdXRoUG9zID0gMDtcblxuICAgIF8uZm9yRWFjaChzb3V0aCwgZnVuY3Rpb24odiwgc291dGhMb29rYWhlYWQpIHtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgICAgdmFyIHByZWRlY2Vzc29ycyA9IGcucHJlZGVjZXNzb3JzKHYpO1xuICAgICAgICBpZiAocHJlZGVjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgIG5leHROb3J0aFBvcyA9IGcubm9kZShwcmVkZWNlc3NvcnNbMF0pLm9yZGVyO1xuICAgICAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aExvb2thaGVhZCwgcHJldk5vcnRoUG9zLCBuZXh0Tm9ydGhQb3MpO1xuICAgICAgICAgIHNvdXRoUG9zID0gc291dGhMb29rYWhlYWQ7XG4gICAgICAgICAgcHJldk5vcnRoUG9zID0gbmV4dE5vcnRoUG9zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzY2FuKHNvdXRoLCBzb3V0aFBvcywgc291dGgubGVuZ3RoLCBuZXh0Tm9ydGhQb3MsIG5vcnRoLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc291dGg7XG4gIH1cblxuICBfLnJlZHVjZShsYXllcmluZywgdmlzaXRMYXllcik7XG4gIHJldHVybiBjb25mbGljdHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZywgdikge1xuICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgcmV0dXJuIF8uZmluZChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgcmV0dXJuIGcubm9kZSh1KS5kdW1teTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDb25mbGljdChjb25mbGljdHMsIHYsIHcpIHtcbiAgaWYgKHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuXG4gIHZhciBjb25mbGljdHNWID0gY29uZmxpY3RzW3ZdO1xuICBpZiAoIWNvbmZsaWN0c1YpIHtcbiAgICBjb25mbGljdHNbdl0gPSBjb25mbGljdHNWID0ge307XG4gIH1cbiAgY29uZmxpY3RzVlt3XSA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhhc0NvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiBfLmhhcyhjb25mbGljdHNbdl0sIHcpO1xufVxuXG4vKlxuICogVHJ5IHRvIGFsaWduIG5vZGVzIGludG8gdmVydGljYWwgXCJibG9ja3NcIiB3aGVyZSBwb3NzaWJsZS4gVGhpcyBhbGdvcml0aG1cbiAqIGF0dGVtcHRzIHRvIGFsaWduIGEgbm9kZSB3aXRoIG9uZSBvZiBpdHMgbWVkaWFuIG5laWdoYm9ycy4gSWYgdGhlIGVkZ2VcbiAqIGNvbm5lY3RpbmcgYSBuZWlnaGJvciBpcyBhIHR5cGUtMSBjb25mbGljdCB0aGVuIHdlIGlnbm9yZSB0aGF0IHBvc3NpYmlsaXR5LlxuICogSWYgYSBwcmV2aW91cyBub2RlIGhhcyBhbHJlYWR5IGZvcm1lZCBhIGJsb2NrIHdpdGggYSBub2RlIGFmdGVyIHRoZSBub2RlXG4gKiB3ZSdyZSB0cnlpbmcgdG8gZm9ybSBhIGJsb2NrIHdpdGgsIHdlIGFsc28gaWdub3JlIHRoYXQgcG9zc2liaWxpdHkgLSBvdXJcbiAqIGJsb2NrcyB3b3VsZCBiZSBzcGxpdCBpbiB0aGF0IHNjZW5hcmlvLlxuICovXG5mdW5jdGlvbiB2ZXJ0aWNhbEFsaWdubWVudChnLCBsYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKSB7XG4gIHZhciByb290ID0ge30sXG4gICAgYWxpZ24gPSB7fSxcbiAgICBwb3MgPSB7fTtcblxuICAvLyBXZSBjYWNoZSB0aGUgcG9zaXRpb24gaGVyZSBiYXNlZCBvbiB0aGUgbGF5ZXJpbmcgYmVjYXVzZSB0aGUgZ3JhcGggYW5kXG4gIC8vIGxheWVyaW5nIG1heSBiZSBvdXQgb2Ygc3luYy4gVGhlIGxheWVyaW5nIG1hdHJpeCBpcyBtYW5pcHVsYXRlZCB0b1xuICAvLyBnZW5lcmF0ZSBkaWZmZXJlbnQgZXh0cmVtZSBhbGlnbm1lbnRzLlxuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBvcmRlcikge1xuICAgICAgcm9vdFt2XSA9IHY7XG4gICAgICBhbGlnblt2XSA9IHY7XG4gICAgICBwb3Nbdl0gPSBvcmRlcjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBwcmV2SWR4ID0gLTE7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgICB2YXIgd3MgPSBuZWlnaGJvckZuKHYpO1xuICAgICAgaWYgKHdzLmxlbmd0aCkge1xuICAgICAgICB3cyA9IF8uc29ydEJ5KHdzLCBmdW5jdGlvbih3KSB7IHJldHVybiBwb3Nbd107IH0pO1xuICAgICAgICB2YXIgbXAgPSAod3MubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihtcCksIGlsID0gTWF0aC5jZWlsKG1wKTsgaSA8PSBpbDsgKytpKSB7XG4gICAgICAgICAgdmFyIHcgPSB3c1tpXTtcbiAgICAgICAgICBpZiAoYWxpZ25bdl0gPT09IHYgJiZcbiAgICAgICAgICAgICAgcHJldklkeCA8IHBvc1t3XSAmJlxuICAgICAgICAgICAgICAhaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSkge1xuICAgICAgICAgICAgYWxpZ25bd10gPSB2O1xuICAgICAgICAgICAgYWxpZ25bdl0gPSByb290W3ZdID0gcm9vdFt3XTtcbiAgICAgICAgICAgIHByZXZJZHggPSBwb3Nbd107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHJvb3Q6IHJvb3QsIGFsaWduOiBhbGlnbiB9O1xufVxuXG5mdW5jdGlvbiBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBsYXllcmluZywgcm9vdCwgYWxpZ24sIHJldmVyc2VTZXApIHtcbiAgLy8gVGhpcyBwb3J0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGlmZmVycyBmcm9tIEJLIGR1ZSB0byBhIG51bWJlciBvZiBwcm9ibGVtcy5cbiAgLy8gSW5zdGVhZCBvZiB0aGVpciBhbGdvcml0aG0gd2UgY29uc3RydWN0IGEgbmV3IGJsb2NrIGdyYXBoIGFuZCBkbyB0d29cbiAgLy8gc3dlZXBzLiBUaGUgZmlyc3Qgc3dlZXAgcGxhY2VzIGJsb2NrcyB3aXRoIHRoZSBzbWFsbGVzdCBwb3NzaWJsZVxuICAvLyBjb29yZGluYXRlcy4gVGhlIHNlY29uZCBzd2VlcCByZW1vdmVzIHVudXNlZCBzcGFjZSBieSBtb3ZpbmcgYmxvY2tzIHRvIHRoZVxuICAvLyBncmVhdGVzdCBjb29yZGluYXRlcyB3aXRob3V0IHZpb2xhdGluZyBzZXBhcmF0aW9uLlxuICB2YXIgeHMgPSB7fSxcbiAgICBibG9ja0cgPSBidWlsZEJsb2NrR3JhcGgoZywgbGF5ZXJpbmcsIHJvb3QsIHJldmVyc2VTZXApLFxuICAgIGJvcmRlclR5cGUgPSByZXZlcnNlU2VwID8gXCJib3JkZXJMZWZ0XCIgOiBcImJvcmRlclJpZ2h0XCI7XG5cbiAgZnVuY3Rpb24gaXRlcmF0ZShzZXRYc0Z1bmMsIG5leHROb2Rlc0Z1bmMpIHtcbiAgICB2YXIgc3RhY2sgPSBibG9ja0cubm9kZXMoKTtcbiAgICB2YXIgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2aXNpdGVkID0ge307XG4gICAgd2hpbGUgKGVsZW0pIHtcbiAgICAgIGlmICh2aXNpdGVkW2VsZW1dKSB7XG4gICAgICAgIHNldFhzRnVuYyhlbGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpc2l0ZWRbZWxlbV0gPSB0cnVlO1xuICAgICAgICBzdGFjay5wdXNoKGVsZW0pO1xuICAgICAgICBzdGFjayA9IHN0YWNrLmNvbmNhdChuZXh0Tm9kZXNGdW5jKGVsZW0pKTtcbiAgICAgIH1cblxuICAgICAgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IHBhc3MsIGFzc2lnbiBzbWFsbGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMShlbGVtKSB7XG4gICAgeHNbZWxlbV0gPSBibG9ja0cuaW5FZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoYWNjLCB4c1tlLnZdICsgYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLy8gU2Vjb25kIHBhc3MsIGFzc2lnbiBncmVhdGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMihlbGVtKSB7XG4gICAgdmFyIG1pbiA9IGJsb2NrRy5vdXRFZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5taW4oYWNjLCB4c1tlLnddIC0gYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG5cbiAgICB2YXIgbm9kZSA9IGcubm9kZShlbGVtKTtcbiAgICBpZiAobWluICE9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgJiYgbm9kZS5ib3JkZXJUeXBlICE9PSBib3JkZXJUeXBlKSB7XG4gICAgICB4c1tlbGVtXSA9IE1hdGgubWF4KHhzW2VsZW1dLCBtaW4pO1xuICAgIH1cbiAgfVxuXG4gIGl0ZXJhdGUocGFzczEsIGJsb2NrRy5wcmVkZWNlc3NvcnMuYmluZChibG9ja0cpKTtcbiAgaXRlcmF0ZShwYXNzMiwgYmxvY2tHLnN1Y2Nlc3NvcnMuYmluZChibG9ja0cpKTtcblxuICAvLyBBc3NpZ24geCBjb29yZGluYXRlcyB0byBhbGwgbm9kZXNcbiAgXy5mb3JFYWNoKGFsaWduLCBmdW5jdGlvbih2KSB7XG4gICAgeHNbdl0gPSB4c1tyb290W3ZdXTtcbiAgfSk7XG5cbiAgcmV0dXJuIHhzO1xufVxuXG5cbmZ1bmN0aW9uIGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCkge1xuICB2YXIgYmxvY2tHcmFwaCA9IG5ldyBHcmFwaCgpLFxuICAgIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCksXG4gICAgc2VwRm4gPSBzZXAoZ3JhcGhMYWJlbC5ub2Rlc2VwLCBncmFwaExhYmVsLmVkZ2VzZXAsIHJldmVyc2VTZXApO1xuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgdTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIHZhciB2Um9vdCA9IHJvb3Rbdl07XG4gICAgICBibG9ja0dyYXBoLnNldE5vZGUodlJvb3QpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIHVSb290ID0gcm9vdFt1XSxcbiAgICAgICAgICBwcmV2TWF4ID0gYmxvY2tHcmFwaC5lZGdlKHVSb290LCB2Um9vdCk7XG4gICAgICAgIGJsb2NrR3JhcGguc2V0RWRnZSh1Um9vdCwgdlJvb3QsIE1hdGgubWF4KHNlcEZuKGcsIHYsIHUpLCBwcmV2TWF4IHx8IDApKTtcbiAgICAgIH1cbiAgICAgIHUgPSB2O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gYmxvY2tHcmFwaDtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFsaWdubWVudCB0aGF0IGhhcyB0aGUgc21hbGxlc3Qgd2lkdGggb2YgdGhlIGdpdmVuIGFsaWdubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcykge1xuICByZXR1cm4gXy5taW5CeShfLnZhbHVlcyh4c3MpLCBmdW5jdGlvbiAoeHMpIHtcbiAgICB2YXIgbWF4ID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgIHZhciBtaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cbiAgICBfLmZvckluKHhzLCBmdW5jdGlvbiAoeCwgdikge1xuICAgICAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoKGcsIHYpIC8gMjtcblxuICAgICAgbWF4ID0gTWF0aC5tYXgoeCArIGhhbGZXaWR0aCwgbWF4KTtcbiAgICAgIG1pbiA9IE1hdGgubWluKHggLSBoYWxmV2lkdGgsIG1pbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF4IC0gbWluO1xuICB9KTtcbn1cblxuLypcbiAqIEFsaWduIHRoZSBjb29yZGluYXRlcyBvZiBlYWNoIG9mIHRoZSBsYXlvdXQgYWxpZ25tZW50cyBzdWNoIHRoYXRcbiAqIGxlZnQtYmlhc2VkIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtaW5pbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXNcbiAqIHRoZSBtaW5pbXVtIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudCBhbmQgcmlnaHQtYmlhc2VkXG4gKiBhbGlnbm1lbnRzIGhhdmUgdGhlaXIgbWF4aW11bSBjb29yZGluYXRlIGF0IHRoZSBzYW1lIHBvaW50IGFzIHRoZSBtYXhpbXVtXG4gKiBjb29yZGluYXRlIG9mIHRoZSBzbWFsbGVzdCB3aWR0aCBhbGlnbm1lbnQuXG4gKi9cbmZ1bmN0aW9uIGFsaWduQ29vcmRpbmF0ZXMoeHNzLCBhbGlnblRvKSB7XG4gIHZhciBhbGlnblRvVmFscyA9IF8udmFsdWVzKGFsaWduVG8pLFxuICAgIGFsaWduVG9NaW4gPSBfLm1pbihhbGlnblRvVmFscyksXG4gICAgYWxpZ25Ub01heCA9IF8ubWF4KGFsaWduVG9WYWxzKTtcblxuICBfLmZvckVhY2goW1widVwiLCBcImRcIl0sIGZ1bmN0aW9uKHZlcnQpIHtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICB2YXIgYWxpZ25tZW50ID0gdmVydCArIGhvcml6LFxuICAgICAgICB4cyA9IHhzc1thbGlnbm1lbnRdLFxuICAgICAgICBkZWx0YTtcbiAgICAgIGlmICh4cyA9PT0gYWxpZ25UbykgcmV0dXJuO1xuXG4gICAgICB2YXIgeHNWYWxzID0gXy52YWx1ZXMoeHMpO1xuICAgICAgZGVsdGEgPSBob3JpeiA9PT0gXCJsXCIgPyBhbGlnblRvTWluIC0gXy5taW4oeHNWYWxzKSA6IGFsaWduVG9NYXggLSBfLm1heCh4c1ZhbHMpO1xuXG4gICAgICBpZiAoZGVsdGEpIHtcbiAgICAgICAgeHNzW2FsaWdubWVudF0gPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4geCArIGRlbHRhOyB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGJhbGFuY2UoeHNzLCBhbGlnbikge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoeHNzLnVsLCBmdW5jdGlvbihpZ25vcmUsIHYpIHtcbiAgICBpZiAoYWxpZ24pIHtcbiAgICAgIHJldHVybiB4c3NbYWxpZ24udG9Mb3dlckNhc2UoKV1bdl07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB4cyA9IF8uc29ydEJ5KF8ubWFwKHhzcywgdikpO1xuICAgICAgcmV0dXJuICh4c1sxXSArIHhzWzJdKSAvIDI7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25YKGcpIHtcbiAgdmFyIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICB2YXIgY29uZmxpY3RzID0gXy5tZXJnZShcbiAgICBmaW5kVHlwZTFDb25mbGljdHMoZywgbGF5ZXJpbmcpLFxuICAgIGZpbmRUeXBlMkNvbmZsaWN0cyhnLCBsYXllcmluZykpO1xuXG4gIHZhciB4c3MgPSB7fTtcbiAgdmFyIGFkanVzdGVkTGF5ZXJpbmc7XG4gIF8uZm9yRWFjaChbXCJ1XCIsIFwiZFwiXSwgZnVuY3Rpb24odmVydCkge1xuICAgIGFkanVzdGVkTGF5ZXJpbmcgPSB2ZXJ0ID09PSBcInVcIiA/IGxheWVyaW5nIDogXy52YWx1ZXMobGF5ZXJpbmcpLnJldmVyc2UoKTtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICBpZiAoaG9yaXogPT09IFwiclwiKSB7XG4gICAgICAgIGFkanVzdGVkTGF5ZXJpbmcgPSBfLm1hcChhZGp1c3RlZExheWVyaW5nLCBmdW5jdGlvbihpbm5lcikge1xuICAgICAgICAgIHJldHVybiBfLnZhbHVlcyhpbm5lcikucmV2ZXJzZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yRm4gPSAodmVydCA9PT0gXCJ1XCIgPyBnLnByZWRlY2Vzc29ycyA6IGcuc3VjY2Vzc29ycykuYmluZChnKTtcbiAgICAgIHZhciBhbGlnbiA9IHZlcnRpY2FsQWxpZ25tZW50KGcsIGFkanVzdGVkTGF5ZXJpbmcsIGNvbmZsaWN0cywgbmVpZ2hib3JGbik7XG4gICAgICB2YXIgeHMgPSBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBhZGp1c3RlZExheWVyaW5nLFxuICAgICAgICBhbGlnbi5yb290LCBhbGlnbi5hbGlnbiwgaG9yaXogPT09IFwiclwiKTtcbiAgICAgIGlmIChob3JpeiA9PT0gXCJyXCIpIHtcbiAgICAgICAgeHMgPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4gLXg7IH0pO1xuICAgICAgfVxuICAgICAgeHNzW3ZlcnQgKyBob3Jpel0gPSB4cztcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFyIHNtYWxsZXN0V2lkdGggPSBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudChnLCB4c3MpO1xuICBhbGlnbkNvb3JkaW5hdGVzKHhzcywgc21hbGxlc3RXaWR0aCk7XG4gIHJldHVybiBiYWxhbmNlKHhzcywgZy5ncmFwaCgpLmFsaWduKTtcbn1cblxuZnVuY3Rpb24gc2VwKG5vZGVTZXAsIGVkZ2VTZXAsIHJldmVyc2VTZXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGcsIHYsIHcpIHtcbiAgICB2YXIgdkxhYmVsID0gZy5ub2RlKHYpO1xuICAgIHZhciB3TGFiZWwgPSBnLm5vZGUodyk7XG4gICAgdmFyIHN1bSA9IDA7XG4gICAgdmFyIGRlbHRhO1xuXG4gICAgc3VtICs9IHZMYWJlbC53aWR0aCAvIDI7XG4gICAgaWYgKF8uaGFzKHZMYWJlbCwgXCJsYWJlbHBvc1wiKSkge1xuICAgICAgc3dpdGNoICh2TGFiZWwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBcImxcIjogZGVsdGEgPSAtdkxhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICBjYXNlIFwiclwiOiBkZWx0YSA9IHZMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVsdGEpIHtcbiAgICAgIHN1bSArPSByZXZlcnNlU2VwID8gZGVsdGEgOiAtZGVsdGE7XG4gICAgfVxuICAgIGRlbHRhID0gMDtcblxuICAgIHN1bSArPSAodkxhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcbiAgICBzdW0gKz0gKHdMYWJlbC5kdW1teSA/IGVkZ2VTZXAgOiBub2RlU2VwKSAvIDI7XG5cbiAgICBzdW0gKz0gd0xhYmVsLndpZHRoIC8gMjtcbiAgICBpZiAoXy5oYXMod0xhYmVsLCBcImxhYmVscG9zXCIpKSB7XG4gICAgICBzd2l0Y2ggKHdMYWJlbC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFwibFwiOiBkZWx0YSA9IHdMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZGVsdGEgPSAtd0xhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWx0YSkge1xuICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICB9XG4gICAgZGVsdGEgPSAwO1xuXG4gICAgcmV0dXJuIHN1bTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lkdGgoZywgdikge1xuICByZXR1cm4gZy5ub2RlKHYpLndpZHRoO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG52YXIgcG9zaXRpb25YID0gcmVxdWlyZShcIi4vYmtcIikucG9zaXRpb25YO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvc2l0aW9uO1xuXG5mdW5jdGlvbiBwb3NpdGlvbihnKSB7XG4gIGcgPSB1dGlsLmFzTm9uQ29tcG91bmRHcmFwaChnKTtcblxuICBwb3NpdGlvblkoZyk7XG4gIF8uZm9yRWFjaChwb3NpdGlvblgoZyksIGZ1bmN0aW9uKHgsIHYpIHtcbiAgICBnLm5vZGUodikueCA9IHg7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblkoZykge1xuICB2YXIgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIHZhciByYW5rU2VwID0gZy5ncmFwaCgpLnJhbmtzZXA7XG4gIHZhciBwcmV2WSA9IDA7XG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgbWF4SGVpZ2h0ID0gXy5tYXgoXy5tYXAobGF5ZXIsIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5oZWlnaHQ7IH0pKTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIGcubm9kZSh2KS55ID0gcHJldlkgKyBtYXhIZWlnaHQgLyAyO1xuICAgIH0pO1xuICAgIHByZXZZICs9IG1heEhlaWdodCArIHJhbmtTZXA7XG4gIH0pO1xufVxuXG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xudmFyIHNsYWNrID0gcmVxdWlyZShcIi4vdXRpbFwiKS5zbGFjaztcblxubW9kdWxlLmV4cG9ydHMgPSBmZWFzaWJsZVRyZWU7XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIHRpZ2h0IGVkZ2VzIGFuZCBhZGp1c3RlZCB0aGUgaW5wdXQgbm9kZSdzXG4gKiByYW5rcyB0byBhY2hpZXZlIHRoaXMuIEEgdGlnaHQgZWRnZSBpcyBvbmUgdGhhdCBpcyBoYXMgYSBsZW5ndGggdGhhdCBtYXRjaGVzXG4gKiBpdHMgXCJtaW5sZW5cIiBhdHRyaWJ1dGUuXG4gKlxuICogVGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkFcbiAqIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gR3JhcGggbXVzdCBiZSBjb25uZWN0ZWQuXG4gKiAgICAzLiBHcmFwaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5vZGUuXG4gKiAgICA1LiBHcmFwaCBub2RlcyBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFzc2lnbmVkIGEgXCJyYW5rXCIgcHJvcGVydHkgdGhhdFxuICogICAgICAgcmVzcGVjdHMgdGhlIFwibWlubGVuXCIgcHJvcGVydHkgb2YgaW5jaWRlbnQgZWRnZXMuXG4gKiAgICA2LiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgYSBcIm1pbmxlblwiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAtIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSB0aGVpciByYW5rIGFkanVzdGVkIHRvIGVuc3VyZSB0aGF0IGFsbCBlZGdlcyBhcmVcbiAqICAgICAgdGlnaHQuXG4gKlxuICogUmV0dXJucyBhIHRyZWUgKHVuZGlyZWN0ZWQgZ3JhcGgpIHRoYXQgaXMgY29uc3RydWN0ZWQgdXNpbmcgb25seSBcInRpZ2h0XCJcbiAqIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBmZWFzaWJsZVRyZWUoZykge1xuICB2YXIgdCA9IG5ldyBHcmFwaCh7IGRpcmVjdGVkOiBmYWxzZSB9KTtcblxuICAvLyBDaG9vc2UgYXJiaXRyYXJ5IG5vZGUgZnJvbSB3aGljaCB0byBzdGFydCBvdXIgdHJlZVxuICB2YXIgc3RhcnQgPSBnLm5vZGVzKClbMF07XG4gIHZhciBzaXplID0gZy5ub2RlQ291bnQoKTtcbiAgdC5zZXROb2RlKHN0YXJ0LCB7fSk7XG5cbiAgdmFyIGVkZ2UsIGRlbHRhO1xuICB3aGlsZSAodGlnaHRUcmVlKHQsIGcpIDwgc2l6ZSkge1xuICAgIGVkZ2UgPSBmaW5kTWluU2xhY2tFZGdlKHQsIGcpO1xuICAgIGRlbHRhID0gdC5oYXNOb2RlKGVkZ2UudikgPyBzbGFjayhnLCBlZGdlKSA6IC1zbGFjayhnLCBlZGdlKTtcbiAgICBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKTtcbiAgfVxuXG4gIHJldHVybiB0O1xufVxuXG4vKlxuICogRmluZHMgYSBtYXhpbWFsIHRyZWUgb2YgdGlnaHQgZWRnZXMgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGVcbiAqIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRpZ2h0VHJlZSh0LCBnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgZWRnZVYgPSBlLnYsXG4gICAgICAgIHcgPSAodiA9PT0gZWRnZVYpID8gZS53IDogZWRnZVY7XG4gICAgICBpZiAoIXQuaGFzTm9kZSh3KSAmJiAhc2xhY2soZywgZSkpIHtcbiAgICAgICAgdC5zZXROb2RlKHcsIHt9KTtcbiAgICAgICAgdC5zZXRFZGdlKHYsIHcsIHt9KTtcbiAgICAgICAgZGZzKHcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIHQubm9kZUNvdW50KCk7XG59XG5cbi8qXG4gKiBGaW5kcyB0aGUgZWRnZSB3aXRoIHRoZSBzbWFsbGVzdCBzbGFjayB0aGF0IGlzIGluY2lkZW50IG9uIHRyZWUgYW5kIHJldHVybnNcbiAqIGl0LlxuICovXG5mdW5jdGlvbiBmaW5kTWluU2xhY2tFZGdlKHQsIGcpIHtcbiAgcmV0dXJuIF8ubWluQnkoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKHQuaGFzTm9kZShlLnYpICE9PSB0Lmhhc05vZGUoZS53KSkge1xuICAgICAgcmV0dXJuIHNsYWNrKGcsIGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0UmFua3ModCwgZywgZGVsdGEpIHtcbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGcubm9kZSh2KS5yYW5rICs9IGRlbHRhO1xuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgcmFua1V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIGxvbmdlc3RQYXRoID0gcmFua1V0aWwubG9uZ2VzdFBhdGg7XG52YXIgZmVhc2libGVUcmVlID0gcmVxdWlyZShcIi4vZmVhc2libGUtdHJlZVwiKTtcbnZhciBuZXR3b3JrU2ltcGxleCA9IHJlcXVpcmUoXCIuL25ldHdvcmstc2ltcGxleFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSByYW5rO1xuXG4vKlxuICogQXNzaWducyBhIHJhbmsgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaCB0aGF0IHJlc3BlY3RzIHRoZSBcIm1pbmxlblwiXG4gKiBjb25zdHJhaW50IHNwZWNpZmllZCBvbiBlZGdlcyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFRoaXMgYmFzaWMgc3RydWN0dXJlIGlzIGRlcml2ZWQgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWUgZm9yXG4gKiBEcmF3aW5nIERpcmVjdGVkIEdyYXBocy5cIlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG11c3QgYmUgYSBjb25uZWN0ZWQgREFHXG4gKiAgICAyLiBHcmFwaCBub2RlcyBtdXN0IGJlIG9iamVjdHNcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSBcIndlaWdodFwiIGFuZCBcIm1pbmxlblwiIGF0dHJpYnV0ZXNcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGEgXCJyYW5rXCIgYXR0cmlidXRlIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZVxuICogICAgICAgYWxnb3JpdGhtLiBSYW5rcyBjYW4gc3RhcnQgYXQgYW55IGluZGV4IChpbmNsdWRpbmcgbmVnYXRpdmUpLCB3ZSdsbFxuICogICAgICAgZml4IHRoZW0gdXAgbGF0ZXIuXG4gKi9cbmZ1bmN0aW9uIHJhbmsoZykge1xuICBzd2l0Y2goZy5ncmFwaCgpLnJhbmtlcikge1xuICBjYXNlIFwibmV0d29yay1zaW1wbGV4XCI6IG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpOyBicmVhaztcbiAgY2FzZSBcInRpZ2h0LXRyZWVcIjogdGlnaHRUcmVlUmFua2VyKGcpOyBicmVhaztcbiAgY2FzZSBcImxvbmdlc3QtcGF0aFwiOiBsb25nZXN0UGF0aFJhbmtlcihnKTsgYnJlYWs7XG4gIGRlZmF1bHQ6IG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpO1xuICB9XG59XG5cbi8vIEEgZmFzdCBhbmQgc2ltcGxlIHJhbmtlciwgYnV0IHJlc3VsdHMgYXJlIGZhciBmcm9tIG9wdGltYWwuXG52YXIgbG9uZ2VzdFBhdGhSYW5rZXIgPSBsb25nZXN0UGF0aDtcblxuZnVuY3Rpb24gdGlnaHRUcmVlUmFua2VyKGcpIHtcbiAgbG9uZ2VzdFBhdGgoZyk7XG4gIGZlYXNpYmxlVHJlZShnKTtcbn1cblxuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXhSYW5rZXIoZykge1xuICBuZXR3b3JrU2ltcGxleChnKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgZmVhc2libGVUcmVlID0gcmVxdWlyZShcIi4vZmVhc2libGUtdHJlZVwiKTtcbnZhciBzbGFjayA9IHJlcXVpcmUoXCIuL3V0aWxcIikuc2xhY2s7XG52YXIgaW5pdFJhbmsgPSByZXF1aXJlKFwiLi91dGlsXCIpLmxvbmdlc3RQYXRoO1xudmFyIHByZW9yZGVyID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLmFsZy5wcmVvcmRlcjtcbnZhciBwb3N0b3JkZXIgPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuYWxnLnBvc3RvcmRlcjtcbnZhciBzaW1wbGlmeSA9IHJlcXVpcmUoXCIuLi91dGlsXCIpLnNpbXBsaWZ5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldHdvcmtTaW1wbGV4O1xuXG4vLyBFeHBvc2Ugc29tZSBpbnRlcm5hbHMgZm9yIHRlc3RpbmcgcHVycG9zZXNcbm5ldHdvcmtTaW1wbGV4LmluaXRMb3dMaW1WYWx1ZXMgPSBpbml0TG93TGltVmFsdWVzO1xubmV0d29ya1NpbXBsZXguaW5pdEN1dFZhbHVlcyA9IGluaXRDdXRWYWx1ZXM7XG5uZXR3b3JrU2ltcGxleC5jYWxjQ3V0VmFsdWUgPSBjYWxjQ3V0VmFsdWU7XG5uZXR3b3JrU2ltcGxleC5sZWF2ZUVkZ2UgPSBsZWF2ZUVkZ2U7XG5uZXR3b3JrU2ltcGxleC5lbnRlckVkZ2UgPSBlbnRlckVkZ2U7XG5uZXR3b3JrU2ltcGxleC5leGNoYW5nZUVkZ2VzID0gZXhjaGFuZ2VFZGdlcztcblxuLypcbiAqIFRoZSBuZXR3b3JrIHNpbXBsZXggYWxnb3JpdGhtIGFzc2lnbnMgcmFua3MgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIGl0ZXJhdGl2ZWx5IGltcHJvdmVzIHRoZSByYW5raW5nIHRvIHJlZHVjZSB0aGUgbGVuZ3RoIG9mIGVkZ2VzLlxuICpcbiAqIFByZWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIG11c3QgYmUgYSBEQUcuXG4gKiAgICAyLiBBbGwgbm9kZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBhbiBvYmplY3QgdmFsdWUuXG4gKiAgICAzLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBcIm1pbmxlblwiIGFuZCBcIndlaWdodFwiIGF0dHJpYnV0ZXMuXG4gKlxuICogUG9zdGNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCB3aWxsIGhhdmUgYW4gYXNzaWduZWQgXCJyYW5rXCIgYXR0cmlidXRlIHRoYXQgaGFzXG4gKiAgICAgICBiZWVuIG9wdGltaXplZCBieSB0aGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobS4gUmFua3Mgc3RhcnQgYXQgMC5cbiAqXG4gKlxuICogQSByb3VnaCBza2V0Y2ggb2YgdGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEFzc2lnbiBpbml0aWFsIHJhbmtzIHRvIGVhY2ggbm9kZS4gV2UgdXNlIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLFxuICogICAgICAgd2hpY2ggYXNzaWducyByYW5rcyB0byB0aGUgbG93ZXN0IHBvc2l0aW9uIHBvc3NpYmxlLiBJbiBnZW5lcmFsIHRoaXNcbiAqICAgICAgIGxlYWRzIHRvIHZlcnkgd2lkZSBib3R0b20gcmFua3MgYW5kIHVubmVjZXNzYXJpbHkgbG9uZyBlZGdlcy5cbiAqICAgIDIuIENvbnN0cnVjdCBhIGZlYXNpYmxlIHRpZ2h0IHRyZWUuIEEgdGlnaHQgdHJlZSBpcyBvbmUgc3VjaCB0aGF0IGFsbFxuICogICAgICAgZWRnZXMgaW4gdGhlIHRyZWUgaGF2ZSBubyBzbGFjayAoZGlmZmVyZW5jZSBiZXR3ZWVuIGxlbmd0aCBvZiBlZGdlXG4gKiAgICAgICBhbmQgbWlubGVuIGZvciB0aGUgZWRnZSkuIFRoaXMgYnkgaXRzZWxmIGdyZWF0bHkgaW1wcm92ZXMgdGhlIGFzc2lnbmVkXG4gKiAgICAgICByYW5raW5ncyBieSBzaG9ydGluZyBlZGdlcy5cbiAqICAgIDMuIEl0ZXJhdGl2ZWx5IGZpbmQgZWRnZXMgdGhhdCBoYXZlIG5lZ2F0aXZlIGN1dCB2YWx1ZXMuIEdlbmVyYWxseSBhXG4gKiAgICAgICBuZWdhdGl2ZSBjdXQgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIGVkZ2UgY291bGQgYmUgcmVtb3ZlZCBhbmQgYSBuZXdcbiAqICAgICAgIHRyZWUgZWRnZSBjb3VsZCBiZSBhZGRlZCB0byBwcm9kdWNlIGEgbW9yZSBjb21wYWN0IGdyYXBoLlxuICpcbiAqIE11Y2ggb2YgdGhlIGFsZ29yaXRobXMgaGVyZSBhcmUgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZVxuICogZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZpbGUgcm91Z2hseSBmb2xsb3dzIHRoZVxuICogc3RydWN0dXJlIG9mIHRoZSBvdmVyYWxsIGFsZ29yaXRobS5cbiAqL1xuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXgoZykge1xuICBnID0gc2ltcGxpZnkoZyk7XG4gIGluaXRSYW5rKGcpO1xuICB2YXIgdCA9IGZlYXNpYmxlVHJlZShnKTtcbiAgaW5pdExvd0xpbVZhbHVlcyh0KTtcbiAgaW5pdEN1dFZhbHVlcyh0LCBnKTtcblxuICB2YXIgZSwgZjtcbiAgd2hpbGUgKChlID0gbGVhdmVFZGdlKHQpKSkge1xuICAgIGYgPSBlbnRlckVkZ2UodCwgZywgZSk7XG4gICAgZXhjaGFuZ2VFZGdlcyh0LCBnLCBlLCBmKTtcbiAgfVxufVxuXG4vKlxuICogSW5pdGlhbGl6ZXMgY3V0IHZhbHVlcyBmb3IgYWxsIGVkZ2VzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpbml0Q3V0VmFsdWVzKHQsIGcpIHtcbiAgdmFyIHZzID0gcG9zdG9yZGVyKHQsIHQubm9kZXMoKSk7XG4gIHZzID0gdnMuc2xpY2UoMCwgdnMubGVuZ3RoIC0gMSk7XG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGFzc2lnbkN1dFZhbHVlKHQsIGcsIHYpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduQ3V0VmFsdWUodCwgZywgY2hpbGQpIHtcbiAgdmFyIGNoaWxkTGFiID0gdC5ub2RlKGNoaWxkKTtcbiAgdmFyIHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgdC5lZGdlKGNoaWxkLCBwYXJlbnQpLmN1dHZhbHVlID0gY2FsY0N1dFZhbHVlKHQsIGcsIGNoaWxkKTtcbn1cblxuLypcbiAqIEdpdmVuIHRoZSB0aWdodCB0cmVlLCBpdHMgZ3JhcGgsIGFuZCBhIGNoaWxkIGluIHRoZSBncmFwaCBjYWxjdWxhdGUgYW5kXG4gKiByZXR1cm4gdGhlIGN1dCB2YWx1ZSBmb3IgdGhlIGVkZ2UgYmV0d2VlbiB0aGUgY2hpbGQgYW5kIGl0cyBwYXJlbnQuXG4gKi9cbmZ1bmN0aW9uIGNhbGNDdXRWYWx1ZSh0LCBnLCBjaGlsZCkge1xuICB2YXIgY2hpbGRMYWIgPSB0Lm5vZGUoY2hpbGQpO1xuICB2YXIgcGFyZW50ID0gY2hpbGRMYWIucGFyZW50O1xuICAvLyBUcnVlIGlmIHRoZSBjaGlsZCBpcyBvbiB0aGUgdGFpbCBlbmQgb2YgdGhlIGVkZ2UgaW4gdGhlIGRpcmVjdGVkIGdyYXBoXG4gIHZhciBjaGlsZElzVGFpbCA9IHRydWU7XG4gIC8vIFRoZSBncmFwaCdzIHZpZXcgb2YgdGhlIHRyZWUgZWRnZSB3ZSdyZSBpbnNwZWN0aW5nXG4gIHZhciBncmFwaEVkZ2UgPSBnLmVkZ2UoY2hpbGQsIHBhcmVudCk7XG4gIC8vIFRoZSBhY2N1bXVsYXRlZCBjdXQgdmFsdWUgZm9yIHRoZSBlZGdlIGJldHdlZW4gdGhpcyBub2RlIGFuZCBpdHMgcGFyZW50XG4gIHZhciBjdXRWYWx1ZSA9IDA7XG5cbiAgaWYgKCFncmFwaEVkZ2UpIHtcbiAgICBjaGlsZElzVGFpbCA9IGZhbHNlO1xuICAgIGdyYXBoRWRnZSA9IGcuZWRnZShwYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIGN1dFZhbHVlID0gZ3JhcGhFZGdlLndlaWdodDtcblxuICBfLmZvckVhY2goZy5ub2RlRWRnZXMoY2hpbGQpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGlzT3V0RWRnZSA9IGUudiA9PT0gY2hpbGQsXG4gICAgICBvdGhlciA9IGlzT3V0RWRnZSA/IGUudyA6IGUudjtcblxuICAgIGlmIChvdGhlciAhPT0gcGFyZW50KSB7XG4gICAgICB2YXIgcG9pbnRzVG9IZWFkID0gaXNPdXRFZGdlID09PSBjaGlsZElzVGFpbCxcbiAgICAgICAgb3RoZXJXZWlnaHQgPSBnLmVkZ2UoZSkud2VpZ2h0O1xuXG4gICAgICBjdXRWYWx1ZSArPSBwb2ludHNUb0hlYWQgPyBvdGhlcldlaWdodCA6IC1vdGhlcldlaWdodDtcbiAgICAgIGlmIChpc1RyZWVFZGdlKHQsIGNoaWxkLCBvdGhlcikpIHtcbiAgICAgICAgdmFyIG90aGVyQ3V0VmFsdWUgPSB0LmVkZ2UoY2hpbGQsIG90aGVyKS5jdXR2YWx1ZTtcbiAgICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gLW90aGVyQ3V0VmFsdWUgOiBvdGhlckN1dFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGN1dFZhbHVlO1xufVxuXG5mdW5jdGlvbiBpbml0TG93TGltVmFsdWVzKHRyZWUsIHJvb3QpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgcm9vdCA9IHRyZWUubm9kZXMoKVswXTtcbiAgfVxuICBkZnNBc3NpZ25Mb3dMaW0odHJlZSwge30sIDEsIHJvb3QpO1xufVxuXG5mdW5jdGlvbiBkZnNBc3NpZ25Mb3dMaW0odHJlZSwgdmlzaXRlZCwgbmV4dExpbSwgdiwgcGFyZW50KSB7XG4gIHZhciBsb3cgPSBuZXh0TGltO1xuICB2YXIgbGFiZWwgPSB0cmVlLm5vZGUodik7XG5cbiAgdmlzaXRlZFt2XSA9IHRydWU7XG4gIF8uZm9yRWFjaCh0cmVlLm5laWdoYm9ycyh2KSwgZnVuY3Rpb24odykge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdykpIHtcbiAgICAgIG5leHRMaW0gPSBkZnNBc3NpZ25Mb3dMaW0odHJlZSwgdmlzaXRlZCwgbmV4dExpbSwgdywgdik7XG4gICAgfVxuICB9KTtcblxuICBsYWJlbC5sb3cgPSBsb3c7XG4gIGxhYmVsLmxpbSA9IG5leHRMaW0rKztcbiAgaWYgKHBhcmVudCkge1xuICAgIGxhYmVsLnBhcmVudCA9IHBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIHdoZW4gd2UgaW5jcmVtZW50YWxseSB1cGRhdGUgbG93IGxpbVxuICAgIGRlbGV0ZSBsYWJlbC5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gbmV4dExpbTtcbn1cblxuZnVuY3Rpb24gbGVhdmVFZGdlKHRyZWUpIHtcbiAgcmV0dXJuIF8uZmluZCh0cmVlLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gdHJlZS5lZGdlKGUpLmN1dHZhbHVlIDwgMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVudGVyRWRnZSh0LCBnLCBlZGdlKSB7XG4gIHZhciB2ID0gZWRnZS52O1xuICB2YXIgdyA9IGVkZ2UudztcblxuICAvLyBGb3IgdGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlvbiB3ZSBhc3N1bWUgdGhhdCB2IGlzIHRoZSB0YWlsIGFuZCB3IGlzIHRoZVxuICAvLyBoZWFkLCBzbyBpZiB3ZSBkb24ndCBoYXZlIHRoaXMgZWRnZSBpbiB0aGUgZ3JhcGggd2Ugc2hvdWxkIGZsaXAgaXQgdG9cbiAgLy8gbWF0Y2ggdGhlIGNvcnJlY3Qgb3JpZW50YXRpb24uXG4gIGlmICghZy5oYXNFZGdlKHYsIHcpKSB7XG4gICAgdiA9IGVkZ2UudztcbiAgICB3ID0gZWRnZS52O1xuICB9XG5cbiAgdmFyIHZMYWJlbCA9IHQubm9kZSh2KTtcbiAgdmFyIHdMYWJlbCA9IHQubm9kZSh3KTtcbiAgdmFyIHRhaWxMYWJlbCA9IHZMYWJlbDtcbiAgdmFyIGZsaXAgPSBmYWxzZTtcblxuICAvLyBJZiB0aGUgcm9vdCBpcyBpbiB0aGUgdGFpbCBvZiB0aGUgZWRnZSB0aGVuIHdlIG5lZWQgdG8gZmxpcCB0aGUgbG9naWMgdGhhdFxuICAvLyBjaGVja3MgZm9yIHRoZSBoZWFkIGFuZCB0YWlsIG5vZGVzIGluIHRoZSBjYW5kaWRhdGVzIGZ1bmN0aW9uIGJlbG93LlxuICBpZiAodkxhYmVsLmxpbSA+IHdMYWJlbC5saW0pIHtcbiAgICB0YWlsTGFiZWwgPSB3TGFiZWw7XG4gICAgZmxpcCA9IHRydWU7XG4gIH1cblxuICB2YXIgY2FuZGlkYXRlcyA9IF8uZmlsdGVyKGcuZWRnZXMoKSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHJldHVybiBmbGlwID09PSBpc0Rlc2NlbmRhbnQodCwgdC5ub2RlKGVkZ2UudiksIHRhaWxMYWJlbCkgJiZcbiAgICAgICAgICAgZmxpcCAhPT0gaXNEZXNjZW5kYW50KHQsIHQubm9kZShlZGdlLncpLCB0YWlsTGFiZWwpO1xuICB9KTtcblxuICByZXR1cm4gXy5taW5CeShjYW5kaWRhdGVzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBzbGFjayhnLCBlZGdlKTsgfSk7XG59XG5cbmZ1bmN0aW9uIGV4Y2hhbmdlRWRnZXModCwgZywgZSwgZikge1xuICB2YXIgdiA9IGUudjtcbiAgdmFyIHcgPSBlLnc7XG4gIHQucmVtb3ZlRWRnZSh2LCB3KTtcbiAgdC5zZXRFZGdlKGYudiwgZi53LCB7fSk7XG4gIGluaXRMb3dMaW1WYWx1ZXModCk7XG4gIGluaXRDdXRWYWx1ZXModCwgZyk7XG4gIHVwZGF0ZVJhbmtzKHQsIGcpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVSYW5rcyh0LCBnKSB7XG4gIHZhciByb290ID0gXy5maW5kKHQubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXR1cm4gIWcubm9kZSh2KS5wYXJlbnQ7IH0pO1xuICB2YXIgdnMgPSBwcmVvcmRlcih0LCByb290KTtcbiAgdnMgPSB2cy5zbGljZSgxKTtcbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHBhcmVudCA9IHQubm9kZSh2KS5wYXJlbnQsXG4gICAgICBlZGdlID0gZy5lZGdlKHYsIHBhcmVudCksXG4gICAgICBmbGlwcGVkID0gZmFsc2U7XG5cbiAgICBpZiAoIWVkZ2UpIHtcbiAgICAgIGVkZ2UgPSBnLmVkZ2UocGFyZW50LCB2KTtcbiAgICAgIGZsaXBwZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGcubm9kZSh2KS5yYW5rID0gZy5ub2RlKHBhcmVudCkucmFuayArIChmbGlwcGVkID8gZWRnZS5taW5sZW4gOiAtZWRnZS5taW5sZW4pO1xuICB9KTtcbn1cblxuLypcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWRnZSBpcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaXNUcmVlRWRnZSh0cmVlLCB1LCB2KSB7XG4gIHJldHVybiB0cmVlLmhhc0VkZ2UodSwgdik7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCBub2RlIGlzIGRlc2NlbmRhbnQgb2YgdGhlIHJvb3Qgbm9kZSBwZXIgdGhlXG4gKiBhc3NpZ25lZCBsb3cgYW5kIGxpbSBhdHRyaWJ1dGVzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpc0Rlc2NlbmRhbnQodHJlZSwgdkxhYmVsLCByb290TGFiZWwpIHtcbiAgcmV0dXJuIHJvb3RMYWJlbC5sb3cgPD0gdkxhYmVsLmxpbSAmJiB2TGFiZWwubGltIDw9IHJvb3RMYWJlbC5saW07XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbG9uZ2VzdFBhdGg6IGxvbmdlc3RQYXRoLFxuICBzbGFjazogc2xhY2tcbn07XG5cbi8qXG4gKiBJbml0aWFsaXplcyByYW5rcyBmb3IgdGhlIGlucHV0IGdyYXBoIHVzaW5nIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLiBUaGlzXG4gKiBhbGdvcml0aG0gc2NhbGVzIHdlbGwgYW5kIGlzIGZhc3QgaW4gcHJhY3RpY2UsIGl0IHlpZWxkcyByYXRoZXIgcG9vclxuICogc29sdXRpb25zLiBOb2RlcyBhcmUgcHVzaGVkIHRvIHRoZSBsb3dlc3QgbGF5ZXIgcG9zc2libGUsIGxlYXZpbmcgdGhlIGJvdHRvbVxuICogcmFua3Mgd2lkZSBhbmQgbGVhdmluZyBlZGdlcyBsb25nZXIgdGhhbiBuZWNlc3NhcnkuIEhvd2V2ZXIsIGR1ZSB0byBpdHNcbiAqIHNwZWVkLCB0aGlzIGFsZ29yaXRobSBpcyBnb29kIGZvciBnZXR0aW5nIGFuIGluaXRpYWwgcmFua2luZyB0aGF0IGNhbiBiZSBmZWRcbiAqIGludG8gb3RoZXIgYWxnb3JpdGhtcy5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBkb2VzIG5vdCBub3JtYWxpemUgbGF5ZXJzIGJlY2F1c2UgaXQgd2lsbCBiZSB1c2VkIGJ5IG90aGVyXG4gKiBhbGdvcml0aG1zIGluIG1vc3QgY2FzZXMuIElmIHVzaW5nIHRoaXMgYWxnb3JpdGhtIGRpcmVjdGx5LCBiZSBzdXJlIHRvXG4gKiBydW4gbm9ybWFsaXplIGF0IHRoZSBlbmQuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBJbnB1dCBncmFwaCBub2RlIGxhYmVscyBjYW4gYmUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gRWFjaCBub2RlIHdpbGwgYmUgYXNzaWduIGFuICh1bm5vcm1hbGl6ZWQpIFwicmFua1wiIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBsb25nZXN0UGF0aChnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgbGFiZWwgPSBnLm5vZGUodik7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgICByZXR1cm4gbGFiZWwucmFuaztcbiAgICB9XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICB2YXIgcmFuayA9IF8ubWluKF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiBkZnMoZS53KSAtIGcuZWRnZShlKS5taW5sZW47XG4gICAgfSkpO1xuXG4gICAgaWYgKHJhbmsgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggM1xuICAgICAgICByYW5rID09PSB1bmRlZmluZWQgfHwgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtdKSBmb3IgTG9kYXNoIDRcbiAgICAgICAgcmFuayA9PT0gbnVsbCkgeyAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW251bGxdKVxuICAgICAgcmFuayA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIChsYWJlbC5yYW5rID0gcmFuayk7XG4gIH1cblxuICBfLmZvckVhY2goZy5zb3VyY2VzKCksIGRmcyk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRoZSBhbW91bnQgb2Ygc2xhY2sgZm9yIHRoZSBnaXZlbiBlZGdlLiBUaGUgc2xhY2sgaXMgZGVmaW5lZCBhcyB0aGVcbiAqIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGVuZ3RoIG9mIHRoZSBlZGdlIGFuZCBpdHMgbWluaW11bSBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIHNsYWNrKGcsIGUpIHtcbiAgcmV0dXJuIGcubm9kZShlLncpLnJhbmsgLSBnLm5vZGUoZS52KS5yYW5rIC0gZy5lZGdlKGUpLm1pbmxlbjtcbn1cbiIsIi8qIGVzbGludCBcIm5vLWNvbnNvbGVcIjogb2ZmICovXG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWRkRHVtbXlOb2RlOiBhZGREdW1teU5vZGUsXG4gIHNpbXBsaWZ5OiBzaW1wbGlmeSxcbiAgYXNOb25Db21wb3VuZEdyYXBoOiBhc05vbkNvbXBvdW5kR3JhcGgsXG4gIHN1Y2Nlc3NvcldlaWdodHM6IHN1Y2Nlc3NvcldlaWdodHMsXG4gIHByZWRlY2Vzc29yV2VpZ2h0czogcHJlZGVjZXNzb3JXZWlnaHRzLFxuICBpbnRlcnNlY3RSZWN0OiBpbnRlcnNlY3RSZWN0LFxuICBidWlsZExheWVyTWF0cml4OiBidWlsZExheWVyTWF0cml4LFxuICBub3JtYWxpemVSYW5rczogbm9ybWFsaXplUmFua3MsXG4gIHJlbW92ZUVtcHR5UmFua3M6IHJlbW92ZUVtcHR5UmFua3MsXG4gIGFkZEJvcmRlck5vZGU6IGFkZEJvcmRlck5vZGUsXG4gIG1heFJhbms6IG1heFJhbmssXG4gIHBhcnRpdGlvbjogcGFydGl0aW9uLFxuICB0aW1lOiB0aW1lLFxuICBub3RpbWU6IG5vdGltZVxufTtcblxuLypcbiAqIEFkZHMgYSBkdW1teSBub2RlIHRvIHRoZSBncmFwaCBhbmQgcmV0dXJuIHYuXG4gKi9cbmZ1bmN0aW9uIGFkZER1bW15Tm9kZShnLCB0eXBlLCBhdHRycywgbmFtZSkge1xuICB2YXIgdjtcbiAgZG8ge1xuICAgIHYgPSBfLnVuaXF1ZUlkKG5hbWUpO1xuICB9IHdoaWxlIChnLmhhc05vZGUodikpO1xuXG4gIGF0dHJzLmR1bW15ID0gdHlwZTtcbiAgZy5zZXROb2RlKHYsIGF0dHJzKTtcbiAgcmV0dXJuIHY7XG59XG5cbi8qXG4gKiBSZXR1cm5zIGEgbmV3IGdyYXBoIHdpdGggb25seSBzaW1wbGUgZWRnZXMuIEhhbmRsZXMgYWdncmVnYXRpb24gb2YgZGF0YVxuICogYXNzb2NpYXRlZCB3aXRoIG11bHRpLWVkZ2VzLlxuICovXG5mdW5jdGlvbiBzaW1wbGlmeShnKSB7XG4gIHZhciBzaW1wbGlmaWVkID0gbmV3IEdyYXBoKCkuc2V0R3JhcGgoZy5ncmFwaCgpKTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBzaW1wbGlmaWVkLnNldE5vZGUodiwgZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgc2ltcGxlTGFiZWwgPSBzaW1wbGlmaWVkLmVkZ2UoZS52LCBlLncpIHx8IHsgd2VpZ2h0OiAwLCBtaW5sZW46IDEgfTtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUudiwgZS53LCB7XG4gICAgICB3ZWlnaHQ6IHNpbXBsZUxhYmVsLndlaWdodCArIGxhYmVsLndlaWdodCxcbiAgICAgIG1pbmxlbjogTWF0aC5tYXgoc2ltcGxlTGFiZWwubWlubGVuLCBsYWJlbC5taW5sZW4pXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gc2ltcGxpZmllZDtcbn1cblxuZnVuY3Rpb24gYXNOb25Db21wb3VuZEdyYXBoKGcpIHtcbiAgdmFyIHNpbXBsaWZpZWQgPSBuZXcgR3JhcGgoeyBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpIH0pLnNldEdyYXBoKGcuZ3JhcGgoKSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoIWcuY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICBzaW1wbGlmaWVkLnNldE5vZGUodiwgZy5ub2RlKHYpKTtcbiAgICB9XG4gIH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUsIGcuZWRnZShlKSk7XG4gIH0pO1xuICByZXR1cm4gc2ltcGxpZmllZDtcbn1cblxuZnVuY3Rpb24gc3VjY2Vzc29yV2VpZ2h0cyhnKSB7XG4gIHZhciB3ZWlnaHRNYXAgPSBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgc3VjcyA9IHt9O1xuICAgIF8uZm9yRWFjaChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBzdWNzW2Uud10gPSAoc3Vjc1tlLnddIHx8IDApICsgZy5lZGdlKGUpLndlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gc3VjcztcbiAgfSk7XG4gIHJldHVybiBfLnppcE9iamVjdChnLm5vZGVzKCksIHdlaWdodE1hcCk7XG59XG5cbmZ1bmN0aW9uIHByZWRlY2Vzc29yV2VpZ2h0cyhnKSB7XG4gIHZhciB3ZWlnaHRNYXAgPSBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcHJlZHMgPSB7fTtcbiAgICBfLmZvckVhY2goZy5pbkVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBwcmVkc1tlLnZdID0gKHByZWRzW2Uudl0gfHwgMCkgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH0pO1xuICAgIHJldHVybiBwcmVkcztcbiAgfSk7XG4gIHJldHVybiBfLnppcE9iamVjdChnLm5vZGVzKCksIHdlaWdodE1hcCk7XG59XG5cbi8qXG4gKiBGaW5kcyB3aGVyZSBhIGxpbmUgc3RhcnRpbmcgYXQgcG9pbnQgKHt4LCB5fSkgd291bGQgaW50ZXJzZWN0IGEgcmVjdGFuZ2xlXG4gKiAoe3gsIHksIHdpZHRoLCBoZWlnaHR9KSBpZiBpdCB3ZXJlIHBvaW50aW5nIGF0IHRoZSByZWN0YW5nbGUncyBjZW50ZXIuXG4gKi9cbmZ1bmN0aW9uIGludGVyc2VjdFJlY3QocmVjdCwgcG9pbnQpIHtcbiAgdmFyIHggPSByZWN0Lng7XG4gIHZhciB5ID0gcmVjdC55O1xuXG4gIC8vIFJlY3RhbmdsZSBpbnRlcnNlY3Rpb24gYWxnb3JpdGhtIGZyb206XG4gIC8vIGh0dHA6Ly9tYXRoLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMDgxMTMvZmluZC1lZGdlLWJldHdlZW4tdHdvLWJveGVzXG4gIHZhciBkeCA9IHBvaW50LnggLSB4O1xuICB2YXIgZHkgPSBwb2ludC55IC0geTtcbiAgdmFyIHcgPSByZWN0LndpZHRoIC8gMjtcbiAgdmFyIGggPSByZWN0LmhlaWdodCAvIDI7XG5cbiAgaWYgKCFkeCAmJiAhZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGVcIik7XG4gIH1cblxuICB2YXIgc3gsIHN5O1xuICBpZiAoTWF0aC5hYnMoZHkpICogdyA+IE1hdGguYWJzKGR4KSAqIGgpIHtcbiAgICAvLyBJbnRlcnNlY3Rpb24gaXMgdG9wIG9yIGJvdHRvbSBvZiByZWN0LlxuICAgIGlmIChkeSA8IDApIHtcbiAgICAgIGggPSAtaDtcbiAgICB9XG4gICAgc3ggPSBoICogZHggLyBkeTtcbiAgICBzeSA9IGg7XG4gIH0gZWxzZSB7XG4gICAgLy8gSW50ZXJzZWN0aW9uIGlzIGxlZnQgb3IgcmlnaHQgb2YgcmVjdC5cbiAgICBpZiAoZHggPCAwKSB7XG4gICAgICB3ID0gLXc7XG4gICAgfVxuICAgIHN4ID0gdztcbiAgICBzeSA9IHcgKiBkeSAvIGR4O1xuICB9XG5cbiAgcmV0dXJuIHsgeDogeCArIHN4LCB5OiB5ICsgc3kgfTtcbn1cblxuLypcbiAqIEdpdmVuIGEgREFHIHdpdGggZWFjaCBub2RlIGFzc2lnbmVkIFwicmFua1wiIGFuZCBcIm9yZGVyXCIgcHJvcGVydGllcywgdGhpc1xuICogZnVuY3Rpb24gd2lsbCBwcm9kdWNlIGEgbWF0cml4IHdpdGggdGhlIGlkcyBvZiBlYWNoIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJNYXRyaXgoZykge1xuICB2YXIgbGF5ZXJpbmcgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsoZykgKyAxKSwgZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcmFuayA9IG5vZGUucmFuaztcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmFuaykpIHtcbiAgICAgIGxheWVyaW5nW3JhbmtdW25vZGUub3JkZXJdID0gdjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGF5ZXJpbmc7XG59XG5cbi8qXG4gKiBBZGp1c3RzIHRoZSByYW5rcyBmb3IgYWxsIG5vZGVzIGluIHRoZSBncmFwaCBzdWNoIHRoYXQgYWxsIG5vZGVzIHYgaGF2ZVxuICogcmFuayh2KSA+PSAwIGFuZCBhdCBsZWFzdCBvbmUgbm9kZSB3IGhhcyByYW5rKHcpID0gMC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUmFua3MoZykge1xuICB2YXIgbWluID0gXy5taW4oXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKF8uaGFzKG5vZGUsIFwicmFua1wiKSkge1xuICAgICAgbm9kZS5yYW5rIC09IG1pbjtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVFbXB0eVJhbmtzKGcpIHtcbiAgLy8gUmFua3MgbWF5IG5vdCBzdGFydCBhdCAwLCBzbyB3ZSBuZWVkIHRvIG9mZnNldCB0aGVtXG4gIHZhciBvZmZzZXQgPSBfLm1pbihfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KSk7XG5cbiAgdmFyIGxheWVycyA9IFtdO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHJhbmsgPSBnLm5vZGUodikucmFuayAtIG9mZnNldDtcbiAgICBpZiAoIWxheWVyc1tyYW5rXSkge1xuICAgICAgbGF5ZXJzW3JhbmtdID0gW107XG4gICAgfVxuICAgIGxheWVyc1tyYW5rXS5wdXNoKHYpO1xuICB9KTtcblxuICB2YXIgZGVsdGEgPSAwO1xuICB2YXIgbm9kZVJhbmtGYWN0b3IgPSBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3I7XG4gIF8uZm9yRWFjaChsYXllcnMsIGZ1bmN0aW9uKHZzLCBpKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodnMpICYmIGkgJSBub2RlUmFua0ZhY3RvciAhPT0gMCkge1xuICAgICAgLS1kZWx0YTtcbiAgICB9IGVsc2UgaWYgKGRlbHRhKSB7XG4gICAgICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHsgZy5ub2RlKHYpLnJhbmsgKz0gZGVsdGE7IH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJlZml4LCByYW5rLCBvcmRlcikge1xuICB2YXIgbm9kZSA9IHtcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDBcbiAgfTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkge1xuICAgIG5vZGUucmFuayA9IHJhbms7XG4gICAgbm9kZS5vcmRlciA9IG9yZGVyO1xuICB9XG4gIHJldHVybiBhZGREdW1teU5vZGUoZywgXCJib3JkZXJcIiwgbm9kZSwgcHJlZml4KTtcbn1cblxuZnVuY3Rpb24gbWF4UmFuayhnKSB7XG4gIHJldHVybiBfLm1heChfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChyYW5rKSkge1xuICAgICAgcmV0dXJuIHJhbms7XG4gICAgfVxuICB9KSk7XG59XG5cbi8qXG4gKiBQYXJ0aXRpb24gYSBjb2xsZWN0aW9uIGludG8gdHdvIGdyb3VwczogYGxoc2AgYW5kIGByaHNgLiBJZiB0aGUgc3VwcGxpZWRcbiAqIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBmb3IgYW4gZW50cnkgaXQgZ29lcyBpbnRvIGBsaHNgLiBPdGhlcndpc2UgaXQgZ29lc1xuICogaW50byBgcmhzLlxuICovXG5mdW5jdGlvbiBwYXJ0aXRpb24oY29sbGVjdGlvbiwgZm4pIHtcbiAgdmFyIHJlc3VsdCA9IHsgbGhzOiBbXSwgcmhzOiBbXSB9O1xuICBfLmZvckVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoZm4odmFsdWUpKSB7XG4gICAgICByZXN1bHQubGhzLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucmhzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qXG4gKiBSZXR1cm5zIGEgbmV3IGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZuYCB3aXRoIGEgdGltZXIuIFRoZSB3cmFwcGVyIGxvZ3MgdGhlXG4gKiB0aW1lIGl0IHRha2VzIHRvIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiB0aW1lKG5hbWUsIGZuKSB7XG4gIHZhciBzdGFydCA9IF8ubm93KCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgY29uc29sZS5sb2cobmFtZSArIFwiIHRpbWU6IFwiICsgKF8ubm93KCkgLSBzdGFydCkgKyBcIm1zXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vdGltZShuYW1lLCBmbikge1xuICByZXR1cm4gZm4oKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gXCIwLjguNVwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENocmlzIFBldHRpdHRcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiAqIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXG4gKiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dFxuICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxuICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEVcbiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVJcbiAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksXG4gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG52YXIgbGliID0gcmVxdWlyZShcIi4vbGliXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IGxpYi5HcmFwaCxcbiAganNvbjogcmVxdWlyZShcIi4vbGliL2pzb25cIiksXG4gIGFsZzogcmVxdWlyZShcIi4vbGliL2FsZ1wiKSxcbiAgdmVyc2lvbjogbGliLnZlcnNpb25cbn07XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcG9uZW50cztcblxuZnVuY3Rpb24gY29tcG9uZW50cyhnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBjbXB0cyA9IFtdO1xuICB2YXIgY21wdDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIGNtcHQucHVzaCh2KTtcbiAgICBfLmVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBjbXB0ID0gW107XG4gICAgZGZzKHYpO1xuICAgIGlmIChjbXB0Lmxlbmd0aCkge1xuICAgICAgY21wdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbXB0cztcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZnM7XG5cbi8qXG4gKiBBIGhlbHBlciB0aGF0IHByZWZvcm1zIGEgcHJlLSBvciBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCByZXR1cm5zIHRoZSBub2RlcyBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHZpc2l0ZWQuIElmIHRoZSBncmFwaCBpc1xuICogdW5kaXJlY3RlZCB0aGVuIHRoaXMgYWxnb3JpdGhtIHdpbGwgbmF2aWdhdGUgdXNpbmcgbmVpZ2hib3JzLiBJZiB0aGUgZ3JhcGhcbiAqIGlzIGRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBzdWNjZXNzb3JzLlxuICpcbiAqIE9yZGVyIG11c3QgYmUgb25lIG9mIFwicHJlXCIgb3IgXCJwb3N0XCIuXG4gKi9cbmZ1bmN0aW9uIGRmcyhnLCB2cywgb3JkZXIpIHtcbiAgaWYgKCFfLmlzQXJyYXkodnMpKSB7XG4gICAgdnMgPSBbdnNdO1xuICB9XG5cbiAgdmFyIG5hdmlnYXRpb24gPSAoZy5pc0RpcmVjdGVkKCkgPyBnLnN1Y2Nlc3NvcnMgOiBnLm5laWdoYm9ycykuYmluZChnKTtcblxuICB2YXIgYWNjID0gW107XG4gIHZhciB2aXNpdGVkID0ge307XG4gIF8uZWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGlmICghZy5oYXNOb2RlKHYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6IFwiICsgdik7XG4gICAgfVxuXG4gICAgZG9EZnMoZywgdiwgb3JkZXIgPT09IFwicG9zdFwiLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICB9KTtcbiAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gZG9EZnMoZywgdiwgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpIHtcbiAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuXG4gICAgaWYgKCFwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgICBfLmVhY2gobmF2aWdhdGlvbih2KSwgZnVuY3Rpb24odykge1xuICAgICAgZG9EZnMoZywgdywgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICAgIH0pO1xuICAgIGlmIChwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgfVxufVxuIiwidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIik7XG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIFByaW9yaXR5UXVldWUgPSByZXF1aXJlKFwiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkaWprc3RyYTtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBkaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkRpamtzdHJhKGcsIFN0cmluZyhzb3VyY2UpLFxuICAgIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZVTkMsXG4gICAgZWRnZUZuIHx8IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcub3V0RWRnZXModik7IH0pO1xufVxuXG5mdW5jdGlvbiBydW5EaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgdmFyIHJlc3VsdHMgPSB7fTtcbiAgdmFyIHBxID0gbmV3IFByaW9yaXR5UXVldWUoKTtcbiAgdmFyIHYsIHZFbnRyeTtcblxuICB2YXIgdXBkYXRlTmVpZ2hib3JzID0gZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ICE9PSB2ID8gZWRnZS52IDogZWRnZS53O1xuICAgIHZhciB3RW50cnkgPSByZXN1bHRzW3ddO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlZGdlKTtcbiAgICB2YXIgZGlzdGFuY2UgPSB2RW50cnkuZGlzdGFuY2UgKyB3ZWlnaHQ7XG5cbiAgICBpZiAod2VpZ2h0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgXCJCYWQgZWRnZTogXCIgKyBlZGdlICsgXCIgV2VpZ2h0OiBcIiArIHdlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKGRpc3RhbmNlIDwgd0VudHJ5LmRpc3RhbmNlKSB7XG4gICAgICB3RW50cnkuZGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIHdFbnRyeS5wcmVkZWNlc3NvciA9IHY7XG4gICAgICBwcS5kZWNyZWFzZSh3LCBkaXN0YW5jZSk7XG4gICAgfVxuICB9O1xuXG4gIGcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgZGlzdGFuY2UgPSB2ID09PSBzb3VyY2UgPyAwIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIHJlc3VsdHNbdl0gPSB7IGRpc3RhbmNlOiBkaXN0YW5jZSB9O1xuICAgIHBxLmFkZCh2LCBkaXN0YW5jZSk7XG4gIH0pO1xuXG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIHZFbnRyeSA9IHJlc3VsdHNbdl07XG4gICAgaWYgKHZFbnRyeS5kaXN0YW5jZSA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBlZGdlRm4odikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgdGFyamFuID0gcmVxdWlyZShcIi4vdGFyamFuXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRDeWNsZXM7XG5cbmZ1bmN0aW9uIGZpbmRDeWNsZXMoZykge1xuICByZXR1cm4gXy5maWx0ZXIodGFyamFuKGcpLCBmdW5jdGlvbihjbXB0KSB7XG4gICAgcmV0dXJuIGNtcHQubGVuZ3RoID4gMSB8fCAoY21wdC5sZW5ndGggPT09IDEgJiYgZy5oYXNFZGdlKGNtcHRbMF0sIGNtcHRbMF0pKTtcbiAgfSk7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZmxveWRXYXJzaGFsbDtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGcsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkZsb3lkV2Fyc2hhbGwoZyxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBub2RlcyA9IGcubm9kZXMoKTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICByZXN1bHRzW3ZdID0ge307XG4gICAgcmVzdWx0c1t2XVt2XSA9IHsgZGlzdGFuY2U6IDAgfTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcbiAgICAgIGlmICh2ICE9PSB3KSB7XG4gICAgICAgIHJlc3VsdHNbdl1bd10gPSB7IGRpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlZGdlRm4odikuZm9yRWFjaChmdW5jdGlvbihlZGdlKSB7XG4gICAgICB2YXIgdyA9IGVkZ2UudiA9PT0gdiA/IGVkZ2UudyA6IGVkZ2UudjtcbiAgICAgIHZhciBkID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogZCwgcHJlZGVjZXNzb3I6IHYgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgdmFyIHJvd0sgPSByZXN1bHRzW2tdO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgdmFyIHJvd0kgPSByZXN1bHRzW2ldO1xuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihqKSB7XG4gICAgICAgIHZhciBpayA9IHJvd0lba107XG4gICAgICAgIHZhciBraiA9IHJvd0tbal07XG4gICAgICAgIHZhciBpaiA9IHJvd0lbal07XG4gICAgICAgIHZhciBhbHREaXN0YW5jZSA9IGlrLmRpc3RhbmNlICsga2ouZGlzdGFuY2U7XG4gICAgICAgIGlmIChhbHREaXN0YW5jZSA8IGlqLmRpc3RhbmNlKSB7XG4gICAgICAgICAgaWouZGlzdGFuY2UgPSBhbHREaXN0YW5jZTtcbiAgICAgICAgICBpai5wcmVkZWNlc3NvciA9IGtqLnByZWRlY2Vzc29yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgY29tcG9uZW50czogcmVxdWlyZShcIi4vY29tcG9uZW50c1wiKSxcbiAgZGlqa3N0cmE6IHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpLFxuICBkaWprc3RyYUFsbDogcmVxdWlyZShcIi4vZGlqa3N0cmEtYWxsXCIpLFxuICBmaW5kQ3ljbGVzOiByZXF1aXJlKFwiLi9maW5kLWN5Y2xlc1wiKSxcbiAgZmxveWRXYXJzaGFsbDogcmVxdWlyZShcIi4vZmxveWQtd2Fyc2hhbGxcIiksXG4gIGlzQWN5Y2xpYzogcmVxdWlyZShcIi4vaXMtYWN5Y2xpY1wiKSxcbiAgcG9zdG9yZGVyOiByZXF1aXJlKFwiLi9wb3N0b3JkZXJcIiksXG4gIHByZW9yZGVyOiByZXF1aXJlKFwiLi9wcmVvcmRlclwiKSxcbiAgcHJpbTogcmVxdWlyZShcIi4vcHJpbVwiKSxcbiAgdGFyamFuOiByZXF1aXJlKFwiLi90YXJqYW5cIiksXG4gIHRvcHNvcnQ6IHJlcXVpcmUoXCIuL3RvcHNvcnRcIilcbn07XG4iLCJ2YXIgdG9wc29ydCA9IHJlcXVpcmUoXCIuL3RvcHNvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBY3ljbGljO1xuXG5mdW5jdGlvbiBpc0FjeWNsaWMoZykge1xuICB0cnkge1xuICAgIHRvcHNvcnQoZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHRvcHNvcnQuQ3ljbGVFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiIsInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zdG9yZGVyO1xuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwb3N0XCIpO1xufVxuIiwidmFyIGRmcyA9IHJlcXVpcmUoXCIuL2Rmc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcmVvcmRlcjtcblxuZnVuY3Rpb24gcHJlb3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwcmVcIik7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhcIik7XG52YXIgUHJpb3JpdHlRdWV1ZSA9IHJlcXVpcmUoXCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByaW07XG5cbmZ1bmN0aW9uIHByaW0oZywgd2VpZ2h0RnVuYykge1xuICB2YXIgcmVzdWx0ID0gbmV3IEdyYXBoKCk7XG4gIHZhciBwYXJlbnRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2O1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgdmFyIHByaSA9IHBxLnByaW9yaXR5KHcpO1xuICAgIGlmIChwcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGVkZ2VXZWlnaHQgPSB3ZWlnaHRGdW5jKGVkZ2UpO1xuICAgICAgaWYgKGVkZ2VXZWlnaHQgPCBwcmkpIHtcbiAgICAgICAgcGFyZW50c1t3XSA9IHY7XG4gICAgICAgIHBxLmRlY3JlYXNlKHcsIGVkZ2VXZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChnLm5vZGVDb3VudCgpID09PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBwcS5hZGQodiwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICByZXN1bHQuc2V0Tm9kZSh2KTtcbiAgfSk7XG5cbiAgLy8gU3RhcnQgZnJvbSBhbiBhcmJpdHJhcnkgbm9kZVxuICBwcS5kZWNyZWFzZShnLm5vZGVzKClbMF0sIDApO1xuXG4gIHZhciBpbml0ID0gZmFsc2U7XG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIGlmIChfLmhhcyhwYXJlbnRzLCB2KSkge1xuICAgICAgcmVzdWx0LnNldEVkZ2UodiwgcGFyZW50c1t2XSk7XG4gICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiBcIiArIGcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGVFZGdlcyh2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkID0ge307IC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW107XG4gICAgICB2YXIgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvcHNvcnQ7XG50b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uID0gQ3ljbGVFeGNlcHRpb247XG5cbmZ1bmN0aW9uIHRvcHNvcnQoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc3RhY2sgPSB7fTtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiB2aXNpdChub2RlKSB7XG4gICAgaWYgKF8uaGFzKHN0YWNrLCBub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCBub2RlKSkge1xuICAgICAgc3RhY2tbbm9kZV0gPSB0cnVlO1xuICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7XG4gICAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksIHZpc2l0KTtcbiAgICAgIGRlbGV0ZSBzdGFja1tub2RlXTtcbiAgICAgIHJlc3VsdHMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBfLmVhY2goZy5zaW5rcygpLCB2aXNpdCk7XG5cbiAgaWYgKF8uc2l6ZSh2aXNpdGVkKSAhPT0gZy5ub2RlQ291bnQoKSkge1xuICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIEN5Y2xlRXhjZXB0aW9uKCkge31cbkN5Y2xlRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOyAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEVycm9yIHRvIHBhc3MgdGVzdGluZyIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcmlvcml0eVF1ZXVlO1xuXG4vKipcbiAqIEEgbWluLXByaW9yaXR5IHF1ZXVlIGRhdGEgc3RydWN0dXJlLiBUaGlzIGFsZ29yaXRobSBpcyBkZXJpdmVkIGZyb20gQ29ybWVuLFxuICogZXQgYWwuLCBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuIFRoZSBiYXNpYyBpZGVhIG9mIGEgbWluLXByaW9yaXR5XG4gKiBxdWV1ZSBpcyB0aGF0IHlvdSBjYW4gZWZmaWNpZW50bHkgKGluIE8oMSkgdGltZSkgZ2V0IHRoZSBzbWFsbGVzdCBrZXkgaW5cbiAqIHRoZSBxdWV1ZS4gQWRkaW5nIGFuZCByZW1vdmluZyBlbGVtZW50cyB0YWtlcyBPKGxvZyBuKSB0aW1lLiBBIGtleSBjYW5cbiAqIGhhdmUgaXRzIHByaW9yaXR5IGRlY3JlYXNlZCBpbiBPKGxvZyBuKSB0aW1lLlxuICovXG5mdW5jdGlvbiBQcmlvcml0eVF1ZXVlKCkge1xuICB0aGlzLl9hcnIgPSBbXTtcbiAgdGhpcy5fa2V5SW5kaWNlcyA9IHt9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBrZXlzIHRoYXQgYXJlIGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obilgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2Fyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5rZXk7IH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiAqKmtleSoqIGlzIGluIHRoZSBxdWV1ZSBhbmQgYGZhbHNlYCBpZiBub3QuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGtleSkge1xuICByZXR1cm4gXy5oYXModGhpcy5fa2V5SW5kaWNlcywga2V5KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiouIElmICoqa2V5KiogaXMgbm90IHByZXNlbnQgaW4gdGhlIHF1ZXVlXG4gKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgdW5kZWZpbmVkYC4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wcmlvcml0eSA9IGZ1bmN0aW9uKGtleSkge1xuICB2YXIgaW5kZXggPSB0aGlzLl9rZXlJbmRpY2VzW2tleV07XG4gIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5IGZvciB0aGUgbWluaW11bSBlbGVtZW50IGluIHRoaXMgcXVldWUuIElmIHRoZSBxdWV1ZSBpc1xuICogZW1wdHkgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYW4gRXJyb3IuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuc2l6ZSgpID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUXVldWUgdW5kZXJmbG93XCIpO1xuICB9XG4gIHJldHVybiB0aGlzLl9hcnJbMF0ua2V5O1xufTtcblxuLyoqXG4gKiBJbnNlcnRzIGEgbmV3IGtleSBpbnRvIHRoZSBwcmlvcml0eSBxdWV1ZS4gSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cyBpblxuICogdGhlIHF1ZXVlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgOyBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gYHRydWVgLlxuICogVGFrZXMgYE8obilgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IHRvIGFkZFxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBpbml0aWFsIHByaW9yaXR5IGZvciB0aGUga2V5XG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgaWYgKCFfLmhhcyhrZXlJbmRpY2VzLCBrZXkpKSB7XG4gICAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgICB2YXIgaW5kZXggPSBhcnIubGVuZ3RoO1xuICAgIGtleUluZGljZXNba2V5XSA9IGluZGV4O1xuICAgIGFyci5wdXNoKHtrZXk6IGtleSwgcHJpb3JpdHk6IHByaW9yaXR5fSk7XG4gICAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbmQgcmV0dXJucyB0aGUgc21hbGxlc3Qga2V5IGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obG9nIG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fc3dhcCgwLCB0aGlzLl9hcnIubGVuZ3RoIC0gMSk7XG4gIHZhciBtaW4gPSB0aGlzLl9hcnIucG9wKCk7XG4gIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW21pbi5rZXldO1xuICB0aGlzLl9oZWFwaWZ5KDApO1xuICByZXR1cm4gbWluLmtleTtcbn07XG5cbi8qKlxuICogRGVjcmVhc2VzIHRoZSBwcmlvcml0eSBmb3IgKiprZXkqKiB0byAqKnByaW9yaXR5KiouIElmIHRoZSBuZXcgcHJpb3JpdHkgaXNcbiAqIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgcHJpb3JpdHksIHRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBFcnJvci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgZm9yIHdoaWNoIHRvIHJhaXNlIHByaW9yaXR5XG4gKiBAcGFyYW0ge051bWJlcn0gcHJpb3JpdHkgdGhlIG5ldyBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5kZWNyZWFzZSA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAocHJpb3JpdHkgPiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBcIiArXG4gICAgICAgIFwiS2V5OiBcIiArIGtleSArIFwiIE9sZDogXCIgKyB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ICsgXCIgTmV3OiBcIiArIHByaW9yaXR5KTtcbiAgfVxuICB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9oZWFwaWZ5ID0gZnVuY3Rpb24oaSkge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIgbCA9IDIgKiBpO1xuICB2YXIgciA9IGwgKyAxO1xuICB2YXIgbGFyZ2VzdCA9IGk7XG4gIGlmIChsIDwgYXJyLmxlbmd0aCkge1xuICAgIGxhcmdlc3QgPSBhcnJbbF0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyBsIDogbGFyZ2VzdDtcbiAgICBpZiAociA8IGFyci5sZW5ndGgpIHtcbiAgICAgIGxhcmdlc3QgPSBhcnJbcl0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyByIDogbGFyZ2VzdDtcbiAgICB9XG4gICAgaWYgKGxhcmdlc3QgIT09IGkpIHtcbiAgICAgIHRoaXMuX3N3YXAoaSwgbGFyZ2VzdCk7XG4gICAgICB0aGlzLl9oZWFwaWZ5KGxhcmdlc3QpO1xuICAgIH1cbiAgfVxufTtcblxuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuX2RlY3JlYXNlID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIHByaW9yaXR5ID0gYXJyW2luZGV4XS5wcmlvcml0eTtcbiAgdmFyIHBhcmVudDtcbiAgd2hpbGUgKGluZGV4ICE9PSAwKSB7XG4gICAgcGFyZW50ID0gaW5kZXggPj4gMTtcbiAgICBpZiAoYXJyW3BhcmVudF0ucHJpb3JpdHkgPCBwcmlvcml0eSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3N3YXAoaW5kZXgsIHBhcmVudCk7XG4gICAgaW5kZXggPSBwYXJlbnQ7XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9zd2FwID0gZnVuY3Rpb24oaSwgaikge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIga2V5SW5kaWNlcyA9IHRoaXMuX2tleUluZGljZXM7XG4gIHZhciBvcmlnQXJySSA9IGFycltpXTtcbiAgdmFyIG9yaWdBcnJKID0gYXJyW2pdO1xuICBhcnJbaV0gPSBvcmlnQXJySjtcbiAgYXJyW2pdID0gb3JpZ0Fyckk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckoua2V5XSA9IGk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckkua2V5XSA9IGo7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEdyYXBoO1xuXG52YXIgREVGQVVMVF9FREdFX05BTUUgPSBcIlxceDAwXCI7XG52YXIgR1JBUEhfTk9ERSA9IFwiXFx4MDBcIjtcbnZhciBFREdFX0tFWV9ERUxJTSA9IFwiXFx4MDFcIjtcblxuLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6XG4vL1xuLy8gICogTm9kZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBzdHJpbmcgaWRzIGZvciB0aGUgbm9kZXNcbi8vICAqIEVkZ2UgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gXCJlZGdlT2JqXCIsIGVkZ2Ugb2JqZWN0LCB0aGF0IGlzXG4vLyAgICBjb21wb3NlZCBvZiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWRnZToge3YsIHcsIG5hbWV9LlxuLy8gICogSW50ZXJuYWxseSB3ZSB1c2UgYW4gXCJlZGdlSWRcIiwgYSBzdHJpbmdpZmllZCBmb3JtIG9mIHRoZSBlZGdlT2JqLCB0b1xuLy8gICAgcmVmZXJlbmNlIGVkZ2VzLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGxvb2sgdGhlc2Vcbi8vICAgIGVkZ2VzIHVwIGFuZCwgb2JqZWN0IHByb3BlcnRpZXMsIHdoaWNoIGhhdmUgc3RyaW5nIGtleXMsIGFyZSB0aGUgY2xvc2VzdFxuLy8gICAgd2UncmUgZ29pbmcgdG8gZ2V0IHRvIGEgcGVyZm9ybWFudCBoYXNodGFibGUgaW4gSmF2YVNjcmlwdC5cblxuZnVuY3Rpb24gR3JhcGgob3B0cykge1xuICB0aGlzLl9pc0RpcmVjdGVkID0gXy5oYXMob3B0cywgXCJkaXJlY3RlZFwiKSA/IG9wdHMuZGlyZWN0ZWQgOiB0cnVlO1xuICB0aGlzLl9pc011bHRpZ3JhcGggPSBfLmhhcyhvcHRzLCBcIm11bHRpZ3JhcGhcIikgPyBvcHRzLm11bHRpZ3JhcGggOiBmYWxzZTtcbiAgdGhpcy5faXNDb21wb3VuZCA9IF8uaGFzKG9wdHMsIFwiY29tcG91bmRcIikgPyBvcHRzLmNvbXBvdW5kIDogZmFsc2U7XG5cbiAgLy8gTGFiZWwgZm9yIHRoZSBncmFwaCBpdHNlbGZcbiAgdGhpcy5fbGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgbm9kZVxuICB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgZWRnZVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gdiAtPiBsYWJlbFxuICB0aGlzLl9ub2RlcyA9IHt9O1xuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgLy8gdiAtPiBwYXJlbnRcbiAgICB0aGlzLl9wYXJlbnQgPSB7fTtcblxuICAgIC8vIHYgLT4gY2hpbGRyZW5cbiAgICB0aGlzLl9jaGlsZHJlbiA9IHt9O1xuICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdID0ge307XG4gIH1cblxuICAvLyB2IC0+IGVkZ2VPYmpcbiAgdGhpcy5faW4gPSB7fTtcblxuICAvLyB1IC0+IHYgLT4gTnVtYmVyXG4gIHRoaXMuX3ByZWRzID0ge307XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX291dCA9IHt9O1xuXG4gIC8vIHYgLT4gdyAtPiBOdW1iZXJcbiAgdGhpcy5fc3VjcyA9IHt9O1xuXG4gIC8vIGUgLT4gZWRnZU9ialxuICB0aGlzLl9lZGdlT2JqcyA9IHt9O1xuXG4gIC8vIGUgLT4gbGFiZWxcbiAgdGhpcy5fZWRnZUxhYmVscyA9IHt9O1xufVxuXG4vKiBOdW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fbm9kZUNvdW50ID0gMDtcblxuLyogTnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX2VkZ2VDb3VudCA9IDA7XG5cblxuLyogPT09IEdyYXBoIGZ1bmN0aW9ucyA9PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLmlzRGlyZWN0ZWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc011bHRpZ3JhcGg7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNDb21wb3VuZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNDb21wb3VuZDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRHcmFwaCA9IGZ1bmN0aW9uKGxhYmVsKSB7XG4gIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9sYWJlbDtcbn07XG5cblxuLyogPT09IE5vZGUgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9ub2RlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8ua2V5cyh0aGlzLl9ub2Rlcyk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHJldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5pc0VtcHR5KHNlbGYuX2luW3ZdKTtcbiAgfSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2lua3MgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9vdXRbdl0pO1xuICB9KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXROb2RlcyA9IGZ1bmN0aW9uKHZzLCB2YWx1ZSkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBfLmVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldE5vZGUodiwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldE5vZGUodik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZSA9IGZ1bmN0aW9uKHYsIHZhbHVlKSB7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX25vZGVzW3ZdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fbm9kZXNbdl0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHYpO1xuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRoaXMuX3BhcmVudFt2XSA9IEdSQVBIX05PREU7XG4gICAgdGhpcy5fY2hpbGRyZW5bdl0gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXVt2XSA9IHRydWU7XG4gIH1cbiAgdGhpcy5faW5bdl0gPSB7fTtcbiAgdGhpcy5fcHJlZHNbdl0gPSB7fTtcbiAgdGhpcy5fb3V0W3ZdID0ge307XG4gIHRoaXMuX3N1Y3Nbdl0gPSB7fTtcbiAgKyt0aGlzLl9ub2RlQ291bnQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGUgPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiB0aGlzLl9ub2Rlc1t2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gXy5oYXModGhpcy5fbm9kZXMsIHYpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnJlbW92ZU5vZGUgPSAgZnVuY3Rpb24odikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICB2YXIgcmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKGUpIHsgc2VsZi5yZW1vdmVFZGdlKHNlbGYuX2VkZ2VPYmpzW2VdKTsgfTtcbiAgICBkZWxldGUgdGhpcy5fbm9kZXNbdl07XG4gICAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFt2XTtcbiAgICAgIF8uZWFjaCh0aGlzLmNoaWxkcmVuKHYpLCBmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICBzZWxmLnNldFBhcmVudChjaGlsZCk7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt2XTtcbiAgICB9XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9pblt2XSksIHJlbW92ZUVkZ2UpO1xuICAgIGRlbGV0ZSB0aGlzLl9pblt2XTtcbiAgICBkZWxldGUgdGhpcy5fcHJlZHNbdl07XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9vdXRbdl0pLCByZW1vdmVFZGdlKTtcbiAgICBkZWxldGUgdGhpcy5fb3V0W3ZdO1xuICAgIGRlbGV0ZSB0aGlzLl9zdWNzW3ZdO1xuICAgIC0tdGhpcy5fbm9kZUNvdW50O1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhcmVudCA9IGZ1bmN0aW9uKHYsIHBhcmVudCkge1xuICBpZiAoIXRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaFwiKTtcbiAgfVxuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICBwYXJlbnQgPSBHUkFQSF9OT0RFO1xuICB9IGVsc2Uge1xuICAgIC8vIENvZXJjZSBwYXJlbnQgdG8gc3RyaW5nXG4gICAgcGFyZW50ICs9IFwiXCI7XG4gICAgZm9yICh2YXIgYW5jZXN0b3IgPSBwYXJlbnQ7XG4gICAgICAhXy5pc1VuZGVmaW5lZChhbmNlc3Rvcik7XG4gICAgICBhbmNlc3RvciA9IHRoaXMucGFyZW50KGFuY2VzdG9yKSkge1xuICAgICAgaWYgKGFuY2VzdG9yID09PSB2KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNldHRpbmcgXCIgKyBwYXJlbnQrIFwiIGFzIHBhcmVudCBvZiBcIiArIHYgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIgd291bGQgY3JlYXRlIGEgY3ljbGVcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXROb2RlKHBhcmVudCk7XG4gIH1cblxuICB0aGlzLnNldE5vZGUodik7XG4gIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICB0aGlzLl9wYXJlbnRbdl0gPSBwYXJlbnQ7XG4gIHRoaXMuX2NoaWxkcmVuW3BhcmVudF1bdl0gPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QgPSBmdW5jdGlvbih2KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdl1dW3ZdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnBhcmVudCA9IGZ1bmN0aW9uKHYpIHtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5fcGFyZW50W3ZdO1xuICAgIGlmIChwYXJlbnQgIT09IEdSQVBIX05PREUpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuY2hpbGRyZW4gPSBmdW5jdGlvbih2KSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHYpKSB7XG4gICAgdiA9IEdSQVBIX05PREU7XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgcmV0dXJuIF8ua2V5cyhjaGlsZHJlbik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHYgPT09IEdSQVBIX05PREUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpO1xuICB9IGVsc2UgaWYgKHRoaXMuaGFzTm9kZSh2KSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnByZWRlY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHByZWRzViA9IHRoaXMuX3ByZWRzW3ZdO1xuICBpZiAocHJlZHNWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhwcmVkc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc3VjY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHN1Y3NWID0gdGhpcy5fc3Vjc1t2XTtcbiAgaWYgKHN1Y3NWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhzdWNzVik7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5uZWlnaGJvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkcyA9IHRoaXMucHJlZGVjZXNzb3JzKHYpO1xuICBpZiAocHJlZHMpIHtcbiAgICByZXR1cm4gXy51bmlvbihwcmVkcywgdGhpcy5zdWNjZXNzb3JzKHYpKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTGVhZiA9IGZ1bmN0aW9uICh2KSB7XG4gIHZhciBuZWlnaGJvcnM7XG4gIGlmICh0aGlzLmlzRGlyZWN0ZWQoKSkge1xuICAgIG5laWdoYm9ycyA9IHRoaXMuc3VjY2Vzc29ycyh2KTtcbiAgfSBlbHNlIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLm5laWdoYm9ycyh2KTtcbiAgfVxuICByZXR1cm4gbmVpZ2hib3JzLmxlbmd0aCA9PT0gMDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5maWx0ZXJOb2RlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xuICB2YXIgY29weSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHtcbiAgICBkaXJlY3RlZDogdGhpcy5faXNEaXJlY3RlZCxcbiAgICBtdWx0aWdyYXBoOiB0aGlzLl9pc011bHRpZ3JhcGgsXG4gICAgY29tcG91bmQ6IHRoaXMuX2lzQ29tcG91bmRcbiAgfSk7XG5cbiAgY29weS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgXy5lYWNoKHRoaXMuX25vZGVzLCBmdW5jdGlvbih2YWx1ZSwgdikge1xuICAgIGlmIChmaWx0ZXIodikpIHtcbiAgICAgIGNvcHkuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcblxuICBfLmVhY2godGhpcy5fZWRnZU9ianMsIGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoY29weS5oYXNOb2RlKGUudikgJiYgY29weS5oYXNOb2RlKGUudykpIHtcbiAgICAgIGNvcHkuc2V0RWRnZShlLCBzZWxmLmVkZ2UoZSkpO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHBhcmVudHMgPSB7fTtcbiAgZnVuY3Rpb24gZmluZFBhcmVudCh2KSB7XG4gICAgdmFyIHBhcmVudCA9IHNlbGYucGFyZW50KHYpO1xuICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCB8fCBjb3B5Lmhhc05vZGUocGFyZW50KSkge1xuICAgICAgcGFyZW50c1t2XSA9IHBhcmVudDtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfSBlbHNlIGlmIChwYXJlbnQgaW4gcGFyZW50cykge1xuICAgICAgcmV0dXJuIHBhcmVudHNbcGFyZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIF8uZWFjaChjb3B5Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICAgIGNvcHkuc2V0UGFyZW50KHYsIGZpbmRQYXJlbnQodikpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvcHk7XG59O1xuXG4vKiA9PT0gRWRnZSBmdW5jdGlvbnMgPT09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbCA9IGZ1bmN0aW9uKG5ld0RlZmF1bHQpIHtcbiAgaWYgKCFfLmlzRnVuY3Rpb24obmV3RGVmYXVsdCkpIHtcbiAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgfVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBuZXdEZWZhdWx0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2VkZ2VDb3VudDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gXy52YWx1ZXModGhpcy5fZWRnZU9ianMpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhdGggPSBmdW5jdGlvbih2cywgdmFsdWUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgXy5yZWR1Y2UodnMsIGZ1bmN0aW9uKHYsIHcpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldEVkZ2UodiwgdywgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldEVkZ2Uodiwgdyk7XG4gICAgfVxuICAgIHJldHVybiB3O1xuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKlxuICogc2V0RWRnZSh2LCB3LCBbdmFsdWUsIFtuYW1lXV0pXG4gKiBzZXRFZGdlKHsgdiwgdywgW25hbWVdIH0sIFt2YWx1ZV0pXG4gKi9cbkdyYXBoLnByb3RvdHlwZS5zZXRFZGdlID0gZnVuY3Rpb24oKSB7XG4gIHZhciB2LCB3LCBuYW1lLCB2YWx1ZTtcbiAgdmFyIHZhbHVlU3BlY2lmaWVkID0gZmFsc2U7XG4gIHZhciBhcmcwID0gYXJndW1lbnRzWzBdO1xuXG4gIGlmICh0eXBlb2YgYXJnMCA9PT0gXCJvYmplY3RcIiAmJiBhcmcwICE9PSBudWxsICYmIFwidlwiIGluIGFyZzApIHtcbiAgICB2ID0gYXJnMC52O1xuICAgIHcgPSBhcmcwLnc7XG4gICAgbmFtZSA9IGFyZzAubmFtZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMV07XG4gICAgICB2YWx1ZVNwZWNpZmllZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHYgPSBhcmcwO1xuICAgIHcgPSBhcmd1bWVudHNbMV07XG4gICAgbmFtZSA9IGFyZ3VtZW50c1szXTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzJdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHYgPSBcIlwiICsgdjtcbiAgdyA9IFwiXCIgKyB3O1xuICBpZiAoIV8uaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICBuYW1lID0gXCJcIiArIG5hbWU7XG4gIH1cblxuICB2YXIgZSA9IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgaWYgKF8uaGFzKHRoaXMuX2VkZ2VMYWJlbHMsIGUpKSB7XG4gICAgaWYgKHZhbHVlU3BlY2lmaWVkKSB7XG4gICAgICB0aGlzLl9lZGdlTGFiZWxzW2VdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpICYmICF0aGlzLl9pc011bHRpZ3JhcGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IGEgbmFtZWQgZWRnZSB3aGVuIGlzTXVsdGlncmFwaCA9IGZhbHNlXCIpO1xuICB9XG5cbiAgLy8gSXQgZGlkbid0IGV4aXN0LCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBpdC5cbiAgLy8gRmlyc3QgZW5zdXJlIHRoZSBub2RlcyBleGlzdC5cbiAgdGhpcy5zZXROb2RlKHYpO1xuICB0aGlzLnNldE5vZGUodyk7XG5cbiAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlU3BlY2lmaWVkID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4odiwgdywgbmFtZSk7XG5cbiAgdmFyIGVkZ2VPYmogPSBlZGdlQXJnc1RvT2JqKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICAvLyBFbnN1cmUgd2UgYWRkIHVuZGlyZWN0ZWQgZWRnZXMgaW4gYSBjb25zaXN0ZW50IHdheS5cbiAgdiA9IGVkZ2VPYmoudjtcbiAgdyA9IGVkZ2VPYmoudztcblxuICBPYmplY3QuZnJlZXplKGVkZ2VPYmopO1xuICB0aGlzLl9lZGdlT2Jqc1tlXSA9IGVkZ2VPYmo7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3ByZWRzW3ddLCB2KTtcbiAgaW5jcmVtZW50T3JJbml0RW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gIHRoaXMuX2luW3ddW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fb3V0W3ZdW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fZWRnZUNvdW50Kys7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiB0aGlzLl9lZGdlTGFiZWxzW2VdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmhhc0VkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiBfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5yZW1vdmVFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICB2YXIgZWRnZSA9IHRoaXMuX2VkZ2VPYmpzW2VdO1xuICBpZiAoZWRnZSkge1xuICAgIHYgPSBlZGdlLnY7XG4gICAgdyA9IGVkZ2UudztcbiAgICBkZWxldGUgdGhpcy5fZWRnZUxhYmVsc1tlXTtcbiAgICBkZWxldGUgdGhpcy5fZWRnZU9ianNbZV07XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9zdWNzW3ZdLCB3KTtcbiAgICBkZWxldGUgdGhpcy5faW5bd11bZV07XG4gICAgZGVsZXRlIHRoaXMuX291dFt2XVtlXTtcbiAgICB0aGlzLl9lZGdlQ291bnQtLTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pbkVkZ2VzID0gZnVuY3Rpb24odiwgdSkge1xuICB2YXIgaW5WID0gdGhpcy5faW5bdl07XG4gIGlmIChpblYpIHtcbiAgICB2YXIgZWRnZXMgPSBfLnZhbHVlcyhpblYpO1xuICAgIGlmICghdSkge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudiA9PT0gdTsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5vdXRFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIG91dFYgPSB0aGlzLl9vdXRbdl07XG4gIGlmIChvdXRWKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMob3V0Vik7XG4gICAgaWYgKCF3KSB7XG4gICAgICByZXR1cm4gZWRnZXM7XG4gICAgfVxuICAgIHJldHVybiBfLmZpbHRlcihlZGdlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gZWRnZS53ID09PSB3OyB9KTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIGluRWRnZXMgPSB0aGlzLmluRWRnZXModiwgdyk7XG4gIGlmIChpbkVkZ2VzKSB7XG4gICAgcmV0dXJuIGluRWRnZXMuY29uY2F0KHRoaXMub3V0RWRnZXModiwgdykpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBpbmNyZW1lbnRPckluaXRFbnRyeShtYXAsIGspIHtcbiAgaWYgKG1hcFtrXSkge1xuICAgIG1hcFtrXSsrO1xuICB9IGVsc2Uge1xuICAgIG1hcFtrXSA9IDE7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVjcmVtZW50T3JSZW1vdmVFbnRyeShtYXAsIGspIHtcbiAgaWYgKCEtLW1hcFtrXSkgeyBkZWxldGUgbWFwW2tdOyB9XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiB2ICsgRURHRV9LRVlfREVMSU0gKyB3ICsgRURHRV9LRVlfREVMSU0gK1xuICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVkKG5hbWUpID8gREVGQVVMVF9FREdFX05BTUUgOiBuYW1lKTtcbn1cblxuZnVuY3Rpb24gZWRnZUFyZ3NUb09iaihpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHZhciBlZGdlT2JqID0gIHsgdjogdiwgdzogdyB9O1xuICBpZiAobmFtZSkge1xuICAgIGVkZ2VPYmoubmFtZSA9IG5hbWU7XG4gIH1cbiAgcmV0dXJuIGVkZ2VPYmo7XG59XG5cbmZ1bmN0aW9uIGVkZ2VPYmpUb0lkKGlzRGlyZWN0ZWQsIGVkZ2VPYmopIHtcbiAgcmV0dXJuIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqLnYsIGVkZ2VPYmoudywgZWRnZU9iai5uYW1lKTtcbn1cbiIsIi8vIEluY2x1ZGVzIG9ubHkgdGhlIFwiY29yZVwiIG9mIGdyYXBobGliXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IHJlcXVpcmUoXCIuL2dyYXBoXCIpLFxuICB2ZXJzaW9uOiByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG59O1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHdyaXRlOiB3cml0ZSxcbiAgcmVhZDogcmVhZFxufTtcblxuZnVuY3Rpb24gd3JpdGUoZykge1xuICB2YXIganNvbiA9IHtcbiAgICBvcHRpb25zOiB7XG4gICAgICBkaXJlY3RlZDogZy5pc0RpcmVjdGVkKCksXG4gICAgICBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpLFxuICAgICAgY29tcG91bmQ6IGcuaXNDb21wb3VuZCgpXG4gICAgfSxcbiAgICBub2Rlczogd3JpdGVOb2RlcyhnKSxcbiAgICBlZGdlczogd3JpdGVFZGdlcyhnKVxuICB9O1xuICBpZiAoIV8uaXNVbmRlZmluZWQoZy5ncmFwaCgpKSkge1xuICAgIGpzb24udmFsdWUgPSBfLmNsb25lKGcuZ3JhcGgoKSk7XG4gIH1cbiAgcmV0dXJuIGpzb247XG59XG5cbmZ1bmN0aW9uIHdyaXRlTm9kZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGVWYWx1ZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcGFyZW50ID0gZy5wYXJlbnQodik7XG4gICAgdmFyIG5vZGUgPSB7IHY6IHYgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQobm9kZVZhbHVlKSkge1xuICAgICAgbm9kZS52YWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRWRnZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2VWYWx1ZSA9IGcuZWRnZShlKTtcbiAgICB2YXIgZWRnZSA9IHsgdjogZS52LCB3OiBlLncgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZS5uYW1lKSkge1xuICAgICAgZWRnZS5uYW1lID0gZS5uYW1lO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZWRnZVZhbHVlKSkge1xuICAgICAgZWRnZS52YWx1ZSA9IGVkZ2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGVkZ2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkKGpzb24pIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoanNvbi5vcHRpb25zKS5zZXRHcmFwaChqc29uLnZhbHVlKTtcbiAgXy5lYWNoKGpzb24ubm9kZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZy5zZXROb2RlKGVudHJ5LnYsIGVudHJ5LnZhbHVlKTtcbiAgICBpZiAoZW50cnkucGFyZW50KSB7XG4gICAgICBnLnNldFBhcmVudChlbnRyeS52LCBlbnRyeS5wYXJlbnQpO1xuICAgIH1cbiAgfSk7XG4gIF8uZWFjaChqc29uLmVkZ2VzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0RWRnZSh7IHY6IGVudHJ5LnYsIHc6IGVudHJ5LncsIG5hbWU6IGVudHJ5Lm5hbWUgfSwgZW50cnkudmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGc7XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0ge1xuICAgICAgY2xvbmU6IHJlcXVpcmUoXCJsb2Rhc2gvY2xvbmVcIiksXG4gICAgICBjb25zdGFudDogcmVxdWlyZShcImxvZGFzaC9jb25zdGFudFwiKSxcbiAgICAgIGVhY2g6IHJlcXVpcmUoXCJsb2Rhc2gvZWFjaFwiKSxcbiAgICAgIGZpbHRlcjogcmVxdWlyZShcImxvZGFzaC9maWx0ZXJcIiksXG4gICAgICBoYXM6ICByZXF1aXJlKFwibG9kYXNoL2hhc1wiKSxcbiAgICAgIGlzQXJyYXk6IHJlcXVpcmUoXCJsb2Rhc2gvaXNBcnJheVwiKSxcbiAgICAgIGlzRW1wdHk6IHJlcXVpcmUoXCJsb2Rhc2gvaXNFbXB0eVwiKSxcbiAgICAgIGlzRnVuY3Rpb246IHJlcXVpcmUoXCJsb2Rhc2gvaXNGdW5jdGlvblwiKSxcbiAgICAgIGlzVW5kZWZpbmVkOiByZXF1aXJlKFwibG9kYXNoL2lzVW5kZWZpbmVkXCIpLFxuICAgICAga2V5czogcmVxdWlyZShcImxvZGFzaC9rZXlzXCIpLFxuICAgICAgbWFwOiByZXF1aXJlKFwibG9kYXNoL21hcFwiKSxcbiAgICAgIHJlZHVjZTogcmVxdWlyZShcImxvZGFzaC9yZWR1Y2VcIiksXG4gICAgICBzaXplOiByZXF1aXJlKFwibG9kYXNoL3NpemVcIiksXG4gICAgICB0cmFuc2Zvcm06IHJlcXVpcmUoXCJsb2Rhc2gvdHJhbnNmb3JtXCIpLFxuICAgICAgdW5pb246IHJlcXVpcmUoXCJsb2Rhc2gvdW5pb25cIiksXG4gICAgICB2YWx1ZXM6IHJlcXVpcmUoXCJsb2Rhc2gvdmFsdWVzXCIpXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICcyLjEuOCc7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iLCIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHk7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwidmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UmVkdWNlO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iLCJ2YXIgYmFzZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhbiBBU0NJSSBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xudmFyIGFzY2lpU2l6ZSA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlTaXplO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NJbmRleE9mO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduSW47XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgY3JlYXRlQmFzZUVhY2ggPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICovXG52YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRWFjaDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICkpIHtcbiAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUV4dHJlbXVtO1xuIiwidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaWx0ZXI7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwidmFyIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvck93bjtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gIH1cbiAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXQ7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldEFsbEtleXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR3Q7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhcztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXNJbjtcbiIsInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJc05hTiA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hTicpLFxuICAgIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXA7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hTjtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCJ2YXIgYmFzZU1hdGNoZXMgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlcycpLFxuICAgIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICovXG5mdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJdGVyYXRlZTtcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTHQ7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXA7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpLFxuICAgIGdldCA9IHJlcXVpcmUoJy4vZ2V0JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5O1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAgYmFzZU1lcmdlRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZURlZXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2U7XG4iLCJ2YXIgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpLFxuICAgIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2VEZWVwO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VNYXAgPSByZXF1aXJlKCcuL19iYXNlTWFwJyksXG4gICAgYmFzZVNvcnRCeSA9IHJlcXVpcmUoJy4vX2Jhc2VTb3J0QnknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjb21wYXJlTXVsdGlwbGUgPSByZXF1aXJlKCcuL19jb21wYXJlTXVsdGlwbGUnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgaWYgKGlzQXJyYXkoaXRlcmF0ZWUpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gIH1cblxuICB2YXIgaW5kZXggPSAtMTtcbiAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoYmFzZUl0ZXJhdGVlKSk7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gIH0pO1xuXG4gIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU9yZGVyQnk7XG4iLCJ2YXIgYmFzZVBpY2tCeSA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrQnknKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrO1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICB2YWx1ZSA9IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcblxuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrQnk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlEZWVwO1xuIiwiLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUNlaWwgPSBNYXRoLmNlaWwsXG4gICAgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZ2VgIGFuZCBgXy5yYW5nZVJpZ2h0YCB3aGljaCBkb2Vzbid0XG4gKiBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RlcCBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICovXG5mdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KG5hdGl2ZUNlaWwoKGVuZCAtIHN0YXJ0KSAvIChzdGVwIHx8IDEpKSwgMCksXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHJlc3VsdFtmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XSA9IHN0YXJ0O1xuICAgIHN0YXJ0ICs9IHN0ZXA7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmFuZ2U7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAqICBgY29sbGVjdGlvbmAgYXMgdGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpbml0QWNjdW1cbiAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlZHVjZTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVzdDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxLFxuICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKSxcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG5lc3RlZFtrZXldO1xuICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpc09iamVjdChvYmpWYWx1ZSlcbiAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICB9XG4gICAgfVxuICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgbmVzdGVkID0gbmVzdGVkW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0O1xuIiwidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyksXG4gICAgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgcmVzdWx0ID0gW10sXG4gICAgICBzZWVuID0gcmVzdWx0O1xuXG4gIGlmIChjb21wYXJhdG9yKSB7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICB9XG4gIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgaWYgKHNldCkge1xuICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICB9XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCIvKipcbiAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVppcE9iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RGdW5jdGlvbjtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsIi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIiwidmFyIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIGNvbGxlY3Rpb24gPSBrZXlzKGNvbGxlY3Rpb24pO1xuICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCk7XG4gICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUZpbmQ7XG4iLCJ2YXIgYmFzZVJhbmdlID0gcmVxdWlyZSgnLi9fYmFzZVJhbmdlJyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpLFxuICAgIHRvRmluaXRlID0gcmVxdWlyZSgnLi90b0Zpbml0ZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgXy5yYW5nZWAgb3IgYF8ucmFuZ2VSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJhbmdlKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICBlbmQgPSBzdGVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICB9XG4gICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUmFuZ2U7XG4iLCJ2YXIgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgbm9vcCA9IHJlcXVpcmUoJy4vbm9vcCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlU2V0O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwidmFyIGZsYXR0ZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW4nKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdFJlc3Q7XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hdGNoRGF0YTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG52YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNVbmljb2RlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZURhdGFWaWV3ID0gcmVxdWlyZSgnLi9fY2xvbmVEYXRhVmlldycpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGbGF0dGVuYWJsZTtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleWFibGU7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaWN0Q29tcGFyYWJsZTtcbiIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgbWVtb2l6ZSA9IHJlcXVpcmUoJy4vbWVtb2l6ZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG52YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICBjYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9KTtcblxuICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZUNhcHBlZDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzYWZlR2V0O1xuIiwiLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVBZGQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3J0T3V0O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiIsInZhciBhc2NpaVNpemUgPSByZXF1aXJlKCcuL19hc2NpaVNpemUnKSxcbiAgICBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9faGFzVW5pY29kZScpLFxuICAgIHVuaWNvZGVTaXplID0gcmVxdWlyZSgnLi9fdW5pY29kZVNpemUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBpbiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nU2l6ZShzdHJpbmcpIHtcbiAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgID8gdW5pY29kZVNpemUoc3RyaW5nKVxuICAgIDogYXNjaWlTaXplKHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nU2l6ZTtcbiIsInZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9QYXRoO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0tleTtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhIFVuaWNvZGUgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHVuaWNvZGVTaXplKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gcmVVbmljb2RlLmxhc3RJbmRleCA9IDA7XG4gIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgKytyZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmljb2RlU2l6ZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcDtcbiIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAqIHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5kZWZhdWx0c0RlZXBcbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICovXG52YXIgZGVmYXVsdHMgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aDtcbiAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgIGxlbmd0aCA9IDE7XG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgIHZhciBwcm9wc0xlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZvckVhY2gnKTtcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBiYXNlRmlsdGVyID0gcmVxdWlyZSgnLi9fYmFzZUZpbHRlcicpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiIsInZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLFxuICAgIGZpbmRJbmRleCA9IHJlcXVpcmUoJy4vZmluZEluZGV4Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICovXG52YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIiwidmFyIGJhc2VGaW5kSW5kZXggPSByZXF1aXJlKCcuL19iYXNlRmluZEluZGV4JyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gKiAvLyA9PiAxXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiAyXG4gKi9cbmZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgfVxuICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kSW5kZXg7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpO1xuXG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAqL1xuZnVuY3Rpb24gZmxhdHRlbihhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGFsaWFzIGVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICogQHNlZSBfLmZvckVhY2hSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICpcbiAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGNhc3RGdW5jdGlvbihpdGVyYXRlZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2g7XG4iLCJ2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhblxuICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICogaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjMuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5mb3JJblJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9ySW4ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICA/IG9iamVjdFxuICAgIDogYmFzZUZvcihvYmplY3QsIGNhc3RGdW5jdGlvbihpdGVyYXRlZSksIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9ySW47XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gKiAvLyA9PiAnZGVmYXVsdCdcbiAqL1xuZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldDtcbiIsInZhciBiYXNlSGFzID0gcmVxdWlyZSgnLi9fYmFzZUhhcycpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogeyAnYic6IDIgfSB9O1xuICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG90aGVyLCAnYScpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhcztcbiIsInZhciBiYXNlSGFzSW4gPSByZXF1aXJlKCcuL19iYXNlSGFzSW4nKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzSW47XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlkZW50aXR5O1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwidmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZU9iamVjdDtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsInZhciBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAqXG4gKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAqIHByb3BlcnRpZXMuXG4gKlxuICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRW1wdHkobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KHRydWUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSgxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRW1wdHk7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwidmFyIGJhc2VJc01hcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hcDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3ltYm9sO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNVbmRlZmluZWQ7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsYXN0O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gKiBgXy5ldmVyeWAsIGBfLmZpbHRlcmAsIGBfLm1hcGAsIGBfLm1hcFZhbHVlc2AsIGBfLnJlamVjdGAsIGFuZCBgXy5zb21lYC5cbiAqXG4gKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAqIGBhcnlgLCBgY2h1bmtgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBldmVyeWAsXG4gKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAqIGBzYW1wbGVTaXplYCwgYHNsaWNlYCwgYHNvbWVgLCBgc29ydEJ5YCwgYHNwbGl0YCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAqIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYW5kIGB3b3Jkc2BcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gKiAgIHJldHVybiBuICogbjtcbiAqIH1cbiAqXG4gKiBfLm1hcChbNCwgOF0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XVxuICpcbiAqIF8ubWFwKHsgJ2EnOiA0LCAnYic6IDggfSwgc3F1YXJlKTtcbiAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJyB9XG4gKiBdO1xuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXAodXNlcnMsICd1c2VyJyk7XG4gKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAqL1xuZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gKiBAc2VlIF8ubWFwS2V5c1xuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSB7XG4gKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICogfTtcbiAqXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFZhbHVlcztcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiA4XG4gKlxuICogXy5tYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1heChhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXg7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBiYXNlTWVyZ2UgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2UnKSxcbiAgICBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjUuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0ge1xuICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICogfTtcbiAqXG4gKiB2YXIgb3RoZXIgPSB7XG4gKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gKiB9O1xuICpcbiAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gKi9cbnZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlO1xuIiwidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICogYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE1hdGhcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLm1pbihbXSk7XG4gKiAvLyA9PiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBpZGVudGl0eSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbjtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1pbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBfLm1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cbmZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbkJ5O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi4zLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAqL1xuZnVuY3Rpb24gbm9vcCgpIHtcbiAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBub29wO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwaWNrO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLFxuICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlEZWVwJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbXG4gKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gKiAgIHsgJ2EnOiB7ICdiJzogMSB9IH1cbiAqIF07XG4gKlxuICogXy5tYXAob2JqZWN0cywgXy5wcm9wZXJ0eSgnYS5iJykpO1xuICogLy8gPT4gWzIsIDFdXG4gKlxuICogXy5tYXAoXy5zb3J0Qnkob2JqZWN0cywgXy5wcm9wZXJ0eShbJ2EnLCAnYiddKSksICdhLmInKTtcbiAqIC8vID0+IFsxLCAyXVxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3BlcnR5O1xuIiwidmFyIGNyZWF0ZVJhbmdlID0gcmVxdWlyZSgnLi9fY3JlYXRlUmFuZ2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAqIGBzdGFydGAgaXMgc3BlY2lmaWVkIHdpdGhvdXQgYW4gYGVuZGAgb3IgYHN0ZXBgLiBJZiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLFxuICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICpcbiAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ucmFuZ2UoNCk7XG4gKiAvLyA9PiBbMCwgMSwgMiwgM11cbiAqXG4gKiBfLnJhbmdlKC00KTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNF1cbiAqXG4gKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAqIC8vID0+IFswLCA1LCAxMCwgMTVdXG4gKlxuICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gKlxuICogXy5yYW5nZSgxLCA0LCAwKTtcbiAqIC8vID0+IFsxLCAxLCAxXVxuICpcbiAqIF8ucmFuZ2UoMCk7XG4gKiAvLyA9PiBbXVxuICovXG52YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbmdlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgICBzdHJpbmdTaXplID0gcmVxdWlyZSgnLi9fc3RyaW5nU2l6ZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAqIHZhbHVlcyBvciB0aGUgbnVtYmVyIG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5zaXplKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gKiAvLyA9PiAyXG4gKlxuICogXy5zaXplKCdwZWJibGVzJyk7XG4gKiAvLyA9PiA3XG4gKi9cbmZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pID8gc3RyaW5nU2l6ZShjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICB9XG4gIHJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2l6ZTtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyksXG4gICAgYmFzZU9yZGVyQnkgPSByZXF1aXJlKCcuL19iYXNlT3JkZXJCeScpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogMzAgfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICogXTtcbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCAzMF1dXG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCAzMF0sIFsnZnJlZCcsIDQ4XV1cbiAqL1xudmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBsZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoO1xuICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbXTtcbiAgfSBlbHNlIGlmIChsZW5ndGggPiAyICYmIGlzSXRlcmF0ZWVDYWxsKGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdLCBpdGVyYXRlZXNbMl0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gIH1cbiAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGJhc2VGbGF0dGVuKGl0ZXJhdGVlcywgMSksIFtdKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRCeTtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iLCJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcbiIsInZhciBiYXNlVG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlVG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG52YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaW9uO1xuIiwidmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcXVlSWQ7XG4iLCJ2YXIgYmFzZVZhbHVlcyA9IHJlcXVpcmUoJy4vX2Jhc2VWYWx1ZXMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlcztcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZVppcE9iamVjdCA9IHJlcXVpcmUoJy4vX2Jhc2VaaXBPYmplY3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjQuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbmZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB6aXBPYmplY3Q7XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCIvLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuYXNzaWduICE9IG51bGwgPyBPYmplY3QuYXNzaWduLmJpbmQoIE9iamVjdCApIDogZnVuY3Rpb24oIHRndCwgLi4uc3JjcyApe1xuICBzcmNzLmZvckVhY2goIHNyYyA9PiB7XG4gICAgT2JqZWN0LmtleXMoIHNyYyApLmZvckVhY2goIGsgPT4gdGd0W2tdID0gc3JjW2tdICk7XG4gIH0gKTtcblxuICByZXR1cm4gdGd0O1xufTtcbiIsImxldCBkZWZhdWx0cyA9IHtcbiAgLy8gZGFncmUgYWxnbyBvcHRpb25zLCB1c2VzIGRlZmF1bHQgdmFsdWUgb24gdW5kZWZpbmVkXG4gIG5vZGVTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIGVkZ2VTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBlZGdlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtEaXI6IHVuZGVmaW5lZCwgLy8gJ1RCJyBmb3IgdG9wIHRvIGJvdHRvbSBmbG93LCAnTFInIGZvciBsZWZ0IHRvIHJpZ2h0LFxuICByYW5rZXI6ICB1bmRlZmluZWQsIC8vIFR5cGUgb2YgYWxnb3JpdGhtIHRvIGFzc2lnbnMgYSByYW5rIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGguXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzOiBuZXR3b3JrLXNpbXBsZXgsIHRpZ2h0LXRyZWUgb3IgbG9uZ2VzdC1wYXRoXG4gIG1pbkxlbjogZnVuY3Rpb24oIGVkZ2UgKXsgcmV0dXJuIDE7IH0sIC8vIG51bWJlciBvZiByYW5rcyB0byBrZWVwIGJldHdlZW4gdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IG9mIHRoZSBlZGdlXG4gIGVkZ2VXZWlnaHQ6IGZ1bmN0aW9uKCBlZGdlICl7IHJldHVybiAxOyB9LCAvLyBoaWdoZXIgd2VpZ2h0IGVkZ2VzIGFyZSBnZW5lcmFsbHkgbWFkZSBzaG9ydGVyIGFuZCBzdHJhaWdodGVyIHRoYW4gbG93ZXIgd2VpZ2h0IGVkZ2VzXG5cbiAgLy8gZ2VuZXJhbCBsYXlvdXQgb3B0aW9uc1xuICBmaXQ6IHRydWUsIC8vIHdoZXRoZXIgdG8gZml0IHRvIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBmaXQgcGFkZGluZ1xuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcbiAgYW5pbWF0ZTogZmFsc2UsIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24oIG5vZGUsIGkgKXsgcmV0dXJuIHRydWU7IH0sIC8vIHdoZXRoZXIgdG8gYW5pbWF0ZSBzcGVjaWZpYyBub2RlcyB3aGVuIGFuaW1hdGlvbiBpcyBvbjsgbm9uLWFuaW1hdGVkIG5vZGVzIGltbWVkaWF0ZWx5IGdvIHRvIHRoZWlyIGZpbmFsIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLCAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCwgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uKCBub2RlLCBwb3MgKXsgcmV0dXJuIHBvczsgfSwgLy8gYSBmdW5jdGlvbiB0aGF0IGFwcGxpZXMgYSB0cmFuc2Zvcm0gdG8gdGhlIGZpbmFsIG5vZGUgcG9zaXRpb25cbiAgcmVhZHk6IGZ1bmN0aW9uKCl7fSwgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24oKXt9IC8vIG9uIGxheW91dHN0b3Bcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJjb25zdCBpbXBsID0gcmVxdWlyZSgnLi9sYXlvdXQnKTtcblxuLy8gcmVnaXN0ZXJzIHRoZSBleHRlbnNpb24gb24gYSBjeXRvc2NhcGUgbGliIHJlZlxubGV0IHJlZ2lzdGVyID0gZnVuY3Rpb24oIGN5dG9zY2FwZSApe1xuICBpZiggIWN5dG9zY2FwZSApeyByZXR1cm47IH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgY3l0b3NjYXBlKCAnbGF5b3V0JywgJ2RhZ3JlJywgaW1wbCApOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYoIHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnICl7IC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKCBjeXRvc2NhcGUgKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcbiIsImNvbnN0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbihvKXsgcmV0dXJuIHR5cGVvZiBvID09PSAnZnVuY3Rpb24nOyB9O1xuY29uc3QgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5jb25zdCBhc3NpZ24gPSByZXF1aXJlKCcuL2Fzc2lnbicpO1xuY29uc3QgZGFncmUgPSByZXF1aXJlKCdkYWdyZScpO1xuXG4vLyBjb25zdHJ1Y3RvclxuLy8gb3B0aW9ucyA6IG9iamVjdCBjb250YWluaW5nIGxheW91dCBvcHRpb25zXG5mdW5jdGlvbiBEYWdyZUxheW91dCggb3B0aW9ucyApe1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oIHt9LCBkZWZhdWx0cywgb3B0aW9ucyApO1xufVxuXG4vLyBydW5zIHRoZSBsYXlvdXRcbkRhZ3JlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbigpe1xuICBsZXQgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgbGV0IGxheW91dCA9IHRoaXM7XG5cbiAgbGV0IGN5ID0gb3B0aW9ucy5jeTsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICBsZXQgZWxlcyA9IG9wdGlvbnMuZWxlcztcblxuICBsZXQgZ2V0VmFsID0gZnVuY3Rpb24oIGVsZSwgdmFsICl7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odmFsKSA/IHZhbC5hcHBseSggZWxlLCBbIGVsZSBdICkgOiB2YWw7XG4gIH07XG5cbiAgbGV0IGJiID0gb3B0aW9ucy5ib3VuZGluZ0JveCB8fCB7IHgxOiAwLCB5MTogMCwgdzogY3kud2lkdGgoKSwgaDogY3kuaGVpZ2h0KCkgfTtcbiAgaWYoIGJiLngyID09PSB1bmRlZmluZWQgKXsgYmIueDIgPSBiYi54MSArIGJiLnc7IH1cbiAgaWYoIGJiLncgPT09IHVuZGVmaW5lZCApeyBiYi53ID0gYmIueDIgLSBiYi54MTsgfVxuICBpZiggYmIueTIgPT09IHVuZGVmaW5lZCApeyBiYi55MiA9IGJiLnkxICsgYmIuaDsgfVxuICBpZiggYmIuaCA9PT0gdW5kZWZpbmVkICl7IGJiLmggPSBiYi55MiAtIGJiLnkxOyB9XG5cbiAgbGV0IGcgPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoe1xuICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgY29tcG91bmQ6IHRydWVcbiAgfSk7XG5cbiAgbGV0IGdPYmogPSB7fTtcbiAgbGV0IHNldEdPYmogPSBmdW5jdGlvbiggbmFtZSwgdmFsICl7XG4gICAgaWYoIHZhbCAhPSBudWxsICl7XG4gICAgICBnT2JqWyBuYW1lIF0gPSB2YWw7XG4gICAgfVxuICB9O1xuXG4gIHNldEdPYmooICdub2Rlc2VwJywgb3B0aW9ucy5ub2RlU2VwICk7XG4gIHNldEdPYmooICdlZGdlc2VwJywgb3B0aW9ucy5lZGdlU2VwICk7XG4gIHNldEdPYmooICdyYW5rc2VwJywgb3B0aW9ucy5yYW5rU2VwICk7XG4gIHNldEdPYmooICdyYW5rZGlyJywgb3B0aW9ucy5yYW5rRGlyICk7XG4gIHNldEdPYmooICdyYW5rZXInLCBvcHRpb25zLnJhbmtlciApO1xuXG4gIGcuc2V0R3JhcGgoIGdPYmogKTtcblxuICBnLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7IHJldHVybiB7fTsgfSk7XG4gIGcuc2V0RGVmYXVsdE5vZGVMYWJlbChmdW5jdGlvbigpIHsgcmV0dXJuIHt9OyB9KTtcblxuICAvLyBhZGQgbm9kZXMgdG8gZGFncmVcbiAgbGV0IG5vZGVzID0gZWxlcy5ub2RlcygpO1xuICBmb3IoIGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrICl7XG4gICAgbGV0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICBsZXQgbmJiID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKCBvcHRpb25zICk7XG5cbiAgICBnLnNldE5vZGUoIG5vZGUuaWQoKSwge1xuICAgICAgd2lkdGg6IG5iYi53LFxuICAgICAgaGVpZ2h0OiBuYmIuaCxcbiAgICAgIG5hbWU6IG5vZGUuaWQoKVxuICAgIH0gKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKCBnLm5vZGUobm9kZS5pZCgpKSApO1xuICB9XG5cbiAgLy8gc2V0IGNvbXBvdW5kIHBhcmVudHNcbiAgZm9yKCBsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKyApe1xuICAgIGxldCBub2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiggbm9kZS5pc0NoaWxkKCkgKXtcbiAgICAgIGcuc2V0UGFyZW50KCBub2RlLmlkKCksIG5vZGUucGFyZW50KCkuaWQoKSApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCBlZGdlcyB0byBkYWdyZVxuICBsZXQgZWRnZXMgPSBlbGVzLmVkZ2VzKCkuc3RkRmlsdGVyKGZ1bmN0aW9uKCBlZGdlICl7XG4gICAgcmV0dXJuICFlZGdlLnNvdXJjZSgpLmlzUGFyZW50KCkgJiYgIWVkZ2UudGFyZ2V0KCkuaXNQYXJlbnQoKTsgLy8gZGFncmUgY2FuJ3QgaGFuZGxlIGVkZ2VzIG9uIGNvbXBvdW5kIG5vZGVzXG4gIH0pO1xuICBmb3IoIGxldCBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrICl7XG4gICAgbGV0IGVkZ2UgPSBlZGdlc1tpXTtcblxuICAgIGcuc2V0RWRnZSggZWRnZS5zb3VyY2UoKS5pZCgpLCBlZGdlLnRhcmdldCgpLmlkKCksIHtcbiAgICAgIG1pbmxlbjogZ2V0VmFsKCBlZGdlLCBvcHRpb25zLm1pbkxlbiApLFxuICAgICAgd2VpZ2h0OiBnZXRWYWwoIGVkZ2UsIG9wdGlvbnMuZWRnZVdlaWdodCApLFxuICAgICAgbmFtZTogZWRnZS5pZCgpXG4gICAgfSwgZWRnZS5pZCgpICk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyggZy5lZGdlKGVkZ2Uuc291cmNlKCkuaWQoKSwgZWRnZS50YXJnZXQoKS5pZCgpLCBlZGdlLmlkKCkpICk7XG4gIH1cblxuICBkYWdyZS5sYXlvdXQoIGcgKTtcblxuICBsZXQgZ05vZGVJZHMgPSBnLm5vZGVzKCk7XG4gIGZvciggbGV0IGkgPSAwOyBpIDwgZ05vZGVJZHMubGVuZ3RoOyBpKysgKXtcbiAgICBsZXQgaWQgPSBnTm9kZUlkc1tpXTtcbiAgICBsZXQgbiA9IGcubm9kZSggaWQgKTtcblxuICAgIGN5LmdldEVsZW1lbnRCeUlkKGlkKS5zY3JhdGNoKCkuZGFncmUgPSBuO1xuICB9XG5cbiAgbGV0IGRhZ3JlQkI7XG5cbiAgaWYoIG9wdGlvbnMuYm91bmRpbmdCb3ggKXtcbiAgICBkYWdyZUJCID0geyB4MTogSW5maW5pdHksIHgyOiAtSW5maW5pdHksIHkxOiBJbmZpbml0eSwgeTI6IC1JbmZpbml0eSB9O1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oIG5vZGUgKXtcbiAgICAgIGxldCBkTW9kZWwgPSBub2RlLnNjcmF0Y2goKS5kYWdyZTtcblxuICAgICAgZGFncmVCQi54MSA9IE1hdGgubWluKCBkYWdyZUJCLngxLCBkTW9kZWwueCApO1xuICAgICAgZGFncmVCQi54MiA9IE1hdGgubWF4KCBkYWdyZUJCLngyLCBkTW9kZWwueCApO1xuXG4gICAgICBkYWdyZUJCLnkxID0gTWF0aC5taW4oIGRhZ3JlQkIueTEsIGRNb2RlbC55ICk7XG4gICAgICBkYWdyZUJCLnkyID0gTWF0aC5tYXgoIGRhZ3JlQkIueTIsIGRNb2RlbC55ICk7XG4gICAgfSk7XG5cbiAgICBkYWdyZUJCLncgPSBkYWdyZUJCLngyIC0gZGFncmVCQi54MTtcbiAgICBkYWdyZUJCLmggPSBkYWdyZUJCLnkyIC0gZGFncmVCQi55MTtcbiAgfSBlbHNlIHtcbiAgICBkYWdyZUJCID0gYmI7XG4gIH1cblxuICBsZXQgY29uc3RyYWluUG9zID0gZnVuY3Rpb24oIHAgKXtcbiAgICBpZiggb3B0aW9ucy5ib3VuZGluZ0JveCApe1xuICAgICAgbGV0IHhQY3QgPSBkYWdyZUJCLncgPT09IDAgPyAwIDogKHAueCAtIGRhZ3JlQkIueDEpIC8gZGFncmVCQi53O1xuICAgICAgbGV0IHlQY3QgPSBkYWdyZUJCLmggPT09IDAgPyAwIDogKHAueSAtIGRhZ3JlQkIueTEpIC8gZGFncmVCQi5oO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIHhQY3QgKiBiYi53LFxuICAgICAgICB5OiBiYi55MSArIHlQY3QgKiBiYi5oXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH07XG5cbiAgbm9kZXMubGF5b3V0UG9zaXRpb25zKGxheW91dCwgb3B0aW9ucywgZnVuY3Rpb24oIGVsZSApe1xuICAgIGVsZSA9IHR5cGVvZiBlbGUgPT09IFwib2JqZWN0XCIgPyBlbGUgOiB0aGlzO1xuICAgIGxldCBkTW9kZWwgPSBlbGUuc2NyYXRjaCgpLmRhZ3JlO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpblBvcyh7XG4gICAgICB4OiBkTW9kZWwueCxcbiAgICAgIHk6IGRNb2RlbC55XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYWdyZUxheW91dDtcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/html/gui/lib/cytoscape/cytoscape.esm.js b/html/gui/lib/cytoscape/cytoscape.esm.js new file mode 100644 index 0000000000..8a12c40eb3 --- /dev/null +++ b/html/gui/lib/cytoscape/cytoscape.esm.js @@ -0,0 +1,31608 @@ +/** + * Copyright (c) 2016-2020, The Cytoscape Consortium. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the “Software”), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +import util from 'lodash.debounce'; +import Heap from 'heap'; + +function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; +} + +function _slicedToArray(arr, i) { + return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); +} + +function _arrayWithHoles(arr) { + if (Array.isArray(arr)) return arr; +} + +function _iterableToArrayLimit(arr, i) { + var _arr = []; + var _n = true; + var _d = false; + var _e = undefined; + + try { + for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { + _arr.push(_s.value); + + if (i && _arr.length === i) break; + } + } catch (err) { + _d = true; + _e = err; + } finally { + try { + if (!_n && _i["return"] != null) _i["return"](); + } finally { + if (_d) throw _e; + } + } + + return _arr; +} + +function _nonIterableRest() { + throw new TypeError("Invalid attempt to destructure non-iterable instance"); +} + +var window$1 = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef + +var navigator = window$1 ? window$1.navigator : null; +var document$1 = window$1 ? window$1.document : null; + +var typeofstr = _typeof(''); + +var typeofobj = _typeof({}); + +var typeoffn = _typeof(function () {}); + +var typeofhtmlele = typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement); + +var instanceStr = function instanceStr(obj) { + return obj && obj.instanceString && fn(obj.instanceString) ? obj.instanceString() : null; +}; + +var string = function string(obj) { + return obj != null && _typeof(obj) == typeofstr; +}; +var fn = function fn(obj) { + return obj != null && _typeof(obj) === typeoffn; +}; +var array = function array(obj) { + return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array); +}; +var plainObject = function plainObject(obj) { + return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object; +}; +var object = function object(obj) { + return obj != null && _typeof(obj) === typeofobj; +}; +var number = function number(obj) { + return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj); +}; +var integer = function integer(obj) { + return number(obj) && Math.floor(obj) === obj; +}; +var htmlElement = function htmlElement(obj) { + if ('undefined' === typeofhtmlele) { + return undefined; + } else { + return null != obj && obj instanceof HTMLElement; + } +}; +var elementOrCollection = function elementOrCollection(obj) { + return element(obj) || collection(obj); +}; +var element = function element(obj) { + return instanceStr(obj) === 'collection' && obj._private.single; +}; +var collection = function collection(obj) { + return instanceStr(obj) === 'collection' && !obj._private.single; +}; +var core = function core(obj) { + return instanceStr(obj) === 'core'; +}; +var stylesheet = function stylesheet(obj) { + return instanceStr(obj) === 'stylesheet'; +}; +var event = function event(obj) { + return instanceStr(obj) === 'event'; +}; +var emptyString = function emptyString(obj) { + if (obj === undefined || obj === null) { + // null is empty + return true; + } else if (obj === '' || obj.match(/^\s+$/)) { + return true; // empty string is empty + } + + return false; // otherwise, we don't know what we've got +}; +var domElement = function domElement(obj) { + if (typeof HTMLElement === 'undefined') { + return false; // we're not in a browser so it doesn't matter + } else { + return obj instanceof HTMLElement; + } +}; +var boundingBox = function boundingBox(obj) { + return plainObject(obj) && number(obj.x1) && number(obj.x2) && number(obj.y1) && number(obj.y2); +}; +var promise = function promise(obj) { + return object(obj) && fn(obj.then); +}; +var ms = function ms() { + return navigator && navigator.userAgent.match(/msie|trident|edge/i); +}; // probably a better way to detect this... + +var memoize = function memoize(fn, keyFn) { + if (!keyFn) { + keyFn = function keyFn() { + if (arguments.length === 1) { + return arguments[0]; + } else if (arguments.length === 0) { + return 'undefined'; + } + + var args = []; + + for (var i = 0; i < arguments.length; i++) { + args.push(arguments[i]); + } + + return args.join('$'); + }; + } + + var memoizedFn = function memoizedFn() { + var self = this; + var args = arguments; + var ret; + var k = keyFn.apply(self, args); + var cache = memoizedFn.cache; + + if (!(ret = cache[k])) { + ret = cache[k] = fn.apply(self, args); + } + + return ret; + }; + + memoizedFn.cache = {}; + return memoizedFn; +}; + +var camel2dash = memoize(function (str) { + return str.replace(/([A-Z])/g, function (v) { + return '-' + v.toLowerCase(); + }); +}); +var dash2camel = memoize(function (str) { + return str.replace(/(-\w)/g, function (v) { + return v[1].toUpperCase(); + }); +}); +var prependCamel = memoize(function (prefix, str) { + return prefix + str[0].toUpperCase() + str.substring(1); +}, function (prefix, str) { + return prefix + '$' + str; +}); +var capitalize = function capitalize(str) { + if (emptyString(str)) { + return str; + } + + return str.charAt(0).toUpperCase() + str.substring(1); +}; + +var number$1 = '(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))'; +var rgba = 'rgb[a]?\\((' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)(?:\\s*,\\s*(' + number$1 + '))?\\)'; +var rgbaNoBackRefs = 'rgb[a]?\\((?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; +var hsla = 'hsl[a]?\\((' + number$1 + ')\\s*,\\s*(' + number$1 + '[%])\\s*,\\s*(' + number$1 + '[%])(?:\\s*,\\s*(' + number$1 + '))?\\)'; +var hslaNoBackRefs = 'hsl[a]?\\((?:' + number$1 + ')\\s*,\\s*(?:' + number$1 + '[%])\\s*,\\s*(?:' + number$1 + '[%])(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; +var hex3 = '\\#[0-9a-fA-F]{3}'; +var hex6 = '\\#[0-9a-fA-F]{6}'; + +var ascending = function ascending(a, b) { + if (a < b) { + return -1; + } else if (a > b) { + return 1; + } else { + return 0; + } +}; +var descending = function descending(a, b) { + return -1 * ascending(a, b); +}; + +var extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + var args = arguments; + + for (var i = 1; i < args.length; i++) { + var obj = args[i]; + + if (obj == null) { + continue; + } + + var keys = Object.keys(obj); + + for (var j = 0; j < keys.length; j++) { + var k = keys[j]; + tgt[k] = obj[k]; + } + } + + return tgt; +}; + +var hex2tuple = function hex2tuple(hex) { + if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') { + return; + } + + var shortHex = hex.length === 4; + var r, g, b; + var base = 16; + + if (shortHex) { + r = parseInt(hex[1] + hex[1], base); + g = parseInt(hex[2] + hex[2], base); + b = parseInt(hex[3] + hex[3], base); + } else { + r = parseInt(hex[1] + hex[2], base); + g = parseInt(hex[3] + hex[4], base); + b = parseInt(hex[5] + hex[6], base); + } + + return [r, g, b]; +}; // get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0) + +var hsl2tuple = function hsl2tuple(hsl) { + var ret; + var h, s, l, a, r, g, b; + + function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + + var m = new RegExp('^' + hsla + '$').exec(hsl); + + if (m) { + // get hue + h = parseInt(m[1]); + + if (h < 0) { + h = (360 - -1 * h % 360) % 360; + } else if (h > 360) { + h = h % 360; + } + + h /= 360; // normalise on [0, 1] + + s = parseFloat(m[2]); + + if (s < 0 || s > 100) { + return; + } // saturation is [0, 100] + + + s = s / 100; // normalise on [0, 1] + + l = parseFloat(m[3]); + + if (l < 0 || l > 100) { + return; + } // lightness is [0, 100] + + + l = l / 100; // normalise on [0, 1] + + a = m[4]; + + if (a !== undefined) { + a = parseFloat(a); + + if (a < 0 || a > 1) { + return; + } // alpha is [0, 1] + + } // now, convert to rgb + // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript + + + if (s === 0) { + r = g = b = Math.round(l * 255); // achromatic + } else { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = Math.round(255 * hue2rgb(p, q, h + 1 / 3)); + g = Math.round(255 * hue2rgb(p, q, h)); + b = Math.round(255 * hue2rgb(p, q, h - 1 / 3)); + } + + ret = [r, g, b, a]; + } + + return ret; +}; // get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0) + +var rgb2tuple = function rgb2tuple(rgb) { + var ret; + var m = new RegExp('^' + rgba + '$').exec(rgb); + + if (m) { + ret = []; + var isPct = []; + + for (var i = 1; i <= 3; i++) { + var channel = m[i]; + + if (channel[channel.length - 1] === '%') { + isPct[i] = true; + } + + channel = parseFloat(channel); + + if (isPct[i]) { + channel = channel / 100 * 255; // normalise to [0, 255] + } + + if (channel < 0 || channel > 255) { + return; + } // invalid channel value + + + ret.push(Math.floor(channel)); + } + + var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3]; + var allArePct = isPct[1] && isPct[2] && isPct[3]; + + if (atLeastOneIsPct && !allArePct) { + return; + } // must all be percent values if one is + + + var alpha = m[4]; + + if (alpha !== undefined) { + alpha = parseFloat(alpha); + + if (alpha < 0 || alpha > 1) { + return; + } // invalid alpha value + + + ret.push(alpha); + } + } + + return ret; +}; +var colorname2tuple = function colorname2tuple(color) { + return colors[color.toLowerCase()]; +}; +var color2tuple = function color2tuple(color) { + return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color); +}; +var colors = { + // special colour names + transparent: [0, 0, 0, 0], + // NB alpha === 0 + // regular colours + aliceblue: [240, 248, 255], + antiquewhite: [250, 235, 215], + aqua: [0, 255, 255], + aquamarine: [127, 255, 212], + azure: [240, 255, 255], + beige: [245, 245, 220], + bisque: [255, 228, 196], + black: [0, 0, 0], + blanchedalmond: [255, 235, 205], + blue: [0, 0, 255], + blueviolet: [138, 43, 226], + brown: [165, 42, 42], + burlywood: [222, 184, 135], + cadetblue: [95, 158, 160], + chartreuse: [127, 255, 0], + chocolate: [210, 105, 30], + coral: [255, 127, 80], + cornflowerblue: [100, 149, 237], + cornsilk: [255, 248, 220], + crimson: [220, 20, 60], + cyan: [0, 255, 255], + darkblue: [0, 0, 139], + darkcyan: [0, 139, 139], + darkgoldenrod: [184, 134, 11], + darkgray: [169, 169, 169], + darkgreen: [0, 100, 0], + darkgrey: [169, 169, 169], + darkkhaki: [189, 183, 107], + darkmagenta: [139, 0, 139], + darkolivegreen: [85, 107, 47], + darkorange: [255, 140, 0], + darkorchid: [153, 50, 204], + darkred: [139, 0, 0], + darksalmon: [233, 150, 122], + darkseagreen: [143, 188, 143], + darkslateblue: [72, 61, 139], + darkslategray: [47, 79, 79], + darkslategrey: [47, 79, 79], + darkturquoise: [0, 206, 209], + darkviolet: [148, 0, 211], + deeppink: [255, 20, 147], + deepskyblue: [0, 191, 255], + dimgray: [105, 105, 105], + dimgrey: [105, 105, 105], + dodgerblue: [30, 144, 255], + firebrick: [178, 34, 34], + floralwhite: [255, 250, 240], + forestgreen: [34, 139, 34], + fuchsia: [255, 0, 255], + gainsboro: [220, 220, 220], + ghostwhite: [248, 248, 255], + gold: [255, 215, 0], + goldenrod: [218, 165, 32], + gray: [128, 128, 128], + grey: [128, 128, 128], + green: [0, 128, 0], + greenyellow: [173, 255, 47], + honeydew: [240, 255, 240], + hotpink: [255, 105, 180], + indianred: [205, 92, 92], + indigo: [75, 0, 130], + ivory: [255, 255, 240], + khaki: [240, 230, 140], + lavender: [230, 230, 250], + lavenderblush: [255, 240, 245], + lawngreen: [124, 252, 0], + lemonchiffon: [255, 250, 205], + lightblue: [173, 216, 230], + lightcoral: [240, 128, 128], + lightcyan: [224, 255, 255], + lightgoldenrodyellow: [250, 250, 210], + lightgray: [211, 211, 211], + lightgreen: [144, 238, 144], + lightgrey: [211, 211, 211], + lightpink: [255, 182, 193], + lightsalmon: [255, 160, 122], + lightseagreen: [32, 178, 170], + lightskyblue: [135, 206, 250], + lightslategray: [119, 136, 153], + lightslategrey: [119, 136, 153], + lightsteelblue: [176, 196, 222], + lightyellow: [255, 255, 224], + lime: [0, 255, 0], + limegreen: [50, 205, 50], + linen: [250, 240, 230], + magenta: [255, 0, 255], + maroon: [128, 0, 0], + mediumaquamarine: [102, 205, 170], + mediumblue: [0, 0, 205], + mediumorchid: [186, 85, 211], + mediumpurple: [147, 112, 219], + mediumseagreen: [60, 179, 113], + mediumslateblue: [123, 104, 238], + mediumspringgreen: [0, 250, 154], + mediumturquoise: [72, 209, 204], + mediumvioletred: [199, 21, 133], + midnightblue: [25, 25, 112], + mintcream: [245, 255, 250], + mistyrose: [255, 228, 225], + moccasin: [255, 228, 181], + navajowhite: [255, 222, 173], + navy: [0, 0, 128], + oldlace: [253, 245, 230], + olive: [128, 128, 0], + olivedrab: [107, 142, 35], + orange: [255, 165, 0], + orangered: [255, 69, 0], + orchid: [218, 112, 214], + palegoldenrod: [238, 232, 170], + palegreen: [152, 251, 152], + paleturquoise: [175, 238, 238], + palevioletred: [219, 112, 147], + papayawhip: [255, 239, 213], + peachpuff: [255, 218, 185], + peru: [205, 133, 63], + pink: [255, 192, 203], + plum: [221, 160, 221], + powderblue: [176, 224, 230], + purple: [128, 0, 128], + red: [255, 0, 0], + rosybrown: [188, 143, 143], + royalblue: [65, 105, 225], + saddlebrown: [139, 69, 19], + salmon: [250, 128, 114], + sandybrown: [244, 164, 96], + seagreen: [46, 139, 87], + seashell: [255, 245, 238], + sienna: [160, 82, 45], + silver: [192, 192, 192], + skyblue: [135, 206, 235], + slateblue: [106, 90, 205], + slategray: [112, 128, 144], + slategrey: [112, 128, 144], + snow: [255, 250, 250], + springgreen: [0, 255, 127], + steelblue: [70, 130, 180], + tan: [210, 180, 140], + teal: [0, 128, 128], + thistle: [216, 191, 216], + tomato: [255, 99, 71], + turquoise: [64, 224, 208], + violet: [238, 130, 238], + wheat: [245, 222, 179], + white: [255, 255, 255], + whitesmoke: [245, 245, 245], + yellow: [255, 255, 0], + yellowgreen: [154, 205, 50] +}; + +var setMap = function setMap(options) { + var obj = options.map; + var keys = options.keys; + var l = keys.length; + + for (var i = 0; i < l; i++) { + var key = keys[i]; + + if (plainObject(key)) { + throw Error('Tried to set map with object key'); + } + + if (i < keys.length - 1) { + // extend the map if necessary + if (obj[key] == null) { + obj[key] = {}; + } + + obj = obj[key]; + } else { + // set the value + obj[key] = options.value; + } + } +}; // gets the value in a map even if it's not built in places + +var getMap = function getMap(options) { + var obj = options.map; + var keys = options.keys; + var l = keys.length; + + for (var i = 0; i < l; i++) { + var key = keys[i]; + + if (plainObject(key)) { + throw Error('Tried to get map with object key'); + } + + obj = obj[key]; + + if (obj == null) { + return obj; + } + } + + return obj; +}; // deletes the entry in the map + +var performance = window$1 ? window$1.performance : null; +var pnow = performance && performance.now ? function () { + return performance.now(); +} : function () { + return Date.now(); +}; + +var raf = function () { + if (window$1) { + if (window$1.requestAnimationFrame) { + return function (fn) { + window$1.requestAnimationFrame(fn); + }; + } else if (window$1.mozRequestAnimationFrame) { + return function (fn) { + window$1.mozRequestAnimationFrame(fn); + }; + } else if (window$1.webkitRequestAnimationFrame) { + return function (fn) { + window$1.webkitRequestAnimationFrame(fn); + }; + } else if (window$1.msRequestAnimationFrame) { + return function (fn) { + window$1.msRequestAnimationFrame(fn); + }; + } + } + + return function (fn) { + if (fn) { + setTimeout(function () { + fn(pnow()); + }, 1000 / 60); + } + }; +}(); + +var requestAnimationFrame = function requestAnimationFrame(fn) { + return raf(fn); +}; +var performanceNow = pnow; + +var DEFAULT_HASH_SEED = 9261; +var K = 65599; // 37 also works pretty well + +var DEFAULT_HASH_SEED_ALT = 5381; +var hashIterableInts = function hashIterableInts(iterator) { + var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; + // sdbm/string-hash + var hash = seed; + var entry; + + for (;;) { + entry = iterator.next(); + + if (entry.done) { + break; + } + + hash = hash * K + entry.value | 0; + } + + return hash; +}; +var hashInt = function hashInt(num) { + var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; + // sdbm/string-hash + return seed * K + num | 0; +}; +var hashIntAlt = function hashIntAlt(num) { + var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT; + // djb2/string-hash + return (seed << 5) + seed + num | 0; +}; +var combineHashes = function combineHashes(hash1, hash2) { + return hash1 * 0x200000 + hash2; +}; +var combineHashesArray = function combineHashesArray(hashes) { + return hashes[0] * 0x200000 + hashes[1]; +}; +var hashArrays = function hashArrays(hashes1, hashes2) { + return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])]; +}; +var hashIntsArray = function hashIntsArray(ints, seed) { + var entry = { + value: 0, + done: false + }; + var i = 0; + var length = ints.length; + var iterator = { + next: function next() { + if (i < length) { + entry.value = ints[i++]; + } else { + entry.done = true; + } + + return entry; + } + }; + return hashIterableInts(iterator, seed); +}; +var hashString = function hashString(str, seed) { + var entry = { + value: 0, + done: false + }; + var i = 0; + var length = str.length; + var iterator = { + next: function next() { + if (i < length) { + entry.value = str.charCodeAt(i++); + } else { + entry.done = true; + } + + return entry; + } + }; + return hashIterableInts(iterator, seed); +}; +var hashStrings = function hashStrings() { + return hashStringsArray(arguments); +}; +var hashStringsArray = function hashStringsArray(strs) { + var hash; + + for (var i = 0; i < strs.length; i++) { + var str = strs[i]; + + if (i === 0) { + hash = hashString(str); + } else { + hash = hashString(str, hash); + } + } + + return hash; +}; + +/*global console */ +var warningsEnabled = true; +var warnSupported = console.warn != null; // eslint-disable-line no-console + +var traceSupported = console.trace != null; // eslint-disable-line no-console + +var MAX_INT = Number.MAX_SAFE_INTEGER || 9007199254740991; +var trueify = function trueify() { + return true; +}; +var falsify = function falsify() { + return false; +}; +var zeroify = function zeroify() { + return 0; +}; +var noop = function noop() {}; +var error = function error(msg) { + throw new Error(msg); +}; +var warnings = function warnings(enabled) { + if (enabled !== undefined) { + warningsEnabled = !!enabled; + } else { + return warningsEnabled; + } +}; +var warn = function warn(msg) { + /* eslint-disable no-console */ + if (!warnings()) { + return; + } + + if (warnSupported) { + console.warn(msg); + } else { + console.log(msg); + + if (traceSupported) { + console.trace(); + } + } +}; +/* eslint-enable */ + +var clone = function clone(obj) { + return extend({}, obj); +}; // gets a shallow copy of the argument + +var copy = function copy(obj) { + if (obj == null) { + return obj; + } + + if (array(obj)) { + return obj.slice(); + } else if (plainObject(obj)) { + return clone(obj); + } else { + return obj; + } +}; +var copyArray = function copyArray(arr) { + return arr.slice(); +}; +var uuid = function uuid(a, b +/* placeholders */ +) { + for ( // loop :) + b = a = ''; // b - result , a - numeric letiable + a++ < 36; // + b += a * 51 & 52 // if "a" is not 9 or 14 or 19 or 24 + ? // return a random number or 4 + (a ^ 15 // if "a" is not 15 + ? // genetate a random number from 0 to 15 + 8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless "a" is 20, in which case a random number from 8 to 11 + : 4 // otherwise 4 + ).toString(16) : '-' // in other cases (if "a" is 9,14,19,24) insert "-" + ) { + } + + return b; +}; +var _staticEmptyObject = {}; +var staticEmptyObject = function staticEmptyObject() { + return _staticEmptyObject; +}; +var defaults = function defaults(_defaults) { + var keys = Object.keys(_defaults); + return function (opts) { + var filledOpts = {}; + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + var optVal = opts == null ? undefined : opts[key]; + filledOpts[key] = optVal === undefined ? _defaults[key] : optVal; + } + + return filledOpts; + }; +}; +var removeFromArray = function removeFromArray(arr, ele, manyCopies) { + for (var i = arr.length; i >= 0; i--) { + if (arr[i] === ele) { + arr.splice(i, 1); + + if (!manyCopies) { + break; + } + } + } +}; +var clearArray = function clearArray(arr) { + arr.splice(0, arr.length); +}; +var push = function push(arr, otherArr) { + for (var i = 0; i < otherArr.length; i++) { + var el = otherArr[i]; + arr.push(el); + } +}; +var getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) { + if (prefix) { + propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth + } + + return obj[propName]; +}; +var setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) { + if (prefix) { + propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth + } + + obj[propName] = value; +}; + +/* global Map */ +var ObjectMap = +/*#__PURE__*/ +function () { + function ObjectMap() { + _classCallCheck(this, ObjectMap); + + this._obj = {}; + } + + _createClass(ObjectMap, [{ + key: "set", + value: function set(key, val) { + this._obj[key] = val; + return this; + } + }, { + key: "delete", + value: function _delete(key) { + this._obj[key] = undefined; + return this; + } + }, { + key: "clear", + value: function clear() { + this._obj = {}; + } + }, { + key: "has", + value: function has(key) { + return this._obj[key] !== undefined; + } + }, { + key: "get", + value: function get(key) { + return this._obj[key]; + } + }]); + + return ObjectMap; +}(); + +var Map$1 = typeof Map !== 'undefined' ? Map : ObjectMap; + +/* global Set */ +var undef = "undefined" ; + +var ObjectSet = +/*#__PURE__*/ +function () { + function ObjectSet(arrayOrObjectSet) { + _classCallCheck(this, ObjectSet); + + this._obj = Object.create(null); + this.size = 0; + + if (arrayOrObjectSet != null) { + var arr; + + if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) { + arr = arrayOrObjectSet.toArray(); + } else { + arr = arrayOrObjectSet; + } + + for (var i = 0; i < arr.length; i++) { + this.add(arr[i]); + } + } + } + + _createClass(ObjectSet, [{ + key: "instanceString", + value: function instanceString() { + return 'set'; + } + }, { + key: "add", + value: function add(val) { + var o = this._obj; + + if (o[val] !== 1) { + o[val] = 1; + this.size++; + } + } + }, { + key: "delete", + value: function _delete(val) { + var o = this._obj; + + if (o[val] === 1) { + o[val] = 0; + this.size--; + } + } + }, { + key: "clear", + value: function clear() { + this._obj = Object.create(null); + } + }, { + key: "has", + value: function has(val) { + return this._obj[val] === 1; + } + }, { + key: "toArray", + value: function toArray() { + var _this = this; + + return Object.keys(this._obj).filter(function (key) { + return _this.has(key); + }); + } + }, { + key: "forEach", + value: function forEach(callback, thisArg) { + return this.toArray().forEach(callback, thisArg); + } + }]); + + return ObjectSet; +}(); + +var Set$1 = (typeof Set === "undefined" ? "undefined" : _typeof(Set)) !== undef ? Set : ObjectSet; + +var Element = function Element(cy, params) { + var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + + if (cy === undefined || params === undefined || !core(cy)) { + error('An element must have a core reference and parameters set'); + return; + } + + var group = params.group; // try to automatically infer the group if unspecified + + if (group == null) { + if (params.data && params.data.source != null && params.data.target != null) { + group = 'edges'; + } else { + group = 'nodes'; + } + } // validate group + + + if (group !== 'nodes' && group !== 'edges') { + error('An element must be of type `nodes` or `edges`; you specified `' + group + '`'); + return; + } // make the element array-like, just like a collection + + + this.length = 1; + this[0] = this; // NOTE: when something is added here, add also to ele.json() + + var _p = this._private = { + cy: cy, + single: true, + // indicates this is an element + data: params.data || {}, + // data object + position: params.position || { + x: 0, + y: 0 + }, + // (x, y) position pair + autoWidth: undefined, + // width and height of nodes calculated by the renderer when set to special 'auto' value + autoHeight: undefined, + autoPadding: undefined, + compoundBoundsClean: false, + // whether the compound dimensions need to be recalculated the next time dimensions are read + listeners: [], + // array of bound listeners + group: group, + // string; 'nodes' or 'edges' + style: {}, + // properties as set by the style + rstyle: {}, + // properties for style sent from the renderer to the core + styleCxts: [], + // applied style contexts from the styler + styleKeys: {}, + // per-group keys of style property values + removed: true, + // whether it's inside the vis; true if removed (set true here since we call restore) + selected: params.selected ? true : false, + // whether it's selected + selectable: params.selectable === undefined ? true : params.selectable ? true : false, + // whether it's selectable + locked: params.locked ? true : false, + // whether the element is locked (cannot be moved) + grabbed: false, + // whether the element is grabbed by the mouse; renderer sets this privately + grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false, + // whether the element can be grabbed + pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false, + // whether the element has passthrough panning enabled + active: false, + // whether the element is active from user interaction + classes: new Set$1(), + // map ( className => true ) + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + rscratch: {}, + // object in which the renderer can store information + scratch: params.scratch || {}, + // scratch objects + edges: [], + // array of connected edges + children: [], + // array of children + parent: null, + // parent ref + traversalCache: {}, + // cache of output of traversal functions + backgrounding: false, + // whether background images are loading + bbCache: null, + // cache of the current bounding box + bbCacheShift: { + x: 0, + y: 0 + }, + // shift applied to cached bb to be applied on next get + bodyBounds: null, + // bounds cache of element body, w/o overlay + overlayBounds: null, + // bounds cache of element body, including overlay + labelBounds: { + // bounds cache of labels + all: null, + source: null, + target: null, + main: null + }, + arrowBounds: { + // bounds cache of edge arrows + source: null, + target: null, + 'mid-source': null, + 'mid-target': null + } + }; + + if (_p.position.x == null) { + _p.position.x = 0; + } + + if (_p.position.y == null) { + _p.position.y = 0; + } // renderedPosition overrides if specified + + + if (params.renderedPosition) { + var rpos = params.renderedPosition; + var pan = cy.pan(); + var zoom = cy.zoom(); + _p.position = { + x: (rpos.x - pan.x) / zoom, + y: (rpos.y - pan.y) / zoom + }; + } + + var classes = []; + + if (array(params.classes)) { + classes = params.classes; + } else if (string(params.classes)) { + classes = params.classes.split(/\s+/); + } + + for (var i = 0, l = classes.length; i < l; i++) { + var cls = classes[i]; + + if (!cls || cls === '') { + continue; + } + + _p.classes.add(cls); + } + + this.createEmitter(); + var bypass = params.style || params.css; + + if (bypass) { + warn('Setting a `style` bypass at element creation is deprecated'); + this.style(bypass); + } + + if (restore === undefined || restore) { + this.restore(); + } +}; + +var defineSearch = function defineSearch(params) { + params = { + bfs: params.bfs || !params.dfs, + dfs: params.dfs || !params.bfs + }; // from pseudocode on wikipedia + + return function searchFn(roots, fn$1, directed) { + var options; + + if (plainObject(roots) && !elementOrCollection(roots)) { + options = roots; + roots = options.roots || options.root; + fn$1 = options.visit; + directed = options.directed; + } + + directed = arguments.length === 2 && !fn(fn$1) ? fn$1 : directed; + fn$1 = fn(fn$1) ? fn$1 : function () {}; + var cy = this._private.cy; + var v = roots = string(roots) ? this.filter(roots) : roots; + var Q = []; + var connectedNodes = []; + var connectedBy = {}; + var id2depth = {}; + var V = {}; + var j = 0; + var found; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; // enqueue v + + + for (var i = 0; i < v.length; i++) { + var vi = v[i]; + var viId = vi.id(); + + if (vi.isNode()) { + Q.unshift(vi); + + if (params.bfs) { + V[viId] = true; + connectedNodes.push(vi); + } + + id2depth[viId] = 0; + } + } + + var _loop2 = function _loop2() { + var v = params.bfs ? Q.shift() : Q.pop(); + var vId = v.id(); + + if (params.dfs) { + if (V[vId]) { + return "continue"; + } + + V[vId] = true; + connectedNodes.push(v); + } + + var depth = id2depth[vId]; + var prevEdge = connectedBy[vId]; + var src = prevEdge != null ? prevEdge.source() : null; + var tgt = prevEdge != null ? prevEdge.target() : null; + var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0]; + var ret = void 0; + ret = fn$1(v, prevEdge, prevNode, j++, depth); + + if (ret === true) { + found = v; + return "break"; + } + + if (ret === false) { + return "break"; + } + + var vwEdges = v.connectedEdges().filter(function (e) { + return (!directed || e.source().same(v)) && edges.has(e); + }); + + for (var _i2 = 0; _i2 < vwEdges.length; _i2++) { + var e = vwEdges[_i2]; + var w = e.connectedNodes().filter(function (n) { + return !n.same(v) && nodes.has(n); + }); + var wId = w.id(); + + if (w.length !== 0 && !V[wId]) { + w = w[0]; + Q.push(w); + + if (params.bfs) { + V[wId] = true; + connectedNodes.push(w); + } + + connectedBy[wId] = e; + id2depth[wId] = id2depth[vId] + 1; + } + } + }; + + _loop: while (Q.length !== 0) { + var _ret = _loop2(); + + switch (_ret) { + case "continue": + continue; + + case "break": + break _loop; + } + } + + var connectedEles = cy.collection(); + + for (var _i = 0; _i < connectedNodes.length; _i++) { + var node = connectedNodes[_i]; + var edge = connectedBy[node.id()]; + + if (edge != null) { + connectedEles.push(edge); + } + + connectedEles.push(node); + } + + return { + path: cy.collection(connectedEles), + found: cy.collection(found) + }; + }; +}; // search, spanning trees, etc + + +var elesfn = { + breadthFirstSearch: defineSearch({ + bfs: true + }), + depthFirstSearch: defineSearch({ + dfs: true + }) +}; // nice, short mathemathical alias + +elesfn.bfs = elesfn.breadthFirstSearch; +elesfn.dfs = elesfn.depthFirstSearch; + +var dijkstraDefaults = defaults({ + root: null, + weight: function weight(edge) { + return 1; + }, + directed: false +}); +var elesfn$1 = { + dijkstra: function dijkstra(options) { + if (!plainObject(options)) { + var args = arguments; + options = { + root: args[0], + weight: args[1], + directed: args[2] + }; + } + + var _dijkstraDefaults = dijkstraDefaults(options), + root = _dijkstraDefaults.root, + weight = _dijkstraDefaults.weight, + directed = _dijkstraDefaults.directed; + + var eles = this; + var weightFn = weight; + var source = string(root) ? this.filter(root)[0] : root[0]; + var dist = {}; + var prev = {}; + var knownDist = {}; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + edges.unmergeBy(function (ele) { + return ele.isLoop(); + }); + + var getDist = function getDist(node) { + return dist[node.id()]; + }; + + var setDist = function setDist(node, d) { + dist[node.id()] = d; + Q.updateItem(node); + }; + + var Q = new Heap(function (a, b) { + return getDist(a) - getDist(b); + }); + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + dist[node.id()] = node.same(source) ? 0 : Infinity; + Q.push(node); + } + + var distBetween = function distBetween(u, v) { + var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges); + var smallestDistance = Infinity; + var smallestEdge; + + for (var _i = 0; _i < uvs.length; _i++) { + var edge = uvs[_i]; + + var _weight = weightFn(edge); + + if (_weight < smallestDistance || !smallestEdge) { + smallestDistance = _weight; + smallestEdge = edge; + } + } + + return { + edge: smallestEdge, + dist: smallestDistance + }; + }; + + while (Q.size() > 0) { + var u = Q.pop(); + var smalletsDist = getDist(u); + var uid = u.id(); + knownDist[uid] = smalletsDist; + + if (smalletsDist === Infinity) { + continue; + } + + var neighbors = u.neighborhood().intersect(nodes); + + for (var _i2 = 0; _i2 < neighbors.length; _i2++) { + var v = neighbors[_i2]; + var vid = v.id(); + var vDist = distBetween(u, v); + var alt = smalletsDist + vDist.dist; + + if (alt < getDist(v)) { + setDist(v, alt); + prev[vid] = { + node: u, + edge: vDist.edge + }; + } + } // for + + } // while + + + return { + distanceTo: function distanceTo(node) { + var target = string(node) ? nodes.filter(node)[0] : node[0]; + return knownDist[target.id()]; + }, + pathTo: function pathTo(node) { + var target = string(node) ? nodes.filter(node)[0] : node[0]; + var S = []; + var u = target; + var uid = u.id(); + + if (target.length > 0) { + S.unshift(target); + + while (prev[uid]) { + var p = prev[uid]; + S.unshift(p.edge); + S.unshift(p.node); + u = p.node; + uid = u.id(); + } + } + + return eles.spawn(S); + } + }; + } +}; + +var elesfn$2 = { + // kruskal's algorithm (finds min spanning tree, assuming undirected graph) + // implemented from pseudocode from wikipedia + kruskal: function kruskal(weightFn) { + weightFn = weightFn || function (edge) { + return 1; + }; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + var numNodes = nodes.length; + var forest = new Array(numNodes); + var A = nodes; // assumes byGroup() creates new collections that can be safely mutated + + var findSetIndex = function findSetIndex(ele) { + for (var i = 0; i < forest.length; i++) { + var eles = forest[i]; + + if (eles.has(ele)) { + return i; + } + } + }; // start with one forest per node + + + for (var i = 0; i < numNodes; i++) { + forest[i] = this.spawn(nodes[i]); + } + + var S = edges.sort(function (a, b) { + return weightFn(a) - weightFn(b); + }); + + for (var _i = 0; _i < S.length; _i++) { + var edge = S[_i]; + var u = edge.source()[0]; + var v = edge.target()[0]; + var setUIndex = findSetIndex(u); + var setVIndex = findSetIndex(v); + var setU = forest[setUIndex]; + var setV = forest[setVIndex]; + + if (setUIndex !== setVIndex) { + A.merge(edge); // combine forests for u and v + + setU.merge(setV); + forest.splice(setVIndex, 1); + } + } + + return A; + } +}; + +var aStarDefaults = defaults({ + root: null, + goal: null, + weight: function weight(edge) { + return 1; + }, + heuristic: function heuristic(edge) { + return 0; + }, + directed: false +}); +var elesfn$3 = { + // Implemented from pseudocode from wikipedia + aStar: function aStar(options) { + var cy = this.cy(); + + var _aStarDefaults = aStarDefaults(options), + root = _aStarDefaults.root, + goal = _aStarDefaults.goal, + heuristic = _aStarDefaults.heuristic, + directed = _aStarDefaults.directed, + weight = _aStarDefaults.weight; + + root = cy.collection(root)[0]; + goal = cy.collection(goal)[0]; + var sid = root.id(); + var tid = goal.id(); + var gScore = {}; + var fScore = {}; + var closedSetIds = {}; + var openSet = new Heap(function (a, b) { + return fScore[a.id()] - fScore[b.id()]; + }); + var openSetIds = new Set$1(); + var cameFrom = {}; + var cameFromEdge = {}; + + var addToOpenSet = function addToOpenSet(ele, id) { + openSet.push(ele); + openSetIds.add(id); + }; + + var cMin, cMinId; + + var popFromOpenSet = function popFromOpenSet() { + cMin = openSet.pop(); + cMinId = cMin.id(); + openSetIds["delete"](cMinId); + }; + + var isInOpenSet = function isInOpenSet(id) { + return openSetIds.has(id); + }; + + addToOpenSet(root, sid); + gScore[sid] = 0; + fScore[sid] = heuristic(root); // Counter + + var steps = 0; // Main loop + + while (openSet.size() > 0) { + popFromOpenSet(); + steps++; // If we've found our goal, then we are done + + if (cMinId === tid) { + var path = []; + var pathNode = goal; + var pathNodeId = tid; + var pathEdge = cameFromEdge[pathNodeId]; + + for (;;) { + path.unshift(pathNode); + + if (pathEdge != null) { + path.unshift(pathEdge); + } + + pathNode = cameFrom[pathNodeId]; + + if (pathNode == null) { + break; + } + + pathNodeId = pathNode.id(); + pathEdge = cameFromEdge[pathNodeId]; + } + + return { + found: true, + distance: gScore[cMinId], + path: this.spawn(path), + steps: steps + }; + } // Add cMin to processed nodes + + + closedSetIds[cMinId] = true; // Update scores for neighbors of cMin + // Take into account if graph is directed or not + + var vwEdges = cMin._private.edges; + + for (var i = 0; i < vwEdges.length; i++) { + var e = vwEdges[i]; // edge must be in set of calling eles + + if (!this.hasElementWithId(e.id())) { + continue; + } // cMin must be the source of edge if directed + + + if (directed && e.data('source') !== cMinId) { + continue; + } + + var wSrc = e.source(); + var wTgt = e.target(); + var w = wSrc.id() !== cMinId ? wSrc : wTgt; + var wid = w.id(); // node must be in set of calling eles + + if (!this.hasElementWithId(wid)) { + continue; + } // if node is in closedSet, ignore it + + + if (closedSetIds[wid]) { + continue; + } // New tentative score for node w + + + var tempScore = gScore[cMinId] + weight(e); // Update gScore for node w if: + // w not present in openSet + // OR + // tentative gScore is less than previous value + // w not in openSet + + if (!isInOpenSet(wid)) { + gScore[wid] = tempScore; + fScore[wid] = tempScore + heuristic(w); + addToOpenSet(w, wid); + cameFrom[wid] = cMin; + cameFromEdge[wid] = e; + continue; + } // w already in openSet, but with greater gScore + + + if (tempScore < gScore[wid]) { + gScore[wid] = tempScore; + fScore[wid] = tempScore + heuristic(w); + cameFrom[wid] = cMin; + } + } // End of neighbors update + + } // End of main loop + // If we've reached here, then we've not reached our goal + + + return { + found: false, + distance: undefined, + path: undefined, + steps: steps + }; + } +}; // elesfn + +var floydWarshallDefaults = defaults({ + weight: function weight(edge) { + return 1; + }, + directed: false +}); +var elesfn$4 = { + // Implemented from pseudocode from wikipedia + floydWarshall: function floydWarshall(options) { + var cy = this.cy(); + + var _floydWarshallDefault = floydWarshallDefaults(options), + weight = _floydWarshallDefault.weight, + directed = _floydWarshallDefault.directed; + + var weightFn = weight; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + var N = nodes.length; + var Nsq = N * N; + + var indexOf = function indexOf(node) { + return nodes.indexOf(node); + }; + + var atIndex = function atIndex(i) { + return nodes[i]; + }; // Initialize distance matrix + + + var dist = new Array(Nsq); + + for (var n = 0; n < Nsq; n++) { + var j = n % N; + var i = (n - j) / N; + + if (i === j) { + dist[n] = 0; + } else { + dist[n] = Infinity; + } + } // Initialize matrix used for path reconstruction + // Initialize distance matrix + + + var next = new Array(Nsq); + var edgeNext = new Array(Nsq); // Process edges + + for (var _i = 0; _i < edges.length; _i++) { + var edge = edges[_i]; + var src = edge.source()[0]; + var tgt = edge.target()[0]; + + if (src === tgt) { + continue; + } // exclude loops + + + var s = indexOf(src); + var t = indexOf(tgt); + var st = s * N + t; // source to target index + + var _weight = weightFn(edge); // Check if already process another edge between same 2 nodes + + + if (dist[st] > _weight) { + dist[st] = _weight; + next[st] = t; + edgeNext[st] = edge; + } // If undirected graph, process 'reversed' edge + + + if (!directed) { + var ts = t * N + s; // target to source index + + if (!directed && dist[ts] > _weight) { + dist[ts] = _weight; + next[ts] = s; + edgeNext[ts] = edge; + } + } + } // Main loop + + + for (var k = 0; k < N; k++) { + for (var _i2 = 0; _i2 < N; _i2++) { + var ik = _i2 * N + k; + + for (var _j = 0; _j < N; _j++) { + var ij = _i2 * N + _j; + var kj = k * N + _j; + + if (dist[ik] + dist[kj] < dist[ij]) { + dist[ij] = dist[ik] + dist[kj]; + next[ij] = next[ik]; + } + } + } + } + + var getArgEle = function getArgEle(ele) { + return (string(ele) ? cy.filter(ele) : ele)[0]; + }; + + var indexOfArgEle = function indexOfArgEle(ele) { + return indexOf(getArgEle(ele)); + }; + + var res = { + distance: function distance(from, to) { + var i = indexOfArgEle(from); + var j = indexOfArgEle(to); + return dist[i * N + j]; + }, + path: function path(from, to) { + var i = indexOfArgEle(from); + var j = indexOfArgEle(to); + var fromNode = atIndex(i); + + if (i === j) { + return fromNode.collection(); + } + + if (next[i * N + j] == null) { + return cy.collection(); + } + + var path = cy.collection(); + var prev = i; + var edge; + path.merge(fromNode); + + while (i !== j) { + prev = i; + i = next[i * N + j]; + edge = edgeNext[prev * N + i]; + path.merge(edge); + path.merge(atIndex(i)); + } + + return path; + } + }; + return res; + } // floydWarshall + +}; // elesfn + +var bellmanFordDefaults = defaults({ + weight: function weight(edge) { + return 1; + }, + directed: false, + root: null +}); +var elesfn$5 = { + // Implemented from pseudocode from wikipedia + bellmanFord: function bellmanFord(options) { + var _this = this; + + var _bellmanFordDefaults = bellmanFordDefaults(options), + weight = _bellmanFordDefaults.weight, + directed = _bellmanFordDefaults.directed, + root = _bellmanFordDefaults.root; + + var weightFn = weight; + var eles = this; + var cy = this.cy(); + + var _this$byGroup = this.byGroup(), + edges = _this$byGroup.edges, + nodes = _this$byGroup.nodes; + + var numNodes = nodes.length; + var infoMap = new Map$1(); + var hasNegativeWeightCycle = false; + var negativeWeightCycles = []; + root = cy.collection(root)[0]; // in case selector passed + + edges.unmergeBy(function (edge) { + return edge.isLoop(); + }); + var numEdges = edges.length; + + var getInfo = function getInfo(node) { + var obj = infoMap.get(node.id()); + + if (!obj) { + obj = {}; + infoMap.set(node.id(), obj); + } + + return obj; + }; + + var getNodeFromTo = function getNodeFromTo(to) { + return (string(to) ? cy.$(to) : to)[0]; + }; + + var distanceTo = function distanceTo(to) { + return getInfo(getNodeFromTo(to)).dist; + }; + + var pathTo = function pathTo(to) { + var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root; + var end = getNodeFromTo(to); + var path = []; + var node = end; + + for (;;) { + if (node == null) { + return _this.spawn(); + } + + var _getInfo = getInfo(node), + edge = _getInfo.edge, + pred = _getInfo.pred; + + path.unshift(node[0]); + + if (node.same(thisStart) && path.length > 0) { + break; + } + + if (edge != null) { + path.unshift(edge); + } + + node = pred; + } + + return eles.spawn(path); + }; // Initializations { dist, pred, edge } + + + for (var i = 0; i < numNodes; i++) { + var node = nodes[i]; + var info = getInfo(node); + + if (node.same(root)) { + info.dist = 0; + } else { + info.dist = Infinity; + } + + info.pred = null; + info.edge = null; + } // Edges relaxation + + + var replacedEdge = false; + + var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) { + var dist = info1.dist + weight; + + if (dist < info2.dist && !edge.same(info1.edge)) { + info2.dist = dist; + info2.pred = node1; + info2.edge = edge; + replacedEdge = true; + } + }; + + for (var _i = 1; _i < numNodes; _i++) { + replacedEdge = false; + + for (var e = 0; e < numEdges; e++) { + var edge = edges[e]; + var src = edge.source(); + var tgt = edge.target(); + + var _weight = weightFn(edge); + + var srcInfo = getInfo(src); + var tgtInfo = getInfo(tgt); + checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); // If undirected graph, we need to take into account the 'reverse' edge + + if (!directed) { + checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight); + } + } + + if (!replacedEdge) { + break; + } + } + + if (replacedEdge) { + // Check for negative weight cycles + for (var _e = 0; _e < numEdges; _e++) { + var _edge = edges[_e]; + + var _src = _edge.source(); + + var _tgt = _edge.target(); + + var _weight2 = weightFn(_edge); + + var srcDist = getInfo(_src).dist; + var tgtDist = getInfo(_tgt).dist; + + if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) { + warn('Graph contains a negative weight cycle for Bellman-Ford'); + hasNegativeWeightCycle = true; + break; + } + } + } + + return { + distanceTo: distanceTo, + pathTo: pathTo, + hasNegativeWeightCycle: hasNegativeWeightCycle, + negativeWeightCycles: negativeWeightCycles + }; + } // bellmanFord + +}; // elesfn + +var sqrt2 = Math.sqrt(2); // Function which colapses 2 (meta) nodes into one +// Updates the remaining edge lists +// Receives as a paramater the edge which causes the collapse + +var collapse = function collapse(edgeIndex, nodeMap, remainingEdges) { + if (remainingEdges.length === 0) { + error("Karger-Stein must be run on a connected (sub)graph"); + } + + var edgeInfo = remainingEdges[edgeIndex]; + var sourceIn = edgeInfo[1]; + var targetIn = edgeInfo[2]; + var partition1 = nodeMap[sourceIn]; + var partition2 = nodeMap[targetIn]; + var newEdges = remainingEdges; // re-use array + // Delete all edges between partition1 and partition2 + + for (var i = newEdges.length - 1; i >= 0; i--) { + var edge = newEdges[i]; + var src = edge[1]; + var tgt = edge[2]; + + if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) { + newEdges.splice(i, 1); + } + } // All edges pointing to partition2 should now point to partition1 + + + for (var _i = 0; _i < newEdges.length; _i++) { + var _edge = newEdges[_i]; + + if (_edge[1] === partition2) { + // Check source + newEdges[_i] = _edge.slice(); // copy + + newEdges[_i][1] = partition1; + } else if (_edge[2] === partition2) { + // Check target + newEdges[_i] = _edge.slice(); // copy + + newEdges[_i][2] = partition1; + } + } // Move all nodes from partition2 to partition1 + + + for (var _i2 = 0; _i2 < nodeMap.length; _i2++) { + if (nodeMap[_i2] === partition2) { + nodeMap[_i2] = partition1; + } + } + + return newEdges; +}; // Contracts a graph until we reach a certain number of meta nodes + + +var contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) { + while (size > sizeLimit) { + // Choose an edge randomly + var edgeIndex = Math.floor(Math.random() * remainingEdges.length); // Collapse graph based on edge + + remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges); + size--; + } + + return remainingEdges; +}; + +var elesfn$6 = { + // Computes the minimum cut of an undirected graph + // Returns the correct answer with high probability + kargerStein: function kargerStein() { + var _this = this; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + edges.unmergeBy(function (edge) { + return edge.isLoop(); + }); + var numNodes = nodes.length; + var numEdges = edges.length; + var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2)); + var stopSize = Math.floor(numNodes / sqrt2); + + if (numNodes < 2) { + error('At least 2 nodes are required for Karger-Stein algorithm'); + return undefined; + } // Now store edge destination as indexes + // Format for each edge (edge index, source node index, target node index) + + + var edgeIndexes = []; + + for (var i = 0; i < numEdges; i++) { + var e = edges[i]; + edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]); + } // We will store the best cut found here + + + var minCutSize = Infinity; + var minCutEdgeIndexes = []; + var minCutNodeMap = new Array(numNodes); // Initial meta node partition + + var metaNodeMap = new Array(numNodes); + var metaNodeMap2 = new Array(numNodes); + + var copyNodesMap = function copyNodesMap(from, to) { + for (var _i3 = 0; _i3 < numNodes; _i3++) { + to[_i3] = from[_i3]; + } + }; // Main loop + + + for (var iter = 0; iter <= numIter; iter++) { + // Reset meta node partition + for (var _i4 = 0; _i4 < numNodes; _i4++) { + metaNodeMap[_i4] = _i4; + } // Contract until stop point (stopSize nodes) + + + var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize); + var edgesState2 = edgesState.slice(); // copy + // Create a copy of the colapsed nodes state + + copyNodesMap(metaNodeMap, metaNodeMap2); // Run 2 iterations starting in the stop state + + var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2); + var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); // Is any of the 2 results the best cut so far? + + if (res1.length <= res2.length && res1.length < minCutSize) { + minCutSize = res1.length; + minCutEdgeIndexes = res1; + copyNodesMap(metaNodeMap, minCutNodeMap); + } else if (res2.length <= res1.length && res2.length < minCutSize) { + minCutSize = res2.length; + minCutEdgeIndexes = res2; + copyNodesMap(metaNodeMap2, minCutNodeMap); + } + } // end of main loop + // Construct result + + + var cut = this.spawn(minCutEdgeIndexes.map(function (e) { + return edges[e[0]]; + })); + var partition1 = this.spawn(); + var partition2 = this.spawn(); // traverse metaNodeMap for best cut + + var witnessNodePartition = minCutNodeMap[0]; + + for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) { + var partitionId = minCutNodeMap[_i5]; + var node = nodes[_i5]; + + if (partitionId === witnessNodePartition) { + partition1.merge(node); + } else { + partition2.merge(node); + } + } // construct components corresponding to each disjoint subset of nodes + + + var constructComponent = function constructComponent(subset) { + var component = _this.spawn(); + + subset.forEach(function (node) { + component.merge(node); + node.connectedEdges().forEach(function (edge) { + // ensure edge is within calling collection and edge is not in cut + if (_this.contains(edge) && !cut.contains(edge)) { + component.merge(edge); + } + }); + }); + return component; + }; + + var components = [constructComponent(partition1), constructComponent(partition2)]; + var ret = { + cut: cut, + components: components, + // n.b. partitions are included to be compatible with the old api spec + // (could be removed in a future major version) + partition1: partition1, + partition2: partition2 + }; + return ret; + } +}; // elesfn + +var copyPosition = function copyPosition(p) { + return { + x: p.x, + y: p.y + }; +}; +var modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) { + return { + x: p.x * zoom + pan.x, + y: p.y * zoom + pan.y + }; +}; +var renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) { + return { + x: (p.x - pan.x) / zoom, + y: (p.y - pan.y) / zoom + }; +}; +var array2point = function array2point(arr) { + return { + x: arr[0], + y: arr[1] + }; +}; +var min = function min(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var min = Infinity; + + for (var i = begin; i < end; i++) { + var val = arr[i]; + + if (isFinite(val)) { + min = Math.min(val, min); + } + } + + return min; +}; +var max = function max(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var max = -Infinity; + + for (var i = begin; i < end; i++) { + var val = arr[i]; + + if (isFinite(val)) { + max = Math.max(val, max); + } + } + + return max; +}; +var mean = function mean(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var total = 0; + var n = 0; + + for (var i = begin; i < end; i++) { + var val = arr[i]; + + if (isFinite(val)) { + total += val; + n++; + } + } + + return total / n; +}; +var median = function median(arr) { + var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; + var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + + if (copy) { + arr = arr.slice(begin, end); + } else { + if (end < arr.length) { + arr.splice(end, arr.length - end); + } + + if (begin > 0) { + arr.splice(0, begin); + } + } // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start + + + var off = 0; // offset from non-finite values + + for (var i = arr.length - 1; i >= 0; i--) { + var v = arr[i]; + + if (includeHoles) { + if (!isFinite(v)) { + arr[i] = -Infinity; + off++; + } + } else { + // just remove it if we don't want to consider holes + arr.splice(i, 1); + } + } + + if (sort) { + arr.sort(function (a, b) { + return a - b; + }); // requires copy = true if you don't want to change the orig + } + + var len = arr.length; + var mid = Math.floor(len / 2); + + if (len % 2 !== 0) { + return arr[mid + 1 + off]; + } else { + return (arr[mid - 1 + off] + arr[mid + off]) / 2; + } +}; +var deg2rad = function deg2rad(deg) { + return Math.PI * deg / 180; +}; +var getAngleFromDisp = function getAngleFromDisp(dispX, dispY) { + return Math.atan2(dispY, dispX) - Math.PI / 2; +}; +var log2 = Math.log2 || function (n) { + return Math.log(n) / Math.log(2); +}; +var signum = function signum(x) { + if (x > 0) { + return 1; + } else if (x < 0) { + return -1; + } else { + return 0; + } +}; +var dist = function dist(p1, p2) { + return Math.sqrt(sqdist(p1, p2)); +}; +var sqdist = function sqdist(p1, p2) { + var dx = p2.x - p1.x; + var dy = p2.y - p1.y; + return dx * dx + dy * dy; +}; +var inPlaceSumNormalize = function inPlaceSumNormalize(v) { + var length = v.length; // First, get sum of all elements + + var total = 0; + + for (var i = 0; i < length; i++) { + total += v[i]; + } // Now, divide each by the sum of all elements + + + for (var _i = 0; _i < length; _i++) { + v[_i] = v[_i] / total; + } + + return v; +}; + +var qbezierAt = function qbezierAt(p0, p1, p2, t) { + return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2; +}; +var qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) { + return { + x: qbezierAt(p0.x, p1.x, p2.x, t), + y: qbezierAt(p0.y, p1.y, p2.y, t) + }; +}; +var lineAt = function lineAt(p0, p1, t, d) { + var vec = { + x: p1.x - p0.x, + y: p1.y - p0.y + }; + var vecDist = dist(p0, p1); + var normVec = { + x: vec.x / vecDist, + y: vec.y / vecDist + }; + t = t == null ? 0 : t; + d = d != null ? d : t * vecDist; + return { + x: p0.x + normVec.x * d, + y: p0.y + normVec.y * d + }; +}; +var bound = function bound(min, val, max) { + return Math.max(min, Math.min(max, val)); +}; // makes a full bb (x1, y1, x2, y2, w, h) from implicit params + +var makeBoundingBox = function makeBoundingBox(bb) { + if (bb == null) { + return { + x1: Infinity, + y1: Infinity, + x2: -Infinity, + y2: -Infinity, + w: 0, + h: 0 + }; + } else if (bb.x1 != null && bb.y1 != null) { + if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) { + return { + x1: bb.x1, + y1: bb.y1, + x2: bb.x2, + y2: bb.y2, + w: bb.x2 - bb.x1, + h: bb.y2 - bb.y1 + }; + } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) { + return { + x1: bb.x1, + y1: bb.y1, + x2: bb.x1 + bb.w, + y2: bb.y1 + bb.h, + w: bb.w, + h: bb.h + }; + } + } +}; +var copyBoundingBox = function copyBoundingBox(bb) { + return { + x1: bb.x1, + x2: bb.x2, + w: bb.w, + y1: bb.y1, + y2: bb.y2, + h: bb.h + }; +}; +var clearBoundingBox = function clearBoundingBox(bb) { + bb.x1 = Infinity; + bb.y1 = Infinity; + bb.x2 = -Infinity; + bb.y2 = -Infinity; + bb.w = 0; + bb.h = 0; +}; +var updateBoundingBox = function updateBoundingBox(bb1, bb2) { + // update bb1 with bb2 bounds + bb1.x1 = Math.min(bb1.x1, bb2.x1); + bb1.x2 = Math.max(bb1.x2, bb2.x2); + bb1.w = bb1.x2 - bb1.x1; + bb1.y1 = Math.min(bb1.y1, bb2.y1); + bb1.y2 = Math.max(bb1.y2, bb2.y2); + bb1.h = bb1.y2 - bb1.y1; +}; +var expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) { + bb.x1 = Math.min(bb.x1, x); + bb.x2 = Math.max(bb.x2, x); + bb.w = bb.x2 - bb.x1; + bb.y1 = Math.min(bb.y1, y); + bb.y2 = Math.max(bb.y2, y); + bb.h = bb.y2 - bb.y1; +}; +var expandBoundingBox = function expandBoundingBox(bb) { + var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + bb.x1 -= padding; + bb.x2 += padding; + bb.y1 -= padding; + bb.y2 += padding; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + return bb; +}; +var expandBoundingBoxSides = function expandBoundingBoxSides(bb) { + var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0]; + var top, right, bottom, left; + + if (padding.length === 1) { + top = right = bottom = left = padding[0]; + } else if (padding.length === 2) { + top = bottom = padding[0]; + left = right = padding[1]; + } else if (padding.length === 4) { + var _padding = _slicedToArray(padding, 4); + + top = _padding[0]; + right = _padding[1]; + bottom = _padding[2]; + left = _padding[3]; + } + + bb.x1 -= left; + bb.x2 += right; + bb.y1 -= top; + bb.y2 += bottom; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + return bb; +}; + +var assignBoundingBox = function assignBoundingBox(bb1, bb2) { + bb1.x1 = bb2.x1; + bb1.y1 = bb2.y1; + bb1.x2 = bb2.x2; + bb1.y2 = bb2.y2; + bb1.w = bb1.x2 - bb1.x1; + bb1.h = bb1.y2 - bb1.y1; +}; +var assignShiftToBoundingBox = function assignShiftToBoundingBox(bb, delta) { + bb.x1 += delta.x; + bb.x2 += delta.x; + bb.y1 += delta.y; + bb.y2 += delta.y; +}; +var boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) { + // case: one bb to right of other + if (bb1.x1 > bb2.x2) { + return false; + } + + if (bb2.x1 > bb1.x2) { + return false; + } // case: one bb to left of other + + + if (bb1.x2 < bb2.x1) { + return false; + } + + if (bb2.x2 < bb1.x1) { + return false; + } // case: one bb above other + + + if (bb1.y2 < bb2.y1) { + return false; + } + + if (bb2.y2 < bb1.y1) { + return false; + } // case: one bb below other + + + if (bb1.y1 > bb2.y2) { + return false; + } + + if (bb2.y1 > bb1.y2) { + return false; + } // otherwise, must have some overlap + + + return true; +}; +var inBoundingBox = function inBoundingBox(bb, x, y) { + return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2; +}; +var pointInBoundingBox = function pointInBoundingBox(bb, pt) { + return inBoundingBox(bb, pt.x, pt.y); +}; +var boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) { + return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2); +}; +var roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) { + var cornerRadius = getRoundRectangleRadius(width, height); + var halfWidth = width / 2; + var halfHeight = height / 2; // Check intersections with straight line segments + + var straightLineIntersections; // Top segment, left to right + + { + var topStartX = nodeX - halfWidth + cornerRadius - padding; + var topStartY = nodeY - halfHeight - padding; + var topEndX = nodeX + halfWidth - cornerRadius + padding; + var topEndY = topStartY; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Right segment, top to bottom + + { + var rightStartX = nodeX + halfWidth + padding; + var rightStartY = nodeY - halfHeight + cornerRadius - padding; + var rightEndX = rightStartX; + var rightEndY = nodeY + halfHeight - cornerRadius + padding; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Bottom segment, left to right + + { + var bottomStartX = nodeX - halfWidth + cornerRadius - padding; + var bottomStartY = nodeY + halfHeight + padding; + var bottomEndX = nodeX + halfWidth - cornerRadius + padding; + var bottomEndY = bottomStartY; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Left segment, top to bottom + + { + var leftStartX = nodeX - halfWidth - padding; + var leftStartY = nodeY - halfHeight + cornerRadius - padding; + var leftEndX = leftStartX; + var leftEndY = nodeY + halfHeight - cornerRadius + padding; + straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false); + + if (straightLineIntersections.length > 0) { + return straightLineIntersections; + } + } // Check intersections with arc segments + + var arcIntersections; // Top Left + + { + var topLeftCenterX = nodeX - halfWidth + cornerRadius; + var topLeftCenterY = nodeY - halfHeight + cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } // Top Right + + { + var topRightCenterX = nodeX + halfWidth - cornerRadius; + var topRightCenterY = nodeY - halfHeight + cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } // Bottom Right + + { + var bottomRightCenterX = nodeX + halfWidth - cornerRadius; + var bottomRightCenterY = nodeY + halfHeight - cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } // Bottom Left + + { + var bottomLeftCenterX = nodeX - halfWidth + cornerRadius; + var bottomLeftCenterY = nodeY + halfHeight - cornerRadius; + arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle + + if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) { + return [arcIntersections[0], arcIntersections[1]]; + } + } + return []; // if nothing +}; +var inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) { + var t = tolerance; + var x1 = Math.min(lx1, lx2); + var x2 = Math.max(lx1, lx2); + var y1 = Math.min(ly1, ly2); + var y2 = Math.max(ly1, ly2); + return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t; +}; +var inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) { + var bb = { + x1: Math.min(x1, x3, x2) - tolerance, + x2: Math.max(x1, x3, x2) + tolerance, + y1: Math.min(y1, y3, y2) - tolerance, + y2: Math.max(y1, y3, y2) + tolerance + }; // if outside the rough bounding box for the bezier, then it can't be a hit + + if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) { + // console.log('bezier out of rough bb') + return false; + } else { + // console.log('do more expensive check'); + return true; + } +}; +var solveQuadratic = function solveQuadratic(a, b, c, val) { + c -= val; + var r = b * b - 4 * a * c; + + if (r < 0) { + return []; + } + + var sqrtR = Math.sqrt(r); + var denom = 2 * a; + var root1 = (-b + sqrtR) / denom; + var root2 = (-b - sqrtR) / denom; + return [root1, root2]; +}; +var solveCubic = function solveCubic(a, b, c, d, result) { + // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where + // r is the real component, i is the imaginary component + // An implementation of the Cardano method from the year 1545 + // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots + var epsilon = 0.00001; // avoid division by zero while keeping the overall expression close in value + + if (a === 0) { + a = epsilon; + } + + b /= a; + c /= a; + d /= a; + var discriminant, q, r, dum1, s, t, term1, r13; + q = (3.0 * c - b * b) / 9.0; + r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b)); + r /= 54.0; + discriminant = q * q * q + r * r; + result[1] = 0; + term1 = b / 3.0; + + if (discriminant > 0) { + s = r + Math.sqrt(discriminant); + s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0); + t = r - Math.sqrt(discriminant); + t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0); + result[0] = -term1 + s + t; + term1 += (s + t) / 2.0; + result[4] = result[2] = -term1; + term1 = Math.sqrt(3.0) * (-t + s) / 2; + result[3] = term1; + result[5] = -term1; + return; + } + + result[5] = result[3] = 0; + + if (discriminant === 0) { + r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0); + result[0] = -term1 + 2.0 * r13; + result[4] = result[2] = -(r13 + term1); + return; + } + + q = -q; + dum1 = q * q * q; + dum1 = Math.acos(r / Math.sqrt(dum1)); + r13 = 2.0 * Math.sqrt(q); + result[0] = -term1 + r13 * Math.cos(dum1 / 3.0); + result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0); + result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0); + return; +}; +var sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) { + // Find minimum distance by using the minimum of the distance + // function between the given point and the curve + // This gives the coefficients of the resulting cubic equation + // whose roots tell us where a possible minimum is + // (Coefficients are divided by 4) + var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3; + var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3; + var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y; + var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y; // debug("coefficients: " + a / a + ", " + b / a + ", " + c / a + ", " + d / a); + + var roots = []; // Use the cubic solving algorithm + + solveCubic(a, b, c, d, roots); + var zeroThreshold = 0.0000001; + var params = []; + + for (var index = 0; index < 6; index += 2) { + if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) { + params.push(roots[index]); + } + } + + params.push(1.0); + params.push(0.0); + var minDistanceSquared = -1; + var curX, curY, distSquared; + + for (var i = 0; i < params.length; i++) { + curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3; + curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3; + distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2); // debug('distance for param ' + params[i] + ": " + Math.sqrt(distSquared)); + + if (minDistanceSquared >= 0) { + if (distSquared < minDistanceSquared) { + minDistanceSquared = distSquared; + } + } else { + minDistanceSquared = distSquared; + } + } + + return minDistanceSquared; +}; +var sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) { + var offset = [x - x1, y - y1]; + var line = [x2 - x1, y2 - y1]; + var lineSq = line[0] * line[0] + line[1] * line[1]; + var hypSq = offset[0] * offset[0] + offset[1] * offset[1]; + var dotProduct = offset[0] * line[0] + offset[1] * line[1]; + var adjSq = dotProduct * dotProduct / lineSq; + + if (dotProduct < 0) { + return hypSq; + } + + if (adjSq > lineSq) { + return (x - x2) * (x - x2) + (y - y2) * (y - y2); + } + + return hypSq - adjSq; +}; +var pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) { + var x1, y1, x2, y2; + var y3; // Intersect with vertical line through (x, y) + + var up = 0; // let down = 0; + + for (var i = 0; i < points.length / 2; i++) { + x1 = points[i * 2]; + y1 = points[i * 2 + 1]; + + if (i + 1 < points.length / 2) { + x2 = points[(i + 1) * 2]; + y2 = points[(i + 1) * 2 + 1]; + } else { + x2 = points[(i + 1 - points.length / 2) * 2]; + y2 = points[(i + 1 - points.length / 2) * 2 + 1]; + } + + if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) { + y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1; + + if (y3 > y) { + up++; + } // if( y3 < y ){ + // down++; + // } + + } else { + continue; + } + } + + if (up % 2 === 0) { + return false; + } else { + return true; + } +}; +var pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) { + var transformedPoints = new Array(basePoints.length); // Gives negative angle + + var angle; + + if (direction[0] != null) { + angle = Math.atan(direction[1] / direction[0]); + + if (direction[0] < 0) { + angle = angle + Math.PI / 2; + } else { + angle = -angle - Math.PI / 2; + } + } else { + angle = direction; + } + + var cos = Math.cos(-angle); + var sin = Math.sin(-angle); // console.log("base: " + basePoints); + + for (var i = 0; i < transformedPoints.length / 2; i++) { + transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin); + transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin); + transformedPoints[i * 2] += centerX; + transformedPoints[i * 2 + 1] += centerY; + } + + var points; + + if (padding > 0) { + var expandedLineSet = expandPolygon(transformedPoints, -padding); + points = joinLines(expandedLineSet); + } else { + points = transformedPoints; + } + + return pointInsidePolygonPoints(x, y, points); +}; +var pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height) { + var cutPolygonPoints = new Array(basePoints.length); + var halfW = width / 2; + var halfH = height / 2; + var cornerRadius = getRoundPolygonRadius(width, height); + var squaredCornerRadius = cornerRadius * cornerRadius; + + for (var i = 0; i < basePoints.length / 4; i++) { + var sourceUv = void 0, + destUv = void 0; + + if (i === 0) { + sourceUv = basePoints.length - 2; + } else { + sourceUv = i * 4 - 2; + } + + destUv = i * 4 + 2; + var px = centerX + halfW * basePoints[i * 4]; + var py = centerY + halfH * basePoints[i * 4 + 1]; + var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; + var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); + var cp0x = px - offset * basePoints[sourceUv]; + var cp0y = py - offset * basePoints[sourceUv + 1]; + var cp1x = px + offset * basePoints[destUv]; + var cp1y = py + offset * basePoints[destUv + 1]; + cutPolygonPoints[i * 4] = cp0x; + cutPolygonPoints[i * 4 + 1] = cp0y; + cutPolygonPoints[i * 4 + 2] = cp1x; + cutPolygonPoints[i * 4 + 3] = cp1y; + var orthx = basePoints[sourceUv + 1]; + var orthy = -basePoints[sourceUv]; + var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; + + if (cosAlpha < 0) { + orthx *= -1; + orthy *= -1; + } + + var cx = cp0x + orthx * cornerRadius; + var cy = cp0y + orthy * cornerRadius; + var squaredDistance = Math.pow(cx - x, 2) + Math.pow(cy - y, 2); + + if (squaredDistance <= squaredCornerRadius) { + return true; + } + } + + return pointInsidePolygonPoints(x, y, cutPolygonPoints); +}; +var joinLines = function joinLines(lineSet) { + var vertices = new Array(lineSet.length / 2); + var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY; + var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY; + + for (var i = 0; i < lineSet.length / 4; i++) { + currentLineStartX = lineSet[i * 4]; + currentLineStartY = lineSet[i * 4 + 1]; + currentLineEndX = lineSet[i * 4 + 2]; + currentLineEndY = lineSet[i * 4 + 3]; + + if (i < lineSet.length / 4 - 1) { + nextLineStartX = lineSet[(i + 1) * 4]; + nextLineStartY = lineSet[(i + 1) * 4 + 1]; + nextLineEndX = lineSet[(i + 1) * 4 + 2]; + nextLineEndY = lineSet[(i + 1) * 4 + 3]; + } else { + nextLineStartX = lineSet[0]; + nextLineStartY = lineSet[1]; + nextLineEndX = lineSet[2]; + nextLineEndY = lineSet[3]; + } + + var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true); + vertices[i * 2] = intersection[0]; + vertices[i * 2 + 1] = intersection[1]; + } + + return vertices; +}; +var expandPolygon = function expandPolygon(points, pad) { + var expandedLineSet = new Array(points.length * 2); + var currentPointX, currentPointY, nextPointX, nextPointY; + + for (var i = 0; i < points.length / 2; i++) { + currentPointX = points[i * 2]; + currentPointY = points[i * 2 + 1]; + + if (i < points.length / 2 - 1) { + nextPointX = points[(i + 1) * 2]; + nextPointY = points[(i + 1) * 2 + 1]; + } else { + nextPointX = points[0]; + nextPointY = points[1]; + } // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY] + // Assume CCW polygon winding + + + var offsetX = nextPointY - currentPointY; + var offsetY = -(nextPointX - currentPointX); // Normalize + + var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY); + var normalizedOffsetX = offsetX / offsetLength; + var normalizedOffsetY = offsetY / offsetLength; + expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad; + expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad; + expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad; + expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad; + } + + return expandedLineSet; +}; +var intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) { + var dispX = centerX - x; + var dispY = centerY - y; + dispX /= ellipseWradius; + dispY /= ellipseHradius; + var len = Math.sqrt(dispX * dispX + dispY * dispY); + var newLength = len - 1; + + if (newLength < 0) { + return []; + } + + var lenProportion = newLength / len; + return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y]; +}; +var checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) { + x -= centerX; + y -= centerY; + x /= width / 2 + padding; + y /= height / 2 + padding; + return x * x + y * y <= 1; +}; // Returns intersections of increasing distance from line's start point + +var intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) { + // Calculate d, direction vector of line + var d = [x2 - x1, y2 - y1]; // Direction vector of line + + var f = [x1 - centerX, y1 - centerY]; + var a = d[0] * d[0] + d[1] * d[1]; + var b = 2 * (f[0] * d[0] + f[1] * d[1]); + var c = f[0] * f[0] + f[1] * f[1] - radius * radius; + var discriminant = b * b - 4 * a * c; + + if (discriminant < 0) { + return []; + } + + var t1 = (-b + Math.sqrt(discriminant)) / (2 * a); + var t2 = (-b - Math.sqrt(discriminant)) / (2 * a); + var tMin = Math.min(t1, t2); + var tMax = Math.max(t1, t2); + var inRangeParams = []; + + if (tMin >= 0 && tMin <= 1) { + inRangeParams.push(tMin); + } + + if (tMax >= 0 && tMax <= 1) { + inRangeParams.push(tMax); + } + + if (inRangeParams.length === 0) { + return []; + } + + var nearIntersectionX = inRangeParams[0] * d[0] + x1; + var nearIntersectionY = inRangeParams[0] * d[1] + y1; + + if (inRangeParams.length > 1) { + if (inRangeParams[0] == inRangeParams[1]) { + return [nearIntersectionX, nearIntersectionY]; + } else { + var farIntersectionX = inRangeParams[1] * d[0] + x1; + var farIntersectionY = inRangeParams[1] * d[1] + y1; + return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY]; + } + } else { + return [nearIntersectionX, nearIntersectionY]; + } +}; +var midOfThree = function midOfThree(a, b, c) { + if (b <= a && a <= c || c <= a && a <= b) { + return a; + } else if (a <= b && b <= c || c <= b && b <= a) { + return b; + } else { + return c; + } +}; // (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4) + +var finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) { + var dx13 = x1 - x3; + var dx21 = x2 - x1; + var dx43 = x4 - x3; + var dy13 = y1 - y3; + var dy21 = y2 - y1; + var dy43 = y4 - y3; + var ua_t = dx43 * dy13 - dy43 * dx13; + var ub_t = dx21 * dy13 - dy21 * dx13; + var u_b = dy43 * dx21 - dx43 * dy21; + + if (u_b !== 0) { + var ua = ua_t / u_b; + var ub = ub_t / u_b; + var flptThreshold = 0.001; + + var _min = 0 - flptThreshold; + + var _max = 1 + flptThreshold; + + if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) { + return [x1 + ua * dx21, y1 + ua * dy21]; + } else { + if (!infiniteLines) { + return []; + } else { + return [x1 + ua * dx21, y1 + ua * dy21]; + } + } + } else { + if (ua_t === 0 || ub_t === 0) { + // Parallel, coincident lines. Check if overlap + // Check endpoint of second line + if (midOfThree(x1, x2, x4) === x4) { + return [x4, y4]; + } // Check start point of second line + + + if (midOfThree(x1, x2, x3) === x3) { + return [x3, y3]; + } // Endpoint of first line + + + if (midOfThree(x3, x4, x2) === x2) { + return [x2, y2]; + } + + return []; + } else { + // Parallel, non-coincident + return []; + } + } +}; // math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding ) +// intersect a node polygon (pts transformed) +// +// math.polygonIntersectLine( x, y, basePoints, centerX, centerY ) +// intersect the points (no transform) + +var polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { + var intersections = []; + var intersection; + var transformedPoints = new Array(basePoints.length); + var doTransform = true; + + if (width == null) { + doTransform = false; + } + + var points; + + if (doTransform) { + for (var i = 0; i < transformedPoints.length / 2; i++) { + transformedPoints[i * 2] = basePoints[i * 2] * width + centerX; + transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY; + } + + if (padding > 0) { + var expandedLineSet = expandPolygon(transformedPoints, -padding); + points = joinLines(expandedLineSet); + } else { + points = transformedPoints; + } + } else { + points = basePoints; + } + + var currentX, currentY, nextX, nextY; + + for (var _i2 = 0; _i2 < points.length / 2; _i2++) { + currentX = points[_i2 * 2]; + currentY = points[_i2 * 2 + 1]; + + if (_i2 < points.length / 2 - 1) { + nextX = points[(_i2 + 1) * 2]; + nextY = points[(_i2 + 1) * 2 + 1]; + } else { + nextX = points[0]; + nextY = points[1]; + } + + intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY); + + if (intersection.length !== 0) { + intersections.push(intersection[0], intersection[1]); + } + } + + return intersections; +}; +var roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { + var intersections = []; + var intersection; + var lines = new Array(basePoints.length); + var halfW = width / 2; + var halfH = height / 2; + var cornerRadius = getRoundPolygonRadius(width, height); + + for (var i = 0; i < basePoints.length / 4; i++) { + var sourceUv = void 0, + destUv = void 0; + + if (i === 0) { + sourceUv = basePoints.length - 2; + } else { + sourceUv = i * 4 - 2; + } + + destUv = i * 4 + 2; + var px = centerX + halfW * basePoints[i * 4]; + var py = centerY + halfH * basePoints[i * 4 + 1]; + var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; + var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); + var cp0x = px - offset * basePoints[sourceUv]; + var cp0y = py - offset * basePoints[sourceUv + 1]; + var cp1x = px + offset * basePoints[destUv]; + var cp1y = py + offset * basePoints[destUv + 1]; + + if (i === 0) { + lines[basePoints.length - 2] = cp0x; + lines[basePoints.length - 1] = cp0y; + } else { + lines[i * 4 - 2] = cp0x; + lines[i * 4 - 1] = cp0y; + } + + lines[i * 4] = cp1x; + lines[i * 4 + 1] = cp1y; + var orthx = basePoints[sourceUv + 1]; + var orthy = -basePoints[sourceUv]; + var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; + + if (cosAlpha < 0) { + orthx *= -1; + orthy *= -1; + } + + var cx = cp0x + orthx * cornerRadius; + var cy = cp0y + orthy * cornerRadius; + intersection = intersectLineCircle(x, y, centerX, centerY, cx, cy, cornerRadius); + + if (intersection.length !== 0) { + intersections.push(intersection[0], intersection[1]); + } + } + + for (var _i3 = 0; _i3 < lines.length / 4; _i3++) { + intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[_i3 * 4], lines[_i3 * 4 + 1], lines[_i3 * 4 + 2], lines[_i3 * 4 + 3], false); + + if (intersection.length !== 0) { + intersections.push(intersection[0], intersection[1]); + } + } + + if (intersections.length > 2) { + var lowestIntersection = [intersections[0], intersections[1]]; + var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2); + + for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) { + var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2); + + if (squaredDistance <= lowestSquaredDistance) { + lowestIntersection[0] = intersections[_i4 * 2]; + lowestIntersection[1] = intersections[_i4 * 2 + 1]; + lowestSquaredDistance = squaredDistance; + } + } + + return lowestIntersection; + } + + return intersections; +}; +var shortenIntersection = function shortenIntersection(intersection, offset, amount) { + var disp = [intersection[0] - offset[0], intersection[1] - offset[1]]; + var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]); + var lenRatio = (length - amount) / length; + + if (lenRatio < 0) { + lenRatio = 0.00001; + } + + return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]]; +}; +var generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) { + var points = generateUnitNgonPoints(sides, rotationRadians); + points = fitPolygonToSquare(points); + return points; +}; +var fitPolygonToSquare = function fitPolygonToSquare(points) { + var x, y; + var sides = points.length / 2; + var minX = Infinity, + minY = Infinity, + maxX = -Infinity, + maxY = -Infinity; + + for (var i = 0; i < sides; i++) { + x = points[2 * i]; + y = points[2 * i + 1]; + minX = Math.min(minX, x); + maxX = Math.max(maxX, x); + minY = Math.min(minY, y); + maxY = Math.max(maxY, y); + } // stretch factors + + + var sx = 2 / (maxX - minX); + var sy = 2 / (maxY - minY); + + for (var _i5 = 0; _i5 < sides; _i5++) { + x = points[2 * _i5] = points[2 * _i5] * sx; + y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy; + minX = Math.min(minX, x); + maxX = Math.max(maxX, x); + minY = Math.min(minY, y); + maxY = Math.max(maxY, y); + } + + if (minY < -1) { + for (var _i6 = 0; _i6 < sides; _i6++) { + y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY); + } + } + + return points; +}; +var generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) { + var increment = 1.0 / sides * 2 * Math.PI; + var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0; + startAngle += rotationRadians; + var points = new Array(sides * 2); + var currentAngle; + + for (var i = 0; i < sides; i++) { + currentAngle = i * increment + startAngle; + points[2 * i] = Math.cos(currentAngle); // x + + points[2 * i + 1] = Math.sin(-currentAngle); // y + } + + return points; +}; // Set the default radius, unless half of width or height is smaller than default + +var getRoundRectangleRadius = function getRoundRectangleRadius(width, height) { + return Math.min(width / 4, height / 4, 8); +}; // Set the default radius + +var getRoundPolygonRadius = function getRoundPolygonRadius(width, height) { + return Math.min(width / 10, height / 10, 8); +}; +var getCutRectangleCornerLength = function getCutRectangleCornerLength() { + return 8; +}; +var bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) { + return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0]; +}; // get curve width, height, and control point position offsets as a percentage of node height / width + +var getBarrelCurveConstants = function getBarrelCurveConstants(width, height) { + return { + heightOffset: Math.min(15, 0.05 * height), + widthOffset: Math.min(100, 0.25 * width), + ctrlPtOffsetPct: 0.05 + }; +}; + +var pageRankDefaults = defaults({ + dampingFactor: 0.8, + precision: 0.000001, + iterations: 200, + weight: function weight(edge) { + return 1; + } +}); +var elesfn$7 = { + pageRank: function pageRank(options) { + var _pageRankDefaults = pageRankDefaults(options), + dampingFactor = _pageRankDefaults.dampingFactor, + precision = _pageRankDefaults.precision, + iterations = _pageRankDefaults.iterations, + weight = _pageRankDefaults.weight; + + var cy = this._private.cy; + + var _this$byGroup = this.byGroup(), + nodes = _this$byGroup.nodes, + edges = _this$byGroup.edges; + + var numNodes = nodes.length; + var numNodesSqd = numNodes * numNodes; + var numEdges = edges.length; // Construct transposed adjacency matrix + // First lets have a zeroed matrix of the right size + // We'll also keep track of the sum of each column + + var matrix = new Array(numNodesSqd); + var columnSum = new Array(numNodes); + var additionalProb = (1 - dampingFactor) / numNodes; // Create null matrix + + for (var i = 0; i < numNodes; i++) { + for (var j = 0; j < numNodes; j++) { + var n = i * numNodes + j; + matrix[n] = 0; + } + + columnSum[i] = 0; + } // Now, process edges + + + for (var _i = 0; _i < numEdges; _i++) { + var edge = edges[_i]; + var srcId = edge.data('source'); + var tgtId = edge.data('target'); // Don't include loops in the matrix + + if (srcId === tgtId) { + continue; + } + + var s = nodes.indexOfId(srcId); + var t = nodes.indexOfId(tgtId); + var w = weight(edge); + + var _n = t * numNodes + s; // Update matrix + + + matrix[_n] += w; // Update column sum + + columnSum[s] += w; + } // Add additional probability based on damping factor + // Also, take into account columns that have sum = 0 + + + var p = 1.0 / numNodes + additionalProb; // Shorthand + // Traverse matrix, column by column + + for (var _j = 0; _j < numNodes; _j++) { + if (columnSum[_j] === 0) { + // No 'links' out from node jth, assume equal probability for each possible node + for (var _i2 = 0; _i2 < numNodes; _i2++) { + var _n2 = _i2 * numNodes + _j; + + matrix[_n2] = p; + } + } else { + // Node jth has outgoing link, compute normalized probabilities + for (var _i3 = 0; _i3 < numNodes; _i3++) { + var _n3 = _i3 * numNodes + _j; + + matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb; + } + } + } // Compute dominant eigenvector using power method + + + var eigenvector = new Array(numNodes); + var temp = new Array(numNodes); + var previous; // Start with a vector of all 1's + // Also, initialize a null vector which will be used as shorthand + + for (var _i4 = 0; _i4 < numNodes; _i4++) { + eigenvector[_i4] = 1; + } + + for (var iter = 0; iter < iterations; iter++) { + // Temp array with all 0's + for (var _i5 = 0; _i5 < numNodes; _i5++) { + temp[_i5] = 0; + } // Multiply matrix with previous result + + + for (var _i6 = 0; _i6 < numNodes; _i6++) { + for (var _j2 = 0; _j2 < numNodes; _j2++) { + var _n4 = _i6 * numNodes + _j2; + + temp[_i6] += matrix[_n4] * eigenvector[_j2]; + } + } + + inPlaceSumNormalize(temp); + previous = eigenvector; + eigenvector = temp; + temp = previous; + var diff = 0; // Compute difference (squared module) of both vectors + + for (var _i7 = 0; _i7 < numNodes; _i7++) { + var delta = previous[_i7] - eigenvector[_i7]; + diff += delta * delta; + } // If difference is less than the desired threshold, stop iterating + + + if (diff < precision) { + break; + } + } // Construct result + + + var res = { + rank: function rank(node) { + node = cy.collection(node)[0]; + return eigenvector[nodes.indexOf(node)]; + } + }; + return res; + } // pageRank + +}; // elesfn + +var defaults$1 = defaults({ + root: null, + weight: function weight(edge) { + return 1; + }, + directed: false, + alpha: 0 +}); +var elesfn$8 = { + degreeCentralityNormalized: function degreeCentralityNormalized(options) { + options = defaults$1(options); + var cy = this.cy(); + var nodes = this.nodes(); + var numNodes = nodes.length; + + if (!options.directed) { + var degrees = {}; + var maxDegree = 0; + + for (var i = 0; i < numNodes; i++) { + var node = nodes[i]; // add current node to the current options object and call degreeCentrality + + options.root = node; + var currDegree = this.degreeCentrality(options); + + if (maxDegree < currDegree.degree) { + maxDegree = currDegree.degree; + } + + degrees[node.id()] = currDegree.degree; + } + + return { + degree: function degree(node) { + if (maxDegree === 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node); + } + + return degrees[node.id()] / maxDegree; + } + }; + } else { + var indegrees = {}; + var outdegrees = {}; + var maxIndegree = 0; + var maxOutdegree = 0; + + for (var _i = 0; _i < numNodes; _i++) { + var _node = nodes[_i]; + + var id = _node.id(); // add current node to the current options object and call degreeCentrality + + + options.root = _node; + + var _currDegree = this.degreeCentrality(options); + + if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree; + if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree; + indegrees[id] = _currDegree.indegree; + outdegrees[id] = _currDegree.outdegree; + } + + return { + indegree: function indegree(node) { + if (maxIndegree == 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node); + } + + return indegrees[node.id()] / maxIndegree; + }, + outdegree: function outdegree(node) { + if (maxOutdegree === 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node); + } + + return outdegrees[node.id()] / maxOutdegree; + } + }; + } + }, + // degreeCentralityNormalized + // Implemented from the algorithm in Opsahl's paper + // "Node centrality in weighted networks: Generalizing degree and shortest paths" + // check the heading 2 "Degree" + degreeCentrality: function degreeCentrality(options) { + options = defaults$1(options); + var cy = this.cy(); + var callingEles = this; + var _options = options, + root = _options.root, + weight = _options.weight, + directed = _options.directed, + alpha = _options.alpha; + root = cy.collection(root)[0]; + + if (!directed) { + var connEdges = root.connectedEdges().intersection(callingEles); + var k = connEdges.length; + var s = 0; // Now, sum edge weights + + for (var i = 0; i < connEdges.length; i++) { + s += weight(connEdges[i]); + } + + return { + degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha) + }; + } else { + var edges = root.connectedEdges(); + var incoming = edges.filter(function (edge) { + return edge.target().same(root) && callingEles.has(edge); + }); + var outgoing = edges.filter(function (edge) { + return edge.source().same(root) && callingEles.has(edge); + }); + var k_in = incoming.length; + var k_out = outgoing.length; + var s_in = 0; + var s_out = 0; // Now, sum incoming edge weights + + for (var _i2 = 0; _i2 < incoming.length; _i2++) { + s_in += weight(incoming[_i2]); + } // Now, sum outgoing edge weights + + + for (var _i3 = 0; _i3 < outgoing.length; _i3++) { + s_out += weight(outgoing[_i3]); + } + + return { + indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha), + outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha) + }; + } + } // degreeCentrality + +}; // elesfn +// nice, short mathemathical alias + +elesfn$8.dc = elesfn$8.degreeCentrality; +elesfn$8.dcn = elesfn$8.degreeCentralityNormalised = elesfn$8.degreeCentralityNormalized; + +var defaults$2 = defaults({ + harmonic: true, + weight: function weight() { + return 1; + }, + directed: false, + root: null +}); +var elesfn$9 = { + closenessCentralityNormalized: function closenessCentralityNormalized(options) { + var _defaults = defaults$2(options), + harmonic = _defaults.harmonic, + weight = _defaults.weight, + directed = _defaults.directed; + + var cy = this.cy(); + var closenesses = {}; + var maxCloseness = 0; + var nodes = this.nodes(); + var fw = this.floydWarshall({ + weight: weight, + directed: directed + }); // Compute closeness for every node and find the maximum closeness + + for (var i = 0; i < nodes.length; i++) { + var currCloseness = 0; + var node_i = nodes[i]; + + for (var j = 0; j < nodes.length; j++) { + if (i !== j) { + var d = fw.distance(node_i, nodes[j]); + + if (harmonic) { + currCloseness += 1 / d; + } else { + currCloseness += d; + } + } + } + + if (!harmonic) { + currCloseness = 1 / currCloseness; + } + + if (maxCloseness < currCloseness) { + maxCloseness = currCloseness; + } + + closenesses[node_i.id()] = currCloseness; + } + + return { + closeness: function closeness(node) { + if (maxCloseness == 0) { + return 0; + } + + if (string(node)) { + // from is a selector string + node = cy.filter(node)[0].id(); + } else { + // from is a node + node = node.id(); + } + + return closenesses[node] / maxCloseness; + } + }; + }, + // Implemented from pseudocode from wikipedia + closenessCentrality: function closenessCentrality(options) { + var _defaults2 = defaults$2(options), + root = _defaults2.root, + weight = _defaults2.weight, + directed = _defaults2.directed, + harmonic = _defaults2.harmonic; + + root = this.filter(root)[0]; // we need distance from this node to every other node + + var dijkstra = this.dijkstra({ + root: root, + weight: weight, + directed: directed + }); + var totalDistance = 0; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + + if (!n.same(root)) { + var d = dijkstra.distanceTo(n); + + if (harmonic) { + totalDistance += 1 / d; + } else { + totalDistance += d; + } + } + } + + return harmonic ? totalDistance : 1 / totalDistance; + } // closenessCentrality + +}; // elesfn +// nice, short mathemathical alias + +elesfn$9.cc = elesfn$9.closenessCentrality; +elesfn$9.ccn = elesfn$9.closenessCentralityNormalised = elesfn$9.closenessCentralityNormalized; + +var defaults$3 = defaults({ + weight: null, + directed: false +}); +var elesfn$a = { + // Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes + betweennessCentrality: function betweennessCentrality(options) { + var _defaults = defaults$3(options), + directed = _defaults.directed, + weight = _defaults.weight; + + var weighted = weight != null; + var cy = this.cy(); // starting + + var V = this.nodes(); + var A = {}; + var _C = {}; + var max = 0; + var C = { + set: function set(key, val) { + _C[key] = val; + + if (val > max) { + max = val; + } + }, + get: function get(key) { + return _C[key]; + } + }; // A contains the neighborhoods of every node + + for (var i = 0; i < V.length; i++) { + var v = V[i]; + var vid = v.id(); + + if (directed) { + A[vid] = v.outgoers().nodes(); // get outgoers of every node + } else { + A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node + } + + C.set(vid, 0); + } + + var _loop = function _loop(s) { + var sid = V[s].id(); + var S = []; // stack + + var P = {}; + var g = {}; + var d = {}; + var Q = new Heap(function (a, b) { + return d[a] - d[b]; + }); // queue + // init dictionaries + + for (var _i = 0; _i < V.length; _i++) { + var _vid = V[_i].id(); + + P[_vid] = []; + g[_vid] = 0; + d[_vid] = Infinity; + } + + g[sid] = 1; // sigma + + d[sid] = 0; // distance to s + + Q.push(sid); + + while (!Q.empty()) { + var _v = Q.pop(); + + S.push(_v); + + if (weighted) { + for (var j = 0; j < A[_v].length; j++) { + var w = A[_v][j]; + var vEle = cy.getElementById(_v); + var edge = void 0; + + if (vEle.edgesTo(w).length > 0) { + edge = vEle.edgesTo(w)[0]; + } else { + edge = w.edgesTo(vEle)[0]; + } + + var edgeWeight = weight(edge); + w = w.id(); + + if (d[w] > d[_v] + edgeWeight) { + d[w] = d[_v] + edgeWeight; + + if (Q.nodes.indexOf(w) < 0) { + //if w is not in Q + Q.push(w); + } else { + // update position if w is in Q + Q.updateItem(w); + } + + g[w] = 0; + P[w] = []; + } + + if (d[w] == d[_v] + edgeWeight) { + g[w] = g[w] + g[_v]; + P[w].push(_v); + } + } + } else { + for (var _j = 0; _j < A[_v].length; _j++) { + var _w = A[_v][_j].id(); + + if (d[_w] == Infinity) { + Q.push(_w); + d[_w] = d[_v] + 1; + } + + if (d[_w] == d[_v] + 1) { + g[_w] = g[_w] + g[_v]; + + P[_w].push(_v); + } + } + } + } + + var e = {}; + + for (var _i2 = 0; _i2 < V.length; _i2++) { + e[V[_i2].id()] = 0; + } + + while (S.length > 0) { + var _w2 = S.pop(); + + for (var _j2 = 0; _j2 < P[_w2].length; _j2++) { + var _v2 = P[_w2][_j2]; + e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]); + } + + if (_w2 != V[s].id()) { + C.set(_w2, C.get(_w2) + e[_w2]); + } + } + }; + + for (var s = 0; s < V.length; s++) { + _loop(s); + } + + var ret = { + betweenness: function betweenness(node) { + var id = cy.collection(node).id(); + return C.get(id); + }, + betweennessNormalized: function betweennessNormalized(node) { + if (max == 0) { + return 0; + } + + var id = cy.collection(node).id(); + return C.get(id) / max; + } + }; // alias + + ret.betweennessNormalised = ret.betweennessNormalized; + return ret; + } // betweennessCentrality + +}; // elesfn +// nice, short mathemathical alias + +elesfn$a.bc = elesfn$a.betweennessCentrality; + +// Implemented by Zoe Xi @zoexi for GSOC 2016 +/* eslint-disable no-unused-vars */ + +var defaults$4 = defaults({ + expandFactor: 2, + // affects time of computation and cluster granularity to some extent: M * M + inflateFactor: 2, + // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j) + multFactor: 1, + // optional self loops for each node. Use a neutral value to improve cluster computations. + maxIterations: 20, + // maximum number of iterations of the MCL algorithm in a single run + attributes: [// attributes/features used to group nodes, ie. similarity values between nodes + function (edge) { + return 1; + }] +}); +/* eslint-enable */ + +var setOptions = function setOptions(options) { + return defaults$4(options); +}; +/* eslint-enable */ + + +var getSimilarity = function getSimilarity(edge, attributes) { + var total = 0; + + for (var i = 0; i < attributes.length; i++) { + total += attributes[i](edge); + } + + return total; +}; + +var addLoops = function addLoops(M, n, val) { + for (var i = 0; i < n; i++) { + M[i * n + i] = val; + } +}; + +var normalize = function normalize(M, n) { + var sum; + + for (var col = 0; col < n; col++) { + sum = 0; + + for (var row = 0; row < n; row++) { + sum += M[row * n + col]; + } + + for (var _row = 0; _row < n; _row++) { + M[_row * n + col] = M[_row * n + col] / sum; + } + } +}; // TODO: blocked matrix multiplication? + + +var mmult = function mmult(A, B, n) { + var C = new Array(n * n); + + for (var i = 0; i < n; i++) { + for (var j = 0; j < n; j++) { + C[i * n + j] = 0; + } + + for (var k = 0; k < n; k++) { + for (var _j = 0; _j < n; _j++) { + C[i * n + _j] += A[i * n + k] * B[k * n + _j]; + } + } + } + + return C; +}; + +var expand = function expand(M, n, expandFactor +/** power **/ +) { + var _M = M.slice(0); + + for (var p = 1; p < expandFactor; p++) { + M = mmult(M, _M, n); + } + + return M; +}; + +var inflate = function inflate(M, n, inflateFactor +/** r **/ +) { + var _M = new Array(n * n); // M(i,j) ^ inflatePower + + + for (var i = 0; i < n * n; i++) { + _M[i] = Math.pow(M[i], inflateFactor); + } + + normalize(_M, n); + return _M; +}; + +var hasConverged = function hasConverged(M, _M, n2, roundFactor) { + // Check that both matrices have the same elements (i,j) + for (var i = 0; i < n2; i++) { + var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places + + var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); + + if (v1 !== v2) { + return false; + } + } + + return true; +}; + +var assign = function assign(M, n, nodes, cy) { + var clusters = []; + + for (var i = 0; i < n; i++) { + var cluster = []; + + for (var j = 0; j < n; j++) { + // Row-wise attractors and elements that they attract belong in same cluster + if (Math.round(M[i * n + j] * 1000) / 1000 > 0) { + cluster.push(nodes[j]); + } + } + + if (cluster.length !== 0) { + clusters.push(cy.collection(cluster)); + } + } + + return clusters; +}; + +var isDuplicate = function isDuplicate(c1, c2) { + for (var i = 0; i < c1.length; i++) { + if (!c2[i] || c1[i].id() !== c2[i].id()) { + return false; + } + } + + return true; +}; + +var removeDuplicates = function removeDuplicates(clusters) { + for (var i = 0; i < clusters.length; i++) { + for (var j = 0; j < clusters.length; j++) { + if (i != j && isDuplicate(clusters[i], clusters[j])) { + clusters.splice(j, 1); + } + } + } + + return clusters; +}; + +var markovClustering = function markovClustering(options) { + var nodes = this.nodes(); + var edges = this.edges(); + var cy = this.cy(); // Set parameters of algorithm: + + var opts = setOptions(options); // Map each node to its position in node array + + var id2position = {}; + + for (var i = 0; i < nodes.length; i++) { + id2position[nodes[i].id()] = i; + } // Generate stochastic matrix M from input graph G (should be symmetric/undirected) + + + var n = nodes.length, + n2 = n * n; + + var M = new Array(n2), + _M; + + for (var _i = 0; _i < n2; _i++) { + M[_i] = 0; + } + + for (var e = 0; e < edges.length; e++) { + var edge = edges[e]; + var _i2 = id2position[edge.source().id()]; + var j = id2position[edge.target().id()]; + var sim = getSimilarity(edge, opts.attributes); + M[_i2 * n + j] += sim; // G should be symmetric and undirected + + M[j * n + _i2] += sim; + } // Begin Markov cluster algorithm + // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal + + + addLoops(M, n, opts.multFactor); // Step 2: M = normalize( M ); + + normalize(M, n); + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + isStillMoving = false; // Step 3: + + _M = expand(M, n, opts.expandFactor); // Step 4: + + M = inflate(_M, n, opts.inflateFactor); // Step 5: check to see if ~steady state has been reached + + if (!hasConverged(M, _M, n2, 4)) { + isStillMoving = true; + } + + iterations++; + } // Build clusters from matrix + + + var clusters = assign(M, n, nodes, cy); // Remove duplicate clusters due to symmetry of graph and M matrix + + clusters = removeDuplicates(clusters); + return clusters; +}; + +var markovClustering$1 = { + markovClustering: markovClustering, + mcl: markovClustering +}; + +// Common distance metrics for clustering algorithms + +var identity = function identity(x) { + return x; +}; + +var absDiff = function absDiff(p, q) { + return Math.abs(q - p); +}; + +var addAbsDiff = function addAbsDiff(total, p, q) { + return total + absDiff(p, q); +}; + +var addSquaredDiff = function addSquaredDiff(total, p, q) { + return total + Math.pow(q - p, 2); +}; + +var sqrt = function sqrt(x) { + return Math.sqrt(x); +}; + +var maxAbsDiff = function maxAbsDiff(currentMax, p, q) { + return Math.max(currentMax, absDiff(p, q)); +}; + +var getDistance = function getDistance(length, getP, getQ, init, visit) { + var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity; + var ret = init; + var p, q; + + for (var dim = 0; dim < length; dim++) { + p = getP(dim); + q = getQ(dim); + ret = visit(ret, p, q); + } + + return post(ret); +}; + +var distances = { + euclidean: function euclidean(length, getP, getQ) { + if (length >= 2) { + return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt); + } else { + // for single attr case, more efficient to avoid sqrt + return getDistance(length, getP, getQ, 0, addAbsDiff); + } + }, + squaredEuclidean: function squaredEuclidean(length, getP, getQ) { + return getDistance(length, getP, getQ, 0, addSquaredDiff); + }, + manhattan: function manhattan(length, getP, getQ) { + return getDistance(length, getP, getQ, 0, addAbsDiff); + }, + max: function max(length, getP, getQ) { + return getDistance(length, getP, getQ, -Infinity, maxAbsDiff); + } +}; // in case the user accidentally doesn't use camel case + +distances['squared-euclidean'] = distances['squaredEuclidean']; +distances['squaredeuclidean'] = distances['squaredEuclidean']; +function clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) { + var impl; + + if (fn(method)) { + impl = method; + } else { + impl = distances[method] || distances.euclidean; + } + + if (length === 0 && fn(method)) { + return impl(nodeP, nodeQ); + } else { + return impl(length, getP, getQ, nodeP, nodeQ); + } +} + +var defaults$5 = defaults({ + k: 2, + m: 2, + sensitivityThreshold: 0.0001, + distance: 'euclidean', + maxIterations: 10, + attributes: [], + testMode: false, + testCentroids: null +}); + +var setOptions$1 = function setOptions(options) { + return defaults$5(options); +}; +/* eslint-enable */ + + +var getDist = function getDist(type, node, centroid, attributes, mode) { + var noNodeP = mode !== 'kMedoids'; + var getP = noNodeP ? function (i) { + return centroid[i]; + } : function (i) { + return attributes[i](centroid); + }; + + var getQ = function getQ(i) { + return attributes[i](node); + }; + + var nodeP = centroid; + var nodeQ = node; + return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ); +}; + +var randomCentroids = function randomCentroids(nodes, k, attributes) { + var ndim = attributes.length; + var min = new Array(ndim); + var max = new Array(ndim); + var centroids = new Array(k); + var centroid = null; // Find min, max values for each attribute dimension + + for (var i = 0; i < ndim; i++) { + min[i] = nodes.min(attributes[i]).value; + max[i] = nodes.max(attributes[i]).value; + } // Build k centroids, each represented as an n-dim feature vector + + + for (var c = 0; c < k; c++) { + centroid = []; + + for (var _i = 0; _i < ndim; _i++) { + centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value + } + + centroids[c] = centroid; + } + + return centroids; +}; + +var classify = function classify(node, centroids, distance, attributes, type) { + var min = Infinity; + var index = 0; + + for (var i = 0; i < centroids.length; i++) { + var dist = getDist(distance, node, centroids[i], attributes, type); + + if (dist < min) { + min = dist; + index = i; + } + } + + return index; +}; + +var buildCluster = function buildCluster(centroid, nodes, assignment) { + var cluster = []; + var node = null; + + for (var n = 0; n < nodes.length; n++) { + node = nodes[n]; + + if (assignment[node.id()] === centroid) { + //console.log("Node " + node.id() + " is associated with medoid #: " + m); + cluster.push(node); + } + } + + return cluster; +}; + +var haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) { + return Math.abs(v2 - v1) <= sensitivityThreshold; +}; + +var haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) { + for (var i = 0; i < v1.length; i++) { + for (var j = 0; j < v1[i].length; j++) { + var diff = Math.abs(v1[i][j] - v2[i][j]); + + if (diff > sensitivityThreshold) { + return false; + } + } + } + + return true; +}; + +var seenBefore = function seenBefore(node, medoids, n) { + for (var i = 0; i < n; i++) { + if (node === medoids[i]) return true; + } + + return false; +}; + +var randomMedoids = function randomMedoids(nodes, k) { + var medoids = new Array(k); // For small data sets, the probability of medoid conflict is greater, + // so we need to check to see if we've already seen or chose this node before. + + if (nodes.length < 50) { + // Randomly select k medoids from the n nodes + for (var i = 0; i < k; i++) { + var node = nodes[Math.floor(Math.random() * nodes.length)]; // If we've already chosen this node to be a medoid, don't choose it again (for small data sets). + // Instead choose a different random node. + + while (seenBefore(node, medoids, i)) { + node = nodes[Math.floor(Math.random() * nodes.length)]; + } + + medoids[i] = node; + } + } else { + // Relatively large data set, so pretty safe to not check and just select random nodes + for (var _i2 = 0; _i2 < k; _i2++) { + medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)]; + } + } + + return medoids; +}; + +var findCost = function findCost(potentialNewMedoid, cluster, attributes) { + var cost = 0; + + for (var n = 0; n < cluster.length; n++) { + cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids'); + } + + return cost; +}; + +var kMeans = function kMeans(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var node = null; // Set parameters of algorithm: # of clusters, distance metric, etc. + + var opts = setOptions$1(options); // Begin k-means algorithm + + var clusters = new Array(opts.k); + var assignment = {}; + var centroids; // Step 1: Initialize centroid positions + + if (opts.testMode) { + if (typeof opts.testCentroids === 'number') { + centroids = randomCentroids(nodes, opts.k, opts.attributes); + } else if (_typeof(opts.testCentroids) === 'object') { + centroids = opts.testCentroids; + } else { + centroids = randomCentroids(nodes, opts.k, opts.attributes); + } + } else { + centroids = randomCentroids(nodes, opts.k, opts.attributes); + } + + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + // Step 2: Assign nodes to the nearest centroid + for (var n = 0; n < nodes.length; n++) { + node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # + + assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans'); + } // Step 3: For each of the k clusters, update its centroid + + + isStillMoving = false; + + for (var c = 0; c < opts.k; c++) { + // Get all nodes that belong to this cluster + var cluster = buildCluster(c, nodes, assignment); + + if (cluster.length === 0) { + // If cluster is empty, break out early & move to next cluster + continue; + } // Update centroids by calculating avg of all nodes within the cluster. + + + var ndim = opts.attributes.length; + var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ] + + var newCentroid = new Array(ndim); + var sum = new Array(ndim); + + for (var d = 0; d < ndim; d++) { + sum[d] = 0.0; + + for (var i = 0; i < cluster.length; i++) { + node = cluster[i]; + sum[d] += opts.attributes[d](node); + } + + newCentroid[d] = sum[d] / cluster.length; // Check to see if algorithm has converged, i.e. when centroids no longer change + + if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) { + isStillMoving = true; + } + } + + centroids[c] = newCentroid; + clusters[c] = cy.collection(cluster); + } + + iterations++; + } + + return clusters; +}; + +var kMedoids = function kMedoids(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var node = null; + var opts = setOptions$1(options); // Begin k-medoids algorithm + + var clusters = new Array(opts.k); + var medoids; + var assignment = {}; + var curCost; + var minCosts = new Array(opts.k); // minimum cost configuration for each cluster + // Step 1: Initialize k medoids + + if (opts.testMode) { + if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') { + medoids = opts.testCentroids; + } else { + medoids = randomMedoids(nodes, opts.k); + } + } else { + medoids = randomMedoids(nodes, opts.k); + } + + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + // Step 2: Assign nodes to the nearest medoid + for (var n = 0; n < nodes.length; n++) { + node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # + + assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids'); + } + + isStillMoving = false; // Step 3: For each medoid m, and for each node assciated with mediod m, + // select the node with the lowest configuration cost as new medoid. + + for (var m = 0; m < medoids.length; m++) { + // Get all nodes that belong to this medoid + var cluster = buildCluster(m, nodes, assignment); + + if (cluster.length === 0) { + // If cluster is empty, break out early & move to next cluster + continue; + } + + minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost + // Select different medoid if its configuration has the lowest cost + + for (var _n = 0; _n < cluster.length; _n++) { + curCost = findCost(cluster[_n], cluster, opts.attributes); + + if (curCost < minCosts[m]) { + minCosts[m] = curCost; + medoids[m] = cluster[_n]; + isStillMoving = true; + } + } + + clusters[m] = cy.collection(cluster); + } + + iterations++; + } + + return clusters; +}; + +var updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) { + var numerator, denominator; + + for (var n = 0; n < nodes.length; n++) { + for (var c = 0; c < centroids.length; c++) { + weight[n][c] = Math.pow(U[n][c], opts.m); + } + } + + for (var _c = 0; _c < centroids.length; _c++) { + for (var dim = 0; dim < opts.attributes.length; dim++) { + numerator = 0; + denominator = 0; + + for (var _n2 = 0; _n2 < nodes.length; _n2++) { + numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]); + denominator += weight[_n2][_c]; + } + + centroids[_c][dim] = numerator / denominator; + } + } +}; + +var updateMembership = function updateMembership(U, _U, centroids, nodes, opts) { + // Save previous step + for (var i = 0; i < U.length; i++) { + _U[i] = U[i].slice(); + } + + var sum, numerator, denominator; + var pow = 2 / (opts.m - 1); + + for (var c = 0; c < centroids.length; c++) { + for (var n = 0; n < nodes.length; n++) { + sum = 0; + + for (var k = 0; k < centroids.length; k++) { + // against all other centroids + numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans'); + denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans'); + sum += Math.pow(numerator / denominator, pow); + } + + U[n][c] = 1 / sum; + } + } +}; + +var assign$1 = function assign(nodes, U, opts, cy) { + var clusters = new Array(opts.k); + + for (var c = 0; c < clusters.length; c++) { + clusters[c] = []; + } + + var max; + var index; + + for (var n = 0; n < U.length; n++) { + // for each node (U is N x C matrix) + max = -Infinity; + index = -1; // Determine which cluster the node is most likely to belong in + + for (var _c2 = 0; _c2 < U[0].length; _c2++) { + if (U[n][_c2] > max) { + max = U[n][_c2]; + index = _c2; + } + } + + clusters[index].push(nodes[n]); + } // Turn every array into a collection of nodes + + + for (var _c3 = 0; _c3 < clusters.length; _c3++) { + clusters[_c3] = cy.collection(clusters[_c3]); + } + + return clusters; +}; + +var fuzzyCMeans = function fuzzyCMeans(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var opts = setOptions$1(options); // Begin fuzzy c-means algorithm + + var clusters; + var centroids; + var U; + + var _U; + + var weight; // Step 1: Initialize letiables. + + _U = new Array(nodes.length); + + for (var i = 0; i < nodes.length; i++) { + // N x C matrix + _U[i] = new Array(opts.k); + } + + U = new Array(nodes.length); + + for (var _i3 = 0; _i3 < nodes.length; _i3++) { + // N x C matrix + U[_i3] = new Array(opts.k); + } + + for (var _i4 = 0; _i4 < nodes.length; _i4++) { + var total = 0; + + for (var j = 0; j < opts.k; j++) { + U[_i4][j] = Math.random(); + total += U[_i4][j]; + } + + for (var _j = 0; _j < opts.k; _j++) { + U[_i4][_j] = U[_i4][_j] / total; + } + } + + centroids = new Array(opts.k); + + for (var _i5 = 0; _i5 < opts.k; _i5++) { + centroids[_i5] = new Array(opts.attributes.length); + } + + weight = new Array(nodes.length); + + for (var _i6 = 0; _i6 < nodes.length; _i6++) { + // N x C matrix + weight[_i6] = new Array(opts.k); + } // end init FCM + + + var isStillMoving = true; + var iterations = 0; + + while (isStillMoving && iterations < opts.maxIterations) { + isStillMoving = false; // Step 2: Calculate the centroids for each step. + + updateCentroids(centroids, nodes, U, weight, opts); // Step 3: Update the partition matrix U. + + updateMembership(U, _U, centroids, nodes, opts); // Step 4: Check for convergence. + + if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) { + isStillMoving = true; + } + + iterations++; + } // Assign nodes to clusters with highest probability. + + + clusters = assign$1(nodes, U, opts, cy); + return { + clusters: clusters, + degreeOfMembership: U + }; +}; + +var kClustering = { + kMeans: kMeans, + kMedoids: kMedoids, + fuzzyCMeans: fuzzyCMeans, + fcm: fuzzyCMeans +}; + +// Implemented by Zoe Xi @zoexi for GSOC 2016 +var defaults$6 = defaults({ + distance: 'euclidean', + // distance metric to compare nodes + linkage: 'min', + // linkage criterion : how to determine the distance between clusters of nodes + mode: 'threshold', + // mode:'threshold' => clusters must be threshold distance apart + threshold: Infinity, + // the distance threshold + // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters + addDendrogram: false, + // whether to add the dendrogram to the graph for viz + dendrogramDepth: 0, + // depth at which dendrogram branches are merged into the returned clusters + attributes: [] // array of attr functions + +}); +var linkageAliases = { + 'single': 'min', + 'complete': 'max' +}; + +var setOptions$2 = function setOptions(options) { + var opts = defaults$6(options); + var preferredAlias = linkageAliases[opts.linkage]; + + if (preferredAlias != null) { + opts.linkage = preferredAlias; + } + + return opts; +}; + +var mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) { + // Find two closest clusters from cached mins + var minKey = 0; + var min = Infinity; + var dist; + var attrs = opts.attributes; + + var getDist = function getDist(n1, n2) { + return clusteringDistance(opts.distance, attrs.length, function (i) { + return attrs[i](n1); + }, function (i) { + return attrs[i](n2); + }, n1, n2); + }; + + for (var i = 0; i < clusters.length; i++) { + var key = clusters[i].key; + var _dist = dists[key][mins[key]]; + + if (_dist < min) { + minKey = key; + min = _dist; + } + } + + if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) { + return false; + } + + var c1 = index[minKey]; + var c2 = index[mins[minKey]]; + var merged; // Merge two closest clusters + + if (opts.mode === 'dendrogram') { + merged = { + left: c1, + right: c2, + key: c1.key + }; + } else { + merged = { + value: c1.value.concat(c2.value), + key: c1.key + }; + } + + clusters[c1.index] = merged; + clusters.splice(c2.index, 1); + index[c1.key] = merged; // Update distances with new merged cluster + + for (var _i = 0; _i < clusters.length; _i++) { + var cur = clusters[_i]; + + if (c1.key === cur.key) { + dist = Infinity; + } else if (opts.linkage === 'min') { + dist = dists[c1.key][cur.key]; + + if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) { + dist = dists[c2.key][cur.key]; + } + } else if (opts.linkage === 'max') { + dist = dists[c1.key][cur.key]; + + if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) { + dist = dists[c2.key][cur.key]; + } + } else if (opts.linkage === 'mean') { + dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size); + } else { + if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]); + } + + dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric + } // Update cached mins + + + for (var _i2 = 0; _i2 < clusters.length; _i2++) { + var key1 = clusters[_i2].key; + + if (mins[key1] === c1.key || mins[key1] === c2.key) { + var _min = key1; + + for (var j = 0; j < clusters.length; j++) { + var key2 = clusters[j].key; + + if (dists[key1][key2] < dists[key1][_min]) { + _min = key2; + } + } + + mins[key1] = _min; + } + + clusters[_i2].index = _i2; + } // Clean up meta data used for clustering + + + c1.key = c2.key = c1.index = c2.index = null; + return true; +}; + +var getAllChildren = function getAllChildren(root, arr, cy) { + if (!root) return; + + if (root.value) { + arr.push(root.value); + } else { + if (root.left) getAllChildren(root.left, arr); + if (root.right) getAllChildren(root.right, arr); + } +}; + +var buildDendrogram = function buildDendrogram(root, cy) { + if (!root) return ''; + + if (root.left && root.right) { + var leftStr = buildDendrogram(root.left, cy); + var rightStr = buildDendrogram(root.right, cy); + var node = cy.add({ + group: 'nodes', + data: { + id: leftStr + ',' + rightStr + } + }); + cy.add({ + group: 'edges', + data: { + source: leftStr, + target: node.id() + } + }); + cy.add({ + group: 'edges', + data: { + source: rightStr, + target: node.id() + } + }); + return node.id(); + } else if (root.value) { + return root.value.id(); + } +}; + +var buildClustersFromTree = function buildClustersFromTree(root, k, cy) { + if (!root) return []; + var left = [], + right = [], + leaves = []; + + if (k === 0) { + // don't cut tree, simply return all nodes as 1 single cluster + if (root.left) getAllChildren(root.left, left); + if (root.right) getAllChildren(root.right, right); + leaves = left.concat(right); + return [cy.collection(leaves)]; + } else if (k === 1) { + // cut at root + if (root.value) { + // leaf node + return [cy.collection(root.value)]; + } else { + if (root.left) getAllChildren(root.left, left); + if (root.right) getAllChildren(root.right, right); + return [cy.collection(left), cy.collection(right)]; + } + } else { + if (root.value) { + return [cy.collection(root.value)]; + } else { + if (root.left) left = buildClustersFromTree(root.left, k - 1, cy); + if (root.right) right = buildClustersFromTree(root.right, k - 1, cy); + return left.concat(right); + } + } +}; +/* eslint-enable */ + + +var hierarchicalClustering = function hierarchicalClustering(options) { + var cy = this.cy(); + var nodes = this.nodes(); // Set parameters of algorithm: linkage type, distance metric, etc. + + var opts = setOptions$2(options); + var attrs = opts.attributes; + + var getDist = function getDist(n1, n2) { + return clusteringDistance(opts.distance, attrs.length, function (i) { + return attrs[i](n1); + }, function (i) { + return attrs[i](n2); + }, n1, n2); + }; // Begin hierarchical algorithm + + + var clusters = []; + var dists = []; // distances between each pair of clusters + + var mins = []; // closest cluster for each cluster + + var index = []; // hash of all clusters by key + // In agglomerative (bottom-up) clustering, each node starts as its own cluster + + for (var n = 0; n < nodes.length; n++) { + var cluster = { + value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]], + key: n, + index: n + }; + clusters[n] = cluster; + index[n] = cluster; + dists[n] = []; + mins[n] = 0; + } // Calculate the distance between each pair of clusters + + + for (var i = 0; i < clusters.length; i++) { + for (var j = 0; j <= i; j++) { + var dist = void 0; + + if (opts.mode === 'dendrogram') { + // modes store cluster values differently + dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value); + } else { + dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]); + } + + dists[i][j] = dist; + dists[j][i] = dist; + + if (dist < dists[i][mins[i]]) { + mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j + } + } + } // Find the closest pair of clusters and merge them into a single cluster. + // Update distances between new cluster and each of the old clusters, and loop until threshold reached. + + + var merged = mergeClosest(clusters, index, dists, mins, opts); + + while (merged) { + merged = mergeClosest(clusters, index, dists, mins, opts); + } + + var retClusters; // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges + // in addition to returning the clusters. + + if (opts.mode === 'dendrogram') { + retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy); + if (opts.addDendrogram) buildDendrogram(clusters[0], cy); + } else { + // Regular mode simply returns the clusters + retClusters = new Array(clusters.length); + clusters.forEach(function (cluster, i) { + // Clean up meta data used for clustering + cluster.key = cluster.index = null; + retClusters[i] = cy.collection(cluster.value); + }); + } + + return retClusters; +}; + +var hierarchicalClustering$1 = { + hierarchicalClustering: hierarchicalClustering, + hca: hierarchicalClustering +}; + +// Implemented by Zoe Xi @zoexi for GSOC 2016 +var defaults$7 = defaults({ + distance: 'euclidean', + // distance metric to compare attributes between two nodes + preference: 'median', + // suitability of a data point to serve as an exemplar + damping: 0.8, + // damping factor between [0.5, 1) + maxIterations: 1000, + // max number of iterations to run + minIterations: 100, + // min number of iterations to run in order for clustering to stop + attributes: [// functions to quantify the similarity between any two points + // e.g. node => node.data('weight') + ] +}); + +var setOptions$3 = function setOptions(options) { + var dmp = options.damping; + var pref = options.preference; + + if (!(0.5 <= dmp && dmp < 1)) { + error("Damping must range on [0.5, 1). Got: ".concat(dmp)); + } + + var validPrefs = ['median', 'mean', 'min', 'max']; + + if (!(validPrefs.some(function (v) { + return v === pref; + }) || number(pref))) { + error("Preference must be one of [".concat(validPrefs.map(function (p) { + return "'".concat(p, "'"); + }).join(', '), "] or a number. Got: ").concat(pref)); + } + + return defaults$7(options); +}; +/* eslint-enable */ + + +var getSimilarity$1 = function getSimilarity(type, n1, n2, attributes) { + var attr = function attr(n, i) { + return attributes[i](n); + }; // nb negative because similarity should have an inverse relationship to distance + + + return -clusteringDistance(type, attributes.length, function (i) { + return attr(n1, i); + }, function (i) { + return attr(n2, i); + }, n1, n2); +}; + +var getPreference = function getPreference(S, preference) { + // larger preference = greater # of clusters + var p = null; + + if (preference === 'median') { + p = median(S); + } else if (preference === 'mean') { + p = mean(S); + } else if (preference === 'min') { + p = min(S); + } else if (preference === 'max') { + p = max(S); + } else { + // Custom preference number, as set by user + p = preference; + } + + return p; +}; + +var findExemplars = function findExemplars(n, R, A) { + var indices = []; + + for (var i = 0; i < n; i++) { + if (R[i * n + i] + A[i * n + i] > 0) { + indices.push(i); + } + } + + return indices; +}; + +var assignClusters = function assignClusters(n, S, exemplars) { + var clusters = []; + + for (var i = 0; i < n; i++) { + var index = -1; + var max = -Infinity; + + for (var ei = 0; ei < exemplars.length; ei++) { + var e = exemplars[ei]; + + if (S[i * n + e] > max) { + index = e; + max = S[i * n + e]; + } + } + + if (index > 0) { + clusters.push(index); + } + } + + for (var _ei = 0; _ei < exemplars.length; _ei++) { + clusters[exemplars[_ei]] = exemplars[_ei]; + } + + return clusters; +}; + +var assign$2 = function assign(n, S, exemplars) { + var clusters = assignClusters(n, S, exemplars); + + for (var ei = 0; ei < exemplars.length; ei++) { + var ii = []; + + for (var c = 0; c < clusters.length; c++) { + if (clusters[c] === exemplars[ei]) { + ii.push(c); + } + } + + var maxI = -1; + var maxSum = -Infinity; + + for (var i = 0; i < ii.length; i++) { + var sum = 0; + + for (var j = 0; j < ii.length; j++) { + sum += S[ii[j] * n + ii[i]]; + } + + if (sum > maxSum) { + maxI = i; + maxSum = sum; + } + } + + exemplars[ei] = ii[maxI]; + } + + clusters = assignClusters(n, S, exemplars); + return clusters; +}; + +var affinityPropagation = function affinityPropagation(options) { + var cy = this.cy(); + var nodes = this.nodes(); + var opts = setOptions$3(options); // Map each node to its position in node array + + var id2position = {}; + + for (var i = 0; i < nodes.length; i++) { + id2position[nodes[i].id()] = i; + } // Begin affinity propagation algorithm + + + var n; // number of data points + + var n2; // size of matrices + + var S; // similarity matrix (1D array) + + var p; // preference/suitability of a data point to serve as an exemplar + + var R; // responsibility matrix (1D array) + + var A; // availability matrix (1D array) + + n = nodes.length; + n2 = n * n; // Initialize and build S similarity matrix + + S = new Array(n2); + + for (var _i = 0; _i < n2; _i++) { + S[_i] = -Infinity; // for cases where two data points shouldn't be linked together + } + + for (var _i2 = 0; _i2 < n; _i2++) { + for (var j = 0; j < n; j++) { + if (_i2 !== j) { + S[_i2 * n + j] = getSimilarity$1(opts.distance, nodes[_i2], nodes[j], opts.attributes); + } + } + } // Place preferences on the diagonal of S + + + p = getPreference(S, opts.preference); + + for (var _i3 = 0; _i3 < n; _i3++) { + S[_i3 * n + _i3] = p; + } // Initialize R responsibility matrix + + + R = new Array(n2); + + for (var _i4 = 0; _i4 < n2; _i4++) { + R[_i4] = 0.0; + } // Initialize A availability matrix + + + A = new Array(n2); + + for (var _i5 = 0; _i5 < n2; _i5++) { + A[_i5] = 0.0; + } + + var old = new Array(n); + var Rp = new Array(n); + var se = new Array(n); + + for (var _i6 = 0; _i6 < n; _i6++) { + old[_i6] = 0.0; + Rp[_i6] = 0.0; + se[_i6] = 0; + } + + var e = new Array(n * opts.minIterations); + + for (var _i7 = 0; _i7 < e.length; _i7++) { + e[_i7] = 0; + } + + var iter; + + for (iter = 0; iter < opts.maxIterations; iter++) { + // main algorithmic loop + // Update R responsibility matrix + for (var _i8 = 0; _i8 < n; _i8++) { + var max = -Infinity, + max2 = -Infinity, + maxI = -1, + AS = 0.0; + + for (var _j = 0; _j < n; _j++) { + old[_j] = R[_i8 * n + _j]; + AS = A[_i8 * n + _j] + S[_i8 * n + _j]; + + if (AS >= max) { + max2 = max; + max = AS; + maxI = _j; + } else if (AS > max2) { + max2 = AS; + } + } + + for (var _j2 = 0; _j2 < n; _j2++) { + R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2]; + } + + R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI]; + } // Update A availability matrix + + + for (var _i9 = 0; _i9 < n; _i9++) { + var sum = 0; + + for (var _j3 = 0; _j3 < n; _j3++) { + old[_j3] = A[_j3 * n + _i9]; + Rp[_j3] = Math.max(0, R[_j3 * n + _i9]); + sum += Rp[_j3]; + } + + sum -= Rp[_i9]; + Rp[_i9] = R[_i9 * n + _i9]; + sum += Rp[_i9]; + + for (var _j4 = 0; _j4 < n; _j4++) { + A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4]; + } + + A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9]; + } // Check for convergence + + + var K = 0; + + for (var _i10 = 0; _i10 < n; _i10++) { + var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0; + e[iter % opts.minIterations * n + _i10] = E; + K += E; + } + + if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) { + var _sum = 0; + + for (var _i11 = 0; _i11 < n; _i11++) { + se[_i11] = 0; + + for (var _j5 = 0; _j5 < opts.minIterations; _j5++) { + se[_i11] += e[_j5 * n + _i11]; + } + + if (se[_i11] === 0 || se[_i11] === opts.minIterations) { + _sum++; + } + } + + if (_sum === n) { + // then we have convergence + break; + } + } + } // Identify exemplars (cluster centers) + + + var exemplarsIndices = findExemplars(n, R, A); // Assign nodes to clusters + + var clusterIndices = assign$2(n, S, exemplarsIndices); + var clusters = {}; + + for (var c = 0; c < exemplarsIndices.length; c++) { + clusters[exemplarsIndices[c]] = []; + } + + for (var _i12 = 0; _i12 < nodes.length; _i12++) { + var pos = id2position[nodes[_i12].id()]; + + var clusterIndex = clusterIndices[pos]; + + if (clusterIndex != null) { + // the node may have not been assigned a cluster if no valid attributes were specified + clusters[clusterIndex].push(nodes[_i12]); + } + } + + var retClusters = new Array(exemplarsIndices.length); + + for (var _c = 0; _c < exemplarsIndices.length; _c++) { + retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]); + } + + return retClusters; +}; + +var affinityPropagation$1 = { + affinityPropagation: affinityPropagation, + ap: affinityPropagation +}; + +var hierholzerDefaults = defaults({ + root: undefined, + directed: false +}); +var elesfn$b = { + hierholzer: function hierholzer(options) { + if (!plainObject(options)) { + var args = arguments; + options = { + root: args[0], + directed: args[1] + }; + } + + var _hierholzerDefaults = hierholzerDefaults(options), + root = _hierholzerDefaults.root, + directed = _hierholzerDefaults.directed; + + var eles = this; + var dflag = false; + var oddIn; + var oddOut; + var startVertex; + if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id(); + var nodes = {}; + var edges = {}; + + if (directed) { + eles.forEach(function (ele) { + var id = ele.id(); + + if (ele.isNode()) { + var ind = ele.indegree(true); + var outd = ele.outdegree(true); + var d1 = ind - outd; + var d2 = outd - ind; + + if (d1 == 1) { + if (oddIn) dflag = true;else oddIn = id; + } else if (d2 == 1) { + if (oddOut) dflag = true;else oddOut = id; + } else if (d2 > 1 || d1 > 1) { + dflag = true; + } + + nodes[id] = []; + ele.outgoers().forEach(function (e) { + if (e.isEdge()) nodes[id].push(e.id()); + }); + } else { + edges[id] = [undefined, ele.target().id()]; + } + }); + } else { + eles.forEach(function (ele) { + var id = ele.id(); + + if (ele.isNode()) { + var d = ele.degree(true); + + if (d % 2) { + if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true; + } + + nodes[id] = []; + ele.connectedEdges().forEach(function (e) { + return nodes[id].push(e.id()); + }); + } else { + edges[id] = [ele.source().id(), ele.target().id()]; + } + }); + } + + var result = { + found: false, + trail: undefined + }; + if (dflag) return result;else if (oddOut && oddIn) { + if (directed) { + if (startVertex && oddOut != startVertex) { + return result; + } + + startVertex = oddOut; + } else { + if (startVertex && oddOut != startVertex && oddIn != startVertex) { + return result; + } else if (!startVertex) { + startVertex = oddOut; + } + } + } else { + if (!startVertex) startVertex = eles[0].id(); + } + + var walk = function walk(v) { + var currentNode = v; + var subtour = [v]; + var adj, adjTail, adjHead; + + while (nodes[currentNode].length) { + adj = nodes[currentNode].shift(); + adjTail = edges[adj][0]; + adjHead = edges[adj][1]; + + if (currentNode != adjHead) { + nodes[adjHead] = nodes[adjHead].filter(function (e) { + return e != adj; + }); + currentNode = adjHead; + } else if (!directed && currentNode != adjTail) { + nodes[adjTail] = nodes[adjTail].filter(function (e) { + return e != adj; + }); + currentNode = adjTail; + } + + subtour.unshift(adj); + subtour.unshift(currentNode); + } + + return subtour; + }; + + var trail = []; + var subtour = []; + subtour = walk(startVertex); + + while (subtour.length != 1) { + if (nodes[subtour[0]].length == 0) { + trail.unshift(eles.getElementById(subtour.shift())); + trail.unshift(eles.getElementById(subtour.shift())); + } else { + subtour = walk(subtour.shift()).concat(subtour); + } + } + + trail.unshift(eles.getElementById(subtour.shift())); // final node + + for (var d in nodes) { + if (nodes[d].length) { + return result; + } + } + + result.found = true; + result.trail = this.spawn(trail, true); + return result; + } +}; + +var hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() { + var eles = this; + var nodes = {}; + var id = 0; + var edgeCount = 0; + var components = []; + var stack = []; + var visitedEdges = {}; + + var buildComponent = function buildComponent(x, y) { + var i = stack.length - 1; + var cutset = []; + var component = eles.spawn(); + + while (stack[i].x != x || stack[i].y != y) { + cutset.push(stack.pop().edge); + i--; + } + + cutset.push(stack.pop().edge); + cutset.forEach(function (edge) { + var connectedNodes = edge.connectedNodes().intersection(eles); + component.merge(edge); + connectedNodes.forEach(function (node) { + var nodeId = node.id(); + var connectedEdges = node.connectedEdges().intersection(eles); + component.merge(node); + + if (!nodes[nodeId].cutVertex) { + component.merge(connectedEdges); + } else { + component.merge(connectedEdges.filter(function (edge) { + return edge.isLoop(); + })); + } + }); + }); + components.push(component); + }; + + var biconnectedSearch = function biconnectedSearch(root, currentNode, parent) { + if (root === parent) edgeCount += 1; + nodes[currentNode] = { + id: id, + low: id++, + cutVertex: false + }; + var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles); + + if (edges.size() === 0) { + components.push(eles.spawn(eles.getElementById(currentNode))); + } else { + var sourceId, targetId, otherNodeId, edgeId; + edges.forEach(function (edge) { + sourceId = edge.source().id(); + targetId = edge.target().id(); + otherNodeId = sourceId === currentNode ? targetId : sourceId; + + if (otherNodeId !== parent) { + edgeId = edge.id(); + + if (!visitedEdges[edgeId]) { + visitedEdges[edgeId] = true; + stack.push({ + x: currentNode, + y: otherNodeId, + edge: edge + }); + } + + if (!(otherNodeId in nodes)) { + biconnectedSearch(root, otherNodeId, currentNode); + nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low); + + if (nodes[currentNode].id <= nodes[otherNodeId].low) { + nodes[currentNode].cutVertex = true; + buildComponent(currentNode, otherNodeId); + } + } else { + nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id); + } + } + }); + } + }; + + eles.forEach(function (ele) { + if (ele.isNode()) { + var nodeId = ele.id(); + + if (!(nodeId in nodes)) { + edgeCount = 0; + biconnectedSearch(nodeId, nodeId); + nodes[nodeId].cutVertex = edgeCount > 1; + } + } + }); + var cutVertices = Object.keys(nodes).filter(function (id) { + return nodes[id].cutVertex; + }).map(function (id) { + return eles.getElementById(id); + }); + return { + cut: eles.spawn(cutVertices), + components: components + }; +}; + +var hopcroftTarjanBiconnected$1 = { + hopcroftTarjanBiconnected: hopcroftTarjanBiconnected, + htbc: hopcroftTarjanBiconnected, + htb: hopcroftTarjanBiconnected, + hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected +}; + +var tarjanStronglyConnected = function tarjanStronglyConnected() { + var eles = this; + var nodes = {}; + var index = 0; + var components = []; + var stack = []; + var cut = eles.spawn(eles); + + var stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) { + stack.push(sourceNodeId); + nodes[sourceNodeId] = { + index: index, + low: index++, + explored: false + }; + var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles); + connectedEdges.forEach(function (edge) { + var targetNodeId = edge.target().id(); + + if (targetNodeId !== sourceNodeId) { + if (!(targetNodeId in nodes)) { + stronglyConnectedSearch(targetNodeId); + } + + if (!nodes[targetNodeId].explored) { + nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low); + } + } + }); + + if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) { + var componentNodes = eles.spawn(); + + for (;;) { + var nodeId = stack.pop(); + componentNodes.merge(eles.getElementById(nodeId)); + nodes[nodeId].low = nodes[sourceNodeId].index; + nodes[nodeId].explored = true; + + if (nodeId === sourceNodeId) { + break; + } + } + + var componentEdges = componentNodes.edgesWith(componentNodes); + var component = componentNodes.merge(componentEdges); + components.push(component); + cut = cut.difference(component); + } + }; + + eles.forEach(function (ele) { + if (ele.isNode()) { + var nodeId = ele.id(); + + if (!(nodeId in nodes)) { + stronglyConnectedSearch(nodeId); + } + } + }); + return { + cut: cut, + components: components + }; +}; + +var tarjanStronglyConnected$1 = { + tarjanStronglyConnected: tarjanStronglyConnected, + tsc: tarjanStronglyConnected, + tscc: tarjanStronglyConnected, + tarjanStronglyConnectedComponents: tarjanStronglyConnected +}; + +var elesfn$c = {}; +[elesfn, elesfn$1, elesfn$2, elesfn$3, elesfn$4, elesfn$5, elesfn$6, elesfn$7, elesfn$8, elesfn$9, elesfn$a, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$b, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) { + extend(elesfn$c, props); +}); + +/*! +Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable +Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) +Licensed under The MIT License (http://opensource.org/licenses/MIT) +*/ + +/* promise states [Promises/A+ 2.1] */ +var STATE_PENDING = 0; +/* [Promises/A+ 2.1.1] */ + +var STATE_FULFILLED = 1; +/* [Promises/A+ 2.1.2] */ + +var STATE_REJECTED = 2; +/* [Promises/A+ 2.1.3] */ + +/* promise object constructor */ + +var api = function api(executor) { + /* optionally support non-constructor/plain-function call */ + if (!(this instanceof api)) return new api(executor); + /* initialize object */ + + this.id = 'Thenable/1.0.7'; + this.state = STATE_PENDING; + /* initial state */ + + this.fulfillValue = undefined; + /* initial value */ + + /* [Promises/A+ 1.3, 2.1.2.2] */ + + this.rejectReason = undefined; + /* initial reason */ + + /* [Promises/A+ 1.5, 2.1.3.2] */ + + this.onFulfilled = []; + /* initial handlers */ + + this.onRejected = []; + /* initial handlers */ + + /* provide optional information-hiding proxy */ + + this.proxy = { + then: this.then.bind(this) + }; + /* support optional executor function */ + + if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this)); +}; +/* promise API methods */ + + +api.prototype = { + /* promise resolving methods */ + fulfill: function fulfill(value) { + return deliver(this, STATE_FULFILLED, 'fulfillValue', value); + }, + reject: function reject(value) { + return deliver(this, STATE_REJECTED, 'rejectReason', value); + }, + + /* "The then Method" [Promises/A+ 1.1, 1.2, 2.2] */ + then: function then(onFulfilled, onRejected) { + var curr = this; + var next = new api(); + /* [Promises/A+ 2.2.7] */ + + curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill')); + /* [Promises/A+ 2.2.2/2.2.6] */ + + curr.onRejected.push(resolver(onRejected, next, 'reject')); + /* [Promises/A+ 2.2.3/2.2.6] */ + + execute(curr); + return next.proxy; + /* [Promises/A+ 2.2.7, 3.3] */ + } +}; +/* deliver an action */ + +var deliver = function deliver(curr, state, name, value) { + if (curr.state === STATE_PENDING) { + curr.state = state; + /* [Promises/A+ 2.1.2.1, 2.1.3.1] */ + + curr[name] = value; + /* [Promises/A+ 2.1.2.2, 2.1.3.2] */ + + execute(curr); + } + + return curr; +}; +/* execute all handlers */ + + +var execute = function execute(curr) { + if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason); +}; +/* execute particular set of handlers */ + + +var execute_handlers = function execute_handlers(curr, name, value) { + /* global setImmediate: true */ + + /* global setTimeout: true */ + + /* short-circuit processing */ + if (curr[name].length === 0) return; + /* iterate over all handlers, exactly once */ + + var handlers = curr[name]; + curr[name] = []; + /* [Promises/A+ 2.2.2.3, 2.2.3.3] */ + + var func = function func() { + for (var i = 0; i < handlers.length; i++) { + handlers[i](value); + } + /* [Promises/A+ 2.2.5] */ + + }; + /* execute procedure asynchronously */ + + /* [Promises/A+ 2.2.4, 3.1] */ + + + if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0); +}; +/* generate a resolver function */ + + +var resolver = function resolver(cb, next, method) { + return function (value) { + if (typeof cb !== 'function') + /* [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4] */ + next[method].call(next, value); + /* [Promises/A+ 2.2.7.3, 2.2.7.4] */ + else { + var result; + + try { + result = cb(value); + } + /* [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2] */ + catch (e) { + next.reject(e); + /* [Promises/A+ 2.2.7.2] */ + + return; + } + + resolve(next, result); + /* [Promises/A+ 2.2.7.1] */ + } + }; +}; +/* "Promise Resolution Procedure" */ + +/* [Promises/A+ 2.3] */ + + +var resolve = function resolve(promise, x) { + /* sanity check arguments */ + + /* [Promises/A+ 2.3.1] */ + if (promise === x || promise.proxy === x) { + promise.reject(new TypeError('cannot resolve promise with itself')); + return; + } + /* surgically check for a "then" method + (mainly to just call the "getter" of "then" only once) */ + + + var then; + + if (_typeof(x) === 'object' && x !== null || typeof x === 'function') { + try { + then = x.then; + } + /* [Promises/A+ 2.3.3.1, 3.5] */ + catch (e) { + promise.reject(e); + /* [Promises/A+ 2.3.3.2] */ + + return; + } + } + /* handle own Thenables [Promises/A+ 2.3.2] + and similar "thenables" [Promises/A+ 2.3.3] */ + + + if (typeof then === 'function') { + var resolved = false; + + try { + /* call retrieved "then" method */ + + /* [Promises/A+ 2.3.3.3] */ + then.call(x, + /* resolvePromise */ + + /* [Promises/A+ 2.3.3.3.1] */ + function (y) { + if (resolved) return; + resolved = true; + /* [Promises/A+ 2.3.3.3.3] */ + + if (y === x) + /* [Promises/A+ 3.6] */ + promise.reject(new TypeError('circular thenable chain'));else resolve(promise, y); + }, + /* rejectPromise */ + + /* [Promises/A+ 2.3.3.3.2] */ + function (r) { + if (resolved) return; + resolved = true; + /* [Promises/A+ 2.3.3.3.3] */ + + promise.reject(r); + }); + } catch (e) { + if (!resolved) + /* [Promises/A+ 2.3.3.3.3] */ + promise.reject(e); + /* [Promises/A+ 2.3.3.3.4] */ + } + + return; + } + /* handle other values */ + + + promise.fulfill(x); + /* [Promises/A+ 2.3.4, 2.3.3.4] */ +}; // so we always have Promise.all() + + +api.all = function (ps) { + return new api(function (resolveAll, rejectAll) { + var vals = new Array(ps.length); + var doneCount = 0; + + var fulfill = function fulfill(i, val) { + vals[i] = val; + doneCount++; + + if (doneCount === ps.length) { + resolveAll(vals); + } + }; + + for (var i = 0; i < ps.length; i++) { + (function (i) { + var p = ps[i]; + var isPromise = p != null && p.then != null; + + if (isPromise) { + p.then(function (val) { + fulfill(i, val); + }, function (err) { + rejectAll(err); + }); + } else { + var val = p; + fulfill(i, val); + } + })(i); + } + }); +}; + +api.resolve = function (val) { + return new api(function (resolve, reject) { + resolve(val); + }); +}; + +api.reject = function (val) { + return new api(function (resolve, reject) { + reject(val); + }); +}; + +var Promise$1 = typeof Promise !== 'undefined' ? Promise : api; // eslint-disable-line no-undef + +var Animation = function Animation(target, opts, opts2) { + var isCore = core(target); + var isEle = !isCore; + + var _p = this._private = extend({ + duration: 1000 + }, opts, opts2); + + _p.target = target; + _p.style = _p.style || _p.css; + _p.started = false; + _p.playing = false; + _p.hooked = false; + _p.applying = false; + _p.progress = 0; + _p.completes = []; + _p.frames = []; + + if (_p.complete && fn(_p.complete)) { + _p.completes.push(_p.complete); + } + + if (isEle) { + var pos = target.position(); + _p.startPosition = _p.startPosition || { + x: pos.x, + y: pos.y + }; + _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style); + } + + if (isCore) { + var pan = target.pan(); + _p.startPan = { + x: pan.x, + y: pan.y + }; + _p.startZoom = target.zoom(); + } // for future timeline/animations impl + + + this.length = 1; + this[0] = this; +}; + +var anifn = Animation.prototype; +extend(anifn, { + instanceString: function instanceString() { + return 'animation'; + }, + hook: function hook() { + var _p = this._private; + + if (!_p.hooked) { + // add to target's animation queue + var q; + var tAni = _p.target._private.animation; + + if (_p.queue) { + q = tAni.queue; + } else { + q = tAni.current; + } + + q.push(this); // add to the animation loop pool + + if (elementOrCollection(_p.target)) { + _p.target.cy().addToAnimationPool(_p.target); + } + + _p.hooked = true; + } + + return this; + }, + play: function play() { + var _p = this._private; // autorewind + + if (_p.progress === 1) { + _p.progress = 0; + } + + _p.playing = true; + _p.started = false; // needs to be started by animation loop + + _p.stopped = false; + this.hook(); // the animation loop will start the animation... + + return this; + }, + playing: function playing() { + return this._private.playing; + }, + apply: function apply() { + var _p = this._private; + _p.applying = true; + _p.started = false; // needs to be started by animation loop + + _p.stopped = false; + this.hook(); // the animation loop will apply the animation at this progress + + return this; + }, + applying: function applying() { + return this._private.applying; + }, + pause: function pause() { + var _p = this._private; + _p.playing = false; + _p.started = false; + return this; + }, + stop: function stop() { + var _p = this._private; + _p.playing = false; + _p.started = false; + _p.stopped = true; // to be removed from animation queues + + return this; + }, + rewind: function rewind() { + return this.progress(0); + }, + fastforward: function fastforward() { + return this.progress(1); + }, + time: function time(t) { + var _p = this._private; + + if (t === undefined) { + return _p.progress * _p.duration; + } else { + return this.progress(t / _p.duration); + } + }, + progress: function progress(p) { + var _p = this._private; + var wasPlaying = _p.playing; + + if (p === undefined) { + return _p.progress; + } else { + if (wasPlaying) { + this.pause(); + } + + _p.progress = p; + _p.started = false; + + if (wasPlaying) { + this.play(); + } + } + + return this; + }, + completed: function completed() { + return this._private.progress === 1; + }, + reverse: function reverse() { + var _p = this._private; + var wasPlaying = _p.playing; + + if (wasPlaying) { + this.pause(); + } + + _p.progress = 1 - _p.progress; + _p.started = false; + + var swap = function swap(a, b) { + var _pa = _p[a]; + + if (_pa == null) { + return; + } + + _p[a] = _p[b]; + _p[b] = _pa; + }; + + swap('zoom', 'startZoom'); + swap('pan', 'startPan'); + swap('position', 'startPosition'); // swap styles + + if (_p.style) { + for (var i = 0; i < _p.style.length; i++) { + var prop = _p.style[i]; + var name = prop.name; + var startStyleProp = _p.startStyle[name]; + _p.startStyle[name] = prop; + _p.style[i] = startStyleProp; + } + } + + if (wasPlaying) { + this.play(); + } + + return this; + }, + promise: function promise(type) { + var _p = this._private; + var arr; + + switch (type) { + case 'frame': + arr = _p.frames; + break; + + default: + case 'complete': + case 'completed': + arr = _p.completes; + } + + return new Promise$1(function (resolve, reject) { + arr.push(function () { + resolve(); + }); + }); + } +}); +anifn.complete = anifn.completed; +anifn.run = anifn.play; +anifn.running = anifn.playing; + +var define = { + animated: function animated() { + return function animatedImpl() { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return false; + } + + var ele = all[0]; + + if (ele) { + return ele._private.animation.current.length > 0; + } + }; + }, + // animated + clearQueue: function clearQueue() { + return function clearQueueImpl() { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + for (var i = 0; i < all.length; i++) { + var ele = all[i]; + ele._private.animation.queue = []; + } + + return this; + }; + }, + // clearQueue + delay: function delay() { + return function delayImpl(time, complete) { + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + return this.animate({ + delay: time, + duration: time, + complete: complete + }); + }; + }, + // delay + delayAnimation: function delayAnimation() { + return function delayAnimationImpl(time, complete) { + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + return this.animation({ + delay: time, + duration: time, + complete: complete + }); + }; + }, + // delay + animation: function animation() { + return function animationImpl(properties, params) { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + var isCore = !selfIsArrayLike; + var isEles = !isCore; + + if (!cy.styleEnabled()) { + return this; + } + + var style = cy.style(); + properties = extend({}, properties, params); + var propertiesEmpty = Object.keys(properties).length === 0; + + if (propertiesEmpty) { + return new Animation(all[0], properties); // nothing to animate + } + + if (properties.duration === undefined) { + properties.duration = 400; + } + + switch (properties.duration) { + case 'slow': + properties.duration = 600; + break; + + case 'fast': + properties.duration = 200; + break; + } + + if (isEles) { + properties.style = style.getPropsList(properties.style || properties.css); + properties.css = undefined; + } + + if (isEles && properties.renderedPosition != null) { + var rpos = properties.renderedPosition; + var pan = cy.pan(); + var zoom = cy.zoom(); + properties.position = renderedToModelPosition(rpos, zoom, pan); + } // override pan w/ panBy if set + + + if (isCore && properties.panBy != null) { + var panBy = properties.panBy; + var cyPan = cy.pan(); + properties.pan = { + x: cyPan.x + panBy.x, + y: cyPan.y + panBy.y + }; + } // override pan w/ center if set + + + var center = properties.center || properties.centre; + + if (isCore && center != null) { + var centerPan = cy.getCenterPan(center.eles, properties.zoom); + + if (centerPan != null) { + properties.pan = centerPan; + } + } // override pan & zoom w/ fit if set + + + if (isCore && properties.fit != null) { + var fit = properties.fit; + var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding); + + if (fitVp != null) { + properties.pan = fitVp.pan; + properties.zoom = fitVp.zoom; + } + } // override zoom (& potentially pan) w/ zoom obj if set + + + if (isCore && plainObject(properties.zoom)) { + var vp = cy.getZoomedViewport(properties.zoom); + + if (vp != null) { + if (vp.zoomed) { + properties.zoom = vp.zoom; + } + + if (vp.panned) { + properties.pan = vp.pan; + } + } else { + properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed + } + } + + return new Animation(all[0], properties); + }; + }, + // animate + animate: function animate() { + return function animateImpl(properties, params) { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + if (params) { + properties = extend({}, properties, params); + } // manually hook and run the animation + + + for (var i = 0; i < all.length; i++) { + var ele = all[i]; + var queue = ele.animated() && (properties.queue === undefined || properties.queue); + var ani = ele.animation(properties, queue ? { + queue: true + } : undefined); + ani.play(); + } + + return this; // chaining + }; + }, + // animate + stop: function stop() { + return function stopImpl(clearQueue, jumpToEnd) { + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var cy = this._private.cy || this; + + if (!cy.styleEnabled()) { + return this; + } + + for (var i = 0; i < all.length; i++) { + var ele = all[i]; + var _p = ele._private; + var anis = _p.animation.current; + + for (var j = 0; j < anis.length; j++) { + var ani = anis[j]; + var ani_p = ani._private; + + if (jumpToEnd) { + // next iteration of the animation loop, the animation + // will go straight to the end and be removed + ani_p.duration = 0; + } + } // clear the queue of future animations + + + if (clearQueue) { + _p.animation.queue = []; + } + + if (!jumpToEnd) { + _p.animation.current = []; + } + } // we have to notify (the animation loop doesn't do it for us on `stop`) + + + cy.notify('draw'); + return this; + }; + } // stop + +}; // define + +var define$1 = { + // access data field + data: function data(params) { + var defaults = { + field: 'data', + bindingEvent: 'data', + allowBinding: false, + allowSetting: false, + allowGetting: false, + settingEvent: 'data', + settingTriggersEvent: false, + triggerFnName: 'trigger', + immutableKeys: {}, + // key => true if immutable + updateStyle: false, + beforeGet: function beforeGet(self) {}, + beforeSet: function beforeSet(self, obj) {}, + onSet: function onSet(self) {}, + canSet: function canSet(self) { + return true; + } + }; + params = extend({}, defaults, params); + return function dataImpl(name, value) { + var p = params; + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + + var single = selfIsArrayLike ? self[0] : self; // .data('foo', ...) + + if (string(name)) { + // set or get property + // .data('foo') + if (p.allowGetting && value === undefined) { + // get + var ret; + + if (single) { + p.beforeGet(single); + ret = single._private[p.field][name]; + } + + return ret; // .data('foo', 'bar') + } else if (p.allowSetting && value !== undefined) { + // set + var valid = !p.immutableKeys[name]; + + if (valid) { + var change = _defineProperty({}, name, value); + + p.beforeSet(self, change); + + for (var i = 0, l = all.length; i < l; i++) { + var ele = all[i]; + + if (p.canSet(ele)) { + ele._private[p.field][name] = value; + } + } // update mappers if asked + + + if (p.updateStyle) { + self.updateStyle(); + } // call onSet callback + + + p.onSet(self); + + if (p.settingTriggersEvent) { + self[p.triggerFnName](p.settingEvent); + } + } + } // .data({ 'foo': 'bar' }) + + } else if (p.allowSetting && plainObject(name)) { + // extend + var obj = name; + var k, v; + var keys = Object.keys(obj); + p.beforeSet(self, obj); + + for (var _i = 0; _i < keys.length; _i++) { + k = keys[_i]; + v = obj[k]; + + var _valid = !p.immutableKeys[k]; + + if (_valid) { + for (var j = 0; j < all.length; j++) { + var _ele = all[j]; + + if (p.canSet(_ele)) { + _ele._private[p.field][k] = v; + } + } + } + } // update mappers if asked + + + if (p.updateStyle) { + self.updateStyle(); + } // call onSet callback + + + p.onSet(self); + + if (p.settingTriggersEvent) { + self[p.triggerFnName](p.settingEvent); + } // .data(function(){ ... }) + + } else if (p.allowBinding && fn(name)) { + // bind to event + var fn$1 = name; + self.on(p.bindingEvent, fn$1); // .data() + } else if (p.allowGetting && name === undefined) { + // get whole object + var _ret; + + if (single) { + p.beforeGet(single); + _ret = single._private[p.field]; + } + + return _ret; + } + + return self; // maintain chainability + }; // function + }, + // data + // remove data field + removeData: function removeData(params) { + var defaults = { + field: 'data', + event: 'data', + triggerFnName: 'trigger', + triggerEvent: false, + immutableKeys: {} // key => true if immutable + + }; + params = extend({}, defaults, params); + return function removeDataImpl(names) { + var p = params; + var self = this; + var selfIsArrayLike = self.length !== undefined; + var all = selfIsArrayLike ? self : [self]; // put in array if not array-like + // .removeData('foo bar') + + if (string(names)) { + // then get the list of keys, and delete them + var keys = names.split(/\s+/); + var l = keys.length; + + for (var i = 0; i < l; i++) { + // delete each non-empty key + var key = keys[i]; + + if (emptyString(key)) { + continue; + } + + var valid = !p.immutableKeys[key]; // not valid if immutable + + if (valid) { + for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) { + all[i_a]._private[p.field][key] = undefined; + } + } + } + + if (p.triggerEvent) { + self[p.triggerFnName](p.event); + } // .removeData() + + } else if (names === undefined) { + // then delete all keys + for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) { + var _privateFields = all[_i_a]._private[p.field]; + + var _keys = Object.keys(_privateFields); + + for (var _i2 = 0; _i2 < _keys.length; _i2++) { + var _key = _keys[_i2]; + var validKeyToDelete = !p.immutableKeys[_key]; + + if (validKeyToDelete) { + _privateFields[_key] = undefined; + } + } + } + + if (p.triggerEvent) { + self[p.triggerFnName](p.event); + } + } + + return self; // maintain chaining + }; // function + } // removeData + +}; // define + +var define$2 = { + eventAliasesOn: function eventAliasesOn(proto) { + var p = proto; + p.addListener = p.listen = p.bind = p.on; + p.unlisten = p.unbind = p.off = p.removeListener; + p.trigger = p.emit; // this is just a wrapper alias of .on() + + p.pon = p.promiseOn = function (events, selector) { + var self = this; + var args = Array.prototype.slice.call(arguments, 0); + return new Promise$1(function (resolve, reject) { + var callback = function callback(e) { + self.off.apply(self, offArgs); + resolve(e); + }; + + var onArgs = args.concat([callback]); + var offArgs = onArgs.concat([]); + self.on.apply(self, onArgs); + }); + }; + } +}; // define + +// use this module to cherry pick functions into your prototype +var define$3 = {}; +[define, define$1, define$2].forEach(function (m) { + extend(define$3, m); +}); + +var elesfn$d = { + animate: define$3.animate(), + animation: define$3.animation(), + animated: define$3.animated(), + clearQueue: define$3.clearQueue(), + delay: define$3.delay(), + delayAnimation: define$3.delayAnimation(), + stop: define$3.stop() +}; + +var elesfn$e = { + classes: function classes(_classes) { + var self = this; + + if (_classes === undefined) { + var ret = []; + + self[0]._private.classes.forEach(function (cls) { + return ret.push(cls); + }); + + return ret; + } else if (!array(_classes)) { + // extract classes from string + _classes = (_classes || '').match(/\S+/g) || []; + } + + var changed = []; + var classesSet = new Set$1(_classes); // check and update each ele + + for (var j = 0; j < self.length; j++) { + var ele = self[j]; + var _p = ele._private; + var eleClasses = _p.classes; + var changedEle = false; // check if ele has all of the passed classes + + for (var i = 0; i < _classes.length; i++) { + var cls = _classes[i]; + var eleHasClass = eleClasses.has(cls); + + if (!eleHasClass) { + changedEle = true; + break; + } + } // check if ele has classes outside of those passed + + + if (!changedEle) { + changedEle = eleClasses.size !== _classes.length; + } + + if (changedEle) { + _p.classes = classesSet; + changed.push(ele); + } + } // trigger update style on those eles that had class changes + + + if (changed.length > 0) { + this.spawn(changed).updateStyle().emit('class'); + } + + return self; + }, + addClass: function addClass(classes) { + return this.toggleClass(classes, true); + }, + hasClass: function hasClass(className) { + var ele = this[0]; + return ele != null && ele._private.classes.has(className); + }, + toggleClass: function toggleClass(classes, toggle) { + if (!array(classes)) { + // extract classes from string + classes = classes.match(/\S+/g) || []; + } + + var self = this; + var toggleUndefd = toggle === undefined; + var changed = []; // eles who had classes changed + + for (var i = 0, il = self.length; i < il; i++) { + var ele = self[i]; + var eleClasses = ele._private.classes; + var changedEle = false; + + for (var j = 0; j < classes.length; j++) { + var cls = classes[j]; + var hasClass = eleClasses.has(cls); + var changedNow = false; + + if (toggle || toggleUndefd && !hasClass) { + eleClasses.add(cls); + changedNow = true; + } else if (!toggle || toggleUndefd && hasClass) { + eleClasses["delete"](cls); + changedNow = true; + } + + if (!changedEle && changedNow) { + changed.push(ele); + changedEle = true; + } + } // for j classes + + } // for i eles + // trigger update style on those eles that had class changes + + + if (changed.length > 0) { + this.spawn(changed).updateStyle().emit('class'); + } + + return self; + }, + removeClass: function removeClass(classes) { + return this.toggleClass(classes, false); + }, + flashClass: function flashClass(classes, duration) { + var self = this; + + if (duration == null) { + duration = 250; + } else if (duration === 0) { + return self; // nothing to do really + } + + self.addClass(classes); + setTimeout(function () { + self.removeClass(classes); + }, duration); + return self; + } +}; +elesfn$e.className = elesfn$e.classNames = elesfn$e.classes; + +var tokens = { + metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]', + // chars we need to escape in let names, etc + comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=', + // binary comparison op (used in data selectors) + boolOp: '\\?|\\!|\\^', + // boolean (unary) operators (used in data selectors) + string: '"(?:\\\\"|[^"])*"' + '|' + "'(?:\\\\'|[^'])*'", + // string literals (used in data selectors) -- doublequotes | singlequotes + number: number$1, + // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123 + meta: 'degree|indegree|outdegree', + // allowed metadata fields (i.e. allowed functions to use from Collection) + separator: '\\s*,\\s*', + // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass + descendant: '\\s+', + child: '\\s+>\\s+', + subject: '\\$', + group: 'node|edge|\\*', + directedEdge: '\\s+->\\s+', + undirectedEdge: '\\s+<->\\s+' +}; +tokens.variable = '(?:[\\w-]|(?:\\\\' + tokens.metaChar + '))+'; // a variable name + +tokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number + +tokens.className = tokens.variable; // a class name (follows variable conventions) + +tokens.id = tokens.variable; // an element id (follows variable conventions) + +(function () { + var ops, op, i; // add @ variants to comparatorOp + + ops = tokens.comparatorOp.split('|'); + + for (i = 0; i < ops.length; i++) { + op = ops[i]; + tokens.comparatorOp += '|@' + op; + } // add ! variants to comparatorOp + + + ops = tokens.comparatorOp.split('|'); + + for (i = 0; i < ops.length; i++) { + op = ops[i]; + + if (op.indexOf('!') >= 0) { + continue; + } // skip ops that explicitly contain ! + + + if (op === '=') { + continue; + } // skip = b/c != is explicitly defined + + + tokens.comparatorOp += '|\\!' + op; + } +})(); + +/** + * Make a new query object + * + * @prop type {Type} The type enum (int) of the query + * @prop checks List of checks to make against an ele to test for a match + */ +var newQuery = function newQuery() { + return { + checks: [] + }; +}; + +/** + * A check type enum-like object. Uses integer values for fast match() lookup. + * The ordering does not matter as long as the ints are unique. + */ +var Type = { + /** E.g. node */ + GROUP: 0, + + /** A collection of elements */ + COLLECTION: 1, + + /** A filter(ele) function */ + FILTER: 2, + + /** E.g. [foo > 1] */ + DATA_COMPARE: 3, + + /** E.g. [foo] */ + DATA_EXIST: 4, + + /** E.g. [?foo] */ + DATA_BOOL: 5, + + /** E.g. [[degree > 2]] */ + META_COMPARE: 6, + + /** E.g. :selected */ + STATE: 7, + + /** E.g. #foo */ + ID: 8, + + /** E.g. .foo */ + CLASS: 9, + + /** E.g. #foo <-> #bar */ + UNDIRECTED_EDGE: 10, + + /** E.g. #foo -> #bar */ + DIRECTED_EDGE: 11, + + /** E.g. $#foo -> #bar */ + NODE_SOURCE: 12, + + /** E.g. #foo -> $#bar */ + NODE_TARGET: 13, + + /** E.g. $#foo <-> #bar */ + NODE_NEIGHBOR: 14, + + /** E.g. #foo > #bar */ + CHILD: 15, + + /** E.g. #foo #bar */ + DESCENDANT: 16, + + /** E.g. $#foo > #bar */ + PARENT: 17, + + /** E.g. $#foo #bar */ + ANCESTOR: 18, + + /** E.g. #foo > $bar > #baz */ + COMPOUND_SPLIT: 19, + + /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */ + TRUE: 20 +}; + +var stateSelectors = [{ + selector: ':selected', + matches: function matches(ele) { + return ele.selected(); + } +}, { + selector: ':unselected', + matches: function matches(ele) { + return !ele.selected(); + } +}, { + selector: ':selectable', + matches: function matches(ele) { + return ele.selectable(); + } +}, { + selector: ':unselectable', + matches: function matches(ele) { + return !ele.selectable(); + } +}, { + selector: ':locked', + matches: function matches(ele) { + return ele.locked(); + } +}, { + selector: ':unlocked', + matches: function matches(ele) { + return !ele.locked(); + } +}, { + selector: ':visible', + matches: function matches(ele) { + return ele.visible(); + } +}, { + selector: ':hidden', + matches: function matches(ele) { + return !ele.visible(); + } +}, { + selector: ':transparent', + matches: function matches(ele) { + return ele.transparent(); + } +}, { + selector: ':grabbed', + matches: function matches(ele) { + return ele.grabbed(); + } +}, { + selector: ':free', + matches: function matches(ele) { + return !ele.grabbed(); + } +}, { + selector: ':removed', + matches: function matches(ele) { + return ele.removed(); + } +}, { + selector: ':inside', + matches: function matches(ele) { + return !ele.removed(); + } +}, { + selector: ':grabbable', + matches: function matches(ele) { + return ele.grabbable(); + } +}, { + selector: ':ungrabbable', + matches: function matches(ele) { + return !ele.grabbable(); + } +}, { + selector: ':animated', + matches: function matches(ele) { + return ele.animated(); + } +}, { + selector: ':unanimated', + matches: function matches(ele) { + return !ele.animated(); + } +}, { + selector: ':parent', + matches: function matches(ele) { + return ele.isParent(); + } +}, { + selector: ':childless', + matches: function matches(ele) { + return ele.isChildless(); + } +}, { + selector: ':child', + matches: function matches(ele) { + return ele.isChild(); + } +}, { + selector: ':orphan', + matches: function matches(ele) { + return ele.isOrphan(); + } +}, { + selector: ':nonorphan', + matches: function matches(ele) { + return ele.isChild(); + } +}, { + selector: ':compound', + matches: function matches(ele) { + if (ele.isNode()) { + return ele.isParent(); + } else { + return ele.source().isParent() || ele.target().isParent(); + } + } +}, { + selector: ':loop', + matches: function matches(ele) { + return ele.isLoop(); + } +}, { + selector: ':simple', + matches: function matches(ele) { + return ele.isSimple(); + } +}, { + selector: ':active', + matches: function matches(ele) { + return ele.active(); + } +}, { + selector: ':inactive', + matches: function matches(ele) { + return !ele.active(); + } +}, { + selector: ':backgrounding', + matches: function matches(ele) { + return ele.backgrounding(); + } +}, { + selector: ':nonbackgrounding', + matches: function matches(ele) { + return !ele.backgrounding(); + } +}].sort(function (a, b) { + // n.b. selectors that are starting substrings of others must have the longer ones first + return descending(a.selector, b.selector); +}); + +var lookup = function () { + var selToFn = {}; + var s; + + for (var i = 0; i < stateSelectors.length; i++) { + s = stateSelectors[i]; + selToFn[s.selector] = s.matches; + } + + return selToFn; +}(); + +var stateSelectorMatches = function stateSelectorMatches(sel, ele) { + return lookup[sel](ele); +}; +var stateSelectorRegex = '(' + stateSelectors.map(function (s) { + return s.selector; +}).join('|') + ')'; + +// so that values get compared properly in Selector.filter() + +var cleanMetaChars = function cleanMetaChars(str) { + return str.replace(new RegExp('\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) { + return $1; + }); +}; + +var replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) { + selector[selector.length - 1] = replacementQuery; +}; // NOTE: add new expression syntax here to have it recognised by the parser; +// - a query contains all adjacent (i.e. no separator in between) expressions; +// - the current query is stored in selector[i] +// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward + + +var exprs = [{ + name: 'group', + // just used for identifying when debugging + query: true, + regex: '(' + tokens.group + ')', + populate: function populate(selector, query, _ref) { + var _ref2 = _slicedToArray(_ref, 1), + group = _ref2[0]; + + query.checks.push({ + type: Type.GROUP, + value: group === '*' ? group : group + 's' + }); + } +}, { + name: 'state', + query: true, + regex: stateSelectorRegex, + populate: function populate(selector, query, _ref3) { + var _ref4 = _slicedToArray(_ref3, 1), + state = _ref4[0]; + + query.checks.push({ + type: Type.STATE, + value: state + }); + } +}, { + name: 'id', + query: true, + regex: '\\#(' + tokens.id + ')', + populate: function populate(selector, query, _ref5) { + var _ref6 = _slicedToArray(_ref5, 1), + id = _ref6[0]; + + query.checks.push({ + type: Type.ID, + value: cleanMetaChars(id) + }); + } +}, { + name: 'className', + query: true, + regex: '\\.(' + tokens.className + ')', + populate: function populate(selector, query, _ref7) { + var _ref8 = _slicedToArray(_ref7, 1), + className = _ref8[0]; + + query.checks.push({ + type: Type.CLASS, + value: cleanMetaChars(className) + }); + } +}, { + name: 'dataExists', + query: true, + regex: '\\[\\s*(' + tokens.variable + ')\\s*\\]', + populate: function populate(selector, query, _ref9) { + var _ref10 = _slicedToArray(_ref9, 1), + variable = _ref10[0]; + + query.checks.push({ + type: Type.DATA_EXIST, + field: cleanMetaChars(variable) + }); + } +}, { + name: 'dataCompare', + query: true, + regex: '\\[\\s*(' + tokens.variable + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.value + ')\\s*\\]', + populate: function populate(selector, query, _ref11) { + var _ref12 = _slicedToArray(_ref11, 3), + variable = _ref12[0], + comparatorOp = _ref12[1], + value = _ref12[2]; + + var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null; + + if (valueIsString) { + value = value.substring(1, value.length - 1); + } else { + value = parseFloat(value); + } + + query.checks.push({ + type: Type.DATA_COMPARE, + field: cleanMetaChars(variable), + operator: comparatorOp, + value: value + }); + } +}, { + name: 'dataBool', + query: true, + regex: '\\[\\s*(' + tokens.boolOp + ')\\s*(' + tokens.variable + ')\\s*\\]', + populate: function populate(selector, query, _ref13) { + var _ref14 = _slicedToArray(_ref13, 2), + boolOp = _ref14[0], + variable = _ref14[1]; + + query.checks.push({ + type: Type.DATA_BOOL, + field: cleanMetaChars(variable), + operator: boolOp + }); + } +}, { + name: 'metaCompare', + query: true, + regex: '\\[\\[\\s*(' + tokens.meta + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.number + ')\\s*\\]\\]', + populate: function populate(selector, query, _ref15) { + var _ref16 = _slicedToArray(_ref15, 3), + meta = _ref16[0], + comparatorOp = _ref16[1], + number = _ref16[2]; + + query.checks.push({ + type: Type.META_COMPARE, + field: cleanMetaChars(meta), + operator: comparatorOp, + value: parseFloat(number) + }); + } +}, { + name: 'nextQuery', + separator: true, + regex: tokens.separator, + populate: function populate(selector, query) { + var currentSubject = selector.currentSubject; + var edgeCount = selector.edgeCount; + var compoundCount = selector.compoundCount; + var lastQ = selector[selector.length - 1]; + + if (currentSubject != null) { + lastQ.subject = currentSubject; + selector.currentSubject = null; + } + + lastQ.edgeCount = edgeCount; + lastQ.compoundCount = compoundCount; + selector.edgeCount = 0; + selector.compoundCount = 0; // go on to next query + + var nextQuery = selector[selector.length++] = newQuery(); + return nextQuery; // this is the new query to be filled by the following exprs + } +}, { + name: 'directedEdge', + separator: true, + regex: tokens.directedEdge, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // undirected edge + var edgeQuery = newQuery(); + var source = query; + var target = newQuery(); + edgeQuery.checks.push({ + type: Type.DIRECTED_EDGE, + source: source, + target: target + }); // the query in the selector should be the edge rather than the source + + replaceLastQuery(selector, query, edgeQuery); + selector.edgeCount++; // we're now populating the target query with expressions that follow + + return target; + } else { + // source/target + var srcTgtQ = newQuery(); + var _source = query; + + var _target = newQuery(); + + srcTgtQ.checks.push({ + type: Type.NODE_SOURCE, + source: _source, + target: _target + }); // the query in the selector should be the neighbourhood rather than the node + + replaceLastQuery(selector, query, srcTgtQ); + selector.edgeCount++; + return _target; // now populating the target with the following expressions + } + } +}, { + name: 'undirectedEdge', + separator: true, + regex: tokens.undirectedEdge, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // undirected edge + var edgeQuery = newQuery(); + var source = query; + var target = newQuery(); + edgeQuery.checks.push({ + type: Type.UNDIRECTED_EDGE, + nodes: [source, target] + }); // the query in the selector should be the edge rather than the source + + replaceLastQuery(selector, query, edgeQuery); + selector.edgeCount++; // we're now populating the target query with expressions that follow + + return target; + } else { + // neighbourhood + var nhoodQ = newQuery(); + var node = query; + var neighbor = newQuery(); + nhoodQ.checks.push({ + type: Type.NODE_NEIGHBOR, + node: node, + neighbor: neighbor + }); // the query in the selector should be the neighbourhood rather than the node + + replaceLastQuery(selector, query, nhoodQ); + return neighbor; // now populating the neighbor with following expressions + } + } +}, { + name: 'child', + separator: true, + regex: tokens.child, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // default: child query + var parentChildQuery = newQuery(); + var child = newQuery(); + var parent = selector[selector.length - 1]; + parentChildQuery.checks.push({ + type: Type.CHILD, + parent: parent, + child: child + }); // the query in the selector should be the '>' itself + + replaceLastQuery(selector, query, parentChildQuery); + selector.compoundCount++; // we're now populating the child query with expressions that follow + + return child; + } else if (selector.currentSubject === query) { + // compound split query + var compound = newQuery(); + var left = selector[selector.length - 1]; + var right = newQuery(); + var subject = newQuery(); + + var _child = newQuery(); + + var _parent = newQuery(); // set up the root compound q + + + compound.checks.push({ + type: Type.COMPOUND_SPLIT, + left: left, + right: right, + subject: subject + }); // populate the subject and replace the q at the old spot (within left) with TRUE + + subject.checks = query.checks; // take the checks from the left + + query.checks = [{ + type: Type.TRUE + }]; // checks under left refs the subject implicitly + // set up the right q + + _parent.checks.push({ + type: Type.TRUE + }); // parent implicitly refs the subject + + + right.checks.push({ + type: Type.PARENT, + // type is swapped on right side queries + parent: _parent, + child: _child // empty for now + + }); + replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` + + selector.currentSubject = subject; + selector.compoundCount++; + return _child; // now populating the right side's child + } else { + // parent query + // info for parent query + var _parent2 = newQuery(); + + var _child2 = newQuery(); + + var pcQChecks = [{ + type: Type.PARENT, + parent: _parent2, + child: _child2 + }]; // the parent-child query takes the place of the query previously being populated + + _parent2.checks = query.checks; // the previous query contains the checks for the parent + + query.checks = pcQChecks; // pc query takes over + + selector.compoundCount++; + return _child2; // we're now populating the child + } + } +}, { + name: 'descendant', + separator: true, + regex: tokens.descendant, + populate: function populate(selector, query) { + if (selector.currentSubject == null) { + // default: descendant query + var ancChQuery = newQuery(); + var descendant = newQuery(); + var ancestor = selector[selector.length - 1]; + ancChQuery.checks.push({ + type: Type.DESCENDANT, + ancestor: ancestor, + descendant: descendant + }); // the query in the selector should be the '>' itself + + replaceLastQuery(selector, query, ancChQuery); + selector.compoundCount++; // we're now populating the descendant query with expressions that follow + + return descendant; + } else if (selector.currentSubject === query) { + // compound split query + var compound = newQuery(); + var left = selector[selector.length - 1]; + var right = newQuery(); + var subject = newQuery(); + + var _descendant = newQuery(); + + var _ancestor = newQuery(); // set up the root compound q + + + compound.checks.push({ + type: Type.COMPOUND_SPLIT, + left: left, + right: right, + subject: subject + }); // populate the subject and replace the q at the old spot (within left) with TRUE + + subject.checks = query.checks; // take the checks from the left + + query.checks = [{ + type: Type.TRUE + }]; // checks under left refs the subject implicitly + // set up the right q + + _ancestor.checks.push({ + type: Type.TRUE + }); // ancestor implicitly refs the subject + + + right.checks.push({ + type: Type.ANCESTOR, + // type is swapped on right side queries + ancestor: _ancestor, + descendant: _descendant // empty for now + + }); + replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` + + selector.currentSubject = subject; + selector.compoundCount++; + return _descendant; // now populating the right side's descendant + } else { + // ancestor query + // info for parent query + var _ancestor2 = newQuery(); + + var _descendant2 = newQuery(); + + var adQChecks = [{ + type: Type.ANCESTOR, + ancestor: _ancestor2, + descendant: _descendant2 + }]; // the parent-child query takes the place of the query previously being populated + + _ancestor2.checks = query.checks; // the previous query contains the checks for the parent + + query.checks = adQChecks; // pc query takes over + + selector.compoundCount++; + return _descendant2; // we're now populating the child + } + } +}, { + name: 'subject', + modifier: true, + regex: tokens.subject, + populate: function populate(selector, query) { + if (selector.currentSubject != null && selector.currentSubject !== query) { + warn('Redefinition of subject in selector `' + selector.toString() + '`'); + return false; + } + + selector.currentSubject = query; + var topQ = selector[selector.length - 1]; + var topChk = topQ.checks[0]; + var topType = topChk == null ? null : topChk.type; + + if (topType === Type.DIRECTED_EDGE) { + // directed edge with subject on the target + // change to target node check + topChk.type = Type.NODE_TARGET; + } else if (topType === Type.UNDIRECTED_EDGE) { + // undirected edge with subject on the second node + // change to neighbor check + topChk.type = Type.NODE_NEIGHBOR; + topChk.node = topChk.nodes[1]; // second node is subject + + topChk.neighbor = topChk.nodes[0]; // clean up unused fields for new type + + topChk.nodes = null; + } + } +}]; +exprs.forEach(function (e) { + return e.regexObj = new RegExp('^' + e.regex); +}); + +/** + * Of all the expressions, find the first match in the remaining text. + * @param {string} remaining The remaining text to parse + * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }` + */ + +var consumeExpr = function consumeExpr(remaining) { + var expr; + var match; + var name; + + for (var j = 0; j < exprs.length; j++) { + var e = exprs[j]; + var n = e.name; + var m = remaining.match(e.regexObj); + + if (m != null) { + match = m; + expr = e; + name = n; + var consumed = m[0]; + remaining = remaining.substring(consumed.length); + break; // we've consumed one expr, so we can return now + } + } + + return { + expr: expr, + match: match, + name: name, + remaining: remaining + }; +}; +/** + * Consume all the leading whitespace + * @param {string} remaining The text to consume + * @returns The text with the leading whitespace removed + */ + + +var consumeWhitespace = function consumeWhitespace(remaining) { + var match = remaining.match(/^\s+/); + + if (match) { + var consumed = match[0]; + remaining = remaining.substring(consumed.length); + } + + return remaining; +}; +/** + * Parse the string and store the parsed representation in the Selector. + * @param {string} selector The selector string + * @returns `true` if the selector was successfully parsed, `false` otherwise + */ + + +var parse = function parse(selector) { + var self = this; + var remaining = self.inputText = selector; + var currentQuery = self[0] = newQuery(); + self.length = 1; + remaining = consumeWhitespace(remaining); // get rid of leading whitespace + + for (;;) { + var exprInfo = consumeExpr(remaining); + + if (exprInfo.expr == null) { + warn('The selector `' + selector + '`is invalid'); + return false; + } else { + var args = exprInfo.match.slice(1); // let the token populate the selector object in currentQuery + + var ret = exprInfo.expr.populate(self, currentQuery, args); + + if (ret === false) { + return false; // exit if population failed + } else if (ret != null) { + currentQuery = ret; // change the current query to be filled if the expr specifies + } + } + + remaining = exprInfo.remaining; // we're done when there's nothing left to parse + + if (remaining.match(/^\s*$/)) { + break; + } + } + + var lastQ = self[self.length - 1]; + + if (self.currentSubject != null) { + lastQ.subject = self.currentSubject; + } + + lastQ.edgeCount = self.edgeCount; + lastQ.compoundCount = self.compoundCount; + + for (var i = 0; i < self.length; i++) { + var q = self[i]; // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations + + if (q.compoundCount > 0 && q.edgeCount > 0) { + warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector'); + return false; + } + + if (q.edgeCount > 1) { + warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors'); + return false; + } else if (q.edgeCount === 1) { + warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.'); + } + } + + return true; // success +}; +/** + * Get the selector represented as a string. This value uses default formatting, + * so things like spacing may differ from the input text passed to the constructor. + * @returns {string} The selector string + */ + + +var toString = function toString() { + if (this.toStringCache != null) { + return this.toStringCache; + } + + var clean = function clean(obj) { + if (obj == null) { + return ''; + } else { + return obj; + } + }; + + var cleanVal = function cleanVal(val) { + if (string(val)) { + return '"' + val + '"'; + } else { + return clean(val); + } + }; + + var space = function space(val) { + return ' ' + val + ' '; + }; + + var checkToString = function checkToString(check, subject) { + var type = check.type, + value = check.value; + + switch (type) { + case Type.GROUP: + { + var group = clean(value); + return group.substring(0, group.length - 1); + } + + case Type.DATA_COMPARE: + { + var field = check.field, + operator = check.operator; + return '[' + field + space(clean(operator)) + cleanVal(value) + ']'; + } + + case Type.DATA_BOOL: + { + var _operator = check.operator, + _field = check.field; + return '[' + clean(_operator) + _field + ']'; + } + + case Type.DATA_EXIST: + { + var _field2 = check.field; + return '[' + _field2 + ']'; + } + + case Type.META_COMPARE: + { + var _operator2 = check.operator, + _field3 = check.field; + return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]'; + } + + case Type.STATE: + { + return value; + } + + case Type.ID: + { + return '#' + value; + } + + case Type.CLASS: + { + return '.' + value; + } + + case Type.PARENT: + case Type.CHILD: + { + return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject); + } + + case Type.ANCESTOR: + case Type.DESCENDANT: + { + return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject); + } + + case Type.COMPOUND_SPLIT: + { + var lhs = queryToString(check.left, subject); + var sub = queryToString(check.subject, subject); + var rhs = queryToString(check.right, subject); + return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs; + } + + case Type.TRUE: + { + return ''; + } + } + }; + + var queryToString = function queryToString(query, subject) { + return query.checks.reduce(function (str, chk, i) { + return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject); + }, ''); + }; + + var str = ''; + + for (var i = 0; i < this.length; i++) { + var query = this[i]; + str += queryToString(query, query.subject); + + if (this.length > 1 && i < this.length - 1) { + str += ', '; + } + } + + this.toStringCache = str; + return str; +}; +var parse$1 = { + parse: parse, + toString: toString +}; + +var valCmp = function valCmp(fieldVal, operator, value) { + var matches; + var isFieldStr = string(fieldVal); + var isFieldNum = number(fieldVal); + var isValStr = string(value); + var fieldStr, valStr; + var caseInsensitive = false; + var notExpr = false; + var isIneqCmp = false; + + if (operator.indexOf('!') >= 0) { + operator = operator.replace('!', ''); + notExpr = true; + } + + if (operator.indexOf('@') >= 0) { + operator = operator.replace('@', ''); + caseInsensitive = true; + } + + if (isFieldStr || isValStr || caseInsensitive) { + fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal; + valStr = '' + value; + } // if we're doing a case insensitive comparison, then we're using a STRING comparison + // even if we're comparing numbers + + + if (caseInsensitive) { + fieldVal = fieldStr = fieldStr.toLowerCase(); + value = valStr = valStr.toLowerCase(); + } + + switch (operator) { + case '*=': + matches = fieldStr.indexOf(valStr) >= 0; + break; + + case '$=': + matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0; + break; + + case '^=': + matches = fieldStr.indexOf(valStr) === 0; + break; + + case '=': + matches = fieldVal === value; + break; + + case '>': + isIneqCmp = true; + matches = fieldVal > value; + break; + + case '>=': + isIneqCmp = true; + matches = fieldVal >= value; + break; + + case '<': + isIneqCmp = true; + matches = fieldVal < value; + break; + + case '<=': + isIneqCmp = true; + matches = fieldVal <= value; + break; + + default: + matches = false; + break; + } // apply the not op, but null vals for inequalities should always stay non-matching + + + if (notExpr && (fieldVal != null || !isIneqCmp)) { + matches = !matches; + } + + return matches; +}; +var boolCmp = function boolCmp(fieldVal, operator) { + switch (operator) { + case '?': + return fieldVal ? true : false; + + case '!': + return fieldVal ? false : true; + + case '^': + return fieldVal === undefined; + } +}; +var existCmp = function existCmp(fieldVal) { + return fieldVal !== undefined; +}; +var data = function data(ele, field) { + return ele.data(field); +}; +var meta = function meta(ele, field) { + return ele[field](); +}; + +/** A lookup of `match(check, ele)` functions by `Type` int */ + +var match = []; +/** + * Returns whether the query matches for the element + * @param query The `{ type, value, ... }` query object + * @param ele The element to compare against +*/ + +var matches = function matches(query, ele) { + return query.checks.every(function (chk) { + return match[chk.type](chk, ele); + }); +}; + +match[Type.GROUP] = function (check, ele) { + var group = check.value; + return group === '*' || group === ele.group(); +}; + +match[Type.STATE] = function (check, ele) { + var stateSelector = check.value; + return stateSelectorMatches(stateSelector, ele); +}; + +match[Type.ID] = function (check, ele) { + var id = check.value; + return ele.id() === id; +}; + +match[Type.CLASS] = function (check, ele) { + var cls = check.value; + return ele.hasClass(cls); +}; + +match[Type.META_COMPARE] = function (check, ele) { + var field = check.field, + operator = check.operator, + value = check.value; + return valCmp(meta(ele, field), operator, value); +}; + +match[Type.DATA_COMPARE] = function (check, ele) { + var field = check.field, + operator = check.operator, + value = check.value; + return valCmp(data(ele, field), operator, value); +}; + +match[Type.DATA_BOOL] = function (check, ele) { + var field = check.field, + operator = check.operator; + return boolCmp(data(ele, field), operator); +}; + +match[Type.DATA_EXIST] = function (check, ele) { + var field = check.field, + operator = check.operator; + return existCmp(data(ele, field)); +}; + +match[Type.UNDIRECTED_EDGE] = function (check, ele) { + var qA = check.nodes[0]; + var qB = check.nodes[1]; + var src = ele.source(); + var tgt = ele.target(); + return matches(qA, src) && matches(qB, tgt) || matches(qB, src) && matches(qA, tgt); +}; + +match[Type.NODE_NEIGHBOR] = function (check, ele) { + return matches(check.node, ele) && ele.neighborhood().some(function (n) { + return n.isNode() && matches(check.neighbor, n); + }); +}; + +match[Type.DIRECTED_EDGE] = function (check, ele) { + return matches(check.source, ele.source()) && matches(check.target, ele.target()); +}; + +match[Type.NODE_SOURCE] = function (check, ele) { + return matches(check.source, ele) && ele.outgoers().some(function (n) { + return n.isNode() && matches(check.target, n); + }); +}; + +match[Type.NODE_TARGET] = function (check, ele) { + return matches(check.target, ele) && ele.incomers().some(function (n) { + return n.isNode() && matches(check.source, n); + }); +}; + +match[Type.CHILD] = function (check, ele) { + return matches(check.child, ele) && matches(check.parent, ele.parent()); +}; + +match[Type.PARENT] = function (check, ele) { + return matches(check.parent, ele) && ele.children().some(function (c) { + return matches(check.child, c); + }); +}; + +match[Type.DESCENDANT] = function (check, ele) { + return matches(check.descendant, ele) && ele.ancestors().some(function (a) { + return matches(check.ancestor, a); + }); +}; + +match[Type.ANCESTOR] = function (check, ele) { + return matches(check.ancestor, ele) && ele.descendants().some(function (d) { + return matches(check.descendant, d); + }); +}; + +match[Type.COMPOUND_SPLIT] = function (check, ele) { + return matches(check.subject, ele) && matches(check.left, ele) && matches(check.right, ele); +}; + +match[Type.TRUE] = function () { + return true; +}; + +match[Type.COLLECTION] = function (check, ele) { + var collection = check.value; + return collection.has(ele); +}; + +match[Type.FILTER] = function (check, ele) { + var filter = check.value; + return filter(ele); +}; + +var filter = function filter(collection) { + var self = this; // for 1 id #foo queries, just get the element + + if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) { + return collection.getElementById(self[0].checks[0].value).collection(); + } + + var selectorFunction = function selectorFunction(element) { + for (var j = 0; j < self.length; j++) { + var query = self[j]; + + if (matches(query, element)) { + return true; + } + } + + return false; + }; + + if (self.text() == null) { + selectorFunction = function selectorFunction() { + return true; + }; + } + + return collection.filter(selectorFunction); +}; // filter +// does selector match a single element? + + +var matches$1 = function matches$1(ele) { + var self = this; + + for (var j = 0; j < self.length; j++) { + var query = self[j]; + + if (matches(query, ele)) { + return true; + } + } + + return false; +}; // matches + + +var matching = { + matches: matches$1, + filter: filter +}; + +var Selector = function Selector(selector) { + this.inputText = selector; + this.currentSubject = null; + this.compoundCount = 0; + this.edgeCount = 0; + this.length = 0; + + if (selector == null || string(selector) && selector.match(/^\s*$/)) ; else if (elementOrCollection(selector)) { + this.addQuery({ + checks: [{ + type: Type.COLLECTION, + value: selector.collection() + }] + }); + } else if (fn(selector)) { + this.addQuery({ + checks: [{ + type: Type.FILTER, + value: selector + }] + }); + } else if (string(selector)) { + if (!this.parse(selector)) { + this.invalid = true; + } + } else { + error('A selector must be created from a string; found '); + } +}; + +var selfn = Selector.prototype; +[parse$1, matching].forEach(function (p) { + return extend(selfn, p); +}); + +selfn.text = function () { + return this.inputText; +}; + +selfn.size = function () { + return this.length; +}; + +selfn.eq = function (i) { + return this[i]; +}; + +selfn.sameText = function (otherSel) { + return !this.invalid && !otherSel.invalid && this.text() === otherSel.text(); +}; + +selfn.addQuery = function (q) { + this[this.length++] = q; +}; + +selfn.selector = selfn.toString; + +var elesfn$f = { + allAre: function allAre(selector) { + var selObj = new Selector(selector); + return this.every(function (ele) { + return selObj.matches(ele); + }); + }, + is: function is(selector) { + var selObj = new Selector(selector); + return this.some(function (ele) { + return selObj.matches(ele); + }); + }, + some: function some(fn, thisArg) { + for (var i = 0; i < this.length; i++) { + var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); + + if (ret) { + return true; + } + } + + return false; + }, + every: function every(fn, thisArg) { + for (var i = 0; i < this.length; i++) { + var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); + + if (!ret) { + return false; + } + } + + return true; + }, + same: function same(collection) { + // cheap collection ref check + if (this === collection) { + return true; + } + + collection = this.cy().collection(collection); + var thisLength = this.length; + var collectionLength = collection.length; // cheap length check + + if (thisLength !== collectionLength) { + return false; + } // cheap element ref check + + + if (thisLength === 1) { + return this[0] === collection[0]; + } + + return this.every(function (ele) { + return collection.hasElementWithId(ele.id()); + }); + }, + anySame: function anySame(collection) { + collection = this.cy().collection(collection); + return this.some(function (ele) { + return collection.hasElementWithId(ele.id()); + }); + }, + allAreNeighbors: function allAreNeighbors(collection) { + collection = this.cy().collection(collection); + var nhood = this.neighborhood(); + return collection.every(function (ele) { + return nhood.hasElementWithId(ele.id()); + }); + }, + contains: function contains(collection) { + collection = this.cy().collection(collection); + var self = this; + return collection.every(function (ele) { + return self.hasElementWithId(ele.id()); + }); + } +}; +elesfn$f.allAreNeighbours = elesfn$f.allAreNeighbors; +elesfn$f.has = elesfn$f.contains; +elesfn$f.equal = elesfn$f.equals = elesfn$f.same; + +var cache = function cache(fn, name) { + return function traversalCache(arg1, arg2, arg3, arg4) { + var selectorOrEles = arg1; + var eles = this; + var key; + + if (selectorOrEles == null) { + key = ''; + } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) { + key = selectorOrEles.id(); + } + + if (eles.length === 1 && key) { + var _p = eles[0]._private; + var tch = _p.traversalCache = _p.traversalCache || {}; + var ch = tch[name] = tch[name] || []; + var hash = hashString(key); + var cacheHit = ch[hash]; + + if (cacheHit) { + return cacheHit; + } else { + return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4); + } + } else { + return fn.call(eles, arg1, arg2, arg3, arg4); + } + }; +}; + +var elesfn$g = { + parent: function parent(selector) { + var parents = []; // optimisation for single ele call + + if (this.length === 1) { + var parent = this[0]._private.parent; + + if (parent) { + return parent; + } + } + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var _parent = ele._private.parent; + + if (_parent) { + parents.push(_parent); + } + } + + return this.spawn(parents, true).filter(selector); + }, + parents: function parents(selector) { + var parents = []; + var eles = this.parent(); + + while (eles.nonempty()) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + parents.push(ele); + } + + eles = eles.parent(); + } + + return this.spawn(parents, true).filter(selector); + }, + commonAncestors: function commonAncestors(selector) { + var ancestors; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var parents = ele.parents(); + ancestors = ancestors || parents; + ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set + } + + return ancestors.filter(selector); + }, + orphans: function orphans(selector) { + return this.stdFilter(function (ele) { + return ele.isOrphan(); + }).filter(selector); + }, + nonorphans: function nonorphans(selector) { + return this.stdFilter(function (ele) { + return ele.isChild(); + }).filter(selector); + }, + children: cache(function (selector) { + var children = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var eleChildren = ele._private.children; + + for (var j = 0; j < eleChildren.length; j++) { + children.push(eleChildren[j]); + } + } + + return this.spawn(children, true).filter(selector); + }, 'children'), + siblings: function siblings(selector) { + return this.parent().children().not(this).filter(selector); + }, + isParent: function isParent() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.children.length !== 0; + } + }, + isChildless: function isChildless() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.children.length === 0; + } + }, + isChild: function isChild() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.parent != null; + } + }, + isOrphan: function isOrphan() { + var ele = this[0]; + + if (ele) { + return ele.isNode() && ele._private.parent == null; + } + }, + descendants: function descendants(selector) { + var elements = []; + + function add(eles) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + elements.push(ele); + + if (ele.children().nonempty()) { + add(ele.children()); + } + } + } + + add(this.children()); + return this.spawn(elements, true).filter(selector); + } +}; + +function forEachCompound(eles, fn, includeSelf, recursiveStep) { + var q = []; + var did = new Set$1(); + var cy = eles.cy(); + var hasCompounds = cy.hasCompoundNodes(); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (includeSelf) { + q.push(ele); + } else if (hasCompounds) { + recursiveStep(q, did, ele); + } + } + + while (q.length > 0) { + var _ele = q.shift(); + + fn(_ele); + did.add(_ele.id()); + + if (hasCompounds) { + recursiveStep(q, did, _ele); + } + } + + return eles; +} + +function addChildren(q, did, ele) { + if (ele.isParent()) { + var children = ele._private.children; + + for (var i = 0; i < children.length; i++) { + var child = children[i]; + + if (!did.has(child.id())) { + q.push(child); + } + } + } +} // very efficient version of eles.add( eles.descendants() ).forEach() +// for internal use + + +elesfn$g.forEachDown = function (fn) { + var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + return forEachCompound(this, fn, includeSelf, addChildren); +}; + +function addParent(q, did, ele) { + if (ele.isChild()) { + var parent = ele._private.parent; + + if (!did.has(parent.id())) { + q.push(parent); + } + } +} + +elesfn$g.forEachUp = function (fn) { + var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + return forEachCompound(this, fn, includeSelf, addParent); +}; + +function addParentAndChildren(q, did, ele) { + addParent(q, did, ele); + addChildren(q, did, ele); +} + +elesfn$g.forEachUpAndDown = function (fn) { + var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + return forEachCompound(this, fn, includeSelf, addParentAndChildren); +}; // aliases + + +elesfn$g.ancestors = elesfn$g.parents; + +var fn$1, elesfn$h; +fn$1 = elesfn$h = { + data: define$3.data({ + field: 'data', + bindingEvent: 'data', + allowBinding: true, + allowSetting: true, + settingEvent: 'data', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true, + immutableKeys: { + 'id': true, + 'source': true, + 'target': true, + 'parent': true + }, + updateStyle: true + }), + removeData: define$3.removeData({ + field: 'data', + event: 'data', + triggerFnName: 'trigger', + triggerEvent: true, + immutableKeys: { + 'id': true, + 'source': true, + 'target': true, + 'parent': true + }, + updateStyle: true + }), + scratch: define$3.data({ + field: 'scratch', + bindingEvent: 'scratch', + allowBinding: true, + allowSetting: true, + settingEvent: 'scratch', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true, + updateStyle: true + }), + removeScratch: define$3.removeData({ + field: 'scratch', + event: 'scratch', + triggerFnName: 'trigger', + triggerEvent: true, + updateStyle: true + }), + rscratch: define$3.data({ + field: 'rscratch', + allowBinding: false, + allowSetting: true, + settingTriggersEvent: false, + allowGetting: true + }), + removeRscratch: define$3.removeData({ + field: 'rscratch', + triggerEvent: false + }), + id: function id() { + var ele = this[0]; + + if (ele) { + return ele._private.data.id; + } + } +}; // aliases + +fn$1.attr = fn$1.data; +fn$1.removeAttr = fn$1.removeData; +var data$1 = elesfn$h; + +var elesfn$i = {}; + +function defineDegreeFunction(callback) { + return function (includeLoops) { + var self = this; + + if (includeLoops === undefined) { + includeLoops = true; + } + + if (self.length === 0) { + return; + } + + if (self.isNode() && !self.removed()) { + var degree = 0; + var node = self[0]; + var connectedEdges = node._private.edges; + + for (var i = 0; i < connectedEdges.length; i++) { + var edge = connectedEdges[i]; + + if (!includeLoops && edge.isLoop()) { + continue; + } + + degree += callback(node, edge); + } + + return degree; + } else { + return; + } + }; +} + +extend(elesfn$i, { + degree: defineDegreeFunction(function (node, edge) { + if (edge.source().same(edge.target())) { + return 2; + } else { + return 1; + } + }), + indegree: defineDegreeFunction(function (node, edge) { + if (edge.target().same(node)) { + return 1; + } else { + return 0; + } + }), + outdegree: defineDegreeFunction(function (node, edge) { + if (edge.source().same(node)) { + return 1; + } else { + return 0; + } + }) +}); + +function defineDegreeBoundsFunction(degreeFn, callback) { + return function (includeLoops) { + var ret; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + var ele = nodes[i]; + var degree = ele[degreeFn](includeLoops); + + if (degree !== undefined && (ret === undefined || callback(degree, ret))) { + ret = degree; + } + } + + return ret; + }; +} + +extend(elesfn$i, { + minDegree: defineDegreeBoundsFunction('degree', function (degree, min) { + return degree < min; + }), + maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) { + return degree > max; + }), + minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) { + return degree < min; + }), + maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) { + return degree > max; + }), + minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) { + return degree < min; + }), + maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) { + return degree > max; + }) +}); +extend(elesfn$i, { + totalDegree: function totalDegree(includeLoops) { + var total = 0; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + total += nodes[i].degree(includeLoops); + } + + return total; + } +}); + +var fn$2, elesfn$j; + +var beforePositionSet = function beforePositionSet(eles, newPos, silent) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.locked()) { + var oldPos = ele._private.position; + var delta = { + x: newPos.x != null ? newPos.x - oldPos.x : 0, + y: newPos.y != null ? newPos.y - oldPos.y : 0 + }; + + if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) { + ele.children().shift(delta, silent); + } + + ele.shiftCachedBoundingBox(delta); + } + } +}; + +var positionDef = { + field: 'position', + bindingEvent: 'position', + allowBinding: true, + allowSetting: true, + settingEvent: 'position', + settingTriggersEvent: true, + triggerFnName: 'emitAndNotify', + allowGetting: true, + validKeys: ['x', 'y'], + beforeGet: function beforeGet(ele) { + ele.updateCompoundBounds(); + }, + beforeSet: function beforeSet(eles, newPos) { + beforePositionSet(eles, newPos, false); + }, + onSet: function onSet(eles) { + eles.dirtyCompoundBoundsCache(); + }, + canSet: function canSet(ele) { + return !ele.locked(); + } +}; +fn$2 = elesfn$j = { + position: define$3.data(positionDef), + // position but no notification to renderer + silentPosition: define$3.data(extend({}, positionDef, { + allowBinding: false, + allowSetting: true, + settingTriggersEvent: false, + allowGetting: false, + beforeSet: function beforeSet(eles, newPos) { + beforePositionSet(eles, newPos, true); + } + })), + positions: function positions(pos, silent) { + if (plainObject(pos)) { + if (silent) { + this.silentPosition(pos); + } else { + this.position(pos); + } + } else if (fn(pos)) { + var _fn = pos; + var cy = this.cy(); + cy.startBatch(); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + + var _pos = void 0; + + if (_pos = _fn(ele, i)) { + if (silent) { + ele.silentPosition(_pos); + } else { + ele.position(_pos); + } + } + } + + cy.endBatch(); + } + + return this; // chaining + }, + silentPositions: function silentPositions(pos) { + return this.positions(pos, true); + }, + shift: function shift(dim, val, silent) { + var delta; + + if (plainObject(dim)) { + delta = { + x: number(dim.x) ? dim.x : 0, + y: number(dim.y) ? dim.y : 0 + }; + silent = val; + } else if (string(dim) && number(val)) { + delta = { + x: 0, + y: 0 + }; + delta[dim] = val; + } + + if (delta != null) { + var cy = this.cy(); + cy.startBatch(); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var pos = ele.position(); + var newPos = { + x: pos.x + delta.x, + y: pos.y + delta.y + }; + + if (silent) { + ele.silentPosition(newPos); + } else { + ele.position(newPos); + } + } + + cy.endBatch(); + } + + return this; + }, + silentShift: function silentShift(dim, val) { + if (plainObject(dim)) { + this.shift(dim, true); + } else if (string(dim) && number(val)) { + this.shift(dim, val, true); + } + + return this; + }, + // get/set the rendered (i.e. on screen) positon of the element + renderedPosition: function renderedPosition(dim, val) { + var ele = this[0]; + var cy = this.cy(); + var zoom = cy.zoom(); + var pan = cy.pan(); + var rpos = plainObject(dim) ? dim : undefined; + var setting = rpos !== undefined || val !== undefined && string(dim); + + if (ele && ele.isNode()) { + // must have an element and must be a node to return position + if (setting) { + for (var i = 0; i < this.length; i++) { + var _ele = this[i]; + + if (val !== undefined) { + // set one dimension + _ele.position(dim, (val - pan[dim]) / zoom); + } else if (rpos !== undefined) { + // set whole position + _ele.position(renderedToModelPosition(rpos, zoom, pan)); + } + } + } else { + // getting + var pos = ele.position(); + rpos = modelToRenderedPosition(pos, zoom, pan); + + if (dim === undefined) { + // then return the whole rendered position + return rpos; + } else { + // then return the specified dimension + return rpos[dim]; + } + } + } else if (!setting) { + return undefined; // for empty collection case + } + + return this; // chaining + }, + // get/set the position relative to the parent + relativePosition: function relativePosition(dim, val) { + var ele = this[0]; + var cy = this.cy(); + var ppos = plainObject(dim) ? dim : undefined; + var setting = ppos !== undefined || val !== undefined && string(dim); + var hasCompoundNodes = cy.hasCompoundNodes(); + + if (ele && ele.isNode()) { + // must have an element and must be a node to return position + if (setting) { + for (var i = 0; i < this.length; i++) { + var _ele2 = this[i]; + var parent = hasCompoundNodes ? _ele2.parent() : null; + var hasParent = parent && parent.length > 0; + var relativeToParent = hasParent; + + if (hasParent) { + parent = parent[0]; + } + + var origin = relativeToParent ? parent.position() : { + x: 0, + y: 0 + }; + + if (val !== undefined) { + // set one dimension + _ele2.position(dim, val + origin[dim]); + } else if (ppos !== undefined) { + // set whole position + _ele2.position({ + x: ppos.x + origin.x, + y: ppos.y + origin.y + }); + } + } + } else { + // getting + var pos = ele.position(); + + var _parent = hasCompoundNodes ? ele.parent() : null; + + var _hasParent = _parent && _parent.length > 0; + + var _relativeToParent = _hasParent; + + if (_hasParent) { + _parent = _parent[0]; + } + + var _origin = _relativeToParent ? _parent.position() : { + x: 0, + y: 0 + }; + + ppos = { + x: pos.x - _origin.x, + y: pos.y - _origin.y + }; + + if (dim === undefined) { + // then return the whole rendered position + return ppos; + } else { + // then return the specified dimension + return ppos[dim]; + } + } + } else if (!setting) { + return undefined; // for empty collection case + } + + return this; // chaining + } +}; // aliases + +fn$2.modelPosition = fn$2.point = fn$2.position; +fn$2.modelPositions = fn$2.points = fn$2.positions; +fn$2.renderedPoint = fn$2.renderedPosition; +fn$2.relativePoint = fn$2.relativePosition; +var position = elesfn$j; + +var fn$3, elesfn$k; +fn$3 = elesfn$k = {}; + +elesfn$k.renderedBoundingBox = function (options) { + var bb = this.boundingBox(options); + var cy = this.cy(); + var zoom = cy.zoom(); + var pan = cy.pan(); + var x1 = bb.x1 * zoom + pan.x; + var x2 = bb.x2 * zoom + pan.x; + var y1 = bb.y1 * zoom + pan.y; + var y2 = bb.y2 * zoom + pan.y; + return { + x1: x1, + x2: x2, + y1: y1, + y2: y2, + w: x2 - x1, + h: y2 - y1 + }; +}; + +elesfn$k.dirtyCompoundBoundsCache = function () { + var cy = this.cy(); + + if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { + return this; + } + + this.forEachUp(function (ele) { + if (ele.isParent()) { + var _p = ele._private; + _p.compoundBoundsClean = false; + _p.bbCache = null; + ele.emitAndNotify('bounds'); + } + }); + return this; +}; + +elesfn$k.updateCompoundBounds = function () { + var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var cy = this.cy(); // not possible to do on non-compound graphs or with the style disabled + + if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { + return this; + } // save cycles when batching -- but bounds will be stale (or not exist yet) + + + if (!force && cy.batching()) { + return this; + } + + function update(parent) { + if (!parent.isParent()) { + return; + } + + var _p = parent._private; + var children = parent.children(); + var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include'; + var min = { + width: { + val: parent.pstyle('min-width').pfValue, + left: parent.pstyle('min-width-bias-left'), + right: parent.pstyle('min-width-bias-right') + }, + height: { + val: parent.pstyle('min-height').pfValue, + top: parent.pstyle('min-height-bias-top'), + bottom: parent.pstyle('min-height-bias-bottom') + } + }; + var bb = children.boundingBox({ + includeLabels: includeLabels, + includeOverlays: false, + // updating the compound bounds happens outside of the regular + // cache cycle (i.e. before fired events) + useCache: false + }); + var pos = _p.position; // if children take up zero area then keep position and fall back on stylesheet w/h + + if (bb.w === 0 || bb.h === 0) { + bb = { + w: parent.pstyle('width').pfValue, + h: parent.pstyle('height').pfValue + }; + bb.x1 = pos.x - bb.w / 2; + bb.x2 = pos.x + bb.w / 2; + bb.y1 = pos.y - bb.h / 2; + bb.y2 = pos.y + bb.h / 2; + } + + function computeBiasValues(propDiff, propBias, propBiasComplement) { + var biasDiff = 0; + var biasComplementDiff = 0; + var biasTotal = propBias + propBiasComplement; + + if (propDiff > 0 && biasTotal > 0) { + biasDiff = propBias / biasTotal * propDiff; + biasComplementDiff = propBiasComplement / biasTotal * propDiff; + } + + return { + biasDiff: biasDiff, + biasComplementDiff: biasComplementDiff + }; + } + + function computePaddingValues(width, height, paddingObject, relativeTo) { + // Assuming percentage is number from 0 to 1 + if (paddingObject.units === '%') { + switch (relativeTo) { + case 'width': + return width > 0 ? paddingObject.pfValue * width : 0; + + case 'height': + return height > 0 ? paddingObject.pfValue * height : 0; + + case 'average': + return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0; + + case 'min': + return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0; + + case 'max': + return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0; + + default: + return 0; + } + } else if (paddingObject.units === 'px') { + return paddingObject.pfValue; + } else { + return 0; + } + } + + var leftVal = min.width.left.value; + + if (min.width.left.units === 'px' && min.width.val > 0) { + leftVal = leftVal * 100 / min.width.val; + } + + var rightVal = min.width.right.value; + + if (min.width.right.units === 'px' && min.width.val > 0) { + rightVal = rightVal * 100 / min.width.val; + } + + var topVal = min.height.top.value; + + if (min.height.top.units === 'px' && min.height.val > 0) { + topVal = topVal * 100 / min.height.val; + } + + var bottomVal = min.height.bottom.value; + + if (min.height.bottom.units === 'px' && min.height.val > 0) { + bottomVal = bottomVal * 100 / min.height.val; + } + + var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal); + var diffLeft = widthBiasDiffs.biasDiff; + var diffRight = widthBiasDiffs.biasComplementDiff; + var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal); + var diffTop = heightBiasDiffs.biasDiff; + var diffBottom = heightBiasDiffs.biasComplementDiff; + _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value); + _p.autoWidth = Math.max(bb.w, min.width.val); + pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2; + _p.autoHeight = Math.max(bb.h, min.height.val); + pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2; + } + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var _p = ele._private; + + if (!_p.compoundBoundsClean) { + update(ele); + + if (!cy.batching()) { + _p.compoundBoundsClean = true; + } + } + } + + return this; +}; + +var noninf = function noninf(x) { + if (x === Infinity || x === -Infinity) { + return 0; + } + + return x; +}; + +var updateBounds = function updateBounds(b, x1, y1, x2, y2) { + // don't update with zero area boxes + if (x2 - x1 === 0 || y2 - y1 === 0) { + return; + } // don't update with null dim + + + if (x1 == null || y1 == null || x2 == null || y2 == null) { + return; + } + + b.x1 = x1 < b.x1 ? x1 : b.x1; + b.x2 = x2 > b.x2 ? x2 : b.x2; + b.y1 = y1 < b.y1 ? y1 : b.y1; + b.y2 = y2 > b.y2 ? y2 : b.y2; + b.w = b.x2 - b.x1; + b.h = b.y2 - b.y1; +}; + +var updateBoundsFromBox = function updateBoundsFromBox(b, b2) { + if (b2 == null) { + return b; + } + + return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2); +}; + +var prefixedProperty = function prefixedProperty(obj, field, prefix) { + return getPrefixedProperty(obj, field, prefix); +}; + +var updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) { + if (ele.cy().headless()) { + return; + } + + var _p = ele._private; + var rstyle = _p.rstyle; + var halfArW = rstyle.arrowWidth / 2; + var arrowType = ele.pstyle(prefix + '-arrow-shape').value; + var x; + var y; + + if (arrowType !== 'none') { + if (prefix === 'source') { + x = rstyle.srcX; + y = rstyle.srcY; + } else if (prefix === 'target') { + x = rstyle.tgtX; + y = rstyle.tgtY; + } else { + x = rstyle.midX; + y = rstyle.midY; + } // always store the individual arrow bounds + + + var bbs = _p.arrowBounds = _p.arrowBounds || {}; + var bb = bbs[prefix] = bbs[prefix] || {}; + bb.x1 = x - halfArW; + bb.y1 = y - halfArW; + bb.x2 = x + halfArW; + bb.y2 = y + halfArW; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + expandBoundingBox(bb, 1); + updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2); + } +}; + +var updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) { + if (ele.cy().headless()) { + return; + } + + var prefixDash; + + if (prefix) { + prefixDash = prefix + '-'; + } else { + prefixDash = ''; + } + + var _p = ele._private; + var rstyle = _p.rstyle; + var label = ele.pstyle(prefixDash + 'label').strValue; + + if (label) { + var halign = ele.pstyle('text-halign'); + var valign = ele.pstyle('text-valign'); + var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix); + var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix); + var labelX = prefixedProperty(rstyle, 'labelX', prefix); + var labelY = prefixedProperty(rstyle, 'labelY', prefix); + var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue; + var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue; + var isEdge = ele.isEdge(); + var rotation = ele.pstyle(prefixDash + 'text-rotation'); + var outlineWidth = ele.pstyle('text-outline-width').pfValue; + var borderWidth = ele.pstyle('text-border-width').pfValue; + var halfBorderWidth = borderWidth / 2; + var padding = ele.pstyle('text-background-padding').pfValue; + var lh = labelHeight; + var lw = labelWidth; + var lw_2 = lw / 2; + var lh_2 = lh / 2; + var lx1, lx2, ly1, ly2; + + if (isEdge) { + lx1 = labelX - lw_2; + lx2 = labelX + lw_2; + ly1 = labelY - lh_2; + ly2 = labelY + lh_2; + } else { + switch (halign.value) { + case 'left': + lx1 = labelX - lw; + lx2 = labelX; + break; + + case 'center': + lx1 = labelX - lw_2; + lx2 = labelX + lw_2; + break; + + case 'right': + lx1 = labelX; + lx2 = labelX + lw; + break; + } + + switch (valign.value) { + case 'top': + ly1 = labelY - lh; + ly2 = labelY; + break; + + case 'center': + ly1 = labelY - lh_2; + ly2 = labelY + lh_2; + break; + + case 'bottom': + ly1 = labelY; + ly2 = labelY + lh; + break; + } + } // shift by margin and expand by outline and border + + + lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding; + lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding; + ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding; + ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding; // always store the unrotated label bounds separately + + var bbPrefix = prefix || 'main'; + var bbs = _p.labelBounds; + var bb = bbs[bbPrefix] = bbs[bbPrefix] || {}; + bb.x1 = lx1; + bb.y1 = ly1; + bb.x2 = lx2; + bb.y2 = ly2; + bb.w = lx2 - lx1; + bb.h = ly2 - ly1; + expandBoundingBox(bb, 1); // expand to work around browser dimension inaccuracies + + var isAutorotate = isEdge && rotation.strValue === 'autorotate'; + var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0; + + if (isAutorotate || isPfValue) { + var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue; + var cos = Math.cos(theta); + var sin = Math.sin(theta); // rotation point (default value for center-center) + + var xo = (lx1 + lx2) / 2; + var yo = (ly1 + ly2) / 2; + + if (!isEdge) { + switch (halign.value) { + case 'left': + xo = lx2; + break; + + case 'right': + xo = lx1; + break; + } + + switch (valign.value) { + case 'top': + yo = ly2; + break; + + case 'bottom': + yo = ly1; + break; + } + } + + var rotate = function rotate(x, y) { + x = x - xo; + y = y - yo; + return { + x: x * cos - y * sin + xo, + y: x * sin + y * cos + yo + }; + }; + + var px1y1 = rotate(lx1, ly1); + var px1y2 = rotate(lx1, ly2); + var px2y1 = rotate(lx2, ly1); + var px2y2 = rotate(lx2, ly2); + lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x); + lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x); + ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y); + ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y); + } + + var bbPrefixRot = bbPrefix + 'Rot'; + var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {}; + bbRot.x1 = lx1; + bbRot.y1 = ly1; + bbRot.x2 = lx2; + bbRot.y2 = ly2; + bbRot.w = lx2 - lx1; + bbRot.h = ly2 - ly1; + updateBounds(bounds, lx1, ly1, lx2, ly2); + updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2); + } + + return bounds; +}; // get the bounding box of the elements (in raw model position) + + +var boundingBoxImpl = function boundingBoxImpl(ele, options) { + var cy = ele._private.cy; + var styleEnabled = cy.styleEnabled(); + var headless = cy.headless(); + var bounds = makeBoundingBox(); + var _p = ele._private; + var isNode = ele.isNode(); + var isEdge = ele.isEdge(); + var ex1, ex2, ey1, ey2; // extrema of body / lines + + var x, y; // node pos + + var rstyle = _p.rstyle; + var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0]; // must use `display` prop only, as reading `compound.width()` causes recursion + // (other factors like width values will be considered later in this function anyway) + + var isDisplayed = function isDisplayed(ele) { + return ele.pstyle('display').value !== 'none'; + }; + + var displayed = !styleEnabled || isDisplayed(ele) // must take into account connected nodes b/c of implicit edge hiding on display:none node + && (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target())); + + if (displayed) { + // displayed suffices, since we will find zero area eles anyway + var overlayOpacity = 0; + var overlayPadding = 0; + + if (styleEnabled && options.includeOverlays) { + overlayOpacity = ele.pstyle('overlay-opacity').value; + + if (overlayOpacity !== 0) { + overlayPadding = ele.pstyle('overlay-padding').value; + } + } + + var w = 0; + var wHalf = 0; + + if (styleEnabled) { + w = ele.pstyle('width').pfValue; + wHalf = w / 2; + } + + if (isNode && options.includeNodes) { + var pos = ele.position(); + x = pos.x; + y = pos.y; + + var _w = ele.outerWidth(); + + var halfW = _w / 2; + var h = ele.outerHeight(); + var halfH = h / 2; // handle node dimensions + ///////////////////////// + + ex1 = x - halfW; + ex2 = x + halfW; + ey1 = y - halfH; + ey2 = y + halfH; + updateBounds(bounds, ex1, ey1, ex2, ey2); + } else if (isEdge && options.includeEdges) { + if (styleEnabled && !headless) { + var curveStyle = ele.pstyle('curve-style').strValue; // handle edge dimensions (rough box estimate) + ////////////////////////////////////////////// + + ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX); + ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX); + ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY); + ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); // take into account edge width + + ex1 -= wHalf; + ex2 += wHalf; + ey1 -= wHalf; + ey2 += wHalf; + updateBounds(bounds, ex1, ey1, ex2, ey2); // precise edges + //////////////// + + if (curveStyle === 'haystack') { + var hpts = rstyle.haystackPts; + + if (hpts && hpts.length === 2) { + ex1 = hpts[0].x; + ey1 = hpts[0].y; + ex2 = hpts[1].x; + ey2 = hpts[1].y; + + if (ex1 > ex2) { + var temp = ex1; + ex1 = ex2; + ex2 = temp; + } + + if (ey1 > ey2) { + var _temp = ey1; + ey1 = ey2; + ey2 = _temp; + } + + updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf); + } + } else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'taxi') { + var pts; + + switch (curveStyle) { + case 'bezier': + case 'unbundled-bezier': + pts = rstyle.bezierPts; + break; + + case 'segments': + case 'taxi': + pts = rstyle.linePts; + break; + } + + if (pts != null) { + for (var j = 0; j < pts.length; j++) { + var pt = pts[j]; + ex1 = pt.x - wHalf; + ex2 = pt.x + wHalf; + ey1 = pt.y - wHalf; + ey2 = pt.y + wHalf; + updateBounds(bounds, ex1, ey1, ex2, ey2); + } + } + } // bezier-like or segment-like edge + + } else { + // headless or style disabled + // fallback on source and target positions + ////////////////////////////////////////// + var n1 = ele.source(); + var n1pos = n1.position(); + var n2 = ele.target(); + var n2pos = n2.position(); + ex1 = n1pos.x; + ex2 = n2pos.x; + ey1 = n1pos.y; + ey2 = n2pos.y; + + if (ex1 > ex2) { + var _temp2 = ex1; + ex1 = ex2; + ex2 = _temp2; + } + + if (ey1 > ey2) { + var _temp3 = ey1; + ey1 = ey2; + ey2 = _temp3; + } // take into account edge width + + + ex1 -= wHalf; + ex2 += wHalf; + ey1 -= wHalf; + ey2 += wHalf; + updateBounds(bounds, ex1, ey1, ex2, ey2); + } // headless or style disabled + + } // edges + // handle edge arrow size + ///////////////////////// + + + if (styleEnabled && options.includeEdges && isEdge) { + updateBoundsFromArrow(bounds, ele, 'mid-source'); + updateBoundsFromArrow(bounds, ele, 'mid-target'); + updateBoundsFromArrow(bounds, ele, 'source'); + updateBoundsFromArrow(bounds, ele, 'target'); + } // ghost + //////// + + + if (styleEnabled) { + var ghost = ele.pstyle('ghost').value === 'yes'; + + if (ghost) { + var gx = ele.pstyle('ghost-offset-x').pfValue; + var gy = ele.pstyle('ghost-offset-y').pfValue; + updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy); + } + } // always store the body bounds separately from the labels + + + var bbBody = _p.bodyBounds = _p.bodyBounds || {}; + assignBoundingBox(bbBody, bounds); + expandBoundingBoxSides(bbBody, manualExpansion); + expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies + // overlay + ////////// + + if (styleEnabled) { + ex1 = bounds.x1; + ex2 = bounds.x2; + ey1 = bounds.y1; + ey2 = bounds.y2; + updateBounds(bounds, ex1 - overlayPadding, ey1 - overlayPadding, ex2 + overlayPadding, ey2 + overlayPadding); + } // always store the body bounds separately from the labels + + + var bbOverlay = _p.overlayBounds = _p.overlayBounds || {}; + assignBoundingBox(bbOverlay, bounds); + expandBoundingBoxSides(bbOverlay, manualExpansion); + expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies + // handle label dimensions + ////////////////////////// + + var bbLabels = _p.labelBounds = _p.labelBounds || {}; + + if (bbLabels.all != null) { + clearBoundingBox(bbLabels.all); + } else { + bbLabels.all = makeBoundingBox(); + } + + if (styleEnabled && options.includeLabels) { + if (options.includeMainLabels) { + updateBoundsFromLabel(bounds, ele, null); + } + + if (isEdge) { + if (options.includeSourceLabels) { + updateBoundsFromLabel(bounds, ele, 'source'); + } + + if (options.includeTargetLabels) { + updateBoundsFromLabel(bounds, ele, 'target'); + } + } + } // style enabled for labels + + } // if displayed + + + bounds.x1 = noninf(bounds.x1); + bounds.y1 = noninf(bounds.y1); + bounds.x2 = noninf(bounds.x2); + bounds.y2 = noninf(bounds.y2); + bounds.w = noninf(bounds.x2 - bounds.x1); + bounds.h = noninf(bounds.y2 - bounds.y1); + + if (bounds.w > 0 && bounds.h > 0 && displayed) { + expandBoundingBoxSides(bounds, manualExpansion); // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides + + expandBoundingBox(bounds, 1); + } + + return bounds; +}; + +var getKey = function getKey(opts) { + var i = 0; + + var tf = function tf(val) { + return (val ? 1 : 0) << i++; + }; + + var key = 0; + key += tf(opts.incudeNodes); + key += tf(opts.includeEdges); + key += tf(opts.includeLabels); + key += tf(opts.includeMainLabels); + key += tf(opts.includeSourceLabels); + key += tf(opts.includeTargetLabels); + key += tf(opts.includeOverlays); + return key; +}; + +var getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) { + if (ele.isEdge()) { + var p1 = ele.source().position(); + var p2 = ele.target().position(); + + var r = function r(x) { + return Math.round(x); + }; + + return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]); + } else { + return 0; + } +}; + +var cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) { + var _p = ele._private; + var bb; + var isEdge = ele.isEdge(); + var key = opts == null ? defBbOptsKey : getKey(opts); + var usingDefOpts = key === defBbOptsKey; + var currPosKey = getBoundingBoxPosKey(ele); + var isPosKeySame = _p.bbCachePosKey === currPosKey; + var useCache = opts.useCache && isPosKeySame; + + var isDirty = function isDirty(ele) { + return ele._private.bbCache == null; + }; + + var needRecalc = !useCache || isDirty(ele) || isEdge && isDirty(ele.source()) || isDirty(ele.target()); + + if (needRecalc) { + if (!isPosKeySame) { + ele.recalculateRenderedStyle(); + } + + bb = boundingBoxImpl(ele, defBbOpts); + _p.bbCache = bb; + _p.bbCacheShift.x = _p.bbCacheShift.y = 0; + _p.bbCachePosKey = currPosKey; + } else { + bb = _p.bbCache; + } + + if (!needRecalc && (_p.bbCacheShift.x !== 0 || _p.bbCacheShift.y !== 0)) { + var shift = assignShiftToBoundingBox; + var delta = _p.bbCacheShift; + + var safeShift = function safeShift(bb, delta) { + if (bb != null) { + shift(bb, delta); + } + }; + + shift(bb, delta); + var bodyBounds = _p.bodyBounds, + overlayBounds = _p.overlayBounds, + labelBounds = _p.labelBounds, + arrowBounds = _p.arrowBounds; + safeShift(bodyBounds, delta); + safeShift(overlayBounds, delta); + + if (arrowBounds != null) { + safeShift(arrowBounds.source, delta); + safeShift(arrowBounds.target, delta); + safeShift(arrowBounds['mid-source'], delta); + safeShift(arrowBounds['mid-target'], delta); + } + + if (labelBounds != null) { + safeShift(labelBounds.main, delta); + safeShift(labelBounds.all, delta); + safeShift(labelBounds.source, delta); + safeShift(labelBounds.target, delta); + } + } // always reset the shift, because we either applied the shift or cleared it by doing a fresh recalc + + + _p.bbCacheShift.x = _p.bbCacheShift.y = 0; // not using def opts => need to build up bb from combination of sub bbs + + if (!usingDefOpts) { + var isNode = ele.isNode(); + bb = makeBoundingBox(); + + if (opts.includeNodes && isNode || opts.includeEdges && !isNode) { + if (opts.includeOverlays) { + updateBoundsFromBox(bb, _p.overlayBounds); + } else { + updateBoundsFromBox(bb, _p.bodyBounds); + } + } + + if (opts.includeLabels) { + if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) { + updateBoundsFromBox(bb, _p.labelBounds.all); + } else { + if (opts.includeMainLabels) { + updateBoundsFromBox(bb, _p.labelBounds.mainRot); + } + + if (opts.includeSourceLabels) { + updateBoundsFromBox(bb, _p.labelBounds.sourceRot); + } + + if (opts.includeTargetLabels) { + updateBoundsFromBox(bb, _p.labelBounds.targetRot); + } + } + } + + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + } + + return bb; +}; + +var defBbOpts = { + includeNodes: true, + includeEdges: true, + includeLabels: true, + includeMainLabels: true, + includeSourceLabels: true, + includeTargetLabels: true, + includeOverlays: true, + useCache: true +}; +var defBbOptsKey = getKey(defBbOpts); +var filledBbOpts = defaults(defBbOpts); + +elesfn$k.boundingBox = function (options) { + var bounds; // the main usecase is ele.boundingBox() for a single element with no/def options + // specified s.t. the cache is used, so check for this case to make it faster by + // avoiding the overhead of the rest of the function + + if (this.length === 1 && this[0]._private.bbCache != null && (options === undefined || options.useCache === undefined || options.useCache === true)) { + if (options === undefined) { + options = defBbOpts; + } else { + options = filledBbOpts(options); + } + + bounds = cachedBoundingBoxImpl(this[0], options); + } else { + bounds = makeBoundingBox(); + options = options || defBbOpts; + var opts = filledBbOpts(options); + var eles = this; + var cy = eles.cy(); + var styleEnabled = cy.styleEnabled(); + + if (styleEnabled) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _p = ele._private; + var currPosKey = getBoundingBoxPosKey(ele); + var isPosKeySame = _p.bbCachePosKey === currPosKey; + var useCache = opts.useCache && isPosKeySame; + ele.recalculateRenderedStyle(useCache); + } + } + + this.updateCompoundBounds(); + + for (var _i = 0; _i < eles.length; _i++) { + var _ele = eles[_i]; + updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts)); + } + } + + bounds.x1 = noninf(bounds.x1); + bounds.y1 = noninf(bounds.y1); + bounds.x2 = noninf(bounds.x2); + bounds.y2 = noninf(bounds.y2); + bounds.w = noninf(bounds.x2 - bounds.x1); + bounds.h = noninf(bounds.y2 - bounds.y1); + return bounds; +}; + +elesfn$k.dirtyBoundingBoxCache = function () { + for (var i = 0; i < this.length; i++) { + var _p = this[i]._private; + _p.bbCache = null; + _p.bbCacheShift.x = _p.bbCacheShift.y = 0; + _p.bbCachePosKey = null; + _p.bodyBounds = null; + _p.overlayBounds = null; + _p.labelBounds.all = null; + _p.labelBounds.source = null; + _p.labelBounds.target = null; + _p.labelBounds.main = null; + _p.labelBounds.sourceRot = null; + _p.labelBounds.targetRot = null; + _p.labelBounds.mainRot = null; + _p.arrowBounds.source = null; + _p.arrowBounds.target = null; + _p.arrowBounds['mid-source'] = null; + _p.arrowBounds['mid-target'] = null; + } + + this.emitAndNotify('bounds'); + return this; +}; + +elesfn$k.shiftCachedBoundingBox = function (delta) { + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var _p = ele._private; + var bb = _p.bbCache; + + if (bb != null) { + _p.bbCacheShift.x += delta.x; + _p.bbCacheShift.y += delta.y; + } + } + + this.emitAndNotify('bounds'); + return this; +}; // private helper to get bounding box for custom node positions +// - good for perf in certain cases but currently requires dirtying the rendered style +// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer... +// - try to use for only things like discrete layouts where the node position would change anyway + + +elesfn$k.boundingBoxAt = function (fn) { + var nodes = this.nodes(); + var cy = this.cy(); + var hasCompoundNodes = cy.hasCompoundNodes(); + + if (hasCompoundNodes) { + nodes = nodes.filter(function (node) { + return !node.isParent(); + }); + } + + if (plainObject(fn)) { + var obj = fn; + + fn = function fn() { + return obj; + }; + } + + var storeOldPos = function storeOldPos(node, i) { + return node._private.bbAtOldPos = fn(node, i); + }; + + var getOldPos = function getOldPos(node) { + return node._private.bbAtOldPos; + }; + + cy.startBatch(); + nodes.forEach(storeOldPos).silentPositions(fn); + + if (hasCompoundNodes) { + this.updateCompoundBounds(true); // force update b/c we're inside a batch cycle + } + + var bb = copyBoundingBox(this.boundingBox({ + useCache: false + })); + nodes.silentPositions(getOldPos); + cy.endBatch(); + return bb; +}; + +fn$3.boundingbox = fn$3.bb = fn$3.boundingBox; +fn$3.renderedBoundingbox = fn$3.renderedBoundingBox; +var bounds = elesfn$k; + +var fn$4, elesfn$l; +fn$4 = elesfn$l = {}; + +var defineDimFns = function defineDimFns(opts) { + opts.uppercaseName = capitalize(opts.name); + opts.autoName = 'auto' + opts.uppercaseName; + opts.labelName = 'label' + opts.uppercaseName; + opts.outerName = 'outer' + opts.uppercaseName; + opts.uppercaseOuterName = capitalize(opts.outerName); + + fn$4[opts.name] = function dimImpl() { + var ele = this[0]; + var _p = ele._private; + var cy = _p.cy; + var styleEnabled = cy._private.styleEnabled; + + if (ele) { + if (styleEnabled) { + if (ele.isParent()) { + ele.updateCompoundBounds(); + return _p[opts.autoName] || 0; + } + + var d = ele.pstyle(opts.name); + + switch (d.strValue) { + case 'label': + ele.recalculateRenderedStyle(); + return _p.rstyle[opts.labelName] || 0; + + default: + return d.pfValue; + } + } else { + return 1; + } + } + }; + + fn$4['outer' + opts.uppercaseName] = function outerDimImpl() { + var ele = this[0]; + var _p = ele._private; + var cy = _p.cy; + var styleEnabled = cy._private.styleEnabled; + + if (ele) { + if (styleEnabled) { + var dim = ele[opts.name](); + var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side + + var padding = 2 * ele.padding(); + return dim + border + padding; + } else { + return 1; + } + } + }; + + fn$4['rendered' + opts.uppercaseName] = function renderedDimImpl() { + var ele = this[0]; + + if (ele) { + var d = ele[opts.name](); + return d * this.cy().zoom(); + } + }; + + fn$4['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() { + var ele = this[0]; + + if (ele) { + var od = ele[opts.outerName](); + return od * this.cy().zoom(); + } + }; +}; + +defineDimFns({ + name: 'width' +}); +defineDimFns({ + name: 'height' +}); + +elesfn$l.padding = function () { + var ele = this[0]; + var _p = ele._private; + + if (ele.isParent()) { + ele.updateCompoundBounds(); + + if (_p.autoPadding !== undefined) { + return _p.autoPadding; + } else { + return ele.pstyle('padding').pfValue; + } + } else { + return ele.pstyle('padding').pfValue; + } +}; + +elesfn$l.paddedHeight = function () { + var ele = this[0]; + return ele.height() + 2 * ele.padding(); +}; + +elesfn$l.paddedWidth = function () { + var ele = this[0]; + return ele.width() + 2 * ele.padding(); +}; + +var widthHeight = elesfn$l; + +var ifEdge = function ifEdge(ele, getValue) { + if (ele.isEdge()) { + return getValue(ele); + } +}; + +var ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) { + if (ele.isEdge()) { + var cy = ele.cy(); + return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan()); + } +}; + +var ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) { + if (ele.isEdge()) { + var cy = ele.cy(); + var pan = cy.pan(); + var zoom = cy.zoom(); + return getPoints(ele).map(function (p) { + return modelToRenderedPosition(p, zoom, pan); + }); + } +}; + +var controlPoints = function controlPoints(ele) { + return ele.renderer().getControlPoints(ele); +}; + +var segmentPoints = function segmentPoints(ele) { + return ele.renderer().getSegmentPoints(ele); +}; + +var sourceEndpoint = function sourceEndpoint(ele) { + return ele.renderer().getSourceEndpoint(ele); +}; + +var targetEndpoint = function targetEndpoint(ele) { + return ele.renderer().getTargetEndpoint(ele); +}; + +var midpoint = function midpoint(ele) { + return ele.renderer().getEdgeMidpoint(ele); +}; + +var pts = { + controlPoints: { + get: controlPoints, + mult: true + }, + segmentPoints: { + get: segmentPoints, + mult: true + }, + sourceEndpoint: { + get: sourceEndpoint + }, + targetEndpoint: { + get: targetEndpoint + }, + midpoint: { + get: midpoint + } +}; + +var renderedName = function renderedName(name) { + return 'rendered' + name[0].toUpperCase() + name.substr(1); +}; + +var edgePoints = Object.keys(pts).reduce(function (obj, name) { + var spec = pts[name]; + var rName = renderedName(name); + + obj[name] = function () { + return ifEdge(this, spec.get); + }; + + if (spec.mult) { + obj[rName] = function () { + return ifEdgeRenderedPositions(this, spec.get); + }; + } else { + obj[rName] = function () { + return ifEdgeRenderedPosition(this, spec.get); + }; + } + + return obj; +}, {}); + +var dimensions = extend({}, position, bounds, widthHeight, edgePoints); + +/*! +Event object based on jQuery events, MIT license + +https://jquery.org/license/ +https://tldrlegal.com/license/mit-license +https://github.com/jquery/jquery/blob/master/src/event.js +*/ +var Event = function Event(src, props) { + this.recycle(src, props); +}; + +function returnFalse() { + return false; +} + +function returnTrue() { + return true; +} // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html + + +Event.prototype = { + instanceString: function instanceString() { + return 'event'; + }, + recycle: function recycle(src, props) { + this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse; + + if (src != null && src.preventDefault) { + // Browser Event object + this.type = src.type; // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + + this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse; + } else if (src != null && src.type) { + // Plain object containing all event details + props = src; + } else { + // Event string + this.type = src; + } // Put explicitly provided properties onto the event object + + + if (props != null) { + // more efficient to manually copy fields we use + this.originalEvent = props.originalEvent; + this.type = props.type != null ? props.type : this.type; + this.cy = props.cy; + this.target = props.target; + this.position = props.position; + this.renderedPosition = props.renderedPosition; + this.namespace = props.namespace; + this.layout = props.layout; + } + + if (this.cy != null && this.position != null && this.renderedPosition == null) { + // create a rendered position based on the passed position + var pos = this.position; + var zoom = this.cy.zoom(); + var pan = this.cy.pan(); + this.renderedPosition = { + x: pos.x * zoom + pan.x, + y: pos.y * zoom + pan.y + }; + } // Create a timestamp if incoming event doesn't have one + + + this.timeStamp = src && src.timeStamp || Date.now(); + }, + preventDefault: function preventDefault() { + this.isDefaultPrevented = returnTrue; + var e = this.originalEvent; + + if (!e) { + return; + } // if preventDefault exists run it on the original event + + + if (e.preventDefault) { + e.preventDefault(); + } + }, + stopPropagation: function stopPropagation() { + this.isPropagationStopped = returnTrue; + var e = this.originalEvent; + + if (!e) { + return; + } // if stopPropagation exists run it on the original event + + + if (e.stopPropagation) { + e.stopPropagation(); + } + }, + stopImmediatePropagation: function stopImmediatePropagation() { + this.isImmediatePropagationStopped = returnTrue; + this.stopPropagation(); + }, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse +}; + +var eventRegex = /^([^.]+)(\.(?:[^.]+))?$/; // regex for matching event strings (e.g. "click.namespace") + +var universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally + +var defaults$8 = { + qualifierCompare: function qualifierCompare(q1, q2) { + return q1 === q2; + }, + eventMatches: function eventMatches() + /*context, listener, eventObj*/ + { + return true; + }, + addEventFields: function addEventFields() + /*context, evt*/ + {}, + callbackContext: function callbackContext(context + /*, listener, eventObj*/ + ) { + return context; + }, + beforeEmit: function beforeEmit() + /* context, listener, eventObj */ + {}, + afterEmit: function afterEmit() + /* context, listener, eventObj */ + {}, + bubble: function bubble() + /*context*/ + { + return false; + }, + parent: function parent() + /*context*/ + { + return null; + }, + context: null +}; +var defaultsKeys = Object.keys(defaults$8); +var emptyOpts = {}; + +function Emitter() { + var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts; + var context = arguments.length > 1 ? arguments[1] : undefined; + + // micro-optimisation vs Object.assign() -- reduces Element instantiation time + for (var i = 0; i < defaultsKeys.length; i++) { + var key = defaultsKeys[i]; + this[key] = opts[key] || defaults$8[key]; + } + + this.context = context || this.context; + this.listeners = []; + this.emitting = 0; +} + +var p = Emitter.prototype; + +var forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) { + if (fn(qualifier)) { + callback = qualifier; + qualifier = null; + } + + if (confOverrides) { + if (conf == null) { + conf = confOverrides; + } else { + conf = extend({}, conf, confOverrides); + } + } + + var eventList = array(events) ? events : events.split(/\s+/); + + for (var i = 0; i < eventList.length; i++) { + var evt = eventList[i]; + + if (emptyString(evt)) { + continue; + } + + var match = evt.match(eventRegex); // type[.namespace] + + if (match) { + var type = match[1]; + var namespace = match[2] ? match[2] : null; + var ret = handler(self, evt, type, namespace, qualifier, callback, conf); + + if (ret === false) { + break; + } // allow exiting early + + } + } +}; + +var makeEventObj = function makeEventObj(self, obj) { + self.addEventFields(self.context, obj); + return new Event(obj.type, obj); +}; + +var forEachEventObj = function forEachEventObj(self, handler, events) { + if (event(events)) { + handler(self, events); + return; + } else if (plainObject(events)) { + handler(self, makeEventObj(self, events)); + return; + } + + var eventList = array(events) ? events : events.split(/\s+/); + + for (var i = 0; i < eventList.length; i++) { + var evt = eventList[i]; + + if (emptyString(evt)) { + continue; + } + + var match = evt.match(eventRegex); // type[.namespace] + + if (match) { + var type = match[1]; + var namespace = match[2] ? match[2] : null; + var eventObj = makeEventObj(self, { + type: type, + namespace: namespace, + target: self.context + }); + handler(self, eventObj); + } + } +}; + +p.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) { + forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) { + if (fn(callback)) { + self.listeners.push({ + event: event, + // full event string + callback: callback, + // callback to run + type: type, + // the event type (e.g. 'click') + namespace: namespace, + // the event namespace (e.g. ".foo") + qualifier: qualifier, + // a restriction on whether to match this emitter + conf: conf // additional configuration + + }); + } + }, events, qualifier, callback, conf, confOverrides); + return this; +}; + +p.one = function (events, qualifier, callback, conf) { + return this.on(events, qualifier, callback, conf, { + one: true + }); +}; + +p.removeListener = p.off = function (events, qualifier, callback, conf) { + var _this = this; + + if (this.emitting !== 0) { + this.listeners = copyArray(this.listeners); + } + + var listeners = this.listeners; + + var _loop = function _loop(i) { + var listener = listeners[i]; + forEachEvent(_this, function (self, event, type, namespace, qualifier, callback + /*, conf*/ + ) { + if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) { + listeners.splice(i, 1); + return false; + } + }, events, qualifier, callback, conf); + }; + + for (var i = listeners.length - 1; i >= 0; i--) { + _loop(i); + } + + return this; +}; + +p.removeAllListeners = function () { + return this.removeListener('*'); +}; + +p.emit = p.trigger = function (events, extraParams, manualCallback) { + var listeners = this.listeners; + var numListenersBeforeEmit = listeners.length; + this.emitting++; + + if (!array(extraParams)) { + extraParams = [extraParams]; + } + + forEachEventObj(this, function (self, eventObj) { + if (manualCallback != null) { + listeners = [{ + event: eventObj.event, + type: eventObj.type, + namespace: eventObj.namespace, + callback: manualCallback + }]; + numListenersBeforeEmit = listeners.length; + } + + var _loop2 = function _loop2(i) { + var listener = listeners[i]; + + if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) { + var args = [eventObj]; + + if (extraParams != null) { + push(args, extraParams); + } + + self.beforeEmit(self.context, listener, eventObj); + + if (listener.conf && listener.conf.one) { + self.listeners = self.listeners.filter(function (l) { + return l !== listener; + }); + } + + var context = self.callbackContext(self.context, listener, eventObj); + var ret = listener.callback.apply(context, args); + self.afterEmit(self.context, listener, eventObj); + + if (ret === false) { + eventObj.stopPropagation(); + eventObj.preventDefault(); + } + } // if listener matches + + }; + + for (var i = 0; i < numListenersBeforeEmit; i++) { + _loop2(i); + } // for listener + + + if (self.bubble(self.context) && !eventObj.isPropagationStopped()) { + self.parent(self.context).emit(eventObj, extraParams); + } + }, events); + this.emitting--; + return this; +}; + +var emitterOptions = { + qualifierCompare: function qualifierCompare(selector1, selector2) { + if (selector1 == null || selector2 == null) { + return selector1 == null && selector2 == null; + } else { + return selector1.sameText(selector2); + } + }, + eventMatches: function eventMatches(ele, listener, eventObj) { + var selector = listener.qualifier; + + if (selector != null) { + return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); + } + + return true; + }, + addEventFields: function addEventFields(ele, evt) { + evt.cy = ele.cy(); + evt.target = ele; + }, + callbackContext: function callbackContext(ele, listener, eventObj) { + return listener.qualifier != null ? eventObj.target : ele; + }, + beforeEmit: function beforeEmit(context, listener + /*, eventObj*/ + ) { + if (listener.conf && listener.conf.once) { + listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback); + } + }, + bubble: function bubble() { + return true; + }, + parent: function parent(ele) { + return ele.isChild() ? ele.parent() : ele.cy(); + } +}; + +var argSelector = function argSelector(arg) { + if (string(arg)) { + return new Selector(arg); + } else { + return arg; + } +}; + +var elesfn$m = { + createEmitter: function createEmitter() { + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var _p = ele._private; + + if (!_p.emitter) { + _p.emitter = new Emitter(emitterOptions, ele); + } + } + + return this; + }, + emitter: function emitter() { + return this._private.emitter; + }, + on: function on(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().on(events, argSel, callback); + } + + return this; + }, + removeListener: function removeListener(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().removeListener(events, argSel, callback); + } + + return this; + }, + removeAllListeners: function removeAllListeners() { + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().removeAllListeners(); + } + + return this; + }, + one: function one(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().one(events, argSel, callback); + } + + return this; + }, + once: function once(events, selector, callback) { + var argSel = argSelector(selector); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().on(events, argSel, callback, { + once: true, + onceCollection: this + }); + } + }, + emit: function emit(events, extraParams) { + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + ele.emitter().emit(events, extraParams); + } + + return this; + }, + emitAndNotify: function emitAndNotify(event, extraParams) { + // for internal use only + if (this.length === 0) { + return; + } // empty collections don't need to notify anything + // notify renderer + + + this.cy().notify(event, this); + this.emit(event, extraParams); + return this; + } +}; +define$3.eventAliasesOn(elesfn$m); + +var elesfn$n = { + nodes: function nodes(selector) { + return this.filter(function (ele) { + return ele.isNode(); + }).filter(selector); + }, + edges: function edges(selector) { + return this.filter(function (ele) { + return ele.isEdge(); + }).filter(selector); + }, + // internal helper to get nodes and edges as separate collections with single iteration over elements + byGroup: function byGroup() { + var nodes = this.spawn(); + var edges = this.spawn(); + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + + if (ele.isNode()) { + nodes.push(ele); + } else { + edges.push(ele); + } + } + + return { + nodes: nodes, + edges: edges + }; + }, + filter: function filter(_filter, thisArg) { + if (_filter === undefined) { + // check this first b/c it's the most common/performant case + return this; + } else if (string(_filter) || elementOrCollection(_filter)) { + return new Selector(_filter).filter(this); + } else if (fn(_filter)) { + var filterEles = this.spawn(); + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles); + + if (include) { + filterEles.push(ele); + } + } + + return filterEles; + } + + return this.spawn(); // if not handled by above, give 'em an empty collection + }, + not: function not(toRemove) { + if (!toRemove) { + return this; + } else { + if (string(toRemove)) { + toRemove = this.filter(toRemove); + } + + var elements = this.spawn(); + + for (var i = 0; i < this.length; i++) { + var element = this[i]; + var remove = toRemove.has(element); + + if (!remove) { + elements.push(element); + } + } + + return elements; + } + }, + absoluteComplement: function absoluteComplement() { + var cy = this.cy(); + return cy.mutableElements().not(this); + }, + intersect: function intersect(other) { + // if a selector is specified, then filter by it instead + if (string(other)) { + var selector = other; + return this.filter(selector); + } + + var elements = this.spawn(); + var col1 = this; + var col2 = other; + var col1Smaller = this.length < other.length; + var colS = col1Smaller ? col1 : col2; + var colL = col1Smaller ? col2 : col1; + + for (var i = 0; i < colS.length; i++) { + var ele = colS[i]; + + if (colL.has(ele)) { + elements.push(ele); + } + } + + return elements; + }, + xor: function xor(other) { + var cy = this._private.cy; + + if (string(other)) { + other = cy.$(other); + } + + var elements = this.spawn(); + var col1 = this; + var col2 = other; + + var add = function add(col, other) { + for (var i = 0; i < col.length; i++) { + var ele = col[i]; + var id = ele._private.data.id; + var inOther = other.hasElementWithId(id); + + if (!inOther) { + elements.push(ele); + } + } + }; + + add(col1, col2); + add(col2, col1); + return elements; + }, + diff: function diff(other) { + var cy = this._private.cy; + + if (string(other)) { + other = cy.$(other); + } + + var left = this.spawn(); + var right = this.spawn(); + var both = this.spawn(); + var col1 = this; + var col2 = other; + + var add = function add(col, other, retEles) { + for (var i = 0; i < col.length; i++) { + var ele = col[i]; + var id = ele._private.data.id; + var inOther = other.hasElementWithId(id); + + if (inOther) { + both.merge(ele); + } else { + retEles.push(ele); + } + } + }; + + add(col1, col2, left); + add(col2, col1, right); + return { + left: left, + right: right, + both: both + }; + }, + add: function add(toAdd) { + var cy = this._private.cy; + + if (!toAdd) { + return this; + } + + if (string(toAdd)) { + var selector = toAdd; + toAdd = cy.mutableElements().filter(selector); + } + + var elements = this.spawnSelf(); + + for (var i = 0; i < toAdd.length; i++) { + var ele = toAdd[i]; + var add = !this.has(ele); + + if (add) { + elements.push(ele); + } + } + + return elements; + }, + // in place merge on calling collection + merge: function merge(toAdd) { + var _p = this._private; + var cy = _p.cy; + + if (!toAdd) { + return this; + } + + if (toAdd && string(toAdd)) { + var selector = toAdd; + toAdd = cy.mutableElements().filter(selector); + } + + var map = _p.map; + + for (var i = 0; i < toAdd.length; i++) { + var toAddEle = toAdd[i]; + var id = toAddEle._private.data.id; + var add = !map.has(id); + + if (add) { + var index = this.length++; + this[index] = toAddEle; + map.set(id, { + ele: toAddEle, + index: index + }); + } + } + + return this; // chaining + }, + unmergeAt: function unmergeAt(i) { + var ele = this[i]; + var id = ele.id(); + var _p = this._private; + var map = _p.map; // remove ele + + this[i] = undefined; + map["delete"](id); + var unmergedLastEle = i === this.length - 1; // replace empty spot with last ele in collection + + if (this.length > 1 && !unmergedLastEle) { + var lastEleI = this.length - 1; + var lastEle = this[lastEleI]; + var lastEleId = lastEle._private.data.id; + this[lastEleI] = undefined; + this[i] = lastEle; + map.set(lastEleId, { + ele: lastEle, + index: i + }); + } // the collection is now 1 ele smaller + + + this.length--; + return this; + }, + // remove single ele in place in calling collection + unmergeOne: function unmergeOne(ele) { + ele = ele[0]; + var _p = this._private; + var id = ele._private.data.id; + var map = _p.map; + var entry = map.get(id); + + if (!entry) { + return this; // no need to remove + } + + var i = entry.index; + this.unmergeAt(i); + return this; + }, + // remove eles in place on calling collection + unmerge: function unmerge(toRemove) { + var cy = this._private.cy; + + if (!toRemove) { + return this; + } + + if (toRemove && string(toRemove)) { + var selector = toRemove; + toRemove = cy.mutableElements().filter(selector); + } + + for (var i = 0; i < toRemove.length; i++) { + this.unmergeOne(toRemove[i]); + } + + return this; // chaining + }, + unmergeBy: function unmergeBy(toRmFn) { + for (var i = this.length - 1; i >= 0; i--) { + var ele = this[i]; + + if (toRmFn(ele)) { + this.unmergeAt(i); + } + } + + return this; + }, + map: function map(mapFn, thisArg) { + var arr = []; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles); + arr.push(ret); + } + + return arr; + }, + reduce: function reduce(fn, initialValue) { + var val = initialValue; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + val = fn(val, eles[i], i, eles); + } + + return val; + }, + max: function max(valFn, thisArg) { + var max = -Infinity; + var maxEle; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); + + if (val > max) { + max = val; + maxEle = ele; + } + } + + return { + value: max, + ele: maxEle + }; + }, + min: function min(valFn, thisArg) { + var min = Infinity; + var minEle; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); + + if (val < min) { + min = val; + minEle = ele; + } + } + + return { + value: min, + ele: minEle + }; + } +}; // aliases + +var fn$5 = elesfn$n; +fn$5['u'] = fn$5['|'] = fn$5['+'] = fn$5.union = fn$5.or = fn$5.add; +fn$5['\\'] = fn$5['!'] = fn$5['-'] = fn$5.difference = fn$5.relativeComplement = fn$5.subtract = fn$5.not; +fn$5['n'] = fn$5['&'] = fn$5['.'] = fn$5.and = fn$5.intersection = fn$5.intersect; +fn$5['^'] = fn$5['(+)'] = fn$5['(-)'] = fn$5.symmetricDifference = fn$5.symdiff = fn$5.xor; +fn$5.fnFilter = fn$5.filterFn = fn$5.stdFilter = fn$5.filter; +fn$5.complement = fn$5.abscomp = fn$5.absoluteComplement; + +var elesfn$o = { + isNode: function isNode() { + return this.group() === 'nodes'; + }, + isEdge: function isEdge() { + return this.group() === 'edges'; + }, + isLoop: function isLoop() { + return this.isEdge() && this.source()[0] === this.target()[0]; + }, + isSimple: function isSimple() { + return this.isEdge() && this.source()[0] !== this.target()[0]; + }, + group: function group() { + var ele = this[0]; + + if (ele) { + return ele._private.group; + } + } +}; + +/** + * Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges), + * and z-index (low to high). These styles affect how this applies: + * + * z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the + * same depth as the root of the compound graph, followed by the default value `auto` which draws in order from + * root to leaves of the compound graph. The last drawn is `top`. + * z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes. + * `manual` ignores this convention and draws based on the `z-index` value setting. + * z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher + * `z-index` will be drawn on top of an element with a lower `z-index`. + */ + +var zIndexSort = function zIndexSort(a, b) { + var cy = a.cy(); + var hasCompoundNodes = cy.hasCompoundNodes(); + + function getDepth(ele) { + var style = ele.pstyle('z-compound-depth'); + + if (style.value === 'auto') { + return hasCompoundNodes ? ele.zDepth() : 0; + } else if (style.value === 'bottom') { + return -1; + } else if (style.value === 'top') { + return MAX_INT; + } // 'orphan' + + + return 0; + } + + var depthDiff = getDepth(a) - getDepth(b); + + if (depthDiff !== 0) { + return depthDiff; + } + + function getEleDepth(ele) { + var style = ele.pstyle('z-index-compare'); + + if (style.value === 'auto') { + return ele.isNode() ? 1 : 0; + } // 'manual' + + + return 0; + } + + var eleDiff = getEleDepth(a) - getEleDepth(b); + + if (eleDiff !== 0) { + return eleDiff; + } + + var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value; + + if (zDiff !== 0) { + return zDiff; + } // compare indices in the core (order added to graph w/ last on top) + + + return a.poolIndex() - b.poolIndex(); +}; + +var elesfn$p = { + forEach: function forEach(fn$1, thisArg) { + if (fn(fn$1)) { + var N = this.length; + + for (var i = 0; i < N; i++) { + var ele = this[i]; + var ret = thisArg ? fn$1.apply(thisArg, [ele, i, this]) : fn$1(ele, i, this); + + if (ret === false) { + break; + } // exit each early on return false + + } + } + + return this; + }, + toArray: function toArray() { + var array = []; + + for (var i = 0; i < this.length; i++) { + array.push(this[i]); + } + + return array; + }, + slice: function slice(start, end) { + var array = []; + var thisSize = this.length; + + if (end == null) { + end = thisSize; + } + + if (start == null) { + start = 0; + } + + if (start < 0) { + start = thisSize + start; + } + + if (end < 0) { + end = thisSize + end; + } + + for (var i = start; i >= 0 && i < end && i < thisSize; i++) { + array.push(this[i]); + } + + return this.spawn(array); + }, + size: function size() { + return this.length; + }, + eq: function eq(i) { + return this[i] || this.spawn(); + }, + first: function first() { + return this[0] || this.spawn(); + }, + last: function last() { + return this[this.length - 1] || this.spawn(); + }, + empty: function empty() { + return this.length === 0; + }, + nonempty: function nonempty() { + return !this.empty(); + }, + sort: function sort(sortFn) { + if (!fn(sortFn)) { + return this; + } + + var sorted = this.toArray().sort(sortFn); + return this.spawn(sorted); + }, + sortByZIndex: function sortByZIndex() { + return this.sort(zIndexSort); + }, + zDepth: function zDepth() { + var ele = this[0]; + + if (!ele) { + return undefined; + } // let cy = ele.cy(); + + + var _p = ele._private; + var group = _p.group; + + if (group === 'nodes') { + var depth = _p.data.parent ? ele.parents().size() : 0; + + if (!ele.isParent()) { + return MAX_INT - 1; // childless nodes always on top + } + + return depth; + } else { + var src = _p.source; + var tgt = _p.target; + var srcDepth = src.zDepth(); + var tgtDepth = tgt.zDepth(); + return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent + } + } +}; +elesfn$p.each = elesfn$p.forEach; + +var defineSymbolIterator = function defineSymbolIterator() { + var typeofUndef = "undefined" ; + var isIteratorSupported = (typeof Symbol === "undefined" ? "undefined" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; // eslint-disable-line no-undef + + if (isIteratorSupported) { + elesfn$p[Symbol.iterator] = function () { + var _this = this; + + // eslint-disable-line no-undef + var entry = { + value: undefined, + done: false + }; + var i = 0; + var length = this.length; + return _defineProperty({ + next: function next() { + if (i < length) { + entry.value = _this[i++]; + } else { + entry.value = undefined; + entry.done = true; + } + + return entry; + } + }, Symbol.iterator, function () { + // eslint-disable-line no-undef + return this; + }); + }; + } +}; + +defineSymbolIterator(); + +var getLayoutDimensionOptions = defaults({ + nodeDimensionsIncludeLabels: false +}); +var elesfn$q = { + // Calculates and returns node dimensions { x, y } based on options given + layoutDimensions: function layoutDimensions(options) { + options = getLayoutDimensionOptions(options); + var dims; + + if (!this.takesUpSpace()) { + dims = { + w: 0, + h: 0 + }; + } else if (options.nodeDimensionsIncludeLabels) { + var bbDim = this.boundingBox(); + dims = { + w: bbDim.w, + h: bbDim.h + }; + } else { + dims = { + w: this.outerWidth(), + h: this.outerHeight() + }; + } // sanitise the dimensions for external layouts (avoid division by zero) + + + if (dims.w === 0 || dims.h === 0) { + dims.w = dims.h = 1; + } + + return dims; + }, + // using standard layout options, apply position function (w/ or w/o animation) + layoutPositions: function layoutPositions(layout, options, fn) { + var nodes = this.nodes(); + var cy = this.cy(); + var layoutEles = options.eles; // nodes & edges + + var getMemoizeKey = function getMemoizeKey(node) { + return node.id(); + }; + + var fnMem = memoize(fn, getMemoizeKey); // memoized version of position function + + layout.emit({ + type: 'layoutstart', + layout: layout + }); + layout.animations = []; + + var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) { + var center = { + x: nodesBb.x1 + nodesBb.w / 2, + y: nodesBb.y1 + nodesBb.h / 2 + }; + var spacingVector = { + // scale from center of bounding box (not necessarily 0,0) + x: (pos.x - center.x) * spacing, + y: (pos.y - center.y) * spacing + }; + return { + x: center.x + spacingVector.x, + y: center.y + spacingVector.y + }; + }; + + var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1; + + var spacingBb = function spacingBb() { + if (!useSpacingFactor) { + return null; + } + + var bb = makeBoundingBox(); + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var pos = fnMem(node, i); + expandBoundingBoxByPoint(bb, pos.x, pos.y); + } + + return bb; + }; + + var bb = spacingBb(); + var getFinalPos = memoize(function (node, i) { + var newPos = fnMem(node, i); + + if (useSpacingFactor) { + var spacing = Math.abs(options.spacingFactor); + newPos = calculateSpacing(spacing, bb, newPos); + } + + if (options.transform != null) { + newPos = options.transform(node, newPos); + } + + return newPos; + }, getMemoizeKey); + + if (options.animate) { + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var newPos = getFinalPos(node, i); + var animateNode = options.animateFilter == null || options.animateFilter(node, i); + + if (animateNode) { + var ani = node.animation({ + position: newPos, + duration: options.animationDuration, + easing: options.animationEasing + }); + layout.animations.push(ani); + } else { + node.position(newPos); + } + } + + if (options.fit) { + var fitAni = cy.animation({ + fit: { + boundingBox: layoutEles.boundingBoxAt(getFinalPos), + padding: options.padding + }, + duration: options.animationDuration, + easing: options.animationEasing + }); + layout.animations.push(fitAni); + } else if (options.zoom !== undefined && options.pan !== undefined) { + var zoomPanAni = cy.animation({ + zoom: options.zoom, + pan: options.pan, + duration: options.animationDuration, + easing: options.animationEasing + }); + layout.animations.push(zoomPanAni); + } + + layout.animations.forEach(function (ani) { + return ani.play(); + }); + layout.one('layoutready', options.ready); + layout.emit({ + type: 'layoutready', + layout: layout + }); + Promise$1.all(layout.animations.map(function (ani) { + return ani.promise(); + })).then(function () { + layout.one('layoutstop', options.stop); + layout.emit({ + type: 'layoutstop', + layout: layout + }); + }); + } else { + nodes.positions(getFinalPos); + + if (options.fit) { + cy.fit(options.eles, options.padding); + } + + if (options.zoom != null) { + cy.zoom(options.zoom); + } + + if (options.pan) { + cy.pan(options.pan); + } + + layout.one('layoutready', options.ready); + layout.emit({ + type: 'layoutready', + layout: layout + }); + layout.one('layoutstop', options.stop); + layout.emit({ + type: 'layoutstop', + layout: layout + }); + } + + return this; // chaining + }, + layout: function layout(options) { + var cy = this.cy(); + return cy.makeLayout(extend({}, options, { + eles: this + })); + } +}; // aliases: + +elesfn$q.createLayout = elesfn$q.makeLayout = elesfn$q.layout; + +function styleCache(key, fn, ele) { + var _p = ele._private; + var cache = _p.styleCache = _p.styleCache || []; + var val; + + if ((val = cache[key]) != null) { + return val; + } else { + val = cache[key] = fn(ele); + return val; + } +} + +function cacheStyleFunction(key, fn) { + key = hashString(key); + return function cachedStyleFunction(ele) { + return styleCache(key, fn, ele); + }; +} + +function cachePrototypeStyleFunction(key, fn) { + key = hashString(key); + + var selfFn = function selfFn(ele) { + return fn.call(ele); + }; + + return function cachedPrototypeStyleFunction() { + var ele = this[0]; + + if (ele) { + return styleCache(key, selfFn, ele); + } + }; +} + +var elesfn$r = { + recalculateRenderedStyle: function recalculateRenderedStyle(useCache) { + var cy = this.cy(); + var renderer = cy.renderer(); + var styleEnabled = cy.styleEnabled(); + + if (renderer && styleEnabled) { + renderer.recalculateRenderedStyle(this, useCache); + } + + return this; + }, + dirtyStyleCache: function dirtyStyleCache() { + var cy = this.cy(); + + var dirty = function dirty(ele) { + return ele._private.styleCache = null; + }; + + if (cy.hasCompoundNodes()) { + var eles; + eles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); + eles.merge(eles.connectedEdges()); + eles.forEach(dirty); + } else { + this.forEach(function (ele) { + dirty(ele); + ele.connectedEdges().forEach(dirty); + }); + } + + return this; + }, + // fully updates (recalculates) the style for the elements + updateStyle: function updateStyle(notifyRenderer) { + var cy = this._private.cy; + + if (!cy.styleEnabled()) { + return this; + } + + if (cy.batching()) { + var bEles = cy._private.batchStyleEles; + bEles.merge(this); + return this; // chaining and exit early when batching + } + + var hasCompounds = cy.hasCompoundNodes(); + var updatedEles = this; + notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false; + + if (hasCompounds) { + // then add everything up and down for compound selector checks + updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); + } // let changedEles = style.apply( updatedEles ); + + + var changedEles = updatedEles; + + if (notifyRenderer) { + changedEles.emitAndNotify('style'); // let renderer know we changed style + } else { + changedEles.emit('style'); // just fire the event + } + + updatedEles.forEach(function (ele) { + return ele._private.styleDirty = true; + }); + return this; // chaining + }, + // get the internal parsed style object for the specified property + parsedStyle: function parsedStyle(property) { + var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var ele = this[0]; + var cy = ele.cy(); + + if (!cy.styleEnabled()) { + return; + } + + if (ele) { + if (ele._private.styleDirty) { + ele._private.styleDirty = false; + cy.style().apply(ele); + ele.emitAndNotify('style'); + } + + var overriddenStyle = ele._private.style[property]; + + if (overriddenStyle != null) { + return overriddenStyle; + } else if (includeNonDefault) { + return cy.style().getDefaultProperty(property); + } else { + return null; + } + } + }, + numericStyle: function numericStyle(property) { + var ele = this[0]; + + if (!ele.cy().styleEnabled()) { + return; + } + + if (ele) { + var pstyle = ele.pstyle(property); + return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value; + } + }, + numericStyleUnits: function numericStyleUnits(property) { + var ele = this[0]; + + if (!ele.cy().styleEnabled()) { + return; + } + + if (ele) { + return ele.pstyle(property).units; + } + }, + // get the specified css property as a rendered value (i.e. on-screen value) + // or get the whole rendered style if no property specified (NB doesn't allow setting) + renderedStyle: function renderedStyle(property) { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return this; + } + + var ele = this[0]; + + if (ele) { + return cy.style().getRenderedStyle(ele, property); + } + }, + // read the calculated css style of the element or override the style (via a bypass) + style: function style(name, value) { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return this; + } + + var updateTransitions = false; + var style = cy.style(); + + if (plainObject(name)) { + // then extend the bypass + var props = name; + style.applyBypass(this, props, updateTransitions); + this.emitAndNotify('style'); // let the renderer know we've updated style + } else if (string(name)) { + if (value === undefined) { + // then get the property from the style + var ele = this[0]; + + if (ele) { + return style.getStylePropertyValue(ele, name); + } else { + // empty collection => can't get any value + return; + } + } else { + // then set the bypass with the property value + style.applyBypass(this, name, value, updateTransitions); + this.emitAndNotify('style'); // let the renderer know we've updated style + } + } else if (name === undefined) { + var _ele = this[0]; + + if (_ele) { + return style.getRawStyle(_ele); + } else { + // empty collection => can't get any value + return; + } + } + + return this; // chaining + }, + removeStyle: function removeStyle(names) { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return this; + } + + var updateTransitions = false; + var style = cy.style(); + var eles = this; + + if (names === undefined) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + style.removeAllBypasses(ele, updateTransitions); + } + } else { + names = names.split(/\s+/); + + for (var _i = 0; _i < eles.length; _i++) { + var _ele2 = eles[_i]; + style.removeBypasses(_ele2, names, updateTransitions); + } + } + + this.emitAndNotify('style'); // let the renderer know we've updated style + + return this; // chaining + }, + show: function show() { + this.css('display', 'element'); + return this; // chaining + }, + hide: function hide() { + this.css('display', 'none'); + return this; // chaining + }, + effectiveOpacity: function effectiveOpacity() { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return 1; + } + + var hasCompoundNodes = cy.hasCompoundNodes(); + var ele = this[0]; + + if (ele) { + var _p = ele._private; + var parentOpacity = ele.pstyle('opacity').value; + + if (!hasCompoundNodes) { + return parentOpacity; + } + + var parents = !_p.data.parent ? null : ele.parents(); + + if (parents) { + for (var i = 0; i < parents.length; i++) { + var parent = parents[i]; + var opacity = parent.pstyle('opacity').value; + parentOpacity = opacity * parentOpacity; + } + } + + return parentOpacity; + } + }, + transparent: function transparent() { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return false; + } + + var ele = this[0]; + var hasCompoundNodes = ele.cy().hasCompoundNodes(); + + if (ele) { + if (!hasCompoundNodes) { + return ele.pstyle('opacity').value === 0; + } else { + return ele.effectiveOpacity() === 0; + } + } + }, + backgrounding: function backgrounding() { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return false; + } + + var ele = this[0]; + return ele._private.backgrounding ? true : false; + } +}; + +function checkCompound(ele, parentOk) { + var _p = ele._private; + var parents = _p.data.parent ? ele.parents() : null; + + if (parents) { + for (var i = 0; i < parents.length; i++) { + var parent = parents[i]; + + if (!parentOk(parent)) { + return false; + } + } + } + + return true; +} + +function defineDerivedStateFunction(specs) { + var ok = specs.ok; + var edgeOkViaNode = specs.edgeOkViaNode || specs.ok; + var parentOk = specs.parentOk || specs.ok; + return function () { + var cy = this.cy(); + + if (!cy.styleEnabled()) { + return true; + } + + var ele = this[0]; + var hasCompoundNodes = cy.hasCompoundNodes(); + + if (ele) { + var _p = ele._private; + + if (!ok(ele)) { + return false; + } + + if (ele.isNode()) { + return !hasCompoundNodes || checkCompound(ele, parentOk); + } else { + var src = _p.source; + var tgt = _p.target; + return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode))); + } + } + }; +} + +var eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) { + return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true); +}); +elesfn$r.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({ + ok: eleTakesUpSpace +})); +var eleInteractive = cacheStyleFunction('eleInteractive', function (ele) { + return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele); +}); +var parentInteractive = cacheStyleFunction('parentInteractive', function (parent) { + return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent); +}); +elesfn$r.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({ + ok: eleInteractive, + parentOk: parentInteractive, + edgeOkViaNode: eleTakesUpSpace +})); + +elesfn$r.noninteractive = function () { + var ele = this[0]; + + if (ele) { + return !ele.interactive(); + } +}; + +var eleVisible = cacheStyleFunction('eleVisible', function (ele) { + return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele); +}); +var edgeVisibleViaNode = eleTakesUpSpace; +elesfn$r.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({ + ok: eleVisible, + edgeOkViaNode: edgeVisibleViaNode +})); + +elesfn$r.hidden = function () { + var ele = this[0]; + + if (ele) { + return !ele.visible(); + } +}; + +elesfn$r.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () { + if (!this.cy().styleEnabled()) { + return false; + } + + return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace(); +}); +elesfn$r.bypass = elesfn$r.css = elesfn$r.style; +elesfn$r.renderedCss = elesfn$r.renderedStyle; +elesfn$r.removeBypass = elesfn$r.removeCss = elesfn$r.removeStyle; +elesfn$r.pstyle = elesfn$r.parsedStyle; + +var elesfn$s = {}; + +function defineSwitchFunction(params) { + return function () { + var args = arguments; + var changedEles = []; // e.g. cy.nodes().select( data, handler ) + + if (args.length === 2) { + var data = args[0]; + var handler = args[1]; + this.on(params.event, data, handler); + } // e.g. cy.nodes().select( handler ) + else if (args.length === 1 && fn(args[0])) { + var _handler = args[0]; + this.on(params.event, _handler); + } // e.g. cy.nodes().select() + // e.g. (private) cy.nodes().select(['tapselect']) + else if (args.length === 0 || args.length === 1 && array(args[0])) { + var addlEvents = args.length === 1 ? args[0] : null; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var able = !params.ableField || ele._private[params.ableField]; + var changed = ele._private[params.field] != params.value; + + if (params.overrideAble) { + var overrideAble = params.overrideAble(ele); + + if (overrideAble !== undefined) { + able = overrideAble; + + if (!overrideAble) { + return this; + } // to save cycles assume not able for all on override + + } + } + + if (able) { + ele._private[params.field] = params.value; + + if (changed) { + changedEles.push(ele); + } + } + } + + var changedColl = this.spawn(changedEles); + changedColl.updateStyle(); // change of state => possible change of style + + changedColl.emit(params.event); + + if (addlEvents) { + changedColl.emit(addlEvents); + } + } + + return this; + }; +} + +function defineSwitchSet(params) { + elesfn$s[params.field] = function () { + var ele = this[0]; + + if (ele) { + if (params.overrideField) { + var val = params.overrideField(ele); + + if (val !== undefined) { + return val; + } + } + + return ele._private[params.field]; + } + }; + + elesfn$s[params.on] = defineSwitchFunction({ + event: params.on, + field: params.field, + ableField: params.ableField, + overrideAble: params.overrideAble, + value: true + }); + elesfn$s[params.off] = defineSwitchFunction({ + event: params.off, + field: params.field, + ableField: params.ableField, + overrideAble: params.overrideAble, + value: false + }); +} + +defineSwitchSet({ + field: 'locked', + overrideField: function overrideField(ele) { + return ele.cy().autolock() ? true : undefined; + }, + on: 'lock', + off: 'unlock' +}); +defineSwitchSet({ + field: 'grabbable', + overrideField: function overrideField(ele) { + return ele.cy().autoungrabify() || ele.pannable() ? false : undefined; + }, + on: 'grabify', + off: 'ungrabify' +}); +defineSwitchSet({ + field: 'selected', + ableField: 'selectable', + overrideAble: function overrideAble(ele) { + return ele.cy().autounselectify() ? false : undefined; + }, + on: 'select', + off: 'unselect' +}); +defineSwitchSet({ + field: 'selectable', + overrideField: function overrideField(ele) { + return ele.cy().autounselectify() ? false : undefined; + }, + on: 'selectify', + off: 'unselectify' +}); +elesfn$s.deselect = elesfn$s.unselect; + +elesfn$s.grabbed = function () { + var ele = this[0]; + + if (ele) { + return ele._private.grabbed; + } +}; + +defineSwitchSet({ + field: 'active', + on: 'activate', + off: 'unactivate' +}); +defineSwitchSet({ + field: 'pannable', + on: 'panify', + off: 'unpanify' +}); + +elesfn$s.inactive = function () { + var ele = this[0]; + + if (ele) { + return !ele._private.active; + } +}; + +var elesfn$t = {}; // DAG functions +//////////////// + +var defineDagExtremity = function defineDagExtremity(params) { + return function dagExtremityImpl(selector) { + var eles = this; + var ret = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.isNode()) { + continue; + } + + var disqualified = false; + var edges = ele.connectedEdges(); + + for (var j = 0; j < edges.length; j++) { + var edge = edges[j]; + var src = edge.source(); + var tgt = edge.target(); + + if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) { + disqualified = true; + break; + } + } + + if (!disqualified) { + ret.push(ele); + } + } + + return this.spawn(ret, true).filter(selector); + }; +}; + +var defineDagOneHop = function defineDagOneHop(params) { + return function (selector) { + var eles = this; + var oEles = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.isNode()) { + continue; + } + + var edges = ele.connectedEdges(); + + for (var j = 0; j < edges.length; j++) { + var edge = edges[j]; + var src = edge.source(); + var tgt = edge.target(); + + if (params.outgoing && src === ele) { + oEles.push(edge); + oEles.push(tgt); + } else if (params.incoming && tgt === ele) { + oEles.push(edge); + oEles.push(src); + } + } + } + + return this.spawn(oEles, true).filter(selector); + }; +}; + +var defineDagAllHops = function defineDagAllHops(params) { + return function (selector) { + var eles = this; + var sEles = []; + var sElesIds = {}; + + for (;;) { + var next = params.outgoing ? eles.outgoers() : eles.incomers(); + + if (next.length === 0) { + break; + } // done if none left + + + var newNext = false; + + for (var i = 0; i < next.length; i++) { + var n = next[i]; + var nid = n.id(); + + if (!sElesIds[nid]) { + sElesIds[nid] = true; + sEles.push(n); + newNext = true; + } + } + + if (!newNext) { + break; + } // done if touched all outgoers already + + + eles = next; + } + + return this.spawn(sEles, true).filter(selector); + }; +}; + +elesfn$t.clearTraversalCache = function () { + for (var i = 0; i < this.length; i++) { + this[i]._private.traversalCache = null; + } +}; + +extend(elesfn$t, { + // get the root nodes in the DAG + roots: defineDagExtremity({ + noIncomingEdges: true + }), + // get the leaf nodes in the DAG + leaves: defineDagExtremity({ + noOutgoingEdges: true + }), + // normally called children in graph theory + // these nodes =edges=> outgoing nodes + outgoers: cache(defineDagOneHop({ + outgoing: true + }), 'outgoers'), + // aka DAG descendants + successors: defineDagAllHops({ + outgoing: true + }), + // normally called parents in graph theory + // these nodes <=edges= incoming nodes + incomers: cache(defineDagOneHop({ + incoming: true + }), 'incomers'), + // aka DAG ancestors + predecessors: defineDagAllHops({ + incoming: true + }) +}); // Neighbourhood functions +////////////////////////// + +extend(elesfn$t, { + neighborhood: cache(function (selector) { + var elements = []; + var nodes = this.nodes(); + + for (var i = 0; i < nodes.length; i++) { + // for all nodes + var node = nodes[i]; + var connectedEdges = node.connectedEdges(); // for each connected edge, add the edge and the other node + + for (var j = 0; j < connectedEdges.length; j++) { + var edge = connectedEdges[j]; + var src = edge.source(); + var tgt = edge.target(); + var otherNode = node === src ? tgt : src; // need check in case of loop + + if (otherNode.length > 0) { + elements.push(otherNode[0]); // add node 1 hop away + } // add connected edge + + + elements.push(edge[0]); + } + } + + return this.spawn(elements, true).filter(selector); + }, 'neighborhood'), + closedNeighborhood: function closedNeighborhood(selector) { + return this.neighborhood().add(this).filter(selector); + }, + openNeighborhood: function openNeighborhood(selector) { + return this.neighborhood(selector); + } +}); // aliases + +elesfn$t.neighbourhood = elesfn$t.neighborhood; +elesfn$t.closedNeighbourhood = elesfn$t.closedNeighborhood; +elesfn$t.openNeighbourhood = elesfn$t.openNeighborhood; // Edge functions +///////////////// + +extend(elesfn$t, { + source: cache(function sourceImpl(selector) { + var ele = this[0]; + var src; + + if (ele) { + src = ele._private.source || ele.cy().collection(); + } + + return src && selector ? src.filter(selector) : src; + }, 'source'), + target: cache(function targetImpl(selector) { + var ele = this[0]; + var tgt; + + if (ele) { + tgt = ele._private.target || ele.cy().collection(); + } + + return tgt && selector ? tgt.filter(selector) : tgt; + }, 'target'), + sources: defineSourceFunction({ + attr: 'source' + }), + targets: defineSourceFunction({ + attr: 'target' + }) +}); + +function defineSourceFunction(params) { + return function sourceImpl(selector) { + var sources = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var src = ele._private[params.attr]; + + if (src) { + sources.push(src); + } + } + + return this.spawn(sources, true).filter(selector); + }; +} + +extend(elesfn$t, { + edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'), + edgesTo: cache(defineEdgesWithFunction({ + thisIsSrc: true + }), 'edgesTo') +}); + +function defineEdgesWithFunction(params) { + return function edgesWithImpl(otherNodes) { + var elements = []; + var cy = this._private.cy; + var p = params || {}; // get elements if a selector is specified + + if (string(otherNodes)) { + otherNodes = cy.$(otherNodes); + } + + for (var h = 0; h < otherNodes.length; h++) { + var edges = otherNodes[h]._private.edges; + + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var edgeData = edge._private.data; + var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target); + var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target); + var edgeConnectsThisAndOther = thisToOther || otherToThis; + + if (!edgeConnectsThisAndOther) { + continue; + } + + if (p.thisIsSrc || p.thisIsTgt) { + if (p.thisIsSrc && !thisToOther) { + continue; + } + + if (p.thisIsTgt && !otherToThis) { + continue; + } + } + + elements.push(edge); + } + } + + return this.spawn(elements, true); + }; +} + +extend(elesfn$t, { + connectedEdges: cache(function (selector) { + var retEles = []; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var node = eles[i]; + + if (!node.isNode()) { + continue; + } + + var edges = node._private.edges; + + for (var j = 0; j < edges.length; j++) { + var edge = edges[j]; + retEles.push(edge); + } + } + + return this.spawn(retEles, true).filter(selector); + }, 'connectedEdges'), + connectedNodes: cache(function (selector) { + var retEles = []; + var eles = this; + + for (var i = 0; i < eles.length; i++) { + var edge = eles[i]; + + if (!edge.isEdge()) { + continue; + } + + retEles.push(edge.source()[0]); + retEles.push(edge.target()[0]); + } + + return this.spawn(retEles, true).filter(selector); + }, 'connectedNodes'), + parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'), + codirectedEdges: cache(defineParallelEdgesFunction({ + codirected: true + }), 'codirectedEdges') +}); + +function defineParallelEdgesFunction(params) { + var defaults = { + codirected: false + }; + params = extend({}, defaults, params); + return function parallelEdgesImpl(selector) { + // micro-optimised for renderer + var elements = []; + var edges = this.edges(); + var p = params; // look at all the edges in the collection + + for (var i = 0; i < edges.length; i++) { + var edge1 = edges[i]; + var edge1_p = edge1._private; + var src1 = edge1_p.source; + var srcid1 = src1._private.data.id; + var tgtid1 = edge1_p.data.target; + var srcEdges1 = src1._private.edges; // look at edges connected to the src node of this edge + + for (var j = 0; j < srcEdges1.length; j++) { + var edge2 = srcEdges1[j]; + var edge2data = edge2._private.data; + var tgtid2 = edge2data.target; + var srcid2 = edge2data.source; + var codirected = tgtid2 === tgtid1 && srcid2 === srcid1; + var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2; + + if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) { + elements.push(edge2); + } + } + } + + return this.spawn(elements, true).filter(selector); + }; +} // Misc functions +///////////////// + + +extend(elesfn$t, { + components: function components(root) { + var self = this; + var cy = self.cy(); + var visited = cy.collection(); + var unvisited = root == null ? self.nodes() : root.nodes(); + var components = []; + + if (root != null && unvisited.empty()) { + // root may contain only edges + unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides + } + + var visitInComponent = function visitInComponent(node, component) { + visited.merge(node); + unvisited.unmerge(node); + component.merge(node); + }; + + if (unvisited.empty()) { + return self.spawn(); + } + + var _loop = function _loop() { + // each iteration yields a component + var cmpt = cy.collection(); + components.push(cmpt); + var root = unvisited[0]; + visitInComponent(root, cmpt); + self.bfs({ + directed: false, + roots: root, + visit: function visit(v) { + return visitInComponent(v, cmpt); + } + }); + cmpt.forEach(function (node) { + node.connectedEdges().forEach(function (e) { + // connectedEdges() usually cached + if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) { + // has() is cheap + cmpt.merge(e); // forEach() only considers nodes -- sets N at call time + } + }); + }); + }; + + do { + _loop(); + } while (unvisited.length > 0); + + return components; + }, + component: function component() { + var ele = this[0]; + return ele.cy().mutableElements().components(ele)[0]; + } +}); +elesfn$t.componentsOf = elesfn$t.components; + +var Collection = function Collection(cy, elements) { + var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; + + if (cy === undefined) { + error('A collection must have a reference to the core'); + return; + } + + var map = new Map$1(); + var createdElements = false; + + if (!elements) { + elements = []; + } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) { + createdElements = true; // make elements from json and restore all at once later + + var eles = []; + var elesIds = new Set$1(); + + for (var i = 0, l = elements.length; i < l; i++) { + var json = elements[i]; + + if (json.data == null) { + json.data = {}; + } + + var _data = json.data; // make sure newly created elements have valid ids + + if (_data.id == null) { + _data.id = uuid(); + } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) { + continue; // can't create element if prior id already exists + } + + var ele = new Element(cy, json, false); + eles.push(ele); + elesIds.add(_data.id); + } + + elements = eles; + } + + this.length = 0; + + for (var _i = 0, _l = elements.length; _i < _l; _i++) { + var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements + + if (element$1 == null) { + continue; + } + + var id = element$1._private.data.id; + + if (!unique || !map.has(id)) { + if (unique) { + map.set(id, { + index: this.length, + ele: element$1 + }); + } + + this[this.length] = element$1; + this.length++; + } + } + + this._private = { + eles: this, + cy: cy, + + get map() { + if (this.lazyMap == null) { + this.rebuildMap(); + } + + return this.lazyMap; + }, + + set map(m) { + this.lazyMap = m; + }, + + rebuildMap: function rebuildMap() { + var m = this.lazyMap = new Map$1(); + var eles = this.eles; + + for (var _i2 = 0; _i2 < eles.length; _i2++) { + var _ele = eles[_i2]; + m.set(_ele.id(), { + index: _i2, + ele: _ele + }); + } + } + }; + + if (unique) { + this._private.map = map; + } // restore the elements if we created them from json + + + if (createdElements) { + this.restore(); + } +}; // Functions +//////////////////////////////////////////////////////////////////////////////////////////////////// +// keep the prototypes in sync (an element has the same functions as a collection) +// and use elefn and elesfn as shorthands to the prototypes + + +var elesfn$u = Element.prototype = Collection.prototype = Object.create(Array.prototype); + +elesfn$u.instanceString = function () { + return 'collection'; +}; + +elesfn$u.spawn = function (eles, unique) { + return new Collection(this.cy(), eles, unique); +}; + +elesfn$u.spawnSelf = function () { + return this.spawn(this); +}; + +elesfn$u.cy = function () { + return this._private.cy; +}; + +elesfn$u.renderer = function () { + return this._private.cy.renderer(); +}; + +elesfn$u.element = function () { + return this[0]; +}; + +elesfn$u.collection = function () { + if (collection(this)) { + return this; + } else { + // an element + return new Collection(this._private.cy, [this]); + } +}; + +elesfn$u.unique = function () { + return new Collection(this._private.cy, this, true); +}; + +elesfn$u.hasElementWithId = function (id) { + id = '' + id; // id must be string + + return this._private.map.has(id); +}; + +elesfn$u.getElementById = function (id) { + id = '' + id; // id must be string + + var cy = this._private.cy; + + var entry = this._private.map.get(id); + + return entry ? entry.ele : new Collection(cy); // get ele or empty collection +}; + +elesfn$u.$id = elesfn$u.getElementById; + +elesfn$u.poolIndex = function () { + var cy = this._private.cy; + var eles = cy._private.elements; + var id = this[0]._private.data.id; + return eles._private.map.get(id).index; +}; + +elesfn$u.indexOf = function (ele) { + var id = ele[0]._private.data.id; + return this._private.map.get(id).index; +}; + +elesfn$u.indexOfId = function (id) { + id = '' + id; // id must be string + + return this._private.map.get(id).index; +}; + +elesfn$u.json = function (obj) { + var ele = this.element(); + var cy = this.cy(); + + if (ele == null && obj) { + return this; + } // can't set to no eles + + + if (ele == null) { + return undefined; + } // can't get from no eles + + + var p = ele._private; + + if (plainObject(obj)) { + // set + cy.startBatch(); + + if (obj.data) { + ele.data(obj.data); + var _data2 = p.data; + + if (ele.isEdge()) { + // source and target are immutable via data() + var move = false; + var spec = {}; + var src = obj.data.source; + var tgt = obj.data.target; + + if (src != null && src != _data2.source) { + spec.source = '' + src; // id must be string + + move = true; + } + + if (tgt != null && tgt != _data2.target) { + spec.target = '' + tgt; // id must be string + + move = true; + } + + if (move) { + ele = ele.move(spec); + } + } else { + // parent is immutable via data() + var newParentValSpecd = 'parent' in obj.data; + var parent = obj.data.parent; + + if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) { + if (parent === undefined) { + // can't set undefined imperatively, so use null + parent = null; + } + + if (parent != null) { + parent = '' + parent; // id must be string + } + + ele = ele.move({ + parent: parent + }); + } + } + } + + if (obj.position) { + ele.position(obj.position); + } // ignore group -- immutable + + + var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) { + var obj_k = obj[k]; + + if (obj_k != null && obj_k !== p[k]) { + if (obj_k) { + ele[trueFnName](); + } else { + ele[falseFnName](); + } + } + }; + + checkSwitch('removed', 'remove', 'restore'); + checkSwitch('selected', 'select', 'unselect'); + checkSwitch('selectable', 'selectify', 'unselectify'); + checkSwitch('locked', 'lock', 'unlock'); + checkSwitch('grabbable', 'grabify', 'ungrabify'); + checkSwitch('pannable', 'panify', 'unpanify'); + + if (obj.classes != null) { + ele.classes(obj.classes); + } + + cy.endBatch(); + return this; + } else if (obj === undefined) { + // get + var json = { + data: copy(p.data), + position: copy(p.position), + group: p.group, + removed: p.removed, + selected: p.selected, + selectable: p.selectable, + locked: p.locked, + grabbable: p.grabbable, + pannable: p.pannable, + classes: null + }; + json.classes = ''; + var i = 0; + p.classes.forEach(function (cls) { + return json.classes += i++ === 0 ? cls : ' ' + cls; + }); + return json; + } +}; + +elesfn$u.jsons = function () { + var jsons = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var json = ele.json(); + jsons.push(json); + } + + return jsons; +}; + +elesfn$u.clone = function () { + var cy = this.cy(); + var elesArr = []; + + for (var i = 0; i < this.length; i++) { + var ele = this[i]; + var json = ele.json(); + var clone = new Element(cy, json, false); // NB no restore + + elesArr.push(clone); + } + + return new Collection(cy, elesArr); +}; + +elesfn$u.copy = elesfn$u.clone; + +elesfn$u.restore = function () { + var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var self = this; + var cy = self.cy(); + var cy_p = cy._private; // create arrays of nodes and edges, since we need to + // restore the nodes first + + var nodes = []; + var edges = []; + var elements; + + for (var _i3 = 0, l = self.length; _i3 < l; _i3++) { + var ele = self[_i3]; + + if (addToPool && !ele.removed()) { + // don't need to handle this ele + continue; + } // keep nodes first in the array and edges after + + + if (ele.isNode()) { + // put to front of array if node + nodes.push(ele); + } else { + // put to end of array if edge + edges.push(ele); + } + } + + elements = nodes.concat(edges); + var i; + + var removeFromElements = function removeFromElements() { + elements.splice(i, 1); + i--; + }; // now, restore each element + + + for (i = 0; i < elements.length; i++) { + var _ele2 = elements[i]; + var _private = _ele2._private; + var _data3 = _private.data; // the traversal cache should start fresh when ele is added + + _ele2.clearTraversalCache(); // set id and validate + + + if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) { + _data3.id = uuid(); + } else if (number(_data3.id)) { + _data3.id = '' + _data3.id; // now it's a string + } else if (emptyString(_data3.id) || !string(_data3.id)) { + error('Can not create element with invalid string ID `' + _data3.id + '`'); // can't create element if it has empty string as id or non-string id + + removeFromElements(); + continue; + } else if (cy.hasElementWithId(_data3.id)) { + error('Can not create second element with ID `' + _data3.id + '`'); // can't create element if one already has that id + + removeFromElements(); + continue; + } + + var id = _data3.id; // id is finalised, now let's keep a ref + + if (_ele2.isNode()) { + // extra checks for nodes + var pos = _private.position; // make sure the nodes have a defined position + + if (pos.x == null) { + pos.x = 0; + } + + if (pos.y == null) { + pos.y = 0; + } + } + + if (_ele2.isEdge()) { + // extra checks for edges + var edge = _ele2; + var fields = ['source', 'target']; + var fieldsLength = fields.length; + var badSourceOrTarget = false; + + for (var j = 0; j < fieldsLength; j++) { + var field = fields[j]; + var val = _data3[field]; + + if (number(val)) { + val = _data3[field] = '' + _data3[field]; // now string + } + + if (val == null || val === '') { + // can't create if source or target is not defined properly + error('Can not create edge `' + id + '` with unspecified ' + field); + badSourceOrTarget = true; + } else if (!cy.hasElementWithId(val)) { + // can't create edge if one of its nodes doesn't exist + error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`'); + badSourceOrTarget = true; + } + } + + if (badSourceOrTarget) { + removeFromElements(); + continue; + } // can't create this + + + var src = cy.getElementById(_data3.source); + var tgt = cy.getElementById(_data3.target); // only one edge in node if loop + + if (src.same(tgt)) { + src._private.edges.push(edge); + } else { + src._private.edges.push(edge); + + tgt._private.edges.push(edge); + } + + edge._private.source = src; + edge._private.target = tgt; + } // if is edge + // create mock ids / indexes maps for element so it can be used like collections + + + _private.map = new Map$1(); + + _private.map.set(id, { + ele: _ele2, + index: 0 + }); + + _private.removed = false; + + if (addToPool) { + cy.addToPool(_ele2); + } + } // for each element + // do compound node sanity checks + + + for (var _i4 = 0; _i4 < nodes.length; _i4++) { + // each node + var node = nodes[_i4]; + var _data4 = node._private.data; + + if (number(_data4.parent)) { + // then automake string + _data4.parent = '' + _data4.parent; + } + + var parentId = _data4.parent; + var specifiedParent = parentId != null; + + if (specifiedParent) { + var parent = cy.getElementById(parentId); + + if (parent.empty()) { + // non-existant parent; just remove it + _data4.parent = undefined; + } else { + var selfAsParent = false; + var ancestor = parent; + + while (!ancestor.empty()) { + if (node.same(ancestor)) { + // mark self as parent and remove from data + selfAsParent = true; + _data4.parent = undefined; // remove parent reference + // exit or we loop forever + + break; + } + + ancestor = ancestor.parent(); + } + + if (!selfAsParent) { + // connect with children + parent[0]._private.children.push(node); + + node._private.parent = parent[0]; // let the core know we have a compound graph + + cy_p.hasCompoundNodes = true; + } + } // else + + } // if specified parent + + } // for each node + + + if (elements.length > 0) { + var restored = elements.length === self.length ? self : new Collection(cy, elements); + + for (var _i5 = 0; _i5 < restored.length; _i5++) { + var _ele3 = restored[_i5]; + + if (_ele3.isNode()) { + continue; + } // adding an edge invalidates the traversal caches for the parallel edges + + + _ele3.parallelEdges().clearTraversalCache(); // adding an edge invalidates the traversal cache for the connected nodes + + + _ele3.source().clearTraversalCache(); + + _ele3.target().clearTraversalCache(); + } + + var toUpdateStyle; + + if (cy_p.hasCompoundNodes) { + toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent()); + } else { + toUpdateStyle = restored; + } + + toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer); + + if (notifyRenderer) { + restored.emitAndNotify('add'); + } else if (addToPool) { + restored.emit('add'); + } + } + + return self; // chainability +}; + +elesfn$u.removed = function () { + var ele = this[0]; + return ele && ele._private.removed; +}; + +elesfn$u.inside = function () { + var ele = this[0]; + return ele && !ele._private.removed; +}; + +elesfn$u.remove = function () { + var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; + var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + var self = this; + var elesToRemove = []; + var elesToRemoveIds = {}; + var cy = self._private.cy; // add connected edges + + function addConnectedEdges(node) { + var edges = node._private.edges; + + for (var i = 0; i < edges.length; i++) { + add(edges[i]); + } + } // add descendant nodes + + + function addChildren(node) { + var children = node._private.children; + + for (var i = 0; i < children.length; i++) { + add(children[i]); + } + } + + function add(ele) { + var alreadyAdded = elesToRemoveIds[ele.id()]; + + if (removeFromPool && ele.removed() || alreadyAdded) { + return; + } else { + elesToRemoveIds[ele.id()] = true; + } + + if (ele.isNode()) { + elesToRemove.push(ele); // nodes are removed last + + addConnectedEdges(ele); + addChildren(ele); + } else { + elesToRemove.unshift(ele); // edges are removed first + } + } // make the list of elements to remove + // (may be removing more than specified due to connected edges etc) + + + for (var i = 0, l = self.length; i < l; i++) { + var ele = self[i]; + add(ele); + } + + function removeEdgeRef(node, edge) { + var connectedEdges = node._private.edges; + removeFromArray(connectedEdges, edge); // removing an edges invalidates the traversal cache for its nodes + + node.clearTraversalCache(); + } + + function removeParallelRef(pllEdge) { + // removing an edge invalidates the traversal caches for the parallel edges + pllEdge.clearTraversalCache(); + } + + var alteredParents = []; + alteredParents.ids = {}; + + function removeChildRef(parent, ele) { + ele = ele[0]; + parent = parent[0]; + var children = parent._private.children; + var pid = parent.id(); + removeFromArray(children, ele); // remove parent => child ref + + ele._private.parent = null; // remove child => parent ref + + if (!alteredParents.ids[pid]) { + alteredParents.ids[pid] = true; + alteredParents.push(parent); + } + } + + self.dirtyCompoundBoundsCache(); + + if (removeFromPool) { + cy.removeFromPool(elesToRemove); // remove from core pool + } + + for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) { + var _ele4 = elesToRemove[_i6]; + + if (_ele4.isEdge()) { + // remove references to this edge in its connected nodes + var src = _ele4.source()[0]; + + var tgt = _ele4.target()[0]; + + removeEdgeRef(src, _ele4); + removeEdgeRef(tgt, _ele4); + + var pllEdges = _ele4.parallelEdges(); + + for (var j = 0; j < pllEdges.length; j++) { + var pllEdge = pllEdges[j]; + removeParallelRef(pllEdge); + + if (pllEdge.isBundledBezier()) { + pllEdge.dirtyBoundingBoxCache(); + } + } + } else { + // remove reference to parent + var parent = _ele4.parent(); + + if (parent.length !== 0) { + removeChildRef(parent, _ele4); + } + } + + if (removeFromPool) { + // mark as removed + _ele4._private.removed = true; + } + } // check to see if we have a compound graph or not + + + var elesStillInside = cy._private.elements; + cy._private.hasCompoundNodes = false; + + for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) { + var _ele5 = elesStillInside[_i7]; + + if (_ele5.isParent()) { + cy._private.hasCompoundNodes = true; + break; + } + } + + var removedElements = new Collection(this.cy(), elesToRemove); + + if (removedElements.size() > 0) { + // must manually notify since trigger won't do this automatically once removed + if (notifyRenderer) { + removedElements.emitAndNotify('remove'); + } else if (removeFromPool) { + removedElements.emit('remove'); + } + } // the parents who were modified by the removal need their style updated + + + for (var _i8 = 0; _i8 < alteredParents.length; _i8++) { + var _ele6 = alteredParents[_i8]; + + if (!removeFromPool || !_ele6.removed()) { + _ele6.updateStyle(); + } + } + + return removedElements; +}; + +elesfn$u.move = function (struct) { + var cy = this._private.cy; + var eles = this; // just clean up refs, caches, etc. in the same way as when removing and then restoring + // (our calls to remove/restore do not remove from the graph or make events) + + var notifyRenderer = false; + var modifyPool = false; + + var toString = function toString(id) { + return id == null ? id : '' + id; + }; // id must be string + + + if (struct.source !== undefined || struct.target !== undefined) { + var srcId = toString(struct.source); + var tgtId = toString(struct.target); + var srcExists = srcId != null && cy.hasElementWithId(srcId); + var tgtExists = tgtId != null && cy.hasElementWithId(tgtId); + + if (srcExists || tgtExists) { + cy.batch(function () { + // avoid duplicate style updates + eles.remove(notifyRenderer, modifyPool); // clean up refs etc. + + eles.emitAndNotify('moveout'); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _data5 = ele._private.data; + + if (ele.isEdge()) { + if (srcExists) { + _data5.source = srcId; + } + + if (tgtExists) { + _data5.target = tgtId; + } + } + } + + eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc. + }); + eles.emitAndNotify('move'); + } + } else if (struct.parent !== undefined) { + // move node to new parent + var parentId = toString(struct.parent); + var parentExists = parentId === null || cy.hasElementWithId(parentId); + + if (parentExists) { + var pidToAssign = parentId === null ? undefined : parentId; + cy.batch(function () { + // avoid duplicate style updates + var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc. + + updated.emitAndNotify('moveout'); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _data6 = ele._private.data; + + if (ele.isNode()) { + _data6.parent = pidToAssign; + } + } + + updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc. + }); + eles.emitAndNotify('move'); + } + } + + return this; +}; + +[elesfn$c, elesfn$d, elesfn$e, elesfn$f, elesfn$g, data$1, elesfn$i, dimensions, elesfn$m, elesfn$n, elesfn$o, elesfn$p, elesfn$q, elesfn$r, elesfn$s, elesfn$t].forEach(function (props) { + extend(elesfn$u, props); +}); + +var corefn = { + add: function add(opts) { + var elements; + var cy = this; // add the elements + + if (elementOrCollection(opts)) { + var eles = opts; + + if (eles._private.cy === cy) { + // same instance => just restore + elements = eles.restore(); + } else { + // otherwise, copy from json + var jsons = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + jsons.push(ele.json()); + } + + elements = new Collection(cy, jsons); + } + } // specify an array of options + else if (array(opts)) { + var _jsons = opts; + elements = new Collection(cy, _jsons); + } // specify via opts.nodes and opts.edges + else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) { + var elesByGroup = opts; + var _jsons2 = []; + var grs = ['nodes', 'edges']; + + for (var _i = 0, il = grs.length; _i < il; _i++) { + var group = grs[_i]; + var elesArray = elesByGroup[group]; + + if (array(elesArray)) { + for (var j = 0, jl = elesArray.length; j < jl; j++) { + var json = extend({ + group: group + }, elesArray[j]); + + _jsons2.push(json); + } + } + } + + elements = new Collection(cy, _jsons2); + } // specify options for one element + else { + var _json = opts; + elements = new Element(cy, _json).collection(); + } + + return elements; + }, + remove: function remove(collection) { + if (elementOrCollection(collection)) ; else if (string(collection)) { + var selector = collection; + collection = this.$(selector); + } + + return collection.remove(); + } +}; + +/* global Float32Array */ + +/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ +function generateCubicBezier(mX1, mY1, mX2, mY2) { + var NEWTON_ITERATIONS = 4, + NEWTON_MIN_SLOPE = 0.001, + SUBDIVISION_PRECISION = 0.0000001, + SUBDIVISION_MAX_ITERATIONS = 10, + kSplineTableSize = 11, + kSampleStepSize = 1.0 / (kSplineTableSize - 1.0), + float32ArraySupported = typeof Float32Array !== 'undefined'; + /* Must contain four arguments. */ + + if (arguments.length !== 4) { + return false; + } + /* Arguments must be numbers. */ + + + for (var i = 0; i < 4; ++i) { + if (typeof arguments[i] !== "number" || isNaN(arguments[i]) || !isFinite(arguments[i])) { + return false; + } + } + /* X values must be in the [0, 1] range. */ + + + mX1 = Math.min(mX1, 1); + mX2 = Math.min(mX2, 1); + mX1 = Math.max(mX1, 0); + mX2 = Math.max(mX2, 0); + var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); + + function A(aA1, aA2) { + return 1.0 - 3.0 * aA2 + 3.0 * aA1; + } + + function B(aA1, aA2) { + return 3.0 * aA2 - 6.0 * aA1; + } + + function C(aA1) { + return 3.0 * aA1; + } + + function calcBezier(aT, aA1, aA2) { + return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; + } + + function getSlope(aT, aA1, aA2) { + return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); + } + + function newtonRaphsonIterate(aX, aGuessT) { + for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) { + var currentSlope = getSlope(aGuessT, mX1, mX2); + + if (currentSlope === 0.0) { + return aGuessT; + } + + var currentX = calcBezier(aGuessT, mX1, mX2) - aX; + aGuessT -= currentX / currentSlope; + } + + return aGuessT; + } + + function calcSampleValues() { + for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) { + mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2); + } + } + + function binarySubdivide(aX, aA, aB) { + var currentX, + currentT, + i = 0; + + do { + currentT = aA + (aB - aA) / 2.0; + currentX = calcBezier(currentT, mX1, mX2) - aX; + + if (currentX > 0.0) { + aB = currentT; + } else { + aA = currentT; + } + } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); + + return currentT; + } + + function getTForX(aX) { + var intervalStart = 0.0, + currentSample = 1, + lastSample = kSplineTableSize - 1; + + for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { + intervalStart += kSampleStepSize; + } + + --currentSample; + var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]), + guessForT = intervalStart + dist * kSampleStepSize, + initialSlope = getSlope(guessForT, mX1, mX2); + + if (initialSlope >= NEWTON_MIN_SLOPE) { + return newtonRaphsonIterate(aX, guessForT); + } else if (initialSlope === 0.0) { + return guessForT; + } else { + return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize); + } + } + + var _precomputed = false; + + function precompute() { + _precomputed = true; + + if (mX1 !== mY1 || mX2 !== mY2) { + calcSampleValues(); + } + } + + var f = function f(aX) { + if (!_precomputed) { + precompute(); + } + + if (mX1 === mY1 && mX2 === mY2) { + return aX; + } + + if (aX === 0) { + return 0; + } + + if (aX === 1) { + return 1; + } + + return calcBezier(getTForX(aX), mY1, mY2); + }; + + f.getControlPoints = function () { + return [{ + x: mX1, + y: mY1 + }, { + x: mX2, + y: mY2 + }]; + }; + + var str = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")"; + + f.toString = function () { + return str; + }; + + return f; +} + +/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ + +/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass + then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */ +var generateSpringRK4 = function () { + function springAccelerationForState(state) { + return -state.tension * state.x - state.friction * state.v; + } + + function springEvaluateStateWithDerivative(initialState, dt, derivative) { + var state = { + x: initialState.x + derivative.dx * dt, + v: initialState.v + derivative.dv * dt, + tension: initialState.tension, + friction: initialState.friction + }; + return { + dx: state.v, + dv: springAccelerationForState(state) + }; + } + + function springIntegrateState(state, dt) { + var a = { + dx: state.v, + dv: springAccelerationForState(state) + }, + b = springEvaluateStateWithDerivative(state, dt * 0.5, a), + c = springEvaluateStateWithDerivative(state, dt * 0.5, b), + d = springEvaluateStateWithDerivative(state, dt, c), + dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx), + dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv); + state.x = state.x + dxdt * dt; + state.v = state.v + dvdt * dt; + return state; + } + + return function springRK4Factory(tension, friction, duration) { + var initState = { + x: -1, + v: 0, + tension: null, + friction: null + }, + path = [0], + time_lapsed = 0, + tolerance = 1 / 10000, + DT = 16 / 1000, + have_duration, + dt, + last_state; + tension = parseFloat(tension) || 500; + friction = parseFloat(friction) || 20; + duration = duration || null; + initState.tension = tension; + initState.friction = friction; + have_duration = duration !== null; + /* Calculate the actual time it takes for this animation to complete with the provided conditions. */ + + if (have_duration) { + /* Run the simulation without a duration. */ + time_lapsed = springRK4Factory(tension, friction); + /* Compute the adjusted time delta. */ + + dt = time_lapsed / duration * DT; + } else { + dt = DT; + } + + for (;;) { + /* Next/step function .*/ + last_state = springIntegrateState(last_state || initState, dt); + /* Store the position. */ + + path.push(1 + last_state.x); + time_lapsed += 16; + /* If the change threshold is reached, break. */ + + if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) { + break; + } + } + /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the + computed path and returns a snapshot of the position according to a given percentComplete. */ + + + return !have_duration ? time_lapsed : function (percentComplete) { + return path[percentComplete * (path.length - 1) | 0]; + }; + }; +}(); + +var cubicBezier = function cubicBezier(t1, p1, t2, p2) { + var bezier = generateCubicBezier(t1, p1, t2, p2); + return function (start, end, percent) { + return start + (end - start) * bezier(percent); + }; +}; + +var easings = { + 'linear': function linear(start, end, percent) { + return start + (end - start) * percent; + }, + // default easings + 'ease': cubicBezier(0.25, 0.1, 0.25, 1), + 'ease-in': cubicBezier(0.42, 0, 1, 1), + 'ease-out': cubicBezier(0, 0, 0.58, 1), + 'ease-in-out': cubicBezier(0.42, 0, 0.58, 1), + // sine + 'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715), + 'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1), + 'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95), + // quad + 'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53), + 'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94), + 'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955), + // cubic + 'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19), + 'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1), + 'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1), + // quart + 'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22), + 'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1), + 'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1), + // quint + 'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06), + 'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1), + 'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1), + // expo + 'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035), + 'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1), + 'ease-in-out-expo': cubicBezier(1, 0, 0, 1), + // circ + 'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335), + 'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1), + 'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86), + // user param easings... + 'spring': function spring(tension, friction, duration) { + if (duration === 0) { + // can't get a spring w/ duration 0 + return easings.linear; // duration 0 => jump to end so impl doesn't matter + } + + var spring = generateSpringRK4(tension, friction, duration); + return function (start, end, percent) { + return start + (end - start) * spring(percent); + }; + }, + 'cubic-bezier': cubicBezier +}; + +function getEasedValue(type, start, end, percent, easingFn) { + if (percent === 1) { + return end; + } + + if (start === end) { + return end; + } + + var val = easingFn(start, end, percent); + + if (type == null) { + return val; + } + + if (type.roundValue || type.color) { + val = Math.round(val); + } + + if (type.min !== undefined) { + val = Math.max(val, type.min); + } + + if (type.max !== undefined) { + val = Math.min(val, type.max); + } + + return val; +} + +function getValue(prop, spec) { + if (prop.pfValue != null || prop.value != null) { + if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) { + return prop.pfValue; + } else { + return prop.value; + } + } else { + return prop; + } +} + +function ease(startProp, endProp, percent, easingFn, propSpec) { + var type = propSpec != null ? propSpec.type : null; + + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + + var start = getValue(startProp, propSpec); + var end = getValue(endProp, propSpec); + + if (number(start) && number(end)) { + return getEasedValue(type, start, end, percent, easingFn); + } else if (array(start) && array(end)) { + var easedArr = []; + + for (var i = 0; i < end.length; i++) { + var si = start[i]; + var ei = end[i]; + + if (si != null && ei != null) { + var val = getEasedValue(type, si, ei, percent, easingFn); + easedArr.push(val); + } else { + easedArr.push(ei); + } + } + + return easedArr; + } + + return undefined; +} + +function step(self, ani, now, isCore) { + var isEles = !isCore; + var _p = self._private; + var ani_p = ani._private; + var pEasing = ani_p.easing; + var startTime = ani_p.startTime; + var cy = isCore ? self : self.cy(); + var style = cy.style(); + + if (!ani_p.easingImpl) { + if (pEasing == null) { + // use default + ani_p.easingImpl = easings['linear']; + } else { + // then define w/ name + var easingVals; + + if (string(pEasing)) { + var easingProp = style.parse('transition-timing-function', pEasing); + easingVals = easingProp.value; + } else { + // then assume preparsed array + easingVals = pEasing; + } + + var name, args; + + if (string(easingVals)) { + name = easingVals; + args = []; + } else { + name = easingVals[1]; + args = easingVals.slice(2).map(function (n) { + return +n; + }); + } + + if (args.length > 0) { + // create with args + if (name === 'spring') { + args.push(ani_p.duration); // need duration to generate spring + } + + ani_p.easingImpl = easings[name].apply(null, args); + } else { + // static impl by name + ani_p.easingImpl = easings[name]; + } + } + } + + var easing = ani_p.easingImpl; + var percent; + + if (ani_p.duration === 0) { + percent = 1; + } else { + percent = (now - startTime) / ani_p.duration; + } + + if (ani_p.applying) { + percent = ani_p.progress; + } + + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + + if (ani_p.delay == null) { + // then update + var startPos = ani_p.startPosition; + var endPos = ani_p.position; + + if (endPos && isEles && !self.locked()) { + var newPos = {}; + + if (valid(startPos.x, endPos.x)) { + newPos.x = ease(startPos.x, endPos.x, percent, easing); + } + + if (valid(startPos.y, endPos.y)) { + newPos.y = ease(startPos.y, endPos.y, percent, easing); + } + + self.position(newPos); + } + + var startPan = ani_p.startPan; + var endPan = ani_p.pan; + var pan = _p.pan; + var animatingPan = endPan != null && isCore; + + if (animatingPan) { + if (valid(startPan.x, endPan.x)) { + pan.x = ease(startPan.x, endPan.x, percent, easing); + } + + if (valid(startPan.y, endPan.y)) { + pan.y = ease(startPan.y, endPan.y, percent, easing); + } + + self.emit('pan'); + } + + var startZoom = ani_p.startZoom; + var endZoom = ani_p.zoom; + var animatingZoom = endZoom != null && isCore; + + if (animatingZoom) { + if (valid(startZoom, endZoom)) { + _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom); + } + + self.emit('zoom'); + } + + if (animatingPan || animatingZoom) { + self.emit('viewport'); + } + + var props = ani_p.style; + + if (props && props.length > 0 && isEles) { + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + var _name = prop.name; + var end = prop; + var start = ani_p.startStyle[_name]; + var propSpec = style.properties[start.name]; + var easedVal = ease(start, end, percent, easing, propSpec); + style.overrideBypass(self, _name, easedVal); + } // for props + + + self.emit('style'); + } // if + + } + + ani_p.progress = percent; + return percent; +} + +function valid(start, end) { + if (start == null || end == null) { + return false; + } + + if (number(start) && number(end)) { + return true; + } else if (start && end) { + return true; + } + + return false; +} + +function startAnimation(self, ani, now, isCore) { + var ani_p = ani._private; + ani_p.started = true; + ani_p.startTime = now - ani_p.progress * ani_p.duration; +} + +function stepAll(now, cy) { + var eles = cy._private.aniEles; + var doneEles = []; + + function stepOne(ele, isCore) { + var _p = ele._private; + var current = _p.animation.current; + var queue = _p.animation.queue; + var ranAnis = false; // if nothing currently animating, get something from the queue + + if (current.length === 0) { + var next = queue.shift(); + + if (next) { + current.push(next); + } + } + + var callbacks = function callbacks(_callbacks) { + for (var j = _callbacks.length - 1; j >= 0; j--) { + var cb = _callbacks[j]; + cb(); + } + + _callbacks.splice(0, _callbacks.length); + }; // step and remove if done + + + for (var i = current.length - 1; i >= 0; i--) { + var ani = current[i]; + var ani_p = ani._private; + + if (ani_p.stopped) { + current.splice(i, 1); + ani_p.hooked = false; + ani_p.playing = false; + ani_p.started = false; + callbacks(ani_p.frames); + continue; + } + + if (!ani_p.playing && !ani_p.applying) { + continue; + } // an apply() while playing shouldn't do anything + + + if (ani_p.playing && ani_p.applying) { + ani_p.applying = false; + } + + if (!ani_p.started) { + startAnimation(ele, ani, now); + } + + step(ele, ani, now, isCore); + + if (ani_p.applying) { + ani_p.applying = false; + } + + callbacks(ani_p.frames); + + if (ani_p.step != null) { + ani_p.step(now); + } + + if (ani.completed()) { + current.splice(i, 1); + ani_p.hooked = false; + ani_p.playing = false; + ani_p.started = false; + callbacks(ani_p.completes); + } + + ranAnis = true; + } + + if (!isCore && current.length === 0 && queue.length === 0) { + doneEles.push(ele); + } + + return ranAnis; + } // stepElement + // handle all eles + + + var ranEleAni = false; + + for (var e = 0; e < eles.length; e++) { + var ele = eles[e]; + var handledThisEle = stepOne(ele); + ranEleAni = ranEleAni || handledThisEle; + } // each element + + + var ranCoreAni = stepOne(cy, true); // notify renderer + + if (ranEleAni || ranCoreAni) { + if (eles.length > 0) { + cy.notify('draw', eles); + } else { + cy.notify('draw'); + } + } // remove elements from list of currently animating if its queues are empty + + + eles.unmerge(doneEles); + cy.emit('step'); +} // stepAll + +var corefn$1 = { + // pull in animation functions + animate: define$3.animate(), + animation: define$3.animation(), + animated: define$3.animated(), + clearQueue: define$3.clearQueue(), + delay: define$3.delay(), + delayAnimation: define$3.delayAnimation(), + stop: define$3.stop(), + addToAnimationPool: function addToAnimationPool(eles) { + var cy = this; + + if (!cy.styleEnabled()) { + return; + } // save cycles when no style used + + + cy._private.aniEles.merge(eles); + }, + stopAnimationLoop: function stopAnimationLoop() { + this._private.animationsRunning = false; + }, + startAnimationLoop: function startAnimationLoop() { + var cy = this; + cy._private.animationsRunning = true; + + if (!cy.styleEnabled()) { + return; + } // save cycles when no style used + // NB the animation loop will exec in headless environments if style enabled + // and explicit cy.destroy() is necessary to stop the loop + + + function headlessStep() { + if (!cy._private.animationsRunning) { + return; + } + + requestAnimationFrame(function animationStep(now) { + stepAll(now, cy); + headlessStep(); + }); + } + + var renderer = cy.renderer(); + + if (renderer && renderer.beforeRender) { + // let the renderer schedule animations + renderer.beforeRender(function rendererAnimationStep(willDraw, now) { + stepAll(now, cy); + }, renderer.beforeRenderPriorities.animations); + } else { + // manage the animation loop ourselves + headlessStep(); // first call + } + } +}; + +var emitterOptions$1 = { + qualifierCompare: function qualifierCompare(selector1, selector2) { + if (selector1 == null || selector2 == null) { + return selector1 == null && selector2 == null; + } else { + return selector1.sameText(selector2); + } + }, + eventMatches: function eventMatches(cy, listener, eventObj) { + var selector = listener.qualifier; + + if (selector != null) { + return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); + } + + return true; + }, + addEventFields: function addEventFields(cy, evt) { + evt.cy = cy; + evt.target = cy; + }, + callbackContext: function callbackContext(cy, listener, eventObj) { + return listener.qualifier != null ? eventObj.target : cy; + } +}; + +var argSelector$1 = function argSelector(arg) { + if (string(arg)) { + return new Selector(arg); + } else { + return arg; + } +}; + +var elesfn$v = { + createEmitter: function createEmitter() { + var _p = this._private; + + if (!_p.emitter) { + _p.emitter = new Emitter(emitterOptions$1, this); + } + + return this; + }, + emitter: function emitter() { + return this._private.emitter; + }, + on: function on(events, selector, callback) { + this.emitter().on(events, argSelector$1(selector), callback); + return this; + }, + removeListener: function removeListener(events, selector, callback) { + this.emitter().removeListener(events, argSelector$1(selector), callback); + return this; + }, + removeAllListeners: function removeAllListeners() { + this.emitter().removeAllListeners(); + return this; + }, + one: function one(events, selector, callback) { + this.emitter().one(events, argSelector$1(selector), callback); + return this; + }, + once: function once(events, selector, callback) { + this.emitter().one(events, argSelector$1(selector), callback); + return this; + }, + emit: function emit(events, extraParams) { + this.emitter().emit(events, extraParams); + return this; + }, + emitAndNotify: function emitAndNotify(event, eles) { + this.emit(event); + this.notify(event, eles); + return this; + } +}; +define$3.eventAliasesOn(elesfn$v); + +var corefn$2 = { + png: function png(options) { + var renderer = this._private.renderer; + options = options || {}; + return renderer.png(options); + }, + jpg: function jpg(options) { + var renderer = this._private.renderer; + options = options || {}; + options.bg = options.bg || '#fff'; + return renderer.jpg(options); + } +}; +corefn$2.jpeg = corefn$2.jpg; + +var corefn$3 = { + layout: function layout(options) { + var cy = this; + + if (options == null) { + error('Layout options must be specified to make a layout'); + return; + } + + if (options.name == null) { + error('A `name` must be specified to make a layout'); + return; + } + + var name = options.name; + var Layout = cy.extension('layout', name); + + if (Layout == null) { + error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?'); + return; + } + + var eles; + + if (string(options.eles)) { + eles = cy.$(options.eles); + } else { + eles = options.eles != null ? options.eles : cy.$(); + } + + var layout = new Layout(extend({}, options, { + cy: cy, + eles: eles + })); + return layout; + } +}; +corefn$3.createLayout = corefn$3.makeLayout = corefn$3.layout; + +var corefn$4 = { + notify: function notify(eventName, eventEles) { + var _p = this._private; + + if (this.batching()) { + _p.batchNotifications = _p.batchNotifications || {}; + var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection(); + + if (eventEles != null) { + eles.merge(eventEles); + } + + return; // notifications are disabled during batching + } + + if (!_p.notificationsEnabled) { + return; + } // exit on disabled + + + var renderer = this.renderer(); // exit if destroy() called on core or renderer in between frames #1499 #1528 + + if (this.destroyed() || !renderer) { + return; + } + + renderer.notify(eventName, eventEles); + }, + notifications: function notifications(bool) { + var p = this._private; + + if (bool === undefined) { + return p.notificationsEnabled; + } else { + p.notificationsEnabled = bool ? true : false; + } + + return this; + }, + noNotifications: function noNotifications(callback) { + this.notifications(false); + callback(); + this.notifications(true); + }, + batching: function batching() { + return this._private.batchCount > 0; + }, + startBatch: function startBatch() { + var _p = this._private; + + if (_p.batchCount == null) { + _p.batchCount = 0; + } + + if (_p.batchCount === 0) { + _p.batchStyleEles = this.collection(); + _p.batchNotifications = {}; + } + + _p.batchCount++; + return this; + }, + endBatch: function endBatch() { + var _p = this._private; + + if (_p.batchCount === 0) { + return this; + } + + _p.batchCount--; + + if (_p.batchCount === 0) { + // update style for dirty eles + _p.batchStyleEles.updateStyle(); + + var renderer = this.renderer(); // notify the renderer of queued eles and event types + + Object.keys(_p.batchNotifications).forEach(function (eventName) { + var eles = _p.batchNotifications[eventName]; + + if (eles.empty()) { + renderer.notify(eventName); + } else { + renderer.notify(eventName, eles); + } + }); + } + + return this; + }, + batch: function batch(callback) { + this.startBatch(); + callback(); + this.endBatch(); + return this; + }, + // for backwards compatibility + batchData: function batchData(map) { + var cy = this; + return this.batch(function () { + var ids = Object.keys(map); + + for (var i = 0; i < ids.length; i++) { + var id = ids[i]; + var data = map[id]; + var ele = cy.getElementById(id); + ele.data(data); + } + }); + } +}; + +var rendererDefaults = defaults({ + hideEdgesOnViewport: false, + textureOnViewport: false, + motionBlur: false, + motionBlurOpacity: 0.05, + pixelRatio: undefined, + desktopTapThreshold: 4, + touchTapThreshold: 8, + wheelSensitivity: 1, + debug: false, + showFps: false +}); +var corefn$5 = { + renderTo: function renderTo(context, zoom, pan, pxRatio) { + var r = this._private.renderer; + r.renderTo(context, zoom, pan, pxRatio); + return this; + }, + renderer: function renderer() { + return this._private.renderer; + }, + forceRender: function forceRender() { + this.notify('draw'); + return this; + }, + resize: function resize() { + this.invalidateSize(); + this.emitAndNotify('resize'); + return this; + }, + initRenderer: function initRenderer(options) { + var cy = this; + var RendererProto = cy.extension('renderer', options.name); + + if (RendererProto == null) { + error("Can not initialise: No such renderer `".concat(options.name, "` found. Did you forget to import it and `cytoscape.use()` it?")); + return; + } + + if (options.wheelSensitivity !== undefined) { + warn("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine."); + } + + var rOpts = rendererDefaults(options); + rOpts.cy = cy; + cy._private.renderer = new RendererProto(rOpts); + this.notify('init'); + }, + destroyRenderer: function destroyRenderer() { + var cy = this; + cy.notify('destroy'); // destroy the renderer + + var domEle = cy.container(); + + if (domEle) { + domEle._cyreg = null; + + while (domEle.childNodes.length > 0) { + domEle.removeChild(domEle.childNodes[0]); + } + } + + cy._private.renderer = null; // to be extra safe, remove the ref + + cy.mutableElements().forEach(function (ele) { + var _p = ele._private; + _p.rscratch = {}; + _p.rstyle = {}; + _p.animation.current = []; + _p.animation.queue = []; + }); + }, + onRender: function onRender(fn) { + return this.on('render', fn); + }, + offRender: function offRender(fn) { + return this.off('render', fn); + } +}; +corefn$5.invalidateDimensions = corefn$5.resize; + +var corefn$6 = { + // get a collection + // - empty collection on no args + // - collection of elements in the graph on selector arg + // - guarantee a returned collection when elements or collection specified + collection: function collection(eles, opts) { + if (string(eles)) { + return this.$(eles); + } else if (elementOrCollection(eles)) { + return eles.collection(); + } else if (array(eles)) { + return new Collection(this, eles, opts); + } + + return new Collection(this); + }, + nodes: function nodes(selector) { + var nodes = this.$(function (ele) { + return ele.isNode(); + }); + + if (selector) { + return nodes.filter(selector); + } + + return nodes; + }, + edges: function edges(selector) { + var edges = this.$(function (ele) { + return ele.isEdge(); + }); + + if (selector) { + return edges.filter(selector); + } + + return edges; + }, + // search the graph like jQuery + $: function $(selector) { + var eles = this._private.elements; + + if (selector) { + return eles.filter(selector); + } else { + return eles.spawnSelf(); + } + }, + mutableElements: function mutableElements() { + return this._private.elements; + } +}; // aliases + +corefn$6.elements = corefn$6.filter = corefn$6.$; + +var styfn = {}; // keys for style blocks, e.g. ttfftt + +var TRUE = 't'; +var FALSE = 'f'; // (potentially expensive calculation) +// apply the style to the element based on +// - its bypass +// - what selectors match it + +styfn.apply = function (eles) { + var self = this; + var _p = self._private; + var cy = _p.cy; + var updatedEles = cy.collection(); + + if (_p.newStyle) { + // clear style caches + _p.contextStyles = {}; + _p.propDiffs = {}; + self.cleanElements(eles, true); + } + + for (var ie = 0; ie < eles.length; ie++) { + var ele = eles[ie]; + var cxtMeta = self.getContextMeta(ele); + + if (cxtMeta.empty) { + continue; + } + + var cxtStyle = self.getContextStyle(cxtMeta); + var app = self.applyContextStyle(cxtMeta, cxtStyle, ele); + + if (!_p.newStyle) { + self.updateTransitions(ele, app.diffProps); + } + + var hintsDiff = self.updateStyleHints(ele); + + if (hintsDiff) { + updatedEles.push(ele); + } + } // for elements + + + _p.newStyle = false; + return updatedEles; +}; + +styfn.getPropertiesDiff = function (oldCxtKey, newCxtKey) { + var self = this; + var cache = self._private.propDiffs = self._private.propDiffs || {}; + var dualCxtKey = oldCxtKey + '-' + newCxtKey; + var cachedVal = cache[dualCxtKey]; + + if (cachedVal) { + return cachedVal; + } + + var diffProps = []; + var addedProp = {}; + + for (var i = 0; i < self.length; i++) { + var cxt = self[i]; + var oldHasCxt = oldCxtKey[i] === TRUE; + var newHasCxt = newCxtKey[i] === TRUE; + var cxtHasDiffed = oldHasCxt !== newHasCxt; + var cxtHasMappedProps = cxt.mappedProperties.length > 0; + + if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) { + var props = void 0; + + if (cxtHasDiffed && cxtHasMappedProps) { + props = cxt.properties; // suffices b/c mappedProperties is a subset of properties + } else if (cxtHasDiffed) { + props = cxt.properties; // need to check them all + } else if (cxtHasMappedProps) { + props = cxt.mappedProperties; // only need to check mapped + } + + for (var j = 0; j < props.length; j++) { + var prop = props[j]; + var name = prop.name; // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter + // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result + // is cached) + + var laterCxtOverrides = false; + + for (var k = i + 1; k < self.length; k++) { + var laterCxt = self[k]; + var hasLaterCxt = newCxtKey[k] === TRUE; + + if (!hasLaterCxt) { + continue; + } // can't override unless the context is active + + + laterCxtOverrides = laterCxt.properties[prop.name] != null; + + if (laterCxtOverrides) { + break; + } // exit early as long as one later context overrides + + } + + if (!addedProp[name] && !laterCxtOverrides) { + addedProp[name] = true; + diffProps.push(name); + } + } // for props + + } // if + + } // for contexts + + + cache[dualCxtKey] = diffProps; + return diffProps; +}; + +styfn.getContextMeta = function (ele) { + var self = this; + var cxtKey = ''; + var diffProps; + var prevKey = ele._private.styleCxtKey || ''; + + if (self._private.newStyle) { + prevKey = ''; // since we need to apply all style if a fresh stylesheet + } // get the cxt key + + + for (var i = 0; i < self.length; i++) { + var context = self[i]; + var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core' + + if (contextSelectorMatches) { + cxtKey += TRUE; + } else { + cxtKey += FALSE; + } + } // for context + + + diffProps = self.getPropertiesDiff(prevKey, cxtKey); + ele._private.styleCxtKey = cxtKey; + return { + key: cxtKey, + diffPropNames: diffProps, + empty: diffProps.length === 0 + }; +}; // gets a computed ele style object based on matched contexts + + +styfn.getContextStyle = function (cxtMeta) { + var cxtKey = cxtMeta.key; + var self = this; + var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; // if already computed style, returned cached copy + + if (cxtStyles[cxtKey]) { + return cxtStyles[cxtKey]; + } + + var style = { + _private: { + key: cxtKey + } + }; + + for (var i = 0; i < self.length; i++) { + var cxt = self[i]; + var hasCxt = cxtKey[i] === TRUE; + + if (!hasCxt) { + continue; + } + + for (var j = 0; j < cxt.properties.length; j++) { + var prop = cxt.properties[j]; + style[prop.name] = prop; + } + } + + cxtStyles[cxtKey] = style; + return style; +}; + +styfn.applyContextStyle = function (cxtMeta, cxtStyle, ele) { + var self = this; + var diffProps = cxtMeta.diffPropNames; + var retDiffProps = {}; + var types = self.types; + + for (var i = 0; i < diffProps.length; i++) { + var diffPropName = diffProps[i]; + var cxtProp = cxtStyle[diffPropName]; + var eleProp = ele.pstyle(diffPropName); + + if (!cxtProp) { + // no context prop means delete + if (!eleProp) { + continue; // no existing prop means nothing needs to be removed + // nb affects initial application on mapped values like control-point-distances + } else if (eleProp.bypass) { + cxtProp = { + name: diffPropName, + deleteBypassed: true + }; + } else { + cxtProp = { + name: diffPropName, + "delete": true + }; + } + } // save cycles when the context prop doesn't need to be applied + + + if (eleProp === cxtProp) { + continue; + } // save cycles when a mapped context prop doesn't need to be applied + + + if (cxtProp.mapped === types.fn // context prop is function mapper + && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one) + && eleProp.mapping != null // ele prop is a concrete value from from a mapper + && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper + ) { + // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet) + var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy + + var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss + + if (fnValue === mapping.prevFnValue) { + continue; + } + } + + var retDiffProp = retDiffProps[diffPropName] = { + prev: eleProp + }; + self.applyParsedProperty(ele, cxtProp); + retDiffProp.next = ele.pstyle(diffPropName); + + if (retDiffProp.next && retDiffProp.next.bypass) { + retDiffProp.next = retDiffProp.next.bypassed; + } + } + + return { + diffProps: retDiffProps + }; +}; + +styfn.updateStyleHints = function (ele) { + var _p = ele._private; + var self = this; + var propNames = self.propertyGroupNames; + var propGrKeys = self.propertyGroupKeys; + + var propHash = function propHash(ele, propNames, seedKey) { + return self.getPropertiesHash(ele, propNames, seedKey); + }; + + var oldStyleKey = _p.styleKey; + + if (ele.removed()) { + return false; + } + + var isNode = _p.group === 'nodes'; // get the style key hashes per prop group + // but lazily -- only use non-default prop values to reduce the number of hashes + // + + var overriddenStyles = ele._private.style; + propNames = Object.keys(overriddenStyles); + + for (var i = 0; i < propGrKeys.length; i++) { + var grKey = propGrKeys[i]; + _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; + } + + var updateGrKey1 = function updateGrKey1(val, grKey) { + return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]); + }; + + var updateGrKey2 = function updateGrKey2(val, grKey) { + return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]); + }; + + var updateGrKey = function updateGrKey(val, grKey) { + updateGrKey1(val, grKey); + updateGrKey2(val, grKey); + }; + + var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) { + for (var j = 0; j < strVal.length; j++) { + var ch = strVal.charCodeAt(j); + updateGrKey1(ch, grKey); + updateGrKey2(ch, grKey); + } + }; // - hashing works on 32 bit ints b/c we use bitwise ops + // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function) + // - raise up small numbers so more significant digits are seen by hashing + // - make small numbers larger than a normal value to avoid collisions + // - works in practice and it's relatively cheap + + + var N = 2000000000; + + var cleanNum = function cleanNum(val) { + return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val; + }; + + for (var _i = 0; _i < propNames.length; _i++) { + var name = propNames[_i]; + var parsedProp = overriddenStyles[name]; + + if (parsedProp == null) { + continue; + } + + var propInfo = this.properties[name]; + var type = propInfo.type; + var _grKey = propInfo.groupKey; + var normalizedNumberVal = void 0; + + if (propInfo.hashOverride != null) { + normalizedNumberVal = propInfo.hashOverride(ele, parsedProp); + } else if (parsedProp.pfValue != null) { + normalizedNumberVal = parsedProp.pfValue; + } // might not be a number if it allows enums + + + var numberVal = propInfo.enums == null ? parsedProp.value : null; + var haveNormNum = normalizedNumberVal != null; + var haveUnitedNum = numberVal != null; + var haveNum = haveNormNum || haveUnitedNum; + var units = parsedProp.units; // numbers are cheaper to hash than strings + // 1 hash op vs n hash ops (for length n string) + + if (type.number && haveNum && !type.multiple) { + var v = haveNormNum ? normalizedNumberVal : numberVal; + updateGrKey(cleanNum(v), _grKey); + + if (!haveNormNum && units != null) { + updateGrKeyWStr(units, _grKey); + } + } else { + updateGrKeyWStr(parsedProp.strValue, _grKey); + } + } // overall style key + // + + + var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; + + for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) { + var _grKey2 = propGrKeys[_i2]; + var grHash = _p.styleKeys[_grKey2]; + hash[0] = hashInt(grHash[0], hash[0]); + hash[1] = hashIntAlt(grHash[1], hash[1]); + } + + _p.styleKey = combineHashes(hash[0], hash[1]); // label dims + // + + var sk = _p.styleKeys; + _p.labelDimsKey = combineHashesArray(sk.labelDimensions); + var labelKeys = propHash(ele, ['label'], sk.labelDimensions); + _p.labelKey = combineHashesArray(labelKeys); + _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys)); + + if (!isNode) { + var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions); + _p.sourceLabelKey = combineHashesArray(sourceLabelKeys); + _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys)); + var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions); + _p.targetLabelKey = combineHashesArray(targetLabelKeys); + _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys)); + } // node + // + + + if (isNode) { + var _p$styleKeys = _p.styleKeys, + nodeBody = _p$styleKeys.nodeBody, + nodeBorder = _p$styleKeys.nodeBorder, + backgroundImage = _p$styleKeys.backgroundImage, + compound = _p$styleKeys.compound, + pie = _p$styleKeys.pie; + var nodeKeys = [nodeBody, nodeBorder, backgroundImage, compound, pie].filter(function (k) { + return k != null; + }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]); + _p.nodeKey = combineHashesArray(nodeKeys); + _p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT; + } + + return oldStyleKey !== _p.styleKey; +}; + +styfn.clearStyleHints = function (ele) { + var _p = ele._private; + _p.styleKeys = {}; + _p.styleKey = null; + _p.labelKey = null; + _p.labelStyleKey = null; + _p.sourceLabelKey = null; + _p.sourceLabelStyleKey = null; + _p.targetLabelKey = null; + _p.targetLabelStyleKey = null; + _p.nodeKey = null; + _p.hasPie = null; +}; // apply a property to the style (for internal use) +// returns whether application was successful +// +// now, this function flattens the property, and here's how: +// +// for parsedProp:{ bypass: true, deleteBypass: true } +// no property is generated, instead the bypass property in the +// element's style is replaced by what's pointed to by the `bypassed` +// field in the bypass property (i.e. restoring the property the +// bypass was overriding) +// +// for parsedProp:{ mapped: truthy } +// the generated flattenedProp:{ mapping: prop } +// +// for parsedProp:{ bypass: true } +// the generated flattenedProp:{ bypassed: parsedProp } + + +styfn.applyParsedProperty = function (ele, parsedProp) { + var self = this; + var prop = parsedProp; + var style = ele._private.style; + var flatProp; + var types = self.types; + var type = self.properties[prop.name].type; + var propIsBypass = prop.bypass; + var origProp = style[prop.name]; + var origPropIsBypass = origProp && origProp.bypass; + var _p = ele._private; + var flatPropMapping = 'mapping'; + + var getVal = function getVal(p) { + if (p == null) { + return null; + } else if (p.pfValue != null) { + return p.pfValue; + } else { + return p.value; + } + }; + + var checkTriggers = function checkTriggers() { + var fromVal = getVal(origProp); + var toVal = getVal(prop); + self.checkTriggers(ele, prop.name, fromVal, toVal); + }; // edge sanity checks to prevent the client from making serious mistakes + + + if (parsedProp.name === 'curve-style' && ele.isEdge() && ( // loops must be bundled beziers + parsedProp.value !== 'bezier' && ele.isLoop() || // edges connected to compound nodes can not be haystacks + parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) { + prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass); + } + + if (prop["delete"]) { + // delete the property and use the default value on falsey value + style[prop.name] = undefined; + checkTriggers(); + return true; + } + + if (prop.deleteBypassed) { + // delete the property that the + if (!origProp) { + checkTriggers(); + return true; // can't delete if no prop + } else if (origProp.bypass) { + // delete bypassed + origProp.bypassed = undefined; + checkTriggers(); + return true; + } else { + return false; // we're unsuccessful deleting the bypassed + } + } // check if we need to delete the current bypass + + + if (prop.deleteBypass) { + // then this property is just here to indicate we need to delete + if (!origProp) { + checkTriggers(); + return true; // property is already not defined + } else if (origProp.bypass) { + // then replace the bypass property with the original + // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary) + style[prop.name] = origProp.bypassed; + checkTriggers(); + return true; + } else { + return false; // we're unsuccessful deleting the bypass + } + } + + var printMappingErr = function printMappingErr() { + warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined'); + }; // put the property in the style objects + + + switch (prop.mapped) { + // flatten the property if mapped + case types.mapData: + { + // flatten the field (e.g. data.foo.bar) + var fields = prop.field.split('.'); + var fieldVal = _p.data; + + for (var i = 0; i < fields.length && fieldVal; i++) { + var field = fields[i]; + fieldVal = fieldVal[field]; + } + + if (fieldVal == null) { + printMappingErr(); + return false; + } + + var percent; + + if (!number(fieldVal)) { + // then don't apply and fall back on the existing style + warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)'); + return false; + } else { + var fieldWidth = prop.fieldMax - prop.fieldMin; + + if (fieldWidth === 0) { + // safety check -- not strictly necessary as no props of zero range should be passed here + percent = 0; + } else { + percent = (fieldVal - prop.fieldMin) / fieldWidth; + } + } // make sure to bound percent value + + + if (percent < 0) { + percent = 0; + } else if (percent > 1) { + percent = 1; + } + + if (type.color) { + var r1 = prop.valueMin[0]; + var r2 = prop.valueMax[0]; + var g1 = prop.valueMin[1]; + var g2 = prop.valueMax[1]; + var b1 = prop.valueMin[2]; + var b2 = prop.valueMax[2]; + var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3]; + var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3]; + var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)]; + flatProp = { + // colours are simple, so just create the flat property instead of expensive string parsing + bypass: prop.bypass, + // we're a bypass if the mapping property is a bypass + name: prop.name, + value: clr, + strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')' + }; + } else if (type.number) { + var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent; + flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping); + } else { + return false; // can only map to colours and numbers + } + + if (!flatProp) { + // if we can't flatten the property, then don't apply the property and fall back on the existing style + printMappingErr(); + return false; + } + + flatProp.mapping = prop; // keep a reference to the mapping + + prop = flatProp; // the flattened (mapped) property is the one we want + + break; + } + // direct mapping + + case types.data: + { + // flatten the field (e.g. data.foo.bar) + var _fields = prop.field.split('.'); + + var _fieldVal = _p.data; + + for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) { + var _field = _fields[_i3]; + _fieldVal = _fieldVal[_field]; + } + + if (_fieldVal != null) { + flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping); + } + + if (!flatProp) { + // if we can't flatten the property, then don't apply and fall back on the existing style + printMappingErr(); + return false; + } + + flatProp.mapping = prop; // keep a reference to the mapping + + prop = flatProp; // the flattened (mapped) property is the one we want + + break; + } + + case types.fn: + { + var fn = prop.value; + var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function + + prop.prevFnValue = fnRetVal; + + if (fnRetVal == null) { + warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)'); + return false; + } + + flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping); + + if (!flatProp) { + warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)'); + return false; + } + + flatProp.mapping = copy(prop); // keep a reference to the mapping + + prop = flatProp; // the flattened (mapped) property is the one we want + + break; + } + + case undefined: + break; + // just set the property + + default: + return false; + // not a valid mapping + } // if the property is a bypass property, then link the resultant property to the original one + + + if (propIsBypass) { + if (origPropIsBypass) { + // then this bypass overrides the existing one + prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass + } else { + // then link the orig prop to the new bypass + prop.bypassed = origProp; + } + + style[prop.name] = prop; // and set + } else { + // prop is not bypass + if (origPropIsBypass) { + // then keep the orig prop (since it's a bypass) and link to the new prop + origProp.bypassed = prop; + } else { + // then just replace the old prop with the new one + style[prop.name] = prop; + } + } + + checkTriggers(); + return true; +}; + +styfn.cleanElements = function (eles, keepBypasses) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + this.clearStyleHints(ele); + ele.dirtyCompoundBoundsCache(); + ele.dirtyBoundingBoxCache(); + + if (!keepBypasses) { + ele._private.style = {}; + } else { + var style = ele._private.style; + var propNames = Object.keys(style); + + for (var j = 0; j < propNames.length; j++) { + var propName = propNames[j]; + var eleProp = style[propName]; + + if (eleProp != null) { + if (eleProp.bypass) { + eleProp.bypassed = null; + } else { + style[propName] = null; + } + } + } + } + } +}; // updates the visual style for all elements (useful for manual style modification after init) + + +styfn.update = function () { + var cy = this._private.cy; + var eles = cy.mutableElements(); + eles.updateStyle(); +}; // diffProps : { name => { prev, next } } + + +styfn.updateTransitions = function (ele, diffProps) { + var self = this; + var _p = ele._private; + var props = ele.pstyle('transition-property').value; + var duration = ele.pstyle('transition-duration').pfValue; + var delay = ele.pstyle('transition-delay').pfValue; + + if (props.length > 0 && duration > 0) { + var style = {}; // build up the style to animate towards + + var anyPrev = false; + + for (var i = 0; i < props.length; i++) { + var prop = props[i]; + var styProp = ele.pstyle(prop); + var diffProp = diffProps[prop]; + + if (!diffProp) { + continue; + } + + var prevProp = diffProp.prev; + var fromProp = prevProp; + var toProp = diffProp.next != null ? diffProp.next : styProp; + var diff = false; + var initVal = void 0; + var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity) + + if (!fromProp) { + continue; + } // consider px values + + + if (number(fromProp.pfValue) && number(toProp.pfValue)) { + diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy + + initVal = fromProp.pfValue + initDt * diff; // consider numerical values + } else if (number(fromProp.value) && number(toProp.value)) { + diff = toProp.value - fromProp.value; // nonzero is truthy + + initVal = fromProp.value + initDt * diff; // consider colour values + } else if (array(fromProp.value) && array(toProp.value)) { + diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2]; + initVal = fromProp.strValue; + } // the previous value is good for an animation only if it's different + + + if (diff) { + style[prop] = toProp.strValue; // to val + + this.applyBypass(ele, prop, initVal); // from val + + anyPrev = true; + } + } // end if props allow ani + // can't transition if there's nothing previous to transition from + + + if (!anyPrev) { + return; + } + + _p.transitioning = true; + new Promise$1(function (resolve) { + if (delay > 0) { + ele.delayAnimation(delay).play().promise().then(resolve); + } else { + resolve(); + } + }).then(function () { + return ele.animation({ + style: style, + duration: duration, + easing: ele.pstyle('transition-timing-function').value, + queue: false + }).play().promise(); + }).then(function () { + // if( !isBypass ){ + self.removeBypasses(ele, props); + ele.emitAndNotify('style'); // } + + _p.transitioning = false; + }); + } else if (_p.transitioning) { + this.removeBypasses(ele, props); + ele.emitAndNotify('style'); + _p.transitioning = false; + } +}; + +styfn.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) { + var prop = this.properties[name]; + var triggerCheck = getTrigger(prop); + + if (triggerCheck != null && triggerCheck(fromValue, toValue)) { + onTrigger(prop); + } +}; + +styfn.checkZOrderTrigger = function (ele, name, fromValue, toValue) { + var _this = this; + + this.checkTrigger(ele, name, fromValue, toValue, function (prop) { + return prop.triggersZOrder; + }, function () { + _this._private.cy.notify('zorder', ele); + }); +}; + +styfn.checkBoundsTrigger = function (ele, name, fromValue, toValue) { + this.checkTrigger(ele, name, fromValue, toValue, function (prop) { + return prop.triggersBounds; + }, function (prop) { + ele.dirtyCompoundBoundsCache(); + ele.dirtyBoundingBoxCache(); // if the prop change makes the bb of pll bezier edges invalid, + // then dirty the pll edge bb cache as well + + if ( // only for beziers -- so performance of other edges isn't affected + name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier') && prop.triggersBoundsOfParallelBeziers) { + ele.parallelEdges().forEach(function (pllEdge) { + if (pllEdge.isBundledBezier()) { + pllEdge.dirtyBoundingBoxCache(); + } + }); + } + }); +}; + +styfn.checkTriggers = function (ele, name, fromValue, toValue) { + ele.dirtyStyleCache(); + this.checkZOrderTrigger(ele, name, fromValue, toValue); + this.checkBoundsTrigger(ele, name, fromValue, toValue); +}; + +var styfn$1 = {}; // bypasses are applied to an existing style on an element, and just tacked on temporarily +// returns true iff application was successful for at least 1 specified property + +styfn$1.applyBypass = function (eles, name, value, updateTransitions) { + var self = this; + var props = []; + var isBypass = true; // put all the properties (can specify one or many) in an array after parsing them + + if (name === '*' || name === '**') { + // apply to all property names + if (value !== undefined) { + for (var i = 0; i < self.properties.length; i++) { + var prop = self.properties[i]; + var _name = prop.name; + var parsedProp = this.parse(_name, value, true); + + if (parsedProp) { + props.push(parsedProp); + } + } + } + } else if (string(name)) { + // then parse the single property + var _parsedProp = this.parse(name, value, true); + + if (_parsedProp) { + props.push(_parsedProp); + } + } else if (plainObject(name)) { + // then parse each property + var specifiedProps = name; + updateTransitions = value; + var names = Object.keys(specifiedProps); + + for (var _i = 0; _i < names.length; _i++) { + var _name2 = names[_i]; + var _value = specifiedProps[_name2]; + + if (_value === undefined) { + // try camel case name too + _value = specifiedProps[dash2camel(_name2)]; + } + + if (_value !== undefined) { + var _parsedProp2 = this.parse(_name2, _value, true); + + if (_parsedProp2) { + props.push(_parsedProp2); + } + } + } + } else { + // can't do anything without well defined properties + return false; + } // we've failed if there are no valid properties + + + if (props.length === 0) { + return false; + } // now, apply the bypass properties on the elements + + + var ret = false; // return true if at least one succesful bypass applied + + for (var _i2 = 0; _i2 < eles.length; _i2++) { + // for each ele + var ele = eles[_i2]; + var diffProps = {}; + var diffProp = void 0; + + for (var j = 0; j < props.length; j++) { + // for each prop + var _prop = props[j]; + + if (updateTransitions) { + var prevProp = ele.pstyle(_prop.name); + diffProp = diffProps[_prop.name] = { + prev: prevProp + }; + } + + ret = this.applyParsedProperty(ele, copy(_prop)) || ret; + + if (updateTransitions) { + diffProp.next = ele.pstyle(_prop.name); + } + } // for props + + + if (ret) { + this.updateStyleHints(ele); + } + + if (updateTransitions) { + this.updateTransitions(ele, diffProps, isBypass); + } + } // for eles + + + return ret; +}; // only useful in specific cases like animation + + +styfn$1.overrideBypass = function (eles, name, value) { + name = camel2dash(name); + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var prop = ele._private.style[name]; + var type = this.properties[name].type; + var isColor = type.color; + var isMulti = type.mutiple; + var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value; + + if (!prop || !prop.bypass) { + // need a bypass if one doesn't exist + this.applyBypass(ele, name, value); + } else { + prop.value = value; + + if (prop.pfValue != null) { + prop.pfValue = value; + } + + if (isColor) { + prop.strValue = 'rgb(' + value.join(',') + ')'; + } else if (isMulti) { + prop.strValue = value.join(' '); + } else { + prop.strValue = '' + value; + } + + this.updateStyleHints(ele); + } + + this.checkTriggers(ele, name, oldValue, value); + } +}; + +styfn$1.removeAllBypasses = function (eles, updateTransitions) { + return this.removeBypasses(eles, this.propertyNames, updateTransitions); +}; + +styfn$1.removeBypasses = function (eles, props, updateTransitions) { + var isBypass = true; + + for (var j = 0; j < eles.length; j++) { + var ele = eles[j]; + var diffProps = {}; + + for (var i = 0; i < props.length; i++) { + var name = props[i]; + var prop = this.properties[name]; + var prevProp = ele.pstyle(prop.name); + + if (!prevProp || !prevProp.bypass) { + // if a bypass doesn't exist for the prop, nothing needs to be removed + continue; + } + + var value = ''; // empty => remove bypass + + var parsedProp = this.parse(name, value, true); + var diffProp = diffProps[prop.name] = { + prev: prevProp + }; + this.applyParsedProperty(ele, parsedProp); + diffProp.next = ele.pstyle(prop.name); + } // for props + + + this.updateStyleHints(ele); + + if (updateTransitions) { + this.updateTransitions(ele, diffProps, isBypass); + } + } // for eles + +}; + +var styfn$2 = {}; // gets what an em size corresponds to in pixels relative to a dom element + +styfn$2.getEmSizeInPixels = function () { + var px = this.containerCss('font-size'); + + if (px != null) { + return parseFloat(px); + } else { + return 1; // for headless + } +}; // gets css property from the core container + + +styfn$2.containerCss = function (propName) { + var cy = this._private.cy; + var domElement = cy.container(); + + if (window$1 && domElement && window$1.getComputedStyle) { + return window$1.getComputedStyle(domElement).getPropertyValue(propName); + } +}; + +var styfn$3 = {}; // gets the rendered style for an element + +styfn$3.getRenderedStyle = function (ele, prop) { + if (prop) { + return this.getStylePropertyValue(ele, prop, true); + } else { + return this.getRawStyle(ele, true); + } +}; // gets the raw style for an element + + +styfn$3.getRawStyle = function (ele, isRenderedVal) { + var self = this; + ele = ele[0]; // insure it's an element + + if (ele) { + var rstyle = {}; + + for (var i = 0; i < self.properties.length; i++) { + var prop = self.properties[i]; + var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal); + + if (val != null) { + rstyle[prop.name] = val; + rstyle[dash2camel(prop.name)] = val; + } + } + + return rstyle; + } +}; + +styfn$3.getIndexedStyle = function (ele, property, subproperty, index) { + var pstyle = ele.pstyle(property)[subproperty][index]; + return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0]; +}; + +styfn$3.getStylePropertyValue = function (ele, propName, isRenderedVal) { + var self = this; + ele = ele[0]; // insure it's an element + + if (ele) { + var prop = self.properties[propName]; + + if (prop.alias) { + prop = prop.pointsTo; + } + + var type = prop.type; + var styleProp = ele.pstyle(prop.name); + + if (styleProp) { + var value = styleProp.value, + units = styleProp.units, + strValue = styleProp.strValue; + + if (isRenderedVal && type.number && value != null && number(value)) { + var zoom = ele.cy().zoom(); + + var getRenderedValue = function getRenderedValue(val) { + return val * zoom; + }; + + var getValueStringWithUnits = function getValueStringWithUnits(val, units) { + return getRenderedValue(val) + units; + }; + + var isArrayValue = array(value); + var haveUnits = isArrayValue ? units.every(function (u) { + return u != null; + }) : units != null; + + if (haveUnits) { + if (isArrayValue) { + return value.map(function (v, i) { + return getValueStringWithUnits(v, units[i]); + }).join(' '); + } else { + return getValueStringWithUnits(value, units); + } + } else { + if (isArrayValue) { + return value.map(function (v) { + return string(v) ? v : '' + getRenderedValue(v); + }).join(' '); + } else { + return '' + getRenderedValue(value); + } + } + } else if (strValue != null) { + return strValue; + } + } + + return null; + } +}; + +styfn$3.getAnimationStartStyle = function (ele, aniProps) { + var rstyle = {}; + + for (var i = 0; i < aniProps.length; i++) { + var aniProp = aniProps[i]; + var name = aniProp.name; + var styleProp = ele.pstyle(name); + + if (styleProp !== undefined) { + // then make a prop of it + if (plainObject(styleProp)) { + styleProp = this.parse(name, styleProp.strValue); + } else { + styleProp = this.parse(name, styleProp); + } + } + + if (styleProp) { + rstyle[name] = styleProp; + } + } + + return rstyle; +}; + +styfn$3.getPropsList = function (propsObj) { + var self = this; + var rstyle = []; + var style = propsObj; + var props = self.properties; + + if (style) { + var names = Object.keys(style); + + for (var i = 0; i < names.length; i++) { + var name = names[i]; + var val = style[name]; + var prop = props[name] || props[camel2dash(name)]; + var styleProp = this.parse(prop.name, val); + + if (styleProp) { + rstyle.push(styleProp); + } + } + } + + return rstyle; +}; + +styfn$3.getNonDefaultPropertiesHash = function (ele, propNames, seed) { + var hash = seed.slice(); + var name, val, strVal, chVal; + var i, j; + + for (i = 0; i < propNames.length; i++) { + name = propNames[i]; + val = ele.pstyle(name, false); + + if (val == null) { + continue; + } else if (val.pfValue != null) { + hash[0] = hashInt(chVal, hash[0]); + hash[1] = hashIntAlt(chVal, hash[1]); + } else { + strVal = val.strValue; + + for (j = 0; j < strVal.length; j++) { + chVal = strVal.charCodeAt(j); + hash[0] = hashInt(chVal, hash[0]); + hash[1] = hashIntAlt(chVal, hash[1]); + } + } + } + + return hash; +}; + +styfn$3.getPropertiesHash = styfn$3.getNonDefaultPropertiesHash; + +var styfn$4 = {}; + +styfn$4.appendFromJson = function (json) { + var style = this; + + for (var i = 0; i < json.length; i++) { + var context = json[i]; + var selector = context.selector; + var props = context.style || context.css; + var names = Object.keys(props); + style.selector(selector); // apply selector + + for (var j = 0; j < names.length; j++) { + var name = names[j]; + var value = props[name]; + style.css(name, value); // apply property + } + } + + return style; +}; // accessible cy.style() function + + +styfn$4.fromJson = function (json) { + var style = this; + style.resetToDefault(); + style.appendFromJson(json); + return style; +}; // get json from cy.style() api + + +styfn$4.json = function () { + var json = []; + + for (var i = this.defaultLength; i < this.length; i++) { + var cxt = this[i]; + var selector = cxt.selector; + var props = cxt.properties; + var css = {}; + + for (var j = 0; j < props.length; j++) { + var prop = props[j]; + css[prop.name] = prop.strValue; + } + + json.push({ + selector: !selector ? 'core' : selector.toString(), + style: css + }); + } + + return json; +}; + +var styfn$5 = {}; + +styfn$5.appendFromString = function (string) { + var self = this; + var style = this; + var remaining = '' + string; + var selAndBlockStr; + var blockRem; + var propAndValStr; // remove comments from the style string + + remaining = remaining.replace(/[/][*](\s|.)+?[*][/]/g, ''); + + function removeSelAndBlockFromRemaining() { + // remove the parsed selector and block from the remaining text to parse + if (remaining.length > selAndBlockStr.length) { + remaining = remaining.substr(selAndBlockStr.length); + } else { + remaining = ''; + } + } + + function removePropAndValFromRem() { + // remove the parsed property and value from the remaining block text to parse + if (blockRem.length > propAndValStr.length) { + blockRem = blockRem.substr(propAndValStr.length); + } else { + blockRem = ''; + } + } + + for (;;) { + var nothingLeftToParse = remaining.match(/^\s*$/); + + if (nothingLeftToParse) { + break; + } + + var selAndBlock = remaining.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/); + + if (!selAndBlock) { + warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining); + break; + } + + selAndBlockStr = selAndBlock[0]; // parse the selector + + var selectorStr = selAndBlock[1]; + + if (selectorStr !== 'core') { + var selector = new Selector(selectorStr); + + if (selector.invalid) { + warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr); // skip this selector and block + + removeSelAndBlockFromRemaining(); + continue; + } + } // parse the block of properties and values + + + var blockStr = selAndBlock[2]; + var invalidBlock = false; + blockRem = blockStr; + var props = []; + + for (;;) { + var _nothingLeftToParse = blockRem.match(/^\s*$/); + + if (_nothingLeftToParse) { + break; + } + + var propAndVal = blockRem.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/); + + if (!propAndVal) { + warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr); + invalidBlock = true; + break; + } + + propAndValStr = propAndVal[0]; + var propStr = propAndVal[1]; + var valStr = propAndVal[2]; + var prop = self.properties[propStr]; + + if (!prop) { + warn('Skipping property: Invalid property name in: ' + propAndValStr); // skip this property in the block + + removePropAndValFromRem(); + continue; + } + + var parsedProp = style.parse(propStr, valStr); + + if (!parsedProp) { + warn('Skipping property: Invalid property definition in: ' + propAndValStr); // skip this property in the block + + removePropAndValFromRem(); + continue; + } + + props.push({ + name: propStr, + val: valStr + }); + removePropAndValFromRem(); + } + + if (invalidBlock) { + removeSelAndBlockFromRemaining(); + break; + } // put the parsed block in the style + + + style.selector(selectorStr); + + for (var i = 0; i < props.length; i++) { + var _prop = props[i]; + style.css(_prop.name, _prop.val); + } + + removeSelAndBlockFromRemaining(); + } + + return style; +}; + +styfn$5.fromString = function (string) { + var style = this; + style.resetToDefault(); + style.appendFromString(string); + return style; +}; + +var styfn$6 = {}; + +(function () { + var number = number$1; + var rgba = rgbaNoBackRefs; + var hsla = hslaNoBackRefs; + var hex3$1 = hex3; + var hex6$1 = hex6; + + var data = function data(prefix) { + return '^' + prefix + '\\s*\\(\\s*([\\w\\.]+)\\s*\\)$'; + }; + + var mapData = function mapData(prefix) { + var mapArg = number + '|\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1; + return '^' + prefix + '\\s*\\(([\\w\\.]+)\\s*\\,\\s*(' + number + ')\\s*\\,\\s*(' + number + ')\\s*,\\s*(' + mapArg + ')\\s*\\,\\s*(' + mapArg + ')\\)$'; + }; + + var urlRegexes = ['^url\\s*\\(\\s*[\'"]?(.+?)[\'"]?\\s*\\)$', '^(none)$', '^(.+)$']; // each visual style property has a type and needs to be validated according to it + + styfn$6.types = { + time: { + number: true, + min: 0, + units: 's|ms', + implicitUnits: 'ms' + }, + percent: { + number: true, + min: 0, + max: 100, + units: '%', + implicitUnits: '%' + }, + percentages: { + number: true, + min: 0, + max: 100, + units: '%', + implicitUnits: '%', + multiple: true + }, + zeroOneNumber: { + number: true, + min: 0, + max: 1, + unitless: true + }, + zeroOneNumbers: { + number: true, + min: 0, + max: 1, + unitless: true, + multiple: true + }, + nOneOneNumber: { + number: true, + min: -1, + max: 1, + unitless: true + }, + nonNegativeInt: { + number: true, + min: 0, + integer: true, + unitless: true + }, + position: { + enums: ['parent', 'origin'] + }, + nodeSize: { + number: true, + min: 0, + enums: ['label'] + }, + number: { + number: true, + unitless: true + }, + numbers: { + number: true, + unitless: true, + multiple: true + }, + positiveNumber: { + number: true, + unitless: true, + min: 0, + strictMin: true + }, + size: { + number: true, + min: 0 + }, + bidirectionalSize: { + number: true + }, + // allows negative + bidirectionalSizeMaybePercent: { + number: true, + allowPercent: true + }, + // allows negative + bidirectionalSizes: { + number: true, + multiple: true + }, + // allows negative + sizeMaybePercent: { + number: true, + min: 0, + allowPercent: true + }, + axisDirection: { + enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto'] + }, + paddingRelativeTo: { + enums: ['width', 'height', 'average', 'min', 'max'] + }, + bgWH: { + number: true, + min: 0, + allowPercent: true, + enums: ['auto'], + multiple: true + }, + bgPos: { + number: true, + allowPercent: true, + multiple: true + }, + bgRelativeTo: { + enums: ['inner', 'include-padding'], + multiple: true + }, + bgRepeat: { + enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'], + multiple: true + }, + bgFit: { + enums: ['none', 'contain', 'cover'], + multiple: true + }, + bgCrossOrigin: { + enums: ['anonymous', 'use-credentials'], + multiple: true + }, + bgClip: { + enums: ['none', 'node'], + multiple: true + }, + color: { + color: true + }, + colors: { + color: true, + multiple: true + }, + fill: { + enums: ['solid', 'linear-gradient', 'radial-gradient'] + }, + bool: { + enums: ['yes', 'no'] + }, + lineStyle: { + enums: ['solid', 'dotted', 'dashed'] + }, + lineCap: { + enums: ['butt', 'round', 'square'] + }, + borderStyle: { + enums: ['solid', 'dotted', 'dashed', 'double'] + }, + curveStyle: { + enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'taxi'] + }, + fontFamily: { + regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' + }, + fontStyle: { + enums: ['italic', 'normal', 'oblique'] + }, + fontWeight: { + enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900] + }, + textDecoration: { + enums: ['none', 'underline', 'overline', 'line-through'] + }, + textTransform: { + enums: ['none', 'uppercase', 'lowercase'] + }, + textWrap: { + enums: ['none', 'wrap', 'ellipsis'] + }, + textOverflowWrap: { + enums: ['whitespace', 'anywhere'] + }, + textBackgroundShape: { + enums: ['rectangle', 'roundrectangle', 'round-rectangle'] + }, + nodeShape: { + enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'polygon'] + }, + compoundIncludeLabels: { + enums: ['include', 'exclude'] + }, + arrowShape: { + enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none'] + }, + arrowFill: { + enums: ['filled', 'hollow'] + }, + display: { + enums: ['element', 'none'] + }, + visibility: { + enums: ['hidden', 'visible'] + }, + zCompoundDepth: { + enums: ['bottom', 'orphan', 'auto', 'top'] + }, + zIndexCompare: { + enums: ['auto', 'manual'] + }, + valign: { + enums: ['top', 'center', 'bottom'] + }, + halign: { + enums: ['left', 'center', 'right'] + }, + justification: { + enums: ['left', 'center', 'right', 'auto'] + }, + text: { + string: true + }, + data: { + mapping: true, + regex: data('data') + }, + layoutData: { + mapping: true, + regex: data('layoutData') + }, + scratch: { + mapping: true, + regex: data('scratch') + }, + mapData: { + mapping: true, + regex: mapData('mapData') + }, + mapLayoutData: { + mapping: true, + regex: mapData('mapLayoutData') + }, + mapScratch: { + mapping: true, + regex: mapData('mapScratch') + }, + fn: { + mapping: true, + fn: true + }, + url: { + regexes: urlRegexes, + singleRegexMatchValue: true + }, + urls: { + regexes: urlRegexes, + singleRegexMatchValue: true, + multiple: true + }, + propList: { + propList: true + }, + angle: { + number: true, + units: 'deg|rad', + implicitUnits: 'rad' + }, + textRotation: { + number: true, + units: 'deg|rad', + implicitUnits: 'rad', + enums: ['none', 'autorotate'] + }, + polygonPointList: { + number: true, + multiple: true, + evenMultiple: true, + min: -1, + max: 1, + unitless: true + }, + edgeDistances: { + enums: ['intersection', 'node-position'] + }, + edgeEndpoint: { + number: true, + multiple: true, + units: '%|px|em|deg|rad', + implicitUnits: 'px', + enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'], + singleEnum: true, + validate: function validate(valArr, unitsArr) { + switch (valArr.length) { + case 2: + // can be % or px only + return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad'; + + case 1: + // can be enum, deg, or rad only + return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad'; + + default: + return false; + } + } + }, + easing: { + regexes: ['^(spring)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$', '^(cubic-bezier)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$'], + enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ'] + }, + gradientDirection: { + enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top'] + }, + boundsExpansion: { + number: true, + multiple: true, + min: 0, + validate: function validate(valArr) { + var length = valArr.length; + return length === 1 || length === 2 || length === 4; + } + } + }; + var diff = { + zeroNonZero: function zeroNonZero(val1, val2) { + if ((val1 == null || val2 == null) && val1 !== val2) { + return true; // null cases could represent any value + } + + if (val1 == 0 && val2 != 0) { + return true; + } else if (val1 != 0 && val2 == 0) { + return true; + } else { + return false; + } + }, + any: function any(val1, val2) { + return val1 != val2; + }, + emptyNonEmpty: function emptyNonEmpty(str1, str2) { + var empty1 = emptyString(str1); + var empty2 = emptyString(str2); + return empty1 && !empty2 || !empty1 && empty2; + } + }; // define visual style properties + // + // - n.b. adding a new group of props may require updates to updateStyleHints() + // - adding new props to an existing group gets handled automatically + + var t = styfn$6.types; + var mainLabel = [{ + name: 'label', + type: t.text, + triggersBounds: diff.any, + triggersZOrder: diff.emptyNonEmpty + }, { + name: 'text-rotation', + type: t.textRotation, + triggersBounds: diff.any + }, { + name: 'text-margin-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'text-margin-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }]; + var sourceLabel = [{ + name: 'source-label', + type: t.text, + triggersBounds: diff.any + }, { + name: 'source-text-rotation', + type: t.textRotation, + triggersBounds: diff.any + }, { + name: 'source-text-margin-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'source-text-margin-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'source-text-offset', + type: t.size, + triggersBounds: diff.any + }]; + var targetLabel = [{ + name: 'target-label', + type: t.text, + triggersBounds: diff.any + }, { + name: 'target-text-rotation', + type: t.textRotation, + triggersBounds: diff.any + }, { + name: 'target-text-margin-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'target-text-margin-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'target-text-offset', + type: t.size, + triggersBounds: diff.any + }]; + var labelDimensions = [{ + name: 'font-family', + type: t.fontFamily, + triggersBounds: diff.any + }, { + name: 'font-style', + type: t.fontStyle, + triggersBounds: diff.any + }, { + name: 'font-weight', + type: t.fontWeight, + triggersBounds: diff.any + }, { + name: 'font-size', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-transform', + type: t.textTransform, + triggersBounds: diff.any + }, { + name: 'text-wrap', + type: t.textWrap, + triggersBounds: diff.any + }, { + name: 'text-overflow-wrap', + type: t.textOverflowWrap, + triggersBounds: diff.any + }, { + name: 'text-max-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-outline-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'line-height', + type: t.positiveNumber, + triggersBounds: diff.any + }]; + var commonLabel = [{ + name: 'text-valign', + type: t.valign, + triggersBounds: diff.any + }, { + name: 'text-halign', + type: t.halign, + triggersBounds: diff.any + }, { + name: 'color', + type: t.color + }, { + name: 'text-outline-color', + type: t.color + }, { + name: 'text-outline-opacity', + type: t.zeroOneNumber + }, { + name: 'text-background-color', + type: t.color + }, { + name: 'text-background-opacity', + type: t.zeroOneNumber + }, { + name: 'text-background-padding', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-border-opacity', + type: t.zeroOneNumber + }, { + name: 'text-border-color', + type: t.color + }, { + name: 'text-border-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'text-border-style', + type: t.borderStyle, + triggersBounds: diff.any + }, { + name: 'text-background-shape', + type: t.textBackgroundShape, + triggersBounds: diff.any + }, { + name: 'text-justification', + type: t.justification + }]; + var behavior = [{ + name: 'events', + type: t.bool + }, { + name: 'text-events', + type: t.bool + }]; + var visibility = [{ + name: 'display', + type: t.display, + triggersZOrder: diff.any, + triggersBounds: diff.any, + triggersBoundsOfParallelBeziers: true + }, { + name: 'visibility', + type: t.visibility, + triggersZOrder: diff.any + }, { + name: 'opacity', + type: t.zeroOneNumber, + triggersZOrder: diff.zeroNonZero + }, { + name: 'text-opacity', + type: t.zeroOneNumber + }, { + name: 'min-zoomed-font-size', + type: t.size + }, { + name: 'z-compound-depth', + type: t.zCompoundDepth, + triggersZOrder: diff.any + }, { + name: 'z-index-compare', + type: t.zIndexCompare, + triggersZOrder: diff.any + }, { + name: 'z-index', + type: t.nonNegativeInt, + triggersZOrder: diff.any + }]; + var overlay = [{ + name: 'overlay-padding', + type: t.size, + triggersBounds: diff.any + }, { + name: 'overlay-color', + type: t.color + }, { + name: 'overlay-opacity', + type: t.zeroOneNumber, + triggersBounds: diff.zeroNonZero + }]; + var transition = [{ + name: 'transition-property', + type: t.propList + }, { + name: 'transition-duration', + type: t.time + }, { + name: 'transition-delay', + type: t.time + }, { + name: 'transition-timing-function', + type: t.easing + }]; + + var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) { + if (parsedProp.value === 'label') { + return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway) + } else { + return parsedProp.pfValue; + } + }; + + var nodeBody = [{ + name: 'height', + type: t.nodeSize, + triggersBounds: diff.any, + hashOverride: nodeSizeHashOverride + }, { + name: 'width', + type: t.nodeSize, + triggersBounds: diff.any, + hashOverride: nodeSizeHashOverride + }, { + name: 'shape', + type: t.nodeShape, + triggersBounds: diff.any + }, { + name: 'shape-polygon-points', + type: t.polygonPointList, + triggersBounds: diff.any + }, { + name: 'background-color', + type: t.color + }, { + name: 'background-fill', + type: t.fill + }, { + name: 'background-opacity', + type: t.zeroOneNumber + }, { + name: 'background-blacken', + type: t.nOneOneNumber + }, { + name: 'background-gradient-stop-colors', + type: t.colors + }, { + name: 'background-gradient-stop-positions', + type: t.percentages + }, { + name: 'background-gradient-direction', + type: t.gradientDirection + }, { + name: 'padding', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'padding-relative-to', + type: t.paddingRelativeTo, + triggersBounds: diff.any + }, { + name: 'bounds-expansion', + type: t.boundsExpansion, + triggersBounds: diff.any + }]; + var nodeBorder = [{ + name: 'border-color', + type: t.color + }, { + name: 'border-opacity', + type: t.zeroOneNumber + }, { + name: 'border-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'border-style', + type: t.borderStyle + }]; + var backgroundImage = [{ + name: 'background-image', + type: t.urls + }, { + name: 'background-image-crossorigin', + type: t.bgCrossOrigin + }, { + name: 'background-image-opacity', + type: t.zeroOneNumbers + }, { + name: 'background-position-x', + type: t.bgPos + }, { + name: 'background-position-y', + type: t.bgPos + }, { + name: 'background-width-relative-to', + type: t.bgRelativeTo + }, { + name: 'background-height-relative-to', + type: t.bgRelativeTo + }, { + name: 'background-repeat', + type: t.bgRepeat + }, { + name: 'background-fit', + type: t.bgFit + }, { + name: 'background-clip', + type: t.bgClip + }, { + name: 'background-width', + type: t.bgWH + }, { + name: 'background-height', + type: t.bgWH + }, { + name: 'background-offset-x', + type: t.bgPos + }, { + name: 'background-offset-y', + type: t.bgPos + }]; + var compound = [{ + name: 'position', + type: t.position, + triggersBounds: diff.any + }, { + name: 'compound-sizing-wrt-labels', + type: t.compoundIncludeLabels, + triggersBounds: diff.any + }, { + name: 'min-width', + type: t.size, + triggersBounds: diff.any + }, { + name: 'min-width-bias-left', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'min-width-bias-right', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'min-height', + type: t.size, + triggersBounds: diff.any + }, { + name: 'min-height-bias-top', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'min-height-bias-bottom', + type: t.sizeMaybePercent, + triggersBounds: diff.any + }]; + var edgeLine = [{ + name: 'line-style', + type: t.lineStyle + }, { + name: 'line-color', + type: t.color + }, { + name: 'line-fill', + type: t.fill + }, { + name: 'line-cap', + type: t.lineCap + }, { + name: 'line-dash-pattern', + type: t.numbers + }, { + name: 'line-dash-offset', + type: t.number + }, { + name: 'line-gradient-stop-colors', + type: t.colors + }, { + name: 'line-gradient-stop-positions', + type: t.percentages + }, { + name: 'curve-style', + type: t.curveStyle, + triggersBounds: diff.any, + triggersBoundsOfParallelBeziers: true + }, { + name: 'haystack-radius', + type: t.zeroOneNumber, + triggersBounds: diff.any + }, { + name: 'source-endpoint', + type: t.edgeEndpoint, + triggersBounds: diff.any + }, { + name: 'target-endpoint', + type: t.edgeEndpoint, + triggersBounds: diff.any + }, { + name: 'control-point-step-size', + type: t.size, + triggersBounds: diff.any + }, { + name: 'control-point-distances', + type: t.bidirectionalSizes, + triggersBounds: diff.any + }, { + name: 'control-point-weights', + type: t.numbers, + triggersBounds: diff.any + }, { + name: 'segment-distances', + type: t.bidirectionalSizes, + triggersBounds: diff.any + }, { + name: 'segment-weights', + type: t.numbers, + triggersBounds: diff.any + }, { + name: 'taxi-turn', + type: t.bidirectionalSizeMaybePercent, + triggersBounds: diff.any + }, { + name: 'taxi-turn-min-distance', + type: t.size, + triggersBounds: diff.any + }, { + name: 'taxi-direction', + type: t.axisDirection, + triggersBounds: diff.any + }, { + name: 'edge-distances', + type: t.edgeDistances, + triggersBounds: diff.any + }, { + name: 'arrow-scale', + type: t.positiveNumber, + triggersBounds: diff.any + }, { + name: 'loop-direction', + type: t.angle, + triggersBounds: diff.any + }, { + name: 'loop-sweep', + type: t.angle, + triggersBounds: diff.any + }, { + name: 'source-distance-from-node', + type: t.size, + triggersBounds: diff.any + }, { + name: 'target-distance-from-node', + type: t.size, + triggersBounds: diff.any + }]; + var ghost = [{ + name: 'ghost', + type: t.bool, + triggersBounds: diff.any + }, { + name: 'ghost-offset-x', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'ghost-offset-y', + type: t.bidirectionalSize, + triggersBounds: diff.any + }, { + name: 'ghost-opacity', + type: t.zeroOneNumber + }]; + var core = [{ + name: 'selection-box-color', + type: t.color + }, { + name: 'selection-box-opacity', + type: t.zeroOneNumber + }, { + name: 'selection-box-border-color', + type: t.color + }, { + name: 'selection-box-border-width', + type: t.size + }, { + name: 'active-bg-color', + type: t.color + }, { + name: 'active-bg-opacity', + type: t.zeroOneNumber + }, { + name: 'active-bg-size', + type: t.size + }, { + name: 'outside-texture-bg-color', + type: t.color + }, { + name: 'outside-texture-bg-opacity', + type: t.zeroOneNumber + }]; // pie backgrounds for nodes + + var pie = []; + styfn$6.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use) + + pie.push({ + name: 'pie-size', + type: t.sizeMaybePercent + }); + + for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { + pie.push({ + name: 'pie-' + i + '-background-color', + type: t.color + }); + pie.push({ + name: 'pie-' + i + '-background-size', + type: t.percent + }); + pie.push({ + name: 'pie-' + i + '-background-opacity', + type: t.zeroOneNumber + }); + } // edge arrows + + + var edgeArrow = []; + var arrowPrefixes = styfn$6.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target']; + [{ + name: 'arrow-shape', + type: t.arrowShape, + triggersBounds: diff.any + }, { + name: 'arrow-color', + type: t.color + }, { + name: 'arrow-fill', + type: t.arrowFill + }].forEach(function (prop) { + arrowPrefixes.forEach(function (prefix) { + var name = prefix + '-' + prop.name; + var type = prop.type, + triggersBounds = prop.triggersBounds; + edgeArrow.push({ + name: name, + type: type, + triggersBounds: triggersBounds + }); + }); + }, {}); + var props = styfn$6.properties = [].concat(behavior, transition, visibility, overlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core); + var propGroups = styfn$6.propertyGroups = { + // common to all eles + behavior: behavior, + transition: transition, + visibility: visibility, + overlay: overlay, + ghost: ghost, + // labels + commonLabel: commonLabel, + labelDimensions: labelDimensions, + mainLabel: mainLabel, + sourceLabel: sourceLabel, + targetLabel: targetLabel, + // node props + nodeBody: nodeBody, + nodeBorder: nodeBorder, + backgroundImage: backgroundImage, + pie: pie, + compound: compound, + // edge props + edgeLine: edgeLine, + edgeArrow: edgeArrow, + core: core + }; + var propGroupNames = styfn$6.propertyGroupNames = {}; + var propGroupKeys = styfn$6.propertyGroupKeys = Object.keys(propGroups); + propGroupKeys.forEach(function (key) { + propGroupNames[key] = propGroups[key].map(function (prop) { + return prop.name; + }); + propGroups[key].forEach(function (prop) { + return prop.groupKey = key; + }); + }); // define aliases + + var aliases = styfn$6.aliases = [{ + name: 'content', + pointsTo: 'label' + }, { + name: 'control-point-distance', + pointsTo: 'control-point-distances' + }, { + name: 'control-point-weight', + pointsTo: 'control-point-weights' + }, { + name: 'edge-text-rotation', + pointsTo: 'text-rotation' + }, { + name: 'padding-left', + pointsTo: 'padding' + }, { + name: 'padding-right', + pointsTo: 'padding' + }, { + name: 'padding-top', + pointsTo: 'padding' + }, { + name: 'padding-bottom', + pointsTo: 'padding' + }]; // list of property names + + styfn$6.propertyNames = props.map(function (p) { + return p.name; + }); // allow access of properties by name ( e.g. style.properties.height ) + + for (var _i = 0; _i < props.length; _i++) { + var prop = props[_i]; + props[prop.name] = prop; // allow lookup by name + } // map aliases + + + for (var _i2 = 0; _i2 < aliases.length; _i2++) { + var alias = aliases[_i2]; + var pointsToProp = props[alias.pointsTo]; + var aliasProp = { + name: alias.name, + alias: true, + pointsTo: pointsToProp + }; // add alias prop for parsing + + props.push(aliasProp); + props[alias.name] = aliasProp; // allow lookup by name + } +})(); + +styfn$6.getDefaultProperty = function (name) { + return this.getDefaultProperties()[name]; +}; + +styfn$6.getDefaultProperties = function () { + var _p = this._private; + + if (_p.defaultProperties != null) { + return _p.defaultProperties; + } + + var rawProps = extend({ + // core props + 'selection-box-color': '#ddd', + 'selection-box-opacity': 0.65, + 'selection-box-border-color': '#aaa', + 'selection-box-border-width': 1, + 'active-bg-color': 'black', + 'active-bg-opacity': 0.15, + 'active-bg-size': 30, + 'outside-texture-bg-color': '#000', + 'outside-texture-bg-opacity': 0.125, + // common node/edge props + 'events': 'yes', + 'text-events': 'no', + 'text-valign': 'top', + 'text-halign': 'center', + 'text-justification': 'auto', + 'line-height': 1, + 'color': '#000', + 'text-outline-color': '#000', + 'text-outline-width': 0, + 'text-outline-opacity': 1, + 'text-opacity': 1, + 'text-decoration': 'none', + 'text-transform': 'none', + 'text-wrap': 'none', + 'text-overflow-wrap': 'whitespace', + 'text-max-width': 9999, + 'text-background-color': '#000', + 'text-background-opacity': 0, + 'text-background-shape': 'rectangle', + 'text-background-padding': 0, + 'text-border-opacity': 0, + 'text-border-width': 0, + 'text-border-style': 'solid', + 'text-border-color': '#000', + 'font-family': 'Helvetica Neue, Helvetica, sans-serif', + 'font-style': 'normal', + 'font-weight': 'normal', + 'font-size': 16, + 'min-zoomed-font-size': 0, + 'text-rotation': 'none', + 'source-text-rotation': 'none', + 'target-text-rotation': 'none', + 'visibility': 'visible', + 'display': 'element', + 'opacity': 1, + 'z-compound-depth': 'auto', + 'z-index-compare': 'auto', + 'z-index': 0, + 'label': '', + 'text-margin-x': 0, + 'text-margin-y': 0, + 'source-label': '', + 'source-text-offset': 0, + 'source-text-margin-x': 0, + 'source-text-margin-y': 0, + 'target-label': '', + 'target-text-offset': 0, + 'target-text-margin-x': 0, + 'target-text-margin-y': 0, + 'overlay-opacity': 0, + 'overlay-color': '#000', + 'overlay-padding': 10, + 'transition-property': 'none', + 'transition-duration': 0, + 'transition-delay': 0, + 'transition-timing-function': 'linear', + // node props + 'background-blacken': 0, + 'background-color': '#999', + 'background-fill': 'solid', + 'background-opacity': 1, + 'background-image': 'none', + 'background-image-crossorigin': 'anonymous', + 'background-image-opacity': 1, + 'background-position-x': '50%', + 'background-position-y': '50%', + 'background-offset-x': 0, + 'background-offset-y': 0, + 'background-width-relative-to': 'include-padding', + 'background-height-relative-to': 'include-padding', + 'background-repeat': 'no-repeat', + 'background-fit': 'none', + 'background-clip': 'node', + 'background-width': 'auto', + 'background-height': 'auto', + 'border-color': '#000', + 'border-opacity': 1, + 'border-width': 0, + 'border-style': 'solid', + 'height': 30, + 'width': 30, + 'shape': 'ellipse', + 'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1', + 'bounds-expansion': 0, + // node gradient + 'background-gradient-direction': 'to-bottom', + 'background-gradient-stop-colors': '#999', + 'background-gradient-stop-positions': '0%', + // ghost props + 'ghost': 'no', + 'ghost-offset-y': 0, + 'ghost-offset-x': 0, + 'ghost-opacity': 0, + // compound props + 'padding': 0, + 'padding-relative-to': 'width', + 'position': 'origin', + 'compound-sizing-wrt-labels': 'include', + 'min-width': 0, + 'min-width-bias-left': 0, + 'min-width-bias-right': 0, + 'min-height': 0, + 'min-height-bias-top': 0, + 'min-height-bias-bottom': 0 + }, { + // node pie bg + 'pie-size': '100%' + }, [{ + name: 'pie-{{i}}-background-color', + value: 'black' + }, { + name: 'pie-{{i}}-background-size', + value: '0%' + }, { + name: 'pie-{{i}}-background-opacity', + value: 1 + }].reduce(function (css, prop) { + for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { + var name = prop.name.replace('{{i}}', i); + var val = prop.value; + css[name] = val; + } + + return css; + }, {}), { + // edge props + 'line-style': 'solid', + 'line-color': '#999', + 'line-fill': 'solid', + 'line-cap': 'butt', + 'line-gradient-stop-colors': '#999', + 'line-gradient-stop-positions': '0%', + 'control-point-step-size': 40, + 'control-point-weights': 0.5, + 'segment-weights': 0.5, + 'segment-distances': 20, + 'taxi-turn': '50%', + 'taxi-turn-min-distance': 10, + 'taxi-direction': 'auto', + 'edge-distances': 'intersection', + 'curve-style': 'haystack', + 'haystack-radius': 0, + 'arrow-scale': 1, + 'loop-direction': '-45deg', + 'loop-sweep': '-90deg', + 'source-distance-from-node': 0, + 'target-distance-from-node': 0, + 'source-endpoint': 'outside-to-node', + 'target-endpoint': 'outside-to-node', + 'line-dash-pattern': [6, 3], + 'line-dash-offset': 0 + }, [{ + name: 'arrow-shape', + value: 'none' + }, { + name: 'arrow-color', + value: '#999' + }, { + name: 'arrow-fill', + value: 'filled' + }].reduce(function (css, prop) { + styfn$6.arrowPrefixes.forEach(function (prefix) { + var name = prefix + '-' + prop.name; + var val = prop.value; + css[name] = val; + }); + return css; + }, {})); + var parsedProps = {}; + + for (var i = 0; i < this.properties.length; i++) { + var prop = this.properties[i]; + + if (prop.pointsTo) { + continue; + } + + var name = prop.name; + var val = rawProps[name]; + var parsedProp = this.parse(name, val); + parsedProps[name] = parsedProp; + } + + _p.defaultProperties = parsedProps; + return _p.defaultProperties; +}; + +styfn$6.addDefaultStylesheet = function () { + this.selector(':parent').css({ + 'shape': 'rectangle', + 'padding': 10, + 'background-color': '#eee', + 'border-color': '#ccc', + 'border-width': 1 + }).selector('edge').css({ + 'width': 3 + }).selector(':loop').css({ + 'curve-style': 'bezier' + }).selector('edge:compound').css({ + 'curve-style': 'bezier', + 'source-endpoint': 'outside-to-line', + 'target-endpoint': 'outside-to-line' + }).selector(':selected').css({ + 'background-color': '#0169D9', + 'line-color': '#0169D9', + 'source-arrow-color': '#0169D9', + 'target-arrow-color': '#0169D9', + 'mid-source-arrow-color': '#0169D9', + 'mid-target-arrow-color': '#0169D9' + }).selector(':parent:selected').css({ + 'background-color': '#CCE1F9', + 'border-color': '#aec8e5' + }).selector(':active').css({ + 'overlay-color': 'black', + 'overlay-padding': 10, + 'overlay-opacity': 0.25 + }); + this.defaultLength = this.length; +}; + +var styfn$7 = {}; // a caching layer for property parsing + +styfn$7.parse = function (name, value, propIsBypass, propIsFlat) { + var self = this; // function values can't be cached in all cases, and there isn't much benefit of caching them anyway + + if (fn(value)) { + return self.parseImplWarn(name, value, propIsBypass, propIsFlat); + } + + var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat; + var bypassKey = propIsBypass ? 't' : 'f'; + var valueKey = '' + value; + var argHash = hashStrings(name, valueKey, bypassKey, flatKey); + var propCache = self.propCache = self.propCache || []; + var ret; + + if (!(ret = propCache[argHash])) { + ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat); + } // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden + // - mappings can't be shared b/c mappings are per-element + + + if (propIsBypass || propIsFlat === 'mapping') { + // need a copy since props are mutated later in their lifecycles + ret = copy(ret); + + if (ret) { + ret.value = copy(ret.value); // because it could be an array, e.g. colour + } + } + + return ret; +}; + +styfn$7.parseImplWarn = function (name, value, propIsBypass, propIsFlat) { + var prop = this.parseImpl(name, value, propIsBypass, propIsFlat); + + if (!prop && value != null) { + warn("The style property `".concat(name, ": ").concat(value, "` is invalid")); + } + + if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') { + warn('The style value of `label` is deprecated for `' + prop.name + '`'); + } + + return prop; +}; // parse a property; return null on invalid; return parsed property otherwise +// fields : +// - name : the name of the property +// - value : the parsed, native-typed value of the property +// - strValue : a string value that represents the property value in valid css +// - bypass : true iff the property is a bypass property + + +styfn$7.parseImpl = function (name, value, propIsBypass, propIsFlat) { + var self = this; + name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName') + + var property = self.properties[name]; + var passedValue = value; + var types = self.types; + + if (!property) { + return null; + } // return null on property of unknown name + + + if (value === undefined) { + return null; + } // can't assign undefined + // the property may be an alias + + + if (property.alias) { + property = property.pointsTo; + name = property.name; + } + + var valueIsString = string(value); + + if (valueIsString) { + // trim the value to make parsing easier + value = value.trim(); + } + + var type = property.type; + + if (!type) { + return null; + } // no type, no luck + // check if bypass is null or empty string (i.e. indication to delete bypass property) + + + if (propIsBypass && (value === '' || value === null)) { + return { + name: name, + value: value, + bypass: true, + deleteBypass: true + }; + } // check if value is a function used as a mapper + + + if (fn(value)) { + return { + name: name, + value: value, + strValue: 'fn', + mapped: types.fn, + bypass: propIsBypass + }; + } // check if value is mapped + + + var data, mapData; + + if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) { + if (propIsBypass) { + return false; + } // mappers not allowed in bypass + + + var mapped = types.data; + return { + name: name, + value: data, + strValue: '' + value, + mapped: mapped, + field: data[1], + bypass: propIsBypass + }; + } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) { + if (propIsBypass) { + return false; + } // mappers not allowed in bypass + + + if (type.multiple) { + return false; + } // impossible to map to num + + + var _mapped = types.mapData; // we can map only if the type is a colour or a number + + if (!(type.color || type.number)) { + return false; + } + + var valueMin = this.parse(name, mapData[4]); // parse to validate + + if (!valueMin || valueMin.mapped) { + return false; + } // can't be invalid or mapped + + + var valueMax = this.parse(name, mapData[5]); // parse to validate + + if (!valueMax || valueMax.mapped) { + return false; + } // can't be invalid or mapped + // check if valueMin and valueMax are the same + + + if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) { + warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`'); + return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range + } else if (type.color) { + var c1 = valueMin.value; + var c2 = valueMax.value; + var same = c1[0] === c2[0] // red + && c1[1] === c2[1] // green + && c1[2] === c2[2] // blue + && ( // optional alpha + c1[3] === c2[3] // same alpha outright + || (c1[3] == null || c1[3] === 1) && ( // full opacity for colour 1? + c2[3] == null || c2[3] === 1) // full opacity for colour 2? + ); + + if (same) { + return false; + } // can't make a mapper without a range + + } + + return { + name: name, + value: mapData, + strValue: '' + value, + mapped: _mapped, + field: mapData[1], + fieldMin: parseFloat(mapData[2]), + // min & max are numeric + fieldMax: parseFloat(mapData[3]), + valueMin: valueMin.value, + valueMax: valueMax.value, + bypass: propIsBypass + }; + } + + if (type.multiple && propIsFlat !== 'multiple') { + var vals; + + if (valueIsString) { + vals = value.split(/\s+/); + } else if (array(value)) { + vals = value; + } else { + vals = [value]; + } + + if (type.evenMultiple && vals.length % 2 !== 0) { + return null; + } + + var valArr = []; + var unitsArr = []; + var pfValArr = []; + var strVal = ''; + var hasEnum = false; + + for (var i = 0; i < vals.length; i++) { + var p = self.parse(name, vals[i], propIsBypass, 'multiple'); + hasEnum = hasEnum || string(p.value); + valArr.push(p.value); + pfValArr.push(p.pfValue != null ? p.pfValue : p.value); + unitsArr.push(p.units); + strVal += (i > 0 ? ' ' : '') + p.strValue; + } + + if (type.validate && !type.validate(valArr, unitsArr)) { + return null; + } + + if (type.singleEnum && hasEnum) { + if (valArr.length === 1 && string(valArr[0])) { + return { + name: name, + value: valArr[0], + strValue: valArr[0], + bypass: propIsBypass + }; + } else { + return null; + } + } + + return { + name: name, + value: valArr, + pfValue: pfValArr, + strValue: strVal, + bypass: propIsBypass, + units: unitsArr + }; + } // several types also allow enums + + + var checkEnums = function checkEnums() { + for (var _i = 0; _i < type.enums.length; _i++) { + var en = type.enums[_i]; + + if (en === value) { + return { + name: name, + value: value, + strValue: '' + value, + bypass: propIsBypass + }; + } + } + + return null; + }; // check the type and return the appropriate object + + + if (type.number) { + var units; + var implicitUnits = 'px'; // not set => px + + if (type.units) { + // use specified units if set + units = type.units; + } + + if (type.implicitUnits) { + implicitUnits = type.implicitUnits; + } + + if (!type.unitless) { + if (valueIsString) { + var unitsRegex = 'px|em' + (type.allowPercent ? '|\\%' : ''); + + if (units) { + unitsRegex = units; + } // only allow explicit units if so set + + + var match = value.match('^(' + number$1 + ')(' + unitsRegex + ')?' + '$'); + + if (match) { + value = match[1]; + units = match[2] || implicitUnits; + } + } else if (!units || type.implicitUnits) { + units = implicitUnits; // implicitly px if unspecified + } + } + + value = parseFloat(value); // if not a number and enums not allowed, then the value is invalid + + if (isNaN(value) && type.enums === undefined) { + return null; + } // check if this number type also accepts special keywords in place of numbers + // (i.e. `left`, `auto`, etc) + + + if (isNaN(value) && type.enums !== undefined) { + value = passedValue; + return checkEnums(); + } // check if value must be an integer + + + if (type.integer && !integer(value)) { + return null; + } // check value is within range + + + if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) { + return null; + } + + var ret = { + name: name, + value: value, + strValue: '' + value + (units ? units : ''), + units: units, + bypass: propIsBypass + }; // normalise value in pixels + + if (type.unitless || units !== 'px' && units !== 'em') { + ret.pfValue = value; + } else { + ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value; + } // normalise value in ms + + + if (units === 'ms' || units === 's') { + ret.pfValue = units === 'ms' ? value : 1000 * value; + } // normalise value in rad + + + if (units === 'deg' || units === 'rad') { + ret.pfValue = units === 'rad' ? value : deg2rad(value); + } // normalize value in % + + + if (units === '%') { + ret.pfValue = value / 100; + } + + return ret; + } else if (type.propList) { + var props = []; + var propsStr = '' + value; + + if (propsStr === 'none') ; else { + // go over each prop + var propsSplit = propsStr.split(/\s*,\s*|\s+/); + + for (var _i2 = 0; _i2 < propsSplit.length; _i2++) { + var propName = propsSplit[_i2].trim(); + + if (self.properties[propName]) { + props.push(propName); + } else { + warn('`' + propName + '` is not a valid property name'); + } + } + + if (props.length === 0) { + return null; + } + } + + return { + name: name, + value: props, + strValue: props.length === 0 ? 'none' : props.join(' '), + bypass: propIsBypass + }; + } else if (type.color) { + var tuple = color2tuple(value); + + if (!tuple) { + return null; + } + + return { + name: name, + value: tuple, + pfValue: tuple, + strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')', + // n.b. no spaces b/c of multiple support + bypass: propIsBypass + }; + } else if (type.regex || type.regexes) { + // first check enums + if (type.enums) { + var enumProp = checkEnums(); + + if (enumProp) { + return enumProp; + } + } + + var regexes = type.regexes ? type.regexes : [type.regex]; + + for (var _i3 = 0; _i3 < regexes.length; _i3++) { + var regex = new RegExp(regexes[_i3]); // make a regex from the type string + + var m = regex.exec(value); + + if (m) { + // regex matches + return { + name: name, + value: type.singleRegexMatchValue ? m[1] : m, + strValue: '' + value, + bypass: propIsBypass + }; + } + } + + return null; // didn't match any + } else if (type.string) { + // just return + return { + name: name, + value: '' + value, + strValue: '' + value, + bypass: propIsBypass + }; + } else if (type.enums) { + // check enums last because it's a combo type in others + return checkEnums(); + } else { + return null; // not a type we can handle + } +}; + +var Style = function Style(cy) { + if (!(this instanceof Style)) { + return new Style(cy); + } + + if (!core(cy)) { + error('A style must have a core reference'); + return; + } + + this._private = { + cy: cy, + coreStyle: {} + }; + this.length = 0; + this.resetToDefault(); +}; + +var styfn$8 = Style.prototype; + +styfn$8.instanceString = function () { + return 'style'; +}; // remove all contexts + + +styfn$8.clear = function () { + for (var i = 0; i < this.length; i++) { + this[i] = undefined; + } + + this.length = 0; + var _p = this._private; + _p.newStyle = true; + return this; // chaining +}; + +styfn$8.resetToDefault = function () { + this.clear(); + this.addDefaultStylesheet(); + return this; +}; // builds a style object for the 'core' selector + + +styfn$8.core = function (propName) { + return this._private.coreStyle[propName] || this.getDefaultProperty(propName); +}; // create a new context from the specified selector string and switch to that context + + +styfn$8.selector = function (selectorStr) { + // 'core' is a special case and does not need a selector + var selector = selectorStr === 'core' ? null : new Selector(selectorStr); + var i = this.length++; // new context means new index + + this[i] = { + selector: selector, + properties: [], + mappedProperties: [], + index: i + }; + return this; // chaining +}; // add one or many css rules to the current context + + +styfn$8.css = function () { + var self = this; + var args = arguments; + + if (args.length === 1) { + var map = args[0]; + + for (var i = 0; i < self.properties.length; i++) { + var prop = self.properties[i]; + var mapVal = map[prop.name]; + + if (mapVal === undefined) { + mapVal = map[dash2camel(prop.name)]; + } + + if (mapVal !== undefined) { + this.cssRule(prop.name, mapVal); + } + } + } else if (args.length === 2) { + this.cssRule(args[0], args[1]); + } // do nothing if args are invalid + + + return this; // chaining +}; + +styfn$8.style = styfn$8.css; // add a single css rule to the current context + +styfn$8.cssRule = function (name, value) { + // name-value pair + var property = this.parse(name, value); // add property to current context if valid + + if (property) { + var i = this.length - 1; + this[i].properties.push(property); + this[i].properties[property.name] = property; // allow access by name as well + + if (property.name.match(/pie-(\d+)-background-size/) && property.value) { + this._private.hasPie = true; + } + + if (property.mapped) { + this[i].mappedProperties.push(property); + } // add to core style if necessary + + + var currentSelectorIsCore = !this[i].selector; + + if (currentSelectorIsCore) { + this._private.coreStyle[property.name] = property; + } + } + + return this; // chaining +}; + +styfn$8.append = function (style) { + if (stylesheet(style)) { + style.appendToStyle(this); + } else if (array(style)) { + this.appendFromJson(style); + } else if (string(style)) { + this.appendFromString(style); + } // you probably wouldn't want to append a Style, since you'd duplicate the default parts + + + return this; +}; // static function + + +Style.fromJson = function (cy, json) { + var style = new Style(cy); + style.fromJson(json); + return style; +}; + +Style.fromString = function (cy, string) { + return new Style(cy).fromString(string); +}; + +[styfn, styfn$1, styfn$2, styfn$3, styfn$4, styfn$5, styfn$6, styfn$7].forEach(function (props) { + extend(styfn$8, props); +}); +Style.types = styfn$8.types; +Style.properties = styfn$8.properties; +Style.propertyGroups = styfn$8.propertyGroups; +Style.propertyGroupNames = styfn$8.propertyGroupNames; +Style.propertyGroupKeys = styfn$8.propertyGroupKeys; + +var corefn$7 = { + style: function style(newStyle) { + if (newStyle) { + var s = this.setStyle(newStyle); + s.update(); + } + + return this._private.style; + }, + setStyle: function setStyle(style) { + var _p = this._private; + + if (stylesheet(style)) { + _p.style = style.generateStyle(this); + } else if (array(style)) { + _p.style = Style.fromJson(this, style); + } else if (string(style)) { + _p.style = Style.fromString(this, style); + } else { + _p.style = Style(this); + } + + return _p.style; + } +}; + +var defaultSelectionType = 'single'; +var corefn$8 = { + autolock: function autolock(bool) { + if (bool !== undefined) { + this._private.autolock = bool ? true : false; + } else { + return this._private.autolock; + } + + return this; // chaining + }, + autoungrabify: function autoungrabify(bool) { + if (bool !== undefined) { + this._private.autoungrabify = bool ? true : false; + } else { + return this._private.autoungrabify; + } + + return this; // chaining + }, + autounselectify: function autounselectify(bool) { + if (bool !== undefined) { + this._private.autounselectify = bool ? true : false; + } else { + return this._private.autounselectify; + } + + return this; // chaining + }, + selectionType: function selectionType(selType) { + var _p = this._private; + + if (_p.selectionType == null) { + _p.selectionType = defaultSelectionType; + } + + if (selType !== undefined) { + if (selType === 'additive' || selType === 'single') { + _p.selectionType = selType; + } + } else { + return _p.selectionType; + } + + return this; + }, + panningEnabled: function panningEnabled(bool) { + if (bool !== undefined) { + this._private.panningEnabled = bool ? true : false; + } else { + return this._private.panningEnabled; + } + + return this; // chaining + }, + userPanningEnabled: function userPanningEnabled(bool) { + if (bool !== undefined) { + this._private.userPanningEnabled = bool ? true : false; + } else { + return this._private.userPanningEnabled; + } + + return this; // chaining + }, + zoomingEnabled: function zoomingEnabled(bool) { + if (bool !== undefined) { + this._private.zoomingEnabled = bool ? true : false; + } else { + return this._private.zoomingEnabled; + } + + return this; // chaining + }, + userZoomingEnabled: function userZoomingEnabled(bool) { + if (bool !== undefined) { + this._private.userZoomingEnabled = bool ? true : false; + } else { + return this._private.userZoomingEnabled; + } + + return this; // chaining + }, + boxSelectionEnabled: function boxSelectionEnabled(bool) { + if (bool !== undefined) { + this._private.boxSelectionEnabled = bool ? true : false; + } else { + return this._private.boxSelectionEnabled; + } + + return this; // chaining + }, + pan: function pan() { + var args = arguments; + var pan = this._private.pan; + var dim, val, dims, x, y; + + switch (args.length) { + case 0: + // .pan() + return pan; + + case 1: + if (string(args[0])) { + // .pan('x') + dim = args[0]; + return pan[dim]; + } else if (plainObject(args[0])) { + // .pan({ x: 0, y: 100 }) + if (!this._private.panningEnabled) { + return this; + } + + dims = args[0]; + x = dims.x; + y = dims.y; + + if (number(x)) { + pan.x = x; + } + + if (number(y)) { + pan.y = y; + } + + this.emit('pan viewport'); + } + + break; + + case 2: + // .pan('x', 100) + if (!this._private.panningEnabled) { + return this; + } + + dim = args[0]; + val = args[1]; + + if ((dim === 'x' || dim === 'y') && number(val)) { + pan[dim] = val; + } + + this.emit('pan viewport'); + break; + // invalid + } + + this.notify('viewport'); + return this; // chaining + }, + panBy: function panBy(arg0, arg1) { + var args = arguments; + var pan = this._private.pan; + var dim, val, dims, x, y; + + if (!this._private.panningEnabled) { + return this; + } + + switch (args.length) { + case 1: + if (plainObject(arg0)) { + // .panBy({ x: 0, y: 100 }) + dims = args[0]; + x = dims.x; + y = dims.y; + + if (number(x)) { + pan.x += x; + } + + if (number(y)) { + pan.y += y; + } + + this.emit('pan viewport'); + } + + break; + + case 2: + // .panBy('x', 100) + dim = arg0; + val = arg1; + + if ((dim === 'x' || dim === 'y') && number(val)) { + pan[dim] += val; + } + + this.emit('pan viewport'); + break; + // invalid + } + + this.notify('viewport'); + return this; // chaining + }, + fit: function fit(elements, padding) { + var viewportState = this.getFitViewport(elements, padding); + + if (viewportState) { + var _p = this._private; + _p.zoom = viewportState.zoom; + _p.pan = viewportState.pan; + this.emit('pan zoom viewport'); + this.notify('viewport'); + } + + return this; // chaining + }, + getFitViewport: function getFitViewport(elements, padding) { + if (number(elements) && padding === undefined) { + // elements is optional + padding = elements; + elements = undefined; + } + + if (!this._private.panningEnabled || !this._private.zoomingEnabled) { + return; + } + + var bb; + + if (string(elements)) { + var sel = elements; + elements = this.$(sel); + } else if (boundingBox(elements)) { + // assume bb + var bbe = elements; + bb = { + x1: bbe.x1, + y1: bbe.y1, + x2: bbe.x2, + y2: bbe.y2 + }; + bb.w = bb.x2 - bb.x1; + bb.h = bb.y2 - bb.y1; + } else if (!elementOrCollection(elements)) { + elements = this.mutableElements(); + } + + if (elementOrCollection(elements) && elements.empty()) { + return; + } // can't fit to nothing + + + bb = bb || elements.boundingBox(); + var w = this.width(); + var h = this.height(); + var zoom; + padding = number(padding) ? padding : 0; + + if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) { + zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h); // crop zoom + + zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom; + zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom; + var pan = { + // now pan to middle + x: (w - zoom * (bb.x1 + bb.x2)) / 2, + y: (h - zoom * (bb.y1 + bb.y2)) / 2 + }; + return { + zoom: zoom, + pan: pan + }; + } + + return; + }, + zoomRange: function zoomRange(min, max) { + var _p = this._private; + + if (max == null) { + var opts = min; + min = opts.min; + max = opts.max; + } + + if (number(min) && number(max) && min <= max) { + _p.minZoom = min; + _p.maxZoom = max; + } else if (number(min) && max === undefined && min <= _p.maxZoom) { + _p.minZoom = min; + } else if (number(max) && min === undefined && max >= _p.minZoom) { + _p.maxZoom = max; + } + + return this; + }, + minZoom: function minZoom(zoom) { + if (zoom === undefined) { + return this._private.minZoom; + } else { + return this.zoomRange({ + min: zoom + }); + } + }, + maxZoom: function maxZoom(zoom) { + if (zoom === undefined) { + return this._private.maxZoom; + } else { + return this.zoomRange({ + max: zoom + }); + } + }, + getZoomedViewport: function getZoomedViewport(params) { + var _p = this._private; + var currentPan = _p.pan; + var currentZoom = _p.zoom; + var pos; // in rendered px + + var zoom; + var bail = false; + + if (!_p.zoomingEnabled) { + // zooming disabled + bail = true; + } + + if (number(params)) { + // then set the zoom + zoom = params; + } else if (plainObject(params)) { + // then zoom about a point + zoom = params.level; + + if (params.position != null) { + pos = modelToRenderedPosition(params.position, currentZoom, currentPan); + } else if (params.renderedPosition != null) { + pos = params.renderedPosition; + } + + if (pos != null && !_p.panningEnabled) { + // panning disabled + bail = true; + } + } // crop zoom + + + zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom; + zoom = zoom < _p.minZoom ? _p.minZoom : zoom; // can't zoom with invalid params + + if (bail || !number(zoom) || zoom === currentZoom || pos != null && (!number(pos.x) || !number(pos.y))) { + return null; + } + + if (pos != null) { + // set zoom about position + var pan1 = currentPan; + var zoom1 = currentZoom; + var zoom2 = zoom; + var pan2 = { + x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x, + y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y + }; + return { + zoomed: true, + panned: true, + zoom: zoom2, + pan: pan2 + }; + } else { + // just set the zoom + return { + zoomed: true, + panned: false, + zoom: zoom, + pan: currentPan + }; + } + }, + zoom: function zoom(params) { + if (params === undefined) { + // get + return this._private.zoom; + } else { + // set + var vp = this.getZoomedViewport(params); + var _p = this._private; + + if (vp == null || !vp.zoomed) { + return this; + } + + _p.zoom = vp.zoom; + + if (vp.panned) { + _p.pan.x = vp.pan.x; + _p.pan.y = vp.pan.y; + } + + this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport'); + this.notify('viewport'); + return this; // chaining + } + }, + viewport: function viewport(opts) { + var _p = this._private; + var zoomDefd = true; + var panDefd = true; + var events = []; // to trigger + + var zoomFailed = false; + var panFailed = false; + + if (!opts) { + return this; + } + + if (!number(opts.zoom)) { + zoomDefd = false; + } + + if (!plainObject(opts.pan)) { + panDefd = false; + } + + if (!zoomDefd && !panDefd) { + return this; + } + + if (zoomDefd) { + var z = opts.zoom; + + if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) { + zoomFailed = true; + } else { + _p.zoom = z; + events.push('zoom'); + } + } + + if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) { + var p = opts.pan; + + if (number(p.x)) { + _p.pan.x = p.x; + panFailed = false; + } + + if (number(p.y)) { + _p.pan.y = p.y; + panFailed = false; + } + + if (!panFailed) { + events.push('pan'); + } + } + + if (events.length > 0) { + events.push('viewport'); + this.emit(events.join(' ')); + this.notify('viewport'); + } + + return this; // chaining + }, + center: function center(elements) { + var pan = this.getCenterPan(elements); + + if (pan) { + this._private.pan = pan; + this.emit('pan viewport'); + this.notify('viewport'); + } + + return this; // chaining + }, + getCenterPan: function getCenterPan(elements, zoom) { + if (!this._private.panningEnabled) { + return; + } + + if (string(elements)) { + var selector = elements; + elements = this.mutableElements().filter(selector); + } else if (!elementOrCollection(elements)) { + elements = this.mutableElements(); + } + + if (elements.length === 0) { + return; + } // can't centre pan to nothing + + + var bb = elements.boundingBox(); + var w = this.width(); + var h = this.height(); + zoom = zoom === undefined ? this._private.zoom : zoom; + var pan = { + // middle + x: (w - zoom * (bb.x1 + bb.x2)) / 2, + y: (h - zoom * (bb.y1 + bb.y2)) / 2 + }; + return pan; + }, + reset: function reset() { + if (!this._private.panningEnabled || !this._private.zoomingEnabled) { + return this; + } + + this.viewport({ + pan: { + x: 0, + y: 0 + }, + zoom: 1 + }); + return this; // chaining + }, + invalidateSize: function invalidateSize() { + this._private.sizeCache = null; + }, + size: function size() { + var _p = this._private; + var container = _p.container; + return _p.sizeCache = _p.sizeCache || (container ? function () { + var style = window$1.getComputedStyle(container); + + var val = function val(name) { + return parseFloat(style.getPropertyValue(name)); + }; + + return { + width: container.clientWidth - val('padding-left') - val('padding-right'), + height: container.clientHeight - val('padding-top') - val('padding-bottom') + }; + }() : { + // fallback if no container (not 0 b/c can be used for dividing etc) + width: 1, + height: 1 + }); + }, + width: function width() { + return this.size().width; + }, + height: function height() { + return this.size().height; + }, + extent: function extent() { + var pan = this._private.pan; + var zoom = this._private.zoom; + var rb = this.renderedExtent(); + var b = { + x1: (rb.x1 - pan.x) / zoom, + x2: (rb.x2 - pan.x) / zoom, + y1: (rb.y1 - pan.y) / zoom, + y2: (rb.y2 - pan.y) / zoom + }; + b.w = b.x2 - b.x1; + b.h = b.y2 - b.y1; + return b; + }, + renderedExtent: function renderedExtent() { + var width = this.width(); + var height = this.height(); + return { + x1: 0, + y1: 0, + x2: width, + y2: height, + w: width, + h: height + }; + } +}; // aliases + +corefn$8.centre = corefn$8.center; // backwards compatibility + +corefn$8.autolockNodes = corefn$8.autolock; +corefn$8.autoungrabifyNodes = corefn$8.autoungrabify; + +var fn$6 = { + data: define$3.data({ + field: 'data', + bindingEvent: 'data', + allowBinding: true, + allowSetting: true, + settingEvent: 'data', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true + }), + removeData: define$3.removeData({ + field: 'data', + event: 'data', + triggerFnName: 'trigger', + triggerEvent: true + }), + scratch: define$3.data({ + field: 'scratch', + bindingEvent: 'scratch', + allowBinding: true, + allowSetting: true, + settingEvent: 'scratch', + settingTriggersEvent: true, + triggerFnName: 'trigger', + allowGetting: true + }), + removeScratch: define$3.removeData({ + field: 'scratch', + event: 'scratch', + triggerFnName: 'trigger', + triggerEvent: true + }) +}; // aliases + +fn$6.attr = fn$6.data; +fn$6.removeAttr = fn$6.removeData; + +var Core = function Core(opts) { + var cy = this; + opts = extend({}, opts); + var container = opts.container; // allow for passing a wrapped jquery object + // e.g. cytoscape({ container: $('#cy') }) + + if (container && !htmlElement(container) && htmlElement(container[0])) { + container = container[0]; + } + + var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery + + reg = reg || {}; + + if (reg && reg.cy) { + reg.cy.destroy(); + reg = {}; // old instance => replace reg completely + } + + var readies = reg.readies = reg.readies || []; + + if (container) { + container._cyreg = reg; + } // make sure container assoc'd reg points to this cy + + + reg.cy = cy; + var head = window$1 !== undefined && container !== undefined && !opts.headless; + var options = opts; + options.layout = extend({ + name: head ? 'grid' : 'null' + }, options.layout); + options.renderer = extend({ + name: head ? 'canvas' : 'null' + }, options.renderer); + + var defVal = function defVal(def, val, altVal) { + if (val !== undefined) { + return val; + } else if (altVal !== undefined) { + return altVal; + } else { + return def; + } + }; + + var _p = this._private = { + container: container, + // html dom ele container + ready: false, + // whether ready has been triggered + options: options, + // cached options + elements: new Collection(this), + // elements in the graph + listeners: [], + // list of listeners + aniEles: new Collection(this), + // elements being animated + data: {}, + // data for the core + scratch: {}, + // scratch object for core + layout: null, + renderer: null, + destroyed: false, + // whether destroy was called + notificationsEnabled: true, + // whether notifications are sent to the renderer + minZoom: 1e-50, + maxZoom: 1e50, + zoomingEnabled: defVal(true, options.zoomingEnabled), + userZoomingEnabled: defVal(true, options.userZoomingEnabled), + panningEnabled: defVal(true, options.panningEnabled), + userPanningEnabled: defVal(true, options.userPanningEnabled), + boxSelectionEnabled: defVal(true, options.boxSelectionEnabled), + autolock: defVal(false, options.autolock, options.autolockNodes), + autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes), + autounselectify: defVal(false, options.autounselectify), + styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled, + zoom: number(options.zoom) ? options.zoom : 1, + pan: { + x: plainObject(options.pan) && number(options.pan.x) ? options.pan.x : 0, + y: plainObject(options.pan) && number(options.pan.y) ? options.pan.y : 0 + }, + animation: { + // object for currently-running animations + current: [], + queue: [] + }, + hasCompoundNodes: false + }; + + this.createEmitter(); // set selection type + + this.selectionType(options.selectionType); // init zoom bounds + + this.zoomRange({ + min: options.minZoom, + max: options.maxZoom + }); + + var loadExtData = function loadExtData(extData, next) { + var anyIsPromise = extData.some(promise); + + if (anyIsPromise) { + return Promise$1.all(extData).then(next); // load all data asynchronously, then exec rest of init + } else { + next(extData); // exec synchronously for convenience + } + }; // start with the default stylesheet so we have something before loading an external stylesheet + + + if (_p.styleEnabled) { + cy.setStyle([]); + } // create the renderer + + + var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options + + cy.initRenderer(rendererOptions); + + var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) { + cy.notifications(false); // remove old elements + + var oldEles = cy.mutableElements(); + + if (oldEles.length > 0) { + oldEles.remove(); + } + + if (elements != null) { + if (plainObject(elements) || array(elements)) { + cy.add(elements); + } + } + + cy.one('layoutready', function (e) { + cy.notifications(true); + cy.emit(e); // we missed this event by turning notifications off, so pass it on + + cy.one('load', onload); + cy.emitAndNotify('load'); + }).one('layoutstop', function () { + cy.one('done', ondone); + cy.emit('done'); + }); + var layoutOpts = extend({}, cy._private.options.layout); + layoutOpts.eles = cy.elements(); + cy.layout(layoutOpts).run(); + }; + + loadExtData([options.style, options.elements], function (thens) { + var initStyle = thens[0]; + var initEles = thens[1]; // init style + + if (_p.styleEnabled) { + cy.style().append(initStyle); + } // initial load + + + setElesAndLayout(initEles, function () { + // onready + cy.startAnimationLoop(); + _p.ready = true; // if a ready callback is specified as an option, the bind it + + if (fn(options.ready)) { + cy.on('ready', options.ready); + } // bind all the ready handlers registered before creating this instance + + + for (var i = 0; i < readies.length; i++) { + var fn$1 = readies[i]; + cy.on('ready', fn$1); + } + + if (reg) { + reg.readies = []; + } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc + + + cy.emit('ready'); + }, options.done); + }); +}; + +var corefn$9 = Core.prototype; // short alias + +extend(corefn$9, { + instanceString: function instanceString() { + return 'core'; + }, + isReady: function isReady() { + return this._private.ready; + }, + destroyed: function destroyed() { + return this._private.destroyed; + }, + ready: function ready(fn) { + if (this.isReady()) { + this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event + } else { + this.on('ready', fn); + } + + return this; + }, + destroy: function destroy() { + var cy = this; + if (cy.destroyed()) return; + cy.stopAnimationLoop(); + cy.destroyRenderer(); + this.emit('destroy'); + cy._private.destroyed = true; + return cy; + }, + hasElementWithId: function hasElementWithId(id) { + return this._private.elements.hasElementWithId(id); + }, + getElementById: function getElementById(id) { + return this._private.elements.getElementById(id); + }, + hasCompoundNodes: function hasCompoundNodes() { + return this._private.hasCompoundNodes; + }, + headless: function headless() { + return this._private.renderer.isHeadless(); + }, + styleEnabled: function styleEnabled() { + return this._private.styleEnabled; + }, + addToPool: function addToPool(eles) { + this._private.elements.merge(eles); + + return this; // chaining + }, + removeFromPool: function removeFromPool(eles) { + this._private.elements.unmerge(eles); + + return this; + }, + container: function container() { + return this._private.container || null; + }, + mount: function mount(container) { + if (container == null) { + return; + } + + var cy = this; + var _p = cy._private; + var options = _p.options; + + if (!htmlElement(container) && htmlElement(container[0])) { + container = container[0]; + } + + cy.stopAnimationLoop(); + cy.destroyRenderer(); + _p.container = container; + _p.styleEnabled = true; + cy.invalidateSize(); + cy.initRenderer(extend({}, options, options.renderer, { + // allow custom renderer name to be re-used, otherwise use canvas + name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name + })); + cy.startAnimationLoop(); + cy.style(options.style); + cy.emit('mount'); + return cy; + }, + unmount: function unmount() { + var cy = this; + cy.stopAnimationLoop(); + cy.destroyRenderer(); + cy.initRenderer({ + name: 'null' + }); + cy.emit('unmount'); + return cy; + }, + options: function options() { + return copy(this._private.options); + }, + json: function json(obj) { + var cy = this; + var _p = cy._private; + var eles = cy.mutableElements(); + + var getFreshRef = function getFreshRef(ele) { + return cy.getElementById(ele.id()); + }; + + if (plainObject(obj)) { + // set + cy.startBatch(); + + if (obj.elements) { + var idInJson = {}; + + var updateEles = function updateEles(jsons, gr) { + var toAdd = []; + var toMod = []; + + for (var i = 0; i < jsons.length; i++) { + var json = jsons[i]; + var id = '' + json.data.id; // id must be string + + var ele = cy.getElementById(id); + idInJson[id] = true; + + if (ele.length !== 0) { + // existing element should be updated + toMod.push({ + ele: ele, + json: json + }); + } else { + // otherwise should be added + if (gr) { + json.group = gr; + toAdd.push(json); + } else { + toAdd.push(json); + } + } + } + + cy.add(toAdd); + + for (var _i = 0; _i < toMod.length; _i++) { + var _toMod$_i = toMod[_i], + _ele = _toMod$_i.ele, + _json = _toMod$_i.json; + + _ele.json(_json); + } + }; + + if (array(obj.elements)) { + // elements: [] + updateEles(obj.elements); + } else { + // elements: { nodes: [], edges: [] } + var grs = ['nodes', 'edges']; + + for (var i = 0; i < grs.length; i++) { + var gr = grs[i]; + var elements = obj.elements[gr]; + + if (array(elements)) { + updateEles(elements, gr); + } + } + } + + var parentsToRemove = cy.collection(); + eles.filter(function (ele) { + return !idInJson[ele.id()]; + }).forEach(function (ele) { + if (ele.isParent()) { + parentsToRemove.merge(ele); + } else { + ele.remove(); + } + }); // so that children are not removed w/parent + + parentsToRemove.forEach(function (ele) { + return ele.children().move({ + parent: null + }); + }); // intermediate parents may be moved by prior line, so make sure we remove by fresh refs + + parentsToRemove.forEach(function (ele) { + return getFreshRef(ele).remove(); + }); + } + + if (obj.style) { + cy.style(obj.style); + } + + if (obj.zoom != null && obj.zoom !== _p.zoom) { + cy.zoom(obj.zoom); + } + + if (obj.pan) { + if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) { + cy.pan(obj.pan); + } + } + + if (obj.data) { + cy.data(obj.data); + } + + var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify']; + + for (var _i2 = 0; _i2 < fields.length; _i2++) { + var f = fields[_i2]; + + if (obj[f] != null) { + cy[f](obj[f]); + } + } + + cy.endBatch(); + return this; // chaining + } else { + // get + var flat = !!obj; + var json = {}; + + if (flat) { + json.elements = this.elements().map(function (ele) { + return ele.json(); + }); + } else { + json.elements = {}; + eles.forEach(function (ele) { + var group = ele.group(); + + if (!json.elements[group]) { + json.elements[group] = []; + } + + json.elements[group].push(ele.json()); + }); + } + + if (this._private.styleEnabled) { + json.style = cy.style().json(); + } + + json.data = copy(cy.data()); + var options = _p.options; + json.zoomingEnabled = _p.zoomingEnabled; + json.userZoomingEnabled = _p.userZoomingEnabled; + json.zoom = _p.zoom; + json.minZoom = _p.minZoom; + json.maxZoom = _p.maxZoom; + json.panningEnabled = _p.panningEnabled; + json.userPanningEnabled = _p.userPanningEnabled; + json.pan = copy(_p.pan); + json.boxSelectionEnabled = _p.boxSelectionEnabled; + json.renderer = copy(options.renderer); + json.hideEdgesOnViewport = options.hideEdgesOnViewport; + json.textureOnViewport = options.textureOnViewport; + json.wheelSensitivity = options.wheelSensitivity; + json.motionBlur = options.motionBlur; + return json; + } + } +}); +corefn$9.$id = corefn$9.getElementById; +[corefn, corefn$1, elesfn$v, corefn$2, corefn$3, corefn$4, corefn$5, corefn$6, corefn$7, corefn$8, fn$6].forEach(function (props) { + extend(corefn$9, props); +}); + +/* eslint-disable no-unused-vars */ + +var defaults$9 = { + fit: true, + // whether to fit the viewport to the graph + directed: false, + // whether the tree is directed downwards (or edges can point in any direction if false) + padding: 30, + // padding on fit + circle: false, + // put depths in concentric circles if true, put depths top down if false + grid: false, + // whether to create an even grid into which the DAG is placed (circle:false only) + spacingFactor: 1.75, + // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap) + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + roots: undefined, + // the roots of the trees + maximal: false, + // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only) + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled, + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; +/* eslint-enable */ + +var getInfo = function getInfo(ele) { + return ele.scratch('breadthfirst'); +}; + +var setInfo = function setInfo(ele, obj) { + return ele.scratch('breadthfirst', obj); +}; + +function BreadthFirstLayout(options) { + this.options = extend({}, defaults$9, options); +} + +BreadthFirstLayout.prototype.run = function () { + var params = this.options; + var options = params; + var cy = params.cy; + var eles = options.eles; + var nodes = eles.nodes().filter(function (n) { + return !n.isParent(); + }); + var graph = eles; + var directed = options.directed; + var maximal = options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code + + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var roots; + + if (elementOrCollection(options.roots)) { + roots = options.roots; + } else if (array(options.roots)) { + var rootsArray = []; + + for (var i = 0; i < options.roots.length; i++) { + var id = options.roots[i]; + var ele = cy.getElementById(id); + rootsArray.push(ele); + } + + roots = cy.collection(rootsArray); + } else if (string(options.roots)) { + roots = cy.$(options.roots); + } else { + if (directed) { + roots = nodes.roots(); + } else { + var components = eles.components(); + roots = cy.collection(); + + var _loop = function _loop(_i) { + var comp = components[_i]; + var maxDegree = comp.maxDegree(false); + var compRoots = comp.filter(function (ele) { + return ele.degree(false) === maxDegree; + }); + roots = roots.add(compRoots); + }; + + for (var _i = 0; _i < components.length; _i++) { + _loop(_i); + } + } + } + + var depths = []; + var foundByBfs = {}; + + var addToDepth = function addToDepth(ele, d) { + if (depths[d] == null) { + depths[d] = []; + } + + var i = depths[d].length; + depths[d].push(ele); + setInfo(ele, { + index: i, + depth: d + }); + }; + + var changeDepth = function changeDepth(ele, newDepth) { + var _getInfo = getInfo(ele), + depth = _getInfo.depth, + index = _getInfo.index; + + depths[depth][index] = null; + addToDepth(ele, newDepth); + }; // find the depths of the nodes + + + graph.bfs({ + roots: roots, + directed: options.directed, + visit: function visit(node, edge, pNode, i, depth) { + var ele = node[0]; + var id = ele.id(); + addToDepth(ele, depth); + foundByBfs[id] = true; + } + }); // check for nodes not found by bfs + + var orphanNodes = []; + + for (var _i2 = 0; _i2 < nodes.length; _i2++) { + var _ele = nodes[_i2]; + + if (foundByBfs[_ele.id()]) { + continue; + } else { + orphanNodes.push(_ele); + } + } // assign the nodes a depth and index + + + var assignDepthsAt = function assignDepthsAt(i) { + var eles = depths[i]; + + for (var j = 0; j < eles.length; j++) { + var _ele2 = eles[j]; + + if (_ele2 == null) { + eles.splice(j, 1); + j--; + continue; + } + + setInfo(_ele2, { + depth: i, + index: j + }); + } + }; + + var assignDepths = function assignDepths() { + for (var _i3 = 0; _i3 < depths.length; _i3++) { + assignDepthsAt(_i3); + } + }; + + var adjustMaximally = function adjustMaximally(ele, shifted) { + var eInfo = getInfo(ele); + var incomers = ele.incomers().filter(function (el) { + return el.isNode() && eles.has(el); + }); + var maxDepth = -1; + var id = ele.id(); + + for (var k = 0; k < incomers.length; k++) { + var incmr = incomers[k]; + var iInfo = getInfo(incmr); + maxDepth = Math.max(maxDepth, iInfo.depth); + } + + if (eInfo.depth <= maxDepth) { + if (shifted[id]) { + return null; + } + + changeDepth(ele, maxDepth + 1); + shifted[id] = true; + return true; + } + + return false; + }; // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1) + + + if (directed && maximal) { + var Q = []; + var shifted = {}; + + var enqueue = function enqueue(n) { + return Q.push(n); + }; + + var dequeue = function dequeue() { + return Q.shift(); + }; + + nodes.forEach(function (n) { + return Q.push(n); + }); + + while (Q.length > 0) { + var _ele3 = dequeue(); + + var didShift = adjustMaximally(_ele3, shifted); + + if (didShift) { + _ele3.outgoers().filter(function (el) { + return el.isNode() && eles.has(el); + }).forEach(enqueue); + } else if (didShift === null) { + warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.'); + break; // exit on failure + } + } + } + + assignDepths(); // clear holes + // find min distance we need to leave between nodes + + var minDistance = 0; + + if (options.avoidOverlap) { + for (var _i4 = 0; _i4 < nodes.length; _i4++) { + var n = nodes[_i4]; + var nbb = n.layoutDimensions(options); + var w = nbb.w; + var h = nbb.h; + minDistance = Math.max(minDistance, w, h); + } + } // get the weighted percent for an element based on its connectivity to other levels + + + var cachedWeightedPercent = {}; + + var getWeightedPercent = function getWeightedPercent(ele) { + if (cachedWeightedPercent[ele.id()]) { + return cachedWeightedPercent[ele.id()]; + } + + var eleDepth = getInfo(ele).depth; + var neighbors = ele.neighborhood(); + var percent = 0; + var samples = 0; + + for (var _i5 = 0; _i5 < neighbors.length; _i5++) { + var neighbor = neighbors[_i5]; + + if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) { + continue; + } + + var bf = getInfo(neighbor); + var index = bf.index; + var depth = bf.depth; // unassigned neighbours shouldn't affect the ordering + + if (index == null || depth == null) { + continue; + } + + var nDepth = depths[depth].length; + + if (depth < eleDepth) { + // only get influenced by elements above + percent += index / nDepth; + samples++; + } + } + + samples = Math.max(1, samples); + percent = percent / samples; + + if (samples === 0) { + // put lone nodes at the start + percent = 0; + } + + cachedWeightedPercent[ele.id()] = percent; + return percent; + }; // rearrange the indices in each depth level based on connectivity + + + var sortFn = function sortFn(a, b) { + var apct = getWeightedPercent(a); + var bpct = getWeightedPercent(b); + var diff = apct - bpct; + + if (diff === 0) { + return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons + } else { + return diff; + } + }; // sort each level to make connected nodes closer + + + for (var _i6 = 0; _i6 < depths.length; _i6++) { + depths[_i6].sort(sortFn); + + assignDepthsAt(_i6); + } // assign orphan nodes to a new top-level depth + + + var orphanDepth = []; + + for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) { + orphanDepth.push(orphanNodes[_i7]); + } + + depths.unshift(orphanDepth); + assignDepths(); + var biggestDepthSize = 0; + + for (var _i8 = 0; _i8 < depths.length; _i8++) { + biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize); + } + + var center = { + x: bb.x1 + bb.w / 2, + y: bb.x1 + bb.h / 2 + }; + var maxDepthSize = depths.reduce(function (max, eles) { + return Math.max(max, eles.length); + }, 0); + + var getPosition = function getPosition(ele) { + var _getInfo2 = getInfo(ele), + depth = _getInfo2.depth, + index = _getInfo2.index; + + var depthSize = depths[depth].length; + var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance); + var distanceY = Math.max(bb.h / (depths.length + 1), minDistance); + var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length); + radiusStepSize = Math.max(radiusStepSize, minDistance); + + if (!options.circle) { + var epos = { + x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX, + y: (depth + 1) * distanceY + }; + return epos; + } else { + var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0); + var theta = 2 * Math.PI / depths[depth].length * index; + + if (depth === 0 && depths[0].length === 1) { + radius = 1; + } + + return { + x: center.x + radius * Math.cos(theta), + y: center.y + radius * Math.sin(theta) + }; + } + }; + + nodes.layoutPositions(this, options, getPosition); + return this; // chaining +}; + +var defaults$a = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox and radius if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + radius: undefined, + // the radius of the circle + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: undefined, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: true, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + sort: undefined, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function CircleLayout(options) { + this.options = extend({}, defaults$a, options); +} + +CircleLayout.prototype.run = function () { + var params = this.options; + var options = params; + var cy = params.cy; + var eles = options.eles; + var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; + var nodes = eles.nodes().not(':parent'); + + if (options.sort) { + nodes = nodes.sort(options.sort); + } + + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var center = { + x: bb.x1 + bb.w / 2, + y: bb.y1 + bb.h / 2 + }; + var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep; + var dTheta = sweep / Math.max(1, nodes.length - 1); + var r; + var minDistance = 0; + + for (var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + var nbb = n.layoutDimensions(options); + var w = nbb.w; + var h = nbb.h; + minDistance = Math.max(minDistance, w, h); + } + + if (number(options.radius)) { + r = options.radius; + } else if (nodes.length <= 1) { + r = 0; + } else { + r = Math.min(bb.h, bb.w) / 2 - minDistance; + } // calculate the radius + + + if (nodes.length > 1 && options.avoidOverlap) { + // but only if more than one node (can't overlap) + minDistance *= 1.75; // just to have some nice spacing + + var dcos = Math.cos(dTheta) - Math.cos(0); + var dsin = Math.sin(dTheta) - Math.sin(0); + var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping + + r = Math.max(rMin, r); + } + + var getPos = function getPos(ele, i) { + var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1); + var rx = r * Math.cos(theta); + var ry = r * Math.sin(theta); + var pos = { + x: center.x + rx, + y: center.y + ry + }; + return pos; + }; + + nodes.layoutPositions(this, options, getPos); + return this; // chaining +}; + +var defaults$b = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // the padding on fit + startAngle: 3 / 2 * Math.PI, + // where nodes start in radians + sweep: undefined, + // how many radians should be between the first and last node (defaults to full circle) + clockwise: true, + // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) + equidistant: false, + // whether levels have an equal radial distance betwen them, may cause bounding box overflow + minNodeSpacing: 10, + // min spacing between outside of nodes (used for radius adjustment) + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + height: undefined, + // height of layout area (overrides container height) + width: undefined, + // width of layout area (overrides container width) + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + concentric: function concentric(node) { + // returns numeric value for each node, placing higher nodes in levels towards the centre + return node.degree(); + }, + levelWidth: function levelWidth(nodes) { + // the variation of concentric values in each level + return nodes.maxDegree() / 4; + }, + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function ConcentricLayout(options) { + this.options = extend({}, defaults$b, options); +} + +ConcentricLayout.prototype.run = function () { + var params = this.options; + var options = params; + var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; + var cy = params.cy; + var eles = options.eles; + var nodes = eles.nodes().not(':parent'); + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + var center = { + x: bb.x1 + bb.w / 2, + y: bb.y1 + bb.h / 2 + }; + var nodeValues = []; // { node, value } + + var maxNodeSize = 0; + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var value = void 0; // calculate the node value + + value = options.concentric(node); + nodeValues.push({ + value: value, + node: node + }); // for style mapping + + node._private.scratch.concentric = value; + } // in case we used the `concentric` in style + + + nodes.updateStyle(); // calculate max size now based on potentially updated mappers + + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + + var nbb = _node.layoutDimensions(options); + + maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h); + } // sort node values in descreasing order + + + nodeValues.sort(function (a, b) { + return b.value - a.value; + }); + var levelWidth = options.levelWidth(nodes); // put the values into levels + + var levels = [[]]; + var currentLevel = levels[0]; + + for (var _i2 = 0; _i2 < nodeValues.length; _i2++) { + var val = nodeValues[_i2]; + + if (currentLevel.length > 0) { + var diff = Math.abs(currentLevel[0].value - val.value); + + if (diff >= levelWidth) { + currentLevel = []; + levels.push(currentLevel); + } + } + + currentLevel.push(val); + } // create positions from levels + + + var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes + + if (!options.avoidOverlap) { + // then strictly constrain to bb + var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1; + var maxR = Math.min(bb.w, bb.h) / 2 - minDist; + var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0); + minDist = Math.min(minDist, rStep); + } // find the metrics for each level + + + var r = 0; + + for (var _i3 = 0; _i3 < levels.length; _i3++) { + var level = levels[_i3]; + var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep; + var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); // calculate the radius + + if (level.length > 1 && options.avoidOverlap) { + // but only if more than one node (can't overlap) + var dcos = Math.cos(dTheta) - Math.cos(0); + var dsin = Math.sin(dTheta) - Math.sin(0); + var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping + + r = Math.max(rMin, r); + } + + level.r = r; + r += minDist; + } + + if (options.equidistant) { + var rDeltaMax = 0; + var _r = 0; + + for (var _i4 = 0; _i4 < levels.length; _i4++) { + var _level = levels[_i4]; + var rDelta = _level.r - _r; + rDeltaMax = Math.max(rDeltaMax, rDelta); + } + + _r = 0; + + for (var _i5 = 0; _i5 < levels.length; _i5++) { + var _level2 = levels[_i5]; + + if (_i5 === 0) { + _r = _level2.r; + } + + _level2.r = _r; + _r += rDeltaMax; + } + } // calculate the node positions + + + var pos = {}; // id => position + + for (var _i6 = 0; _i6 < levels.length; _i6++) { + var _level3 = levels[_i6]; + var _dTheta = _level3.dTheta; + var _r2 = _level3.r; + + for (var j = 0; j < _level3.length; j++) { + var _val = _level3[j]; + var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j; + var p = { + x: center.x + _r2 * Math.cos(theta), + y: center.y + _r2 * Math.sin(theta) + }; + pos[_val.node.id()] = p; + } + } // position the nodes + + + nodes.layoutPositions(this, options, function (ele) { + var id = ele.id(); + return pos[id]; + }); + return this; // chaining +}; + +/* +The CoSE layout was written by Gerardo Huck. +https://www.linkedin.com/in/gerardohuck/ + +Based on the following article: +http://dl.acm.org/citation.cfm?id=1498047 + +Modifications tracked on Github. +*/ +var DEBUG; +/** + * @brief : default layout options + */ + +var defaults$c = { + // Called on `layoutready` + ready: function ready() {}, + // Called on `layoutstop` + stop: function stop() {}, + // Whether to animate while running the layout + // true : Animate continuously as the layout is running + // false : Just show the end result + // 'end' : Animate with the end result, from the initial positions to the end positions + animate: true, + // Easing of the animation for animate:'end' + animationEasing: undefined, + // The duration of the animation for animate:'end' + animationDuration: undefined, + // A function that determines whether the node should be animated + // All nodes animated by default on animate enabled + // Non-animated nodes are positioned immediately when the layout starts + animateFilter: function animateFilter(node, i) { + return true; + }, + // The layout animates only after this many milliseconds for animate:true + // (prevents flashing on fast runs) + animationThreshold: 250, + // Number of iterations between consecutive screen positions update + refresh: 20, + // Whether to fit the network view after when done + fit: true, + // Padding on fit + padding: 30, + // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + boundingBox: undefined, + // Excludes the label when calculating node bounding boxes for the layout algorithm + nodeDimensionsIncludeLabels: false, + // Randomize the initial positions of the nodes (true) or use existing positions (false) + randomize: false, + // Extra spacing between components in non-compound graphs + componentSpacing: 40, + // Node repulsion (non overlapping) multiplier + nodeRepulsion: function nodeRepulsion(node) { + return 2048; + }, + // Node repulsion (overlapping) multiplier + nodeOverlap: 4, + // Ideal edge (non nested) length + idealEdgeLength: function idealEdgeLength(edge) { + return 32; + }, + // Divisor to compute edge forces + edgeElasticity: function edgeElasticity(edge) { + return 32; + }, + // Nesting factor (multiplier) to compute ideal edge length for nested edges + nestingFactor: 1.2, + // Gravity force (constant) + gravity: 1, + // Maximum number of iterations to perform + numIter: 1000, + // Initial temperature (maximum node displacement) + initialTemp: 1000, + // Cooling factor (how the temperature is reduced between consecutive iterations + coolingFactor: 0.99, + // Lower temperature threshold (below this point the layout will end) + minTemp: 1.0 +}; +/** + * @brief : constructor + * @arg options : object containing layout options + */ + +function CoseLayout(options) { + this.options = extend({}, defaults$c, options); + this.options.layout = this; +} +/** + * @brief : runs the layout + */ + + +CoseLayout.prototype.run = function () { + var options = this.options; + var cy = options.cy; + var layout = this; + layout.stopped = false; + + if (options.animate === true || options.animate === false) { + layout.emit({ + type: 'layoutstart', + layout: layout + }); + } // Set DEBUG - Global variable + + + if (true === options.debug) { + DEBUG = true; + } else { + DEBUG = false; + } // Initialize layout info + + + var layoutInfo = createLayoutInfo(cy, layout, options); // Show LayoutInfo contents if debugging + + if (DEBUG) { + printLayoutInfo(layoutInfo); + } // If required, randomize node positions + + + if (options.randomize) { + randomizePositions(layoutInfo); + } + + var startTime = performanceNow(); + + var refresh = function refresh() { + refreshPositions(layoutInfo, cy, options); // Fit the graph if necessary + + if (true === options.fit) { + cy.fit(options.padding); + } + }; + + var mainLoop = function mainLoop(i) { + if (layout.stopped || i >= options.numIter) { + // logDebug("Layout manually stopped. Stopping computation in step " + i); + return false; + } // Do one step in the phisical simulation + + + step$1(layoutInfo, options); // Update temperature + + layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor; // logDebug("New temperature: " + layoutInfo.temperature); + + if (layoutInfo.temperature < options.minTemp) { + // logDebug("Temperature drop below minimum threshold. Stopping computation in step " + i); + return false; + } + + return true; + }; + + var done = function done() { + if (options.animate === true || options.animate === false) { + refresh(); // Layout has finished + + layout.one('layoutstop', options.stop); + layout.emit({ + type: 'layoutstop', + layout: layout + }); + } else { + var nodes = options.eles.nodes(); + var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); + nodes.layoutPositions(layout, options, getScaledPos); + } + }; + + var i = 0; + var loopRet = true; + + if (options.animate === true) { + var frame = function frame() { + var f = 0; + + while (loopRet && f < options.refresh) { + loopRet = mainLoop(i); + i++; + f++; + } + + if (!loopRet) { + // it's done + separateComponents(layoutInfo, options); + done(); + } else { + var now = performanceNow(); + + if (now - startTime >= options.animationThreshold) { + refresh(); + } + + requestAnimationFrame(frame); + } + }; + + frame(); + } else { + while (loopRet) { + loopRet = mainLoop(i); + i++; + } + + separateComponents(layoutInfo, options); + done(); + } + + return this; // chaining +}; +/** + * @brief : called on continuous layouts to stop them before they finish + */ + + +CoseLayout.prototype.stop = function () { + this.stopped = true; + + if (this.thread) { + this.thread.stop(); + } + + this.emit('layoutstop'); + return this; // chaining +}; + +CoseLayout.prototype.destroy = function () { + if (this.thread) { + this.thread.stop(); + } + + return this; // chaining +}; +/** + * @brief : Creates an object which is contains all the data + * used in the layout process + * @arg cy : cytoscape.js object + * @return : layoutInfo object initialized + */ + + +var createLayoutInfo = function createLayoutInfo(cy, layout, options) { + // Shortcut + var edges = options.eles.edges(); + var nodes = options.eles.nodes(); + var layoutInfo = { + isCompound: cy.hasCompoundNodes(), + layoutNodes: [], + idToIndex: {}, + nodeSize: nodes.size(), + graphSet: [], + indexToGraph: [], + layoutEdges: [], + edgeSize: edges.size(), + temperature: options.initialTemp, + clientWidth: cy.width(), + clientHeight: cy.width(), + boundingBox: makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }) + }; + var components = options.eles.components(); + var id2cmptId = {}; + + for (var i = 0; i < components.length; i++) { + var component = components[i]; + + for (var j = 0; j < component.length; j++) { + var node = component[j]; + id2cmptId[node.id()] = i; + } + } // Iterate over all nodes, creating layout nodes + + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = nodes[i]; + var nbb = n.layoutDimensions(options); + var tempNode = {}; + tempNode.isLocked = n.locked(); + tempNode.id = n.data('id'); + tempNode.parentId = n.data('parent'); + tempNode.cmptId = id2cmptId[n.id()]; + tempNode.children = []; + tempNode.positionX = n.position('x'); + tempNode.positionY = n.position('y'); + tempNode.offsetX = 0; + tempNode.offsetY = 0; + tempNode.height = nbb.w; + tempNode.width = nbb.h; + tempNode.maxX = tempNode.positionX + tempNode.width / 2; + tempNode.minX = tempNode.positionX - tempNode.width / 2; + tempNode.maxY = tempNode.positionY + tempNode.height / 2; + tempNode.minY = tempNode.positionY - tempNode.height / 2; + tempNode.padLeft = parseFloat(n.style('padding')); + tempNode.padRight = parseFloat(n.style('padding')); + tempNode.padTop = parseFloat(n.style('padding')); + tempNode.padBottom = parseFloat(n.style('padding')); // forces + + tempNode.nodeRepulsion = fn(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion; // Add new node + + layoutInfo.layoutNodes.push(tempNode); // Add entry to id-index map + + layoutInfo.idToIndex[tempNode.id] = i; + } // Inline implementation of a queue, used for traversing the graph in BFS order + + + var queue = []; + var start = 0; // Points to the start the queue + + var end = -1; // Points to the end of the queue + + var tempGraph = []; // Second pass to add child information and + // initialize queue for hierarchical traversal + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + var p_id = n.parentId; // Check if node n has a parent node + + if (null != p_id) { + // Add node Id to parent's list of children + layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id); + } else { + // If a node doesn't have a parent, then it's in the root graph + queue[++end] = n.id; + tempGraph.push(n.id); + } + } // Add root graph to graphSet + + + layoutInfo.graphSet.push(tempGraph); // Traverse the graph, level by level, + + while (start <= end) { + // Get the node to visit and remove it from queue + var node_id = queue[start++]; + var node_ix = layoutInfo.idToIndex[node_id]; + var node = layoutInfo.layoutNodes[node_ix]; + var children = node.children; + + if (children.length > 0) { + // Add children nodes as a new graph to graph set + layoutInfo.graphSet.push(children); // Add children to que queue to be visited + + for (var i = 0; i < children.length; i++) { + queue[++end] = children[i]; + } + } + } // Create indexToGraph map + + + for (var i = 0; i < layoutInfo.graphSet.length; i++) { + var graph = layoutInfo.graphSet[i]; + + for (var j = 0; j < graph.length; j++) { + var index = layoutInfo.idToIndex[graph[j]]; + layoutInfo.indexToGraph[index] = i; + } + } // Iterate over all edges, creating Layout Edges + + + for (var i = 0; i < layoutInfo.edgeSize; i++) { + var e = edges[i]; + var tempEdge = {}; + tempEdge.id = e.data('id'); + tempEdge.sourceId = e.data('source'); + tempEdge.targetId = e.data('target'); // Compute ideal length + + var idealLength = fn(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength; + var elasticity = fn(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity; // Check if it's an inter graph edge + + var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId]; + var targetIx = layoutInfo.idToIndex[tempEdge.targetId]; + var sourceGraph = layoutInfo.indexToGraph[sourceIx]; + var targetGraph = layoutInfo.indexToGraph[targetIx]; + + if (sourceGraph != targetGraph) { + // Find lowest common graph ancestor + var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); // Compute sum of node depths, relative to lca graph + + var lcaGraph = layoutInfo.graphSet[lca]; + var depth = 0; // Source depth + + var tempNode = layoutInfo.layoutNodes[sourceIx]; + + while (-1 === lcaGraph.indexOf(tempNode.id)) { + tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; + depth++; + } // Target depth + + + tempNode = layoutInfo.layoutNodes[targetIx]; + + while (-1 === lcaGraph.indexOf(tempNode.id)) { + tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; + depth++; + } // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId + + // ". Index: " + lca + " Contents: " + lcaGraph.toString() + + // ". Depth: " + depth); + // Update idealLength + + + idealLength *= depth * options.nestingFactor; + } + + tempEdge.idealLength = idealLength; + tempEdge.elasticity = elasticity; + layoutInfo.layoutEdges.push(tempEdge); + } // Finally, return layoutInfo object + + + return layoutInfo; +}; +/** + * @brief : This function finds the index of the lowest common + * graph ancestor between 2 nodes in the subtree + * (from the graph hierarchy induced tree) whose + * root is graphIx + * + * @arg node1: node1's ID + * @arg node2: node2's ID + * @arg layoutInfo: layoutInfo object + * + */ + + +var findLCA = function findLCA(node1, node2, layoutInfo) { + // Find their common ancester, starting from the root graph + var res = findLCA_aux(node1, node2, 0, layoutInfo); + + if (2 > res.count) { + // If aux function couldn't find the common ancester, + // then it is the root graph + return 0; + } else { + return res.graph; + } +}; +/** + * @brief : Auxiliary function used for LCA computation + * + * @arg node1 : node1's ID + * @arg node2 : node2's ID + * @arg graphIx : subgraph index + * @arg layoutInfo : layoutInfo object + * + * @return : object of the form {count: X, graph: Y}, where: + * X is the number of ancesters (max: 2) found in + * graphIx (and it's subgraphs), + * Y is the graph index of the lowest graph containing + * all X nodes + */ + + +var findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) { + var graph = layoutInfo.graphSet[graphIx]; // If both nodes belongs to graphIx + + if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) { + return { + count: 2, + graph: graphIx + }; + } // Make recursive calls for all subgraphs + + + var c = 0; + + for (var i = 0; i < graph.length; i++) { + var nodeId = graph[i]; + var nodeIx = layoutInfo.idToIndex[nodeId]; + var children = layoutInfo.layoutNodes[nodeIx].children; // If the node has no child, skip it + + if (0 === children.length) { + continue; + } + + var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]]; + var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo); + + if (0 === result.count) { + // Neither node1 nor node2 are present in this subgraph + continue; + } else if (1 === result.count) { + // One of (node1, node2) is present in this subgraph + c++; + + if (2 === c) { + // We've already found both nodes, no need to keep searching + break; + } + } else { + // Both nodes are present in this subgraph + return result; + } + } + + return { + count: c, + graph: graphIx + }; +}; +/** + * @brief: printsLayoutInfo into js console + * Only used for debbuging + */ + + +if (false) { + var printLayoutInfo; +} +/** + * @brief : Randomizes the position of all nodes + */ + + +var randomizePositions = function randomizePositions(layoutInfo, cy) { + var width = layoutInfo.clientWidth; + var height = layoutInfo.clientHeight; + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; // No need to randomize compound nodes or locked nodes + + if (0 === n.children.length && !n.isLocked) { + n.positionX = Math.random() * width; + n.positionY = Math.random() * height; + } + } +}; + +var getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) { + var bb = layoutInfo.boundingBox; + var coseBB = { + x1: Infinity, + x2: -Infinity, + y1: Infinity, + y2: -Infinity + }; + + if (options.boundingBox) { + nodes.forEach(function (node) { + var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]]; + coseBB.x1 = Math.min(coseBB.x1, lnode.positionX); + coseBB.x2 = Math.max(coseBB.x2, lnode.positionX); + coseBB.y1 = Math.min(coseBB.y1, lnode.positionY); + coseBB.y2 = Math.max(coseBB.y2, lnode.positionY); + }); + coseBB.w = coseBB.x2 - coseBB.x1; + coseBB.h = coseBB.y2 - coseBB.y1; + } + + return function (ele, i) { + var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]]; + + if (options.boundingBox) { + // then add extra bounding box constraint + var pctX = (lnode.positionX - coseBB.x1) / coseBB.w; + var pctY = (lnode.positionY - coseBB.y1) / coseBB.h; + return { + x: bb.x1 + pctX * bb.w, + y: bb.y1 + pctY * bb.h + }; + } else { + return { + x: lnode.positionX, + y: lnode.positionY + }; + } + }; +}; +/** + * @brief : Updates the positions of nodes in the network + * @arg layoutInfo : LayoutInfo object + * @arg cy : Cytoscape object + * @arg options : Layout options + */ + + +var refreshPositions = function refreshPositions(layoutInfo, cy, options) { + // var s = 'Refreshing positions'; + // logDebug(s); + var layout = options.layout; + var nodes = options.eles.nodes(); + var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); + nodes.positions(getScaledPos); // Trigger layoutReady only on first call + + if (true !== layoutInfo.ready) { + // s = 'Triggering layoutready'; + // logDebug(s); + layoutInfo.ready = true; + layout.one('layoutready', options.ready); + layout.emit({ + type: 'layoutready', + layout: this + }); + } +}; +/** + * @brief : Logs a debug message in JS console, if DEBUG is ON + */ +// var logDebug = function(text) { +// if (DEBUG) { +// console.debug(text); +// } +// }; + +/** + * @brief : Performs one iteration of the physical simulation + * @arg layoutInfo : LayoutInfo object already initialized + * @arg cy : Cytoscape object + * @arg options : Layout options + */ + + +var step$1 = function step(layoutInfo, options, _step) { + // var s = "\n\n###############################"; + // s += "\nSTEP: " + step; + // s += "\n###############################\n"; + // logDebug(s); + // Calculate node repulsions + calculateNodeForces(layoutInfo, options); // Calculate edge forces + + calculateEdgeForces(layoutInfo); // Calculate gravity forces + + calculateGravityForces(layoutInfo, options); // Propagate forces from parent to child + + propagateForces(layoutInfo); // Update positions based on calculated forces + + updatePositions(layoutInfo); +}; +/** + * @brief : Computes the node repulsion forces + */ + + +var calculateNodeForces = function calculateNodeForces(layoutInfo, options) { + // Go through each of the graphs in graphSet + // Nodes only repel each other if they belong to the same graph + // var s = 'calculateNodeForces'; + // logDebug(s); + for (var i = 0; i < layoutInfo.graphSet.length; i++) { + var graph = layoutInfo.graphSet[i]; + var numNodes = graph.length; // s = "Set: " + graph.toString(); + // logDebug(s); + // Now get all the pairs of nodes + // Only get each pair once, (A, B) = (B, A) + + for (var j = 0; j < numNodes; j++) { + var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; + + for (var k = j + 1; k < numNodes; k++) { + var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]]; + nodeRepulsion(node1, node2, layoutInfo, options); + } + } + } +}; + +var randomDistance = function randomDistance(max) { + return -max + 2 * max * Math.random(); +}; +/** + * @brief : Compute the node repulsion forces between a pair of nodes + */ + + +var nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) { + // var s = "Node repulsion. Node1: " + node1.id + " Node2: " + node2.id; + var cmptId1 = node1.cmptId; + var cmptId2 = node2.cmptId; + + if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) { + return; + } // Get direction of line connecting both node centers + + + var directionX = node2.positionX - node1.positionX; + var directionY = node2.positionY - node1.positionY; + var maxRandDist = 1; // s += "\ndirectionX: " + directionX + ", directionY: " + directionY; + // If both centers are the same, apply a random force + + if (0 === directionX && 0 === directionY) { + directionX = randomDistance(maxRandDist); + directionY = randomDistance(maxRandDist); + } + + var overlap = nodesOverlap(node1, node2, directionX, directionY); + + if (overlap > 0) { + // s += "\nNodes DO overlap."; + // s += "\nOverlap: " + overlap; + // If nodes overlap, repulsion force is proportional + // to the overlap + var force = options.nodeOverlap * overlap; // Compute the module and components of the force vector + + var distance = Math.sqrt(directionX * directionX + directionY * directionY); // s += "\nDistance: " + distance; + + var forceX = force * directionX / distance; + var forceY = force * directionY / distance; + } else { + // s += "\nNodes do NOT overlap."; + // If there's no overlap, force is inversely proportional + // to squared distance + // Get clipping points for both nodes + var point1 = findClippingPoint(node1, directionX, directionY); + var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY); // Use clipping points to compute distance + + var distanceX = point2.x - point1.x; + var distanceY = point2.y - point1.y; + var distanceSqr = distanceX * distanceX + distanceY * distanceY; + var distance = Math.sqrt(distanceSqr); // s += "\nDistance: " + distance; + // Compute the module and components of the force vector + + var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr; + var forceX = force * distanceX / distance; + var forceY = force * distanceY / distance; + } // Apply force + + + if (!node1.isLocked) { + node1.offsetX -= forceX; + node1.offsetY -= forceY; + } + + if (!node2.isLocked) { + node2.offsetX += forceX; + node2.offsetY += forceY; + } // s += "\nForceX: " + forceX + " ForceY: " + forceY; + // logDebug(s); + + + return; +}; +/** + * @brief : Determines whether two nodes overlap or not + * @return : Amount of overlapping (0 => no overlap) + */ + + +var nodesOverlap = function nodesOverlap(node1, node2, dX, dY) { + if (dX > 0) { + var overlapX = node1.maxX - node2.minX; + } else { + var overlapX = node2.maxX - node1.minX; + } + + if (dY > 0) { + var overlapY = node1.maxY - node2.minY; + } else { + var overlapY = node2.maxY - node1.minY; + } + + if (overlapX >= 0 && overlapY >= 0) { + return Math.sqrt(overlapX * overlapX + overlapY * overlapY); + } else { + return 0; + } +}; +/** + * @brief : Finds the point in which an edge (direction dX, dY) intersects + * the rectangular bounding box of it's source/target node + */ + + +var findClippingPoint = function findClippingPoint(node, dX, dY) { + // Shorcuts + var X = node.positionX; + var Y = node.positionY; + var H = node.height || 1; + var W = node.width || 1; + var dirSlope = dY / dX; + var nodeSlope = H / W; // var s = 'Computing clipping point of node ' + node.id + + // " . Height: " + H + ", Width: " + W + + // "\nDirection " + dX + ", " + dY; + // + // Compute intersection + + var res = {}; // Case: Vertical direction (up) + + if (0 === dX && 0 < dY) { + res.x = X; // s += "\nUp direction"; + + res.y = Y + H / 2; + return res; + } // Case: Vertical direction (down) + + + if (0 === dX && 0 > dY) { + res.x = X; + res.y = Y + H / 2; // s += "\nDown direction"; + + return res; + } // Case: Intersects the right border + + + if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { + res.x = X + W / 2; + res.y = Y + W * dY / 2 / dX; // s += "\nRightborder"; + + return res; + } // Case: Intersects the left border + + + if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { + res.x = X - W / 2; + res.y = Y - W * dY / 2 / dX; // s += "\nLeftborder"; + + return res; + } // Case: Intersects the top border + + + if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { + res.x = X + H * dX / 2 / dY; + res.y = Y + H / 2; // s += "\nTop border"; + + return res; + } // Case: Intersects the bottom border + + + if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { + res.x = X - H * dX / 2 / dY; + res.y = Y - H / 2; // s += "\nBottom border"; + + return res; + } // s += "\nClipping point found at " + res.x + ", " + res.y; + // logDebug(s); + + + return res; +}; +/** + * @brief : Calculates all edge forces + */ + + +var calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) { + // Iterate over all edges + for (var i = 0; i < layoutInfo.edgeSize; i++) { + // Get edge, source & target nodes + var edge = layoutInfo.layoutEdges[i]; + var sourceIx = layoutInfo.idToIndex[edge.sourceId]; + var source = layoutInfo.layoutNodes[sourceIx]; + var targetIx = layoutInfo.idToIndex[edge.targetId]; + var target = layoutInfo.layoutNodes[targetIx]; // Get direction of line connecting both node centers + + var directionX = target.positionX - source.positionX; + var directionY = target.positionY - source.positionY; // If both centers are the same, do nothing. + // A random force has already been applied as node repulsion + + if (0 === directionX && 0 === directionY) { + continue; + } // Get clipping points for both nodes + + + var point1 = findClippingPoint(source, directionX, directionY); + var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY); + var lx = point2.x - point1.x; + var ly = point2.y - point1.y; + var l = Math.sqrt(lx * lx + ly * ly); + var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity; + + if (0 !== l) { + var forceX = force * lx / l; + var forceY = force * ly / l; + } else { + var forceX = 0; + var forceY = 0; + } // Add this force to target and source nodes + + + if (!source.isLocked) { + source.offsetX += forceX; + source.offsetY += forceY; + } + + if (!target.isLocked) { + target.offsetX -= forceX; + target.offsetY -= forceY; + } // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id; + // s += "\nDistance: " + l + " Force: (" + forceX + ", " + forceY + ")"; + // logDebug(s); + + } +}; +/** + * @brief : Computes gravity forces for all nodes + */ + + +var calculateGravityForces = function calculateGravityForces(layoutInfo, options) { + var distThreshold = 1; // var s = 'calculateGravityForces'; + // logDebug(s); + + for (var i = 0; i < layoutInfo.graphSet.length; i++) { + var graph = layoutInfo.graphSet[i]; + var numNodes = graph.length; // s = "Set: " + graph.toString(); + // logDebug(s); + // Compute graph center + + if (0 === i) { + var centerX = layoutInfo.clientHeight / 2; + var centerY = layoutInfo.clientWidth / 2; + } else { + // Get Parent node for this graph, and use its position as center + var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]]; + var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]]; + var centerX = parent.positionX; + var centerY = parent.positionY; + } // s = "Center found at: " + centerX + ", " + centerY; + // logDebug(s); + // Apply force to all nodes in graph + + + for (var j = 0; j < numNodes; j++) { + var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; // s = "Node: " + node.id; + + if (node.isLocked) { + continue; + } + + var dx = centerX - node.positionX; + var dy = centerY - node.positionY; + var d = Math.sqrt(dx * dx + dy * dy); + + if (d > distThreshold) { + var fx = options.gravity * dx / d; + var fy = options.gravity * dy / d; + node.offsetX += fx; + node.offsetY += fy; // s += ": Applied force: " + fx + ", " + fy; + } // s += ": skypped since it's too close to center"; + // logDebug(s); + + } + } +}; +/** + * @brief : This function propagates the existing offsets from + * parent nodes to its descendents. + * @arg layoutInfo : layoutInfo Object + * @arg cy : cytoscape Object + * @arg options : Layout options + */ + + +var propagateForces = function propagateForces(layoutInfo, options) { + // Inline implementation of a queue, used for traversing the graph in BFS order + var queue = []; + var start = 0; // Points to the start the queue + + var end = -1; // Points to the end of the queue + // logDebug('propagateForces'); + // Start by visiting the nodes in the root graph + + queue.push.apply(queue, layoutInfo.graphSet[0]); + end += layoutInfo.graphSet[0].length; // Traverse the graph, level by level, + + while (start <= end) { + // Get the node to visit and remove it from queue + var nodeId = queue[start++]; + var nodeIndex = layoutInfo.idToIndex[nodeId]; + var node = layoutInfo.layoutNodes[nodeIndex]; + var children = node.children; // We only need to process the node if it's compound + + if (0 < children.length && !node.isLocked) { + var offX = node.offsetX; + var offY = node.offsetY; // var s = "Propagating offset from parent node : " + node.id + + // ". OffsetX: " + offX + ". OffsetY: " + offY; + // s += "\n Children: " + children.toString(); + // logDebug(s); + + for (var i = 0; i < children.length; i++) { + var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]]; // Propagate offset + + childNode.offsetX += offX; + childNode.offsetY += offY; // Add children to queue to be visited + + queue[++end] = children[i]; + } // Reset parent offsets + + + node.offsetX = 0; + node.offsetY = 0; + } + } +}; +/** + * @brief : Updates the layout model positions, based on + * the accumulated forces + */ + + +var updatePositions = function updatePositions(layoutInfo, options) { + // var s = 'Updating positions'; + // logDebug(s); + // Reset boundaries for compound nodes + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + + if (0 < n.children.length) { + // logDebug("Resetting boundaries of compound node: " + n.id); + n.maxX = undefined; + n.minX = undefined; + n.maxY = undefined; + n.minY = undefined; + } + } + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + + if (0 < n.children.length || n.isLocked) { + // No need to set compound or locked node position + // logDebug("Skipping position update of node: " + n.id); + continue; + } // s = "Node: " + n.id + " Previous position: (" + + // n.positionX + ", " + n.positionY + ")."; + // Limit displacement in order to improve stability + + + var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature); + n.positionX += tempForce.x; + n.positionY += tempForce.y; + n.offsetX = 0; + n.offsetY = 0; + n.minX = n.positionX - n.width; + n.maxX = n.positionX + n.width; + n.minY = n.positionY - n.height; + n.maxY = n.positionY + n.height; // s += " New Position: (" + n.positionX + ", " + n.positionY + ")."; + // logDebug(s); + // Update ancestry boudaries + + updateAncestryBoundaries(n, layoutInfo); + } // Update size, position of compund nodes + + + for (var i = 0; i < layoutInfo.nodeSize; i++) { + var n = layoutInfo.layoutNodes[i]; + + if (0 < n.children.length && !n.isLocked) { + n.positionX = (n.maxX + n.minX) / 2; + n.positionY = (n.maxY + n.minY) / 2; + n.width = n.maxX - n.minX; + n.height = n.maxY - n.minY; // s = "Updating position, size of compound node " + n.id; + // s += "\nPositionX: " + n.positionX + ", PositionY: " + n.positionY; + // s += "\nWidth: " + n.width + ", Height: " + n.height; + // logDebug(s); + } + } +}; +/** + * @brief : Limits a force (forceX, forceY) to be not + * greater (in modulo) than max. + 8 Preserves force direction. + */ + + +var limitForce = function limitForce(forceX, forceY, max) { + // var s = "Limiting force: (" + forceX + ", " + forceY + "). Max: " + max; + var force = Math.sqrt(forceX * forceX + forceY * forceY); + + if (force > max) { + var res = { + x: max * forceX / force, + y: max * forceY / force + }; + } else { + var res = { + x: forceX, + y: forceY + }; + } // s += ".\nResult: (" + res.x + ", " + res.y + ")"; + // logDebug(s); + + + return res; +}; +/** + * @brief : Function used for keeping track of compound node + * sizes, since they should bound all their subnodes. + */ + + +var updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) { + // var s = "Propagating new position/size of node " + node.id; + var parentId = node.parentId; + + if (null == parentId) { + // If there's no parent, we are done + // s += ". No parent node."; + // logDebug(s); + return; + } // Get Parent Node + + + var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]]; + var flag = false; // MaxX + + if (null == p.maxX || node.maxX + p.padRight > p.maxX) { + p.maxX = node.maxX + p.padRight; + flag = true; // s += "\nNew maxX for parent node " + p.id + ": " + p.maxX; + } // MinX + + + if (null == p.minX || node.minX - p.padLeft < p.minX) { + p.minX = node.minX - p.padLeft; + flag = true; // s += "\nNew minX for parent node " + p.id + ": " + p.minX; + } // MaxY + + + if (null == p.maxY || node.maxY + p.padBottom > p.maxY) { + p.maxY = node.maxY + p.padBottom; + flag = true; // s += "\nNew maxY for parent node " + p.id + ": " + p.maxY; + } // MinY + + + if (null == p.minY || node.minY - p.padTop < p.minY) { + p.minY = node.minY - p.padTop; + flag = true; // s += "\nNew minY for parent node " + p.id + ": " + p.minY; + } // If updated boundaries, propagate changes upward + + + if (flag) { + // logDebug(s); + return updateAncestryBoundaries(p, layoutInfo); + } // s += ". No changes in boundaries/position of parent node " + p.id; + // logDebug(s); + + + return; +}; + +var separateComponents = function separateComponents(layoutInfo, options) { + var nodes = layoutInfo.layoutNodes; + var components = []; + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var cid = node.cmptId; + var component = components[cid] = components[cid] || []; + component.push(node); + } + + var totalA = 0; + + for (var i = 0; i < components.length; i++) { + var c = components[i]; + + if (!c) { + continue; + } + + c.x1 = Infinity; + c.x2 = -Infinity; + c.y1 = Infinity; + c.y2 = -Infinity; + + for (var j = 0; j < c.length; j++) { + var n = c[j]; + c.x1 = Math.min(c.x1, n.positionX - n.width / 2); + c.x2 = Math.max(c.x2, n.positionX + n.width / 2); + c.y1 = Math.min(c.y1, n.positionY - n.height / 2); + c.y2 = Math.max(c.y2, n.positionY + n.height / 2); + } + + c.w = c.x2 - c.x1; + c.h = c.y2 - c.y1; + totalA += c.w * c.h; + } + + components.sort(function (c1, c2) { + return c2.w * c2.h - c1.w * c1.h; + }); + var x = 0; + var y = 0; + var usedW = 0; + var rowH = 0; + var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight; + + for (var i = 0; i < components.length; i++) { + var c = components[i]; + + if (!c) { + continue; + } + + for (var j = 0; j < c.length; j++) { + var n = c[j]; + + if (!n.isLocked) { + n.positionX += x - c.x1; + n.positionY += y - c.y1; + } + } + + x += c.w + options.componentSpacing; + usedW += c.w + options.componentSpacing; + rowH = Math.max(rowH, c.h); + + if (usedW > maxRowW) { + y += rowH + options.componentSpacing; + x = 0; + usedW = 0; + rowH = 0; + } + } +}; + +var defaults$d = { + fit: true, + // whether to fit the viewport to the graph + padding: 30, + // padding used on fit + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + avoidOverlap: true, + // prevents node overlap, may overflow boundingBox if not enough space + avoidOverlapPadding: 10, + // extra spacing around nodes when avoidOverlap: true + nodeDimensionsIncludeLabels: false, + // Excludes the label when calculating node bounding boxes for the layout algorithm + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + condense: false, + // uses all available space on false, uses minimal space on true + rows: undefined, + // force num of rows in the grid + cols: undefined, + // force num of columns in the grid + position: function position(node) {}, + // returns { row, col } for element + sort: undefined, + // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function GridLayout(options) { + this.options = extend({}, defaults$d, options); +} + +GridLayout.prototype.run = function () { + var params = this.options; + var options = params; + var cy = params.cy; + var eles = options.eles; + var nodes = eles.nodes().not(':parent'); + + if (options.sort) { + nodes = nodes.sort(options.sort); + } + + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + + if (bb.h === 0 || bb.w === 0) { + nodes.layoutPositions(this, options, function (ele) { + return { + x: bb.x1, + y: bb.y1 + }; + }); + } else { + // width/height * splits^2 = cells where splits is number of times to split width + var cells = nodes.size(); + var splits = Math.sqrt(cells * bb.h / bb.w); + var rows = Math.round(splits); + var cols = Math.round(bb.w / bb.h * splits); + + var small = function small(val) { + if (val == null) { + return Math.min(rows, cols); + } else { + var min = Math.min(rows, cols); + + if (min == rows) { + rows = val; + } else { + cols = val; + } + } + }; + + var large = function large(val) { + if (val == null) { + return Math.max(rows, cols); + } else { + var max = Math.max(rows, cols); + + if (max == rows) { + rows = val; + } else { + cols = val; + } + } + }; + + var oRows = options.rows; + var oCols = options.cols != null ? options.cols : options.columns; // if rows or columns were set in options, use those values + + if (oRows != null && oCols != null) { + rows = oRows; + cols = oCols; + } else if (oRows != null && oCols == null) { + rows = oRows; + cols = Math.ceil(cells / rows); + } else if (oRows == null && oCols != null) { + cols = oCols; + rows = Math.ceil(cells / cols); + } // otherwise use the automatic values and adjust accordingly + // if rounding was up, see if we can reduce rows or columns + else if (cols * rows > cells) { + var sm = small(); + var lg = large(); // reducing the small side takes away the most cells, so try it first + + if ((sm - 1) * lg >= cells) { + small(sm - 1); + } else if ((lg - 1) * sm >= cells) { + large(lg - 1); + } + } else { + // if rounding was too low, add rows or columns + while (cols * rows < cells) { + var _sm = small(); + + var _lg = large(); // try to add to larger side first (adds less in multiplication) + + + if ((_lg + 1) * _sm >= cells) { + large(_lg + 1); + } else { + small(_sm + 1); + } + } + } + + var cellWidth = bb.w / cols; + var cellHeight = bb.h / rows; + + if (options.condense) { + cellWidth = 0; + cellHeight = 0; + } + + if (options.avoidOverlap) { + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var pos = node._private.position; + + if (pos.x == null || pos.y == null) { + // for bb + pos.x = 0; + pos.y = 0; + } + + var nbb = node.layoutDimensions(options); + var p = options.avoidOverlapPadding; + var w = nbb.w + p; + var h = nbb.h + p; + cellWidth = Math.max(cellWidth, w); + cellHeight = Math.max(cellHeight, h); + } + } + + var cellUsed = {}; // e.g. 'c-0-2' => true + + var used = function used(row, col) { + return cellUsed['c-' + row + '-' + col] ? true : false; + }; + + var use = function use(row, col) { + cellUsed['c-' + row + '-' + col] = true; + }; // to keep track of current cell position + + + var row = 0; + var col = 0; + + var moveToNextCell = function moveToNextCell() { + col++; + + if (col >= cols) { + col = 0; + row++; + } + }; // get a cache of all the manual positions + + + var id2manPos = {}; + + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + var rcPos = options.position(_node); + + if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) { + // must have at least row or col def'd + var _pos = { + row: rcPos.row, + col: rcPos.col + }; + + if (_pos.col === undefined) { + // find unused col + _pos.col = 0; + + while (used(_pos.row, _pos.col)) { + _pos.col++; + } + } else if (_pos.row === undefined) { + // find unused row + _pos.row = 0; + + while (used(_pos.row, _pos.col)) { + _pos.row++; + } + } + + id2manPos[_node.id()] = _pos; + use(_pos.row, _pos.col); + } + } + + var getPos = function getPos(element, i) { + var x, y; + + if (element.locked() || element.isParent()) { + return false; + } // see if we have a manual position set + + + var rcPos = id2manPos[element.id()]; + + if (rcPos) { + x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1; + y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1; + } else { + // otherwise set automatically + while (used(row, col)) { + moveToNextCell(); + } + + x = col * cellWidth + cellWidth / 2 + bb.x1; + y = row * cellHeight + cellHeight / 2 + bb.y1; + use(row, col); + moveToNextCell(); + } + + return { + x: x, + y: y + }; + }; + + nodes.layoutPositions(this, options, getPos); + } + + return this; // chaining +}; + +var defaults$e = { + ready: function ready() {}, + // on layoutready + stop: function stop() {} // on layoutstop + +}; // constructor +// options : object containing layout options + +function NullLayout(options) { + this.options = extend({}, defaults$e, options); +} // runs the layout + + +NullLayout.prototype.run = function () { + var options = this.options; + var eles = options.eles; // elements to consider in the layout + + var layout = this; // cy is automatically populated for us in the constructor + // (disable eslint for next line as this serves as example layout code to external developers) + // eslint-disable-next-line no-unused-vars + + var cy = options.cy; + layout.emit('layoutstart'); // puts all nodes at (0, 0) + // n.b. most layouts would use layoutPositions(), instead of positions() and manual events + + eles.nodes().positions(function () { + return { + x: 0, + y: 0 + }; + }); // trigger layoutready when each node has had its position set at least once + + layout.one('layoutready', options.ready); + layout.emit('layoutready'); // trigger layoutstop when the layout stops (e.g. finishes) + + layout.one('layoutstop', options.stop); + layout.emit('layoutstop'); + return this; // chaining +}; // called on continuous layouts to stop them before they finish + + +NullLayout.prototype.stop = function () { + return this; // chaining +}; + +var defaults$f = { + positions: undefined, + // map of (node id) => (position obj); or function(node){ return somPos; } + zoom: undefined, + // the zoom level to set (prob want fit = false if set) + pan: undefined, + // the pan level to set (prob want fit = false if set) + fit: true, + // whether to fit to viewport + padding: 30, + // padding on fit + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function PresetLayout(options) { + this.options = extend({}, defaults$f, options); +} + +PresetLayout.prototype.run = function () { + var options = this.options; + var eles = options.eles; + var nodes = eles.nodes(); + var posIsFn = fn(options.positions); + + function getPosition(node) { + if (options.positions == null) { + return copyPosition(node.position()); + } + + if (posIsFn) { + return options.positions(node); + } + + var pos = options.positions[node._private.data.id]; + + if (pos == null) { + return null; + } + + return pos; + } + + nodes.layoutPositions(this, options, function (node, i) { + var position = getPosition(node); + + if (node.locked() || position == null) { + return false; + } + + return position; + }); + return this; // chaining +}; + +var defaults$g = { + fit: true, + // whether to fit to viewport + padding: 30, + // fit padding + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + animate: false, + // whether to transition the node positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + animateFilter: function animateFilter(node, i) { + return true; + }, + // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts + ready: undefined, + // callback on layoutready + stop: undefined, + // callback on layoutstop + transform: function transform(node, position) { + return position; + } // transform a given node position. Useful for changing flow direction in discrete layouts + +}; + +function RandomLayout(options) { + this.options = extend({}, defaults$g, options); +} + +RandomLayout.prototype.run = function () { + var options = this.options; + var cy = options.cy; + var eles = options.eles; + var nodes = eles.nodes().not(':parent'); + var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }); + + var getPos = function getPos(node, i) { + return { + x: bb.x1 + Math.round(Math.random() * bb.w), + y: bb.y1 + Math.round(Math.random() * bb.h) + }; + }; + + nodes.layoutPositions(this, options, getPos); + return this; // chaining +}; + +var layout = [{ + name: 'breadthfirst', + impl: BreadthFirstLayout +}, { + name: 'circle', + impl: CircleLayout +}, { + name: 'concentric', + impl: ConcentricLayout +}, { + name: 'cose', + impl: CoseLayout +}, { + name: 'grid', + impl: GridLayout +}, { + name: 'null', + impl: NullLayout +}, { + name: 'preset', + impl: PresetLayout +}, { + name: 'random', + impl: RandomLayout +}]; + +function NullRenderer(options) { + this.options = options; + this.notifications = 0; // for testing +} + +var noop$1 = function noop() {}; + +var throwImgErr = function throwImgErr() { + throw new Error('A headless instance can not render images'); +}; + +NullRenderer.prototype = { + recalculateRenderedStyle: noop$1, + notify: function notify() { + this.notifications++; + }, + init: noop$1, + isHeadless: function isHeadless() { + return true; + }, + png: throwImgErr, + jpg: throwImgErr +}; + +var BRp = {}; +BRp.arrowShapeWidth = 0.3; + +BRp.registerArrowShapes = function () { + var arrowShapes = this.arrowShapes = {}; + var renderer = this; // Contract for arrow shapes: + // 0, 0 is arrow tip + // (0, 1) is direction towards node + // (1, 0) is right + // + // functional api: + // collide: check x, y in shape + // roughCollide: called before collide, no false negatives + // draw: draw + // spacing: dist(arrowTip, nodeBoundary) + // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip + + var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) { + var x1 = translation.x - size / 2 - padding; + var x2 = translation.x + size / 2 + padding; + var y1 = translation.y - size / 2 - padding; + var y2 = translation.y + size / 2 + padding; + var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2; + return inside; + }; + + var transform = function transform(x, y, size, angle, translation) { + var xRotated = x * Math.cos(angle) - y * Math.sin(angle); + var yRotated = x * Math.sin(angle) + y * Math.cos(angle); + var xScaled = xRotated * size; + var yScaled = yRotated * size; + var xTranslated = xScaled + translation.x; + var yTranslated = yScaled + translation.y; + return { + x: xTranslated, + y: yTranslated + }; + }; + + var transformPoints = function transformPoints(pts, size, angle, translation) { + var retPts = []; + + for (var i = 0; i < pts.length; i += 2) { + var x = pts[i]; + var y = pts[i + 1]; + retPts.push(transform(x, y, size, angle, translation)); + } + + return retPts; + }; + + var pointsToArr = function pointsToArr(pts) { + var ret = []; + + for (var i = 0; i < pts.length; i++) { + var p = pts[i]; + ret.push(p.x, p.y); + } + + return ret; + }; + + var standardGap = function standardGap(edge) { + return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2; + }; + + var defineArrowShape = function defineArrowShape(name, defn) { + if (string(defn)) { + defn = arrowShapes[defn]; + } + + arrowShapes[name] = extend({ + name: name, + points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3], + collide: function collide(x, y, size, angle, translation, padding) { + var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + var inside = pointInsidePolygonPoints(x, y, points); + return inside; + }, + roughCollide: bbCollide, + draw: function draw(context, size, angle, translation) { + var points = transformPoints(this.points, size, angle, translation); + renderer.arrowShapeImpl('polygon')(context, points); + }, + spacing: function spacing(edge) { + return 0; + }, + gap: standardGap + }, defn); + }; + + defineArrowShape('none', { + collide: falsify, + roughCollide: falsify, + draw: noop, + spacing: zeroify, + gap: zeroify + }); + defineArrowShape('triangle', { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3] + }); + defineArrowShape('arrow', 'triangle'); + defineArrowShape('triangle-backcurve', { + points: arrowShapes['triangle'].points, + controlPoint: [0, -0.15], + roughCollide: bbCollide, + draw: function draw(context, size, angle, translation, edgeWidth) { + var ptsTrans = transformPoints(this.points, size, angle, translation); + var ctrlPt = this.controlPoint; + var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans); + }, + gap: function gap(edge) { + return standardGap(edge) * 0.8; + } + }); + defineArrowShape('triangle-tee', { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4], + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation)); + var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); + return inside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + var triPts = transformPoints(this.points, size, angle, translation); + var teePts = transformPoints(this.pointsTee, size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, triPts, teePts); + } + }); + defineArrowShape('circle-triangle', { + radius: 0.15, + pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15], + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var t = translation; + var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); + var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + return pointInsidePolygonPoints(x, y, triPts) || circleInside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + var triPts = transformPoints(this.pointsTr, size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size); + }, + spacing: function spacing(edge) { + return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; + } + }); + defineArrowShape('triangle-cross', { + points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], + baseCrossLinePts: [-0.15, -0.4, // first half of the rectangle + -0.15, -0.4, 0.15, -0.4, // second half of the rectangle + 0.15, -0.4], + crossLinePts: function crossLinePts(size, edgeWidth) { + // shift points so that the distance between the cross points matches edge width + var p = this.baseCrossLinePts.slice(); + var shiftFactor = edgeWidth / size; + var y0 = 3; + var y1 = 5; + p[y0] = p[y0] - shiftFactor; + p[y1] = p[y1] - shiftFactor; + return p; + }, + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); + var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation)); + var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); + return inside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + var triPts = transformPoints(this.points, size, angle, translation); + var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation); + renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts); + } + }); + defineArrowShape('vee', { + points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15], + gap: function gap(edge) { + return standardGap(edge) * 0.525; + } + }); + defineArrowShape('circle', { + radius: 0.15, + collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { + var t = translation; + var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); + return inside; + }, + draw: function draw(context, size, angle, translation, edgeWidth) { + renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size); + }, + spacing: function spacing(edge) { + return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; + } + }); + defineArrowShape('tee', { + points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0], + spacing: function spacing(edge) { + return 1; + }, + gap: function gap(edge) { + return 1; + } + }); + defineArrowShape('square', { + points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3] + }); + defineArrowShape('diamond', { + points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0], + gap: function gap(edge) { + return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; + } + }); + defineArrowShape('chevron', { + points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15], + gap: function gap(edge) { + return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; + } + }); +}; + +var BRp$1 = {}; // Project mouse + +BRp$1.projectIntoViewport = function (clientX, clientY) { + var cy = this.cy; + var offsets = this.findContainerClientCoords(); + var offsetLeft = offsets[0]; + var offsetTop = offsets[1]; + var scale = offsets[4]; + var pan = cy.pan(); + var zoom = cy.zoom(); + var x = ((clientX - offsetLeft) / scale - pan.x) / zoom; + var y = ((clientY - offsetTop) / scale - pan.y) / zoom; + return [x, y]; +}; + +BRp$1.findContainerClientCoords = function () { + if (this.containerBB) { + return this.containerBB; + } + + var container = this.container; + var rect = container.getBoundingClientRect(); + var style = window$1.getComputedStyle(container); + + var styleValue = function styleValue(name) { + return parseFloat(style.getPropertyValue(name)); + }; + + var padding = { + left: styleValue('padding-left'), + right: styleValue('padding-right'), + top: styleValue('padding-top'), + bottom: styleValue('padding-bottom') + }; + var border = { + left: styleValue('border-left-width'), + right: styleValue('border-right-width'), + top: styleValue('border-top-width'), + bottom: styleValue('border-bottom-width') + }; + var clientWidth = container.clientWidth; + var clientHeight = container.clientHeight; + var paddingHor = padding.left + padding.right; + var paddingVer = padding.top + padding.bottom; + var borderHor = border.left + border.right; + var scale = rect.width / (clientWidth + borderHor); + var unscaledW = clientWidth - paddingHor; + var unscaledH = clientHeight - paddingVer; + var left = rect.left + padding.left + border.left; + var top = rect.top + padding.top + border.top; + return this.containerBB = [left, top, unscaledW, unscaledH, scale]; +}; + +BRp$1.invalidateContainerClientCoordsCache = function () { + this.containerBB = null; +}; + +BRp$1.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) { + return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0]; +}; + +BRp$1.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) { + var self = this; + var r = this; + var eles = r.getCachedZSortedEles(); + var near = []; // 1 node max, 1 edge max + + var zoom = r.cy.zoom(); + var hasCompounds = r.cy.hasCompoundNodes(); + var edgeThreshold = (isTouch ? 24 : 8) / zoom; + var nodeThreshold = (isTouch ? 8 : 2) / zoom; + var labelThreshold = (isTouch ? 8 : 2) / zoom; + var minSqDist = Infinity; + var nearEdge; + var nearNode; + + if (interactiveElementsOnly) { + eles = eles.interactive; + } + + function addEle(ele, sqDist) { + if (ele.isNode()) { + if (nearNode) { + return; // can't replace node + } else { + nearNode = ele; + near.push(ele); + } + } + + if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) { + if (nearEdge) { + // then replace existing edge + // can replace only if same z-index + if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) { + for (var i = 0; i < near.length; i++) { + if (near[i].isEdge()) { + near[i] = ele; + nearEdge = ele; + minSqDist = sqDist != null ? sqDist : minSqDist; + break; + } + } + } + } else { + near.push(ele); + nearEdge = ele; + minSqDist = sqDist != null ? sqDist : minSqDist; + } + } + } + + function checkNode(node) { + var width = node.outerWidth() + 2 * nodeThreshold; + var height = node.outerHeight() + 2 * nodeThreshold; + var hw = width / 2; + var hh = height / 2; + var pos = node.position(); + + if (pos.x - hw <= x && x <= pos.x + hw // bb check x + && pos.y - hh <= y && y <= pos.y + hh // bb check y + ) { + var shape = r.nodeShapes[self.getNodeShape(node)]; + + if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) { + addEle(node, 0); + return true; + } + } + } + + function checkEdge(edge) { + var _p = edge._private; + var rs = _p.rscratch; + var styleWidth = edge.pstyle('width').pfValue; + var scale = edge.pstyle('arrow-scale').value; + var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre + + var widthSq = width * width; + var width2 = width * 2; + var src = _p.source; + var tgt = _p.target; + var sqDist; + + if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') { + var pts = rs.allpts; + + for (var i = 0; i + 3 < pts.length; i += 2) { + if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) { + addEle(edge, sqDist); + return true; + } + } + } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { + var pts = rs.allpts; + + for (var i = 0; i + 5 < rs.allpts.length; i += 4) { + if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) { + addEle(edge, sqDist); + return true; + } + } + } // if we're close to the edge but didn't hit it, maybe we hit its arrows + + + var src = src || _p.source; + var tgt = tgt || _p.target; + var arSize = self.getArrowWidth(styleWidth, scale); + var arrows = [{ + name: 'source', + x: rs.arrowStartX, + y: rs.arrowStartY, + angle: rs.srcArrowAngle + }, { + name: 'target', + x: rs.arrowEndX, + y: rs.arrowEndY, + angle: rs.tgtArrowAngle + }, { + name: 'mid-source', + x: rs.midX, + y: rs.midY, + angle: rs.midsrcArrowAngle + }, { + name: 'mid-target', + x: rs.midX, + y: rs.midY, + angle: rs.midtgtArrowAngle + }]; + + for (var i = 0; i < arrows.length; i++) { + var ar = arrows[i]; + var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value]; + var edgeWidth = edge.pstyle('width').pfValue; + + if (shape.roughCollide(x, y, arSize, ar.angle, { + x: ar.x, + y: ar.y + }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, { + x: ar.x, + y: ar.y + }, edgeWidth, edgeThreshold)) { + addEle(edge); + return true; + } + } // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence) + + + if (hasCompounds && near.length > 0) { + checkNode(src); + checkNode(tgt); + } + } + + function preprop(obj, name, pre) { + return getPrefixedProperty(obj, name, pre); + } + + function checkLabel(ele, prefix) { + var _p = ele._private; + var th = labelThreshold; + var prefixDash; + + if (prefix) { + prefixDash = prefix + '-'; + } else { + prefixDash = ''; + } + + ele.boundingBox(); + var bb = _p.labelBounds[prefix || 'main']; + var text = ele.pstyle(prefixDash + 'label').value; + var eventsEnabled = ele.pstyle('text-events').strValue === 'yes'; + + if (!eventsEnabled || !text) { + return; + } + + var rstyle = _p.rstyle; + var lx = preprop(rstyle, 'labelX', prefix); + var ly = preprop(rstyle, 'labelY', prefix); + var theta = preprop(_p.rscratch, 'labelAngle', prefix); + var lx1 = bb.x1 - th; + var lx2 = bb.x2 + th; + var ly1 = bb.y1 - th; + var ly2 = bb.y2 + th; + + if (theta) { + var cos = Math.cos(theta); + var sin = Math.sin(theta); + + var rotate = function rotate(x, y) { + x = x - lx; + y = y - ly; + return { + x: x * cos - y * sin + lx, + y: x * sin + y * cos + ly + }; + }; + + var px1y1 = rotate(lx1, ly1); + var px1y2 = rotate(lx1, ly2); + var px2y1 = rotate(lx2, ly1); + var px2y2 = rotate(lx2, ly2); + var points = [px1y1.x, px1y1.y, px2y1.x, px2y1.y, px2y2.x, px2y2.y, px1y2.x, px1y2.y]; + + if (pointInsidePolygonPoints(x, y, points)) { + addEle(ele); + return true; + } + } else { + // do a cheaper bb check + if (inBoundingBox(bb, x, y)) { + addEle(ele); + return true; + } + } + } + + for (var i = eles.length - 1; i >= 0; i--) { + // reverse order for precedence + var ele = eles[i]; + + if (ele.isNode()) { + checkNode(ele) || checkLabel(ele); + } else { + // then edge + checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target'); + } + } + + return near; +}; // 'Give me everything from this box' + + +BRp$1.getAllInBox = function (x1, y1, x2, y2) { + var eles = this.getCachedZSortedEles().interactive; + var box = []; + var x1c = Math.min(x1, x2); + var x2c = Math.max(x1, x2); + var y1c = Math.min(y1, y2); + var y2c = Math.max(y1, y2); + x1 = x1c; + x2 = x2c; + y1 = y1c; + y2 = y2c; + var boxBb = makeBoundingBox({ + x1: x1, + y1: y1, + x2: x2, + y2: y2 + }); + + for (var e = 0; e < eles.length; e++) { + var ele = eles[e]; + + if (ele.isNode()) { + var node = ele; + var nodeBb = node.boundingBox({ + includeNodes: true, + includeEdges: false, + includeLabels: false + }); + + if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) { + box.push(node); + } + } else { + var edge = ele; + var _p = edge._private; + var rs = _p.rscratch; + + if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) { + continue; + } + + if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) { + continue; + } + + if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') { + var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts; + var allInside = true; + + for (var i = 0; i < pts.length; i++) { + if (!pointInBoundingBox(boxBb, pts[i])) { + allInside = false; + break; + } + } + + if (allInside) { + box.push(edge); + } + } else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') { + box.push(edge); + } + } + } + + return box; +}; + +var BRp$2 = {}; + +BRp$2.calculateArrowAngles = function (edge) { + var rs = edge._private.rscratch; + var isHaystack = rs.edgeType === 'haystack'; + var isBezier = rs.edgeType === 'bezier'; + var isMultibezier = rs.edgeType === 'multibezier'; + var isSegments = rs.edgeType === 'segments'; + var isCompound = rs.edgeType === 'compound'; + var isSelf = rs.edgeType === 'self'; // Displacement gives direction for arrowhead orientation + + var dispX, dispY; + var startX, startY, endX, endY, midX, midY; + + if (isHaystack) { + startX = rs.haystackPts[0]; + startY = rs.haystackPts[1]; + endX = rs.haystackPts[2]; + endY = rs.haystackPts[3]; + } else { + startX = rs.arrowStartX; + startY = rs.arrowStartY; + endX = rs.arrowEndX; + endY = rs.arrowEndY; + } + + midX = rs.midX; + midY = rs.midY; // source + // + + if (isSegments) { + dispX = startX - rs.segpts[0]; + dispY = startY - rs.segpts[1]; + } else if (isMultibezier || isCompound || isSelf || isBezier) { + var pts = rs.allpts; + var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1); + var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1); + dispX = startX - bX; + dispY = startY - bY; + } else { + dispX = startX - midX; + dispY = startY - midY; + } + + rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); // mid target + // + + var midX = rs.midX; + var midY = rs.midY; + + if (isHaystack) { + midX = (startX + endX) / 2; + midY = (startY + endY) / 2; + } + + dispX = endX - startX; + dispY = endY - startY; + + if (isSegments) { + var pts = rs.allpts; + + if (pts.length / 2 % 2 === 0) { + var i2 = pts.length / 2; + var i1 = i2 - 2; + dispX = pts[i2] - pts[i1]; + dispY = pts[i2 + 1] - pts[i1 + 1]; + } else { + var i2 = pts.length / 2 - 1; + var i1 = i2 - 2; + var i3 = i2 + 2; + dispX = pts[i2] - pts[i1]; + dispY = pts[i2 + 1] - pts[i1 + 1]; + } + } else if (isMultibezier || isCompound || isSelf) { + var pts = rs.allpts; + var cpts = rs.ctrlpts; + var bp0x, bp0y; + var bp1x, bp1y; + + if (cpts.length / 2 % 2 === 0) { + var p0 = pts.length / 2 - 1; // startpt + + var ic = p0 + 2; + var p1 = ic + 2; + bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0); + bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0); + bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001); + bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001); + } else { + var ic = pts.length / 2 - 1; // ctrpt + + var p0 = ic - 2; // startpt + + var p1 = ic + 2; // endpt + + bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999); + bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999); + bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5); + bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5); + } + + dispX = bp1x - bp0x; + dispY = bp1y - bp0y; + } + + rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY); + rs.midDispX = dispX; + rs.midDispY = dispY; // mid source + // + + dispX *= -1; + dispY *= -1; + + if (isSegments) { + var pts = rs.allpts; + + if (pts.length / 2 % 2 === 0) ; else { + var i2 = pts.length / 2 - 1; + var i3 = i2 + 2; + dispX = -(pts[i3] - pts[i2]); + dispY = -(pts[i3 + 1] - pts[i2 + 1]); + } + } + + rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); // target + // + + if (isSegments) { + dispX = endX - rs.segpts[rs.segpts.length - 2]; + dispY = endY - rs.segpts[rs.segpts.length - 1]; + } else if (isMultibezier || isCompound || isSelf || isBezier) { + var pts = rs.allpts; + var l = pts.length; + var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9); + var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9); + dispX = endX - bX; + dispY = endY - bY; + } else { + dispX = endX - midX; + dispY = endY - midY; + } + + rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY); +}; + +BRp$2.getArrowWidth = BRp$2.getArrowHeight = function (edgeWidth, scale) { + var cache = this.arrowWidthCache = this.arrowWidthCache || {}; + var cachedVal = cache[edgeWidth + ', ' + scale]; + + if (cachedVal) { + return cachedVal; + } + + cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale; + cache[edgeWidth + ', ' + scale] = cachedVal; + return cachedVal; +}; + +var BRp$3 = {}; + +BRp$3.findHaystackPoints = function (edges) { + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var _p = edge._private; + var rs = _p.rscratch; + + if (!rs.haystack) { + var angle = Math.random() * 2 * Math.PI; + rs.source = { + x: Math.cos(angle), + y: Math.sin(angle) + }; + angle = Math.random() * 2 * Math.PI; + rs.target = { + x: Math.cos(angle), + y: Math.sin(angle) + }; + } + + var src = _p.source; + var tgt = _p.target; + var srcPos = src.position(); + var tgtPos = tgt.position(); + var srcW = src.width(); + var tgtW = tgt.width(); + var srcH = src.height(); + var tgtH = tgt.height(); + var radius = edge.pstyle('haystack-radius').value; + var halfRadius = radius / 2; // b/c have to half width/height + + rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y]; + rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2; + rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; // always override as haystack in case set to different type previously + + rs.edgeType = 'haystack'; + rs.haystack = true; + this.storeEdgeProjections(edge); + this.calculateArrowAngles(edge); + this.recalculateEdgeLabelProjections(edge); + this.calculateLabelAngles(edge); + } +}; + +BRp$3.findSegmentsPoints = function (edge, pairInfo) { + // Segments (multiple straight lines) + var rs = edge._private.rscratch; + var posPts = pairInfo.posPts, + intersectionPts = pairInfo.intersectionPts, + vectorNormInverse = pairInfo.vectorNormInverse; + var edgeDistances = edge.pstyle('edge-distances').value; + var segmentWs = edge.pstyle('segment-weights'); + var segmentDs = edge.pstyle('segment-distances'); + var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length); + rs.edgeType = 'segments'; + rs.segpts = []; + + for (var s = 0; s < segmentsN; s++) { + var w = segmentWs.pfValue[s]; + var d = segmentDs.pfValue[s]; + var w1 = 1 - w; + var w2 = w; + var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; + var adjustedMidpt = { + x: midptPts.x1 * w1 + midptPts.x2 * w2, + y: midptPts.y1 * w1 + midptPts.y2 * w2 + }; + rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d); + } +}; + +BRp$3.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { + // Self-edge + var rs = edge._private.rscratch; + var dirCounts = pairInfo.dirCounts, + srcPos = pairInfo.srcPos; + var ctrlptDists = edge.pstyle('control-point-distances'); + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; + var loopDir = edge.pstyle('loop-direction').pfValue; + var loopSwp = edge.pstyle('loop-sweep').pfValue; + var stepSize = edge.pstyle('control-point-step-size').pfValue; + rs.edgeType = 'self'; + var j = i; + var loopDist = stepSize; + + if (edgeIsUnbundled) { + j = 0; + loopDist = ctrlptDist; + } + + var loopAngle = loopDir - Math.PI / 2; + var outAngle = loopAngle - loopSwp / 2; + var inAngle = loopAngle + loopSwp / 2; // increase by step size for overlapping loops, keyed on direction and sweep values + + var dc = String(loopDir + '_' + loopSwp); + j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc]; + rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)]; +}; + +BRp$3.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { + // Compound edge + var rs = edge._private.rscratch; + rs.edgeType = 'compound'; + var srcPos = pairInfo.srcPos, + tgtPos = pairInfo.tgtPos, + srcW = pairInfo.srcW, + srcH = pairInfo.srcH, + tgtW = pairInfo.tgtW, + tgtH = pairInfo.tgtH; + var stepSize = edge.pstyle('control-point-step-size').pfValue; + var ctrlptDists = edge.pstyle('control-point-distances'); + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; + var j = i; + var loopDist = stepSize; + + if (edgeIsUnbundled) { + j = 0; + loopDist = ctrlptDist; + } + + var loopW = 50; + var loopaPos = { + x: srcPos.x - srcW / 2, + y: srcPos.y - srcH / 2 + }; + var loopbPos = { + x: tgtPos.x - tgtW / 2, + y: tgtPos.y - tgtH / 2 + }; + var loopPos = { + x: Math.min(loopaPos.x, loopbPos.x), + y: Math.min(loopaPos.y, loopbPos.y) + }; // avoids cases with impossible beziers + + var minCompoundStretch = 0.5; + var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01)); + var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01)); + rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y]; +}; + +BRp$3.findStraightEdgePoints = function (edge) { + // Straight edge within bundle + edge._private.rscratch.edgeType = 'straight'; +}; + +BRp$3.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) { + var rs = edge._private.rscratch; + var vectorNormInverse = pairInfo.vectorNormInverse, + posPts = pairInfo.posPts, + intersectionPts = pairInfo.intersectionPts; + var edgeDistances = edge.pstyle('edge-distances').value; + var stepSize = edge.pstyle('control-point-step-size').pfValue; + var ctrlptDists = edge.pstyle('control-point-distances'); + var ctrlptWs = edge.pstyle('control-point-weights'); + var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1; + var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; + var ctrlptWeight = ctrlptWs.value[0]; // (Multi)bezier + + var multi = edgeIsUnbundled; + rs.edgeType = multi ? 'multibezier' : 'bezier'; + rs.ctrlpts = []; + + for (var b = 0; b < bezierN; b++) { + var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1); + var manctrlptDist = void 0; + var sign = signum(normctrlptDist); + + if (multi) { + ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size + + ctrlptWeight = ctrlptWs.value[b]; + } + + if (edgeIsUnbundled) { + // multi or single unbundled + manctrlptDist = ctrlptDist; + } else { + manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined; + } + + var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist; + var w1 = 1 - ctrlptWeight; + var w2 = ctrlptWeight; + var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; + var adjustedMidpt = { + x: midptPts.x1 * w1 + midptPts.x2 * w2, + y: midptPts.y1 * w1 + midptPts.y2 * w2 + }; + rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint); + } +}; + +BRp$3.findTaxiPoints = function (edge, pairInfo) { + // Taxicab geometry with two turns maximum + var rs = edge._private.rscratch; + rs.edgeType = 'segments'; + var VERTICAL = 'vertical'; + var HORIZONTAL = 'horizontal'; + var LEFTWARD = 'leftward'; + var RIGHTWARD = 'rightward'; + var DOWNWARD = 'downward'; + var UPWARD = 'upward'; + var AUTO = 'auto'; + var posPts = pairInfo.posPts, + srcW = pairInfo.srcW, + srcH = pairInfo.srcH, + tgtW = pairInfo.tgtW, + tgtH = pairInfo.tgtH; + var edgeDistances = edge.pstyle('edge-distances').value; + var dIncludesNodeBody = edgeDistances !== 'node-position'; + var taxiDir = edge.pstyle('taxi-direction').value; + var rawTaxiDir = taxiDir; // unprocessed value + + var taxiTurn = edge.pstyle('taxi-turn'); + var turnIsPercent = taxiTurn.units === '%'; + var taxiTurnPfVal = taxiTurn.pfValue; + var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side + + var minD = edge.pstyle('taxi-turn-min-distance').pfValue; + var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0; + var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0; + var pdx = posPts.x2 - posPts.x1; + var pdy = posPts.y2 - posPts.y1; // take away the effective w/h from the magnitude of the delta value + + var subDWH = function subDWH(dxy, dwh) { + if (dxy > 0) { + return Math.max(dxy - dwh, 0); + } else { + return Math.min(dxy + dwh, 0); + } + }; + + var dx = subDWH(pdx, dw); + var dy = subDWH(pdy, dh); + var isExplicitDir = false; + + if (rawTaxiDir === AUTO) { + taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL; + } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) { + taxiDir = VERTICAL; + isExplicitDir = true; + } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) { + taxiDir = HORIZONTAL; + isExplicitDir = true; + } + + var isVert = taxiDir === VERTICAL; + var l = isVert ? dy : dx; + var pl = isVert ? pdy : pdx; + var sgnL = signum(pl); + var forcedDir = false; + + if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction + && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) { + sgnL *= -1; + l = sgnL * Math.abs(l); + forcedDir = true; + } + + var d; + + if (turnIsPercent) { + var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal; + d = p * l; + } else { + var k = taxiTurnPfVal < 0 ? l : 0; + d = k + taxiTurnPfVal * sgnL; + } + + var getIsTooClose = function getIsTooClose(d) { + return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l); + }; + + var isTooCloseSrc = getIsTooClose(d); + var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d)); + var isTooClose = isTooCloseSrc || isTooCloseTgt; + + if (isTooClose && !forcedDir) { + // non-ideal routing + if (isVert) { + // vertical fallbacks + var lShapeInsideSrc = Math.abs(pl) <= srcH / 2; + var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2; + + if (lShapeInsideSrc) { + // horizontal Z-shape (direction not respected) + var x = (posPts.x1 + posPts.x2) / 2; + var y1 = posPts.y1, + y2 = posPts.y2; + rs.segpts = [x, y1, x, y2]; + } else if (lShapeInsideTgt) { + // vertical Z-shape (distance not respected) + var y = (posPts.y1 + posPts.y2) / 2; + var x1 = posPts.x1, + x2 = posPts.x2; + rs.segpts = [x1, y, x2, y]; + } else { + // L-shape fallback (turn distance not respected, but works well with tree siblings) + rs.segpts = [posPts.x1, posPts.y2]; + } + } else { + // horizontal fallbacks + var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2; + + var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2; + + if (_lShapeInsideSrc) { + // vertical Z-shape (direction not respected) + var _y = (posPts.y1 + posPts.y2) / 2; + + var _x = posPts.x1, + _x2 = posPts.x2; + rs.segpts = [_x, _y, _x2, _y]; + } else if (_lShapeInsideTgt) { + // horizontal Z-shape (turn distance not respected) + var _x3 = (posPts.x1 + posPts.x2) / 2; + + var _y2 = posPts.y1, + _y3 = posPts.y2; + rs.segpts = [_x3, _y2, _x3, _y3]; + } else { + // L-shape (turn distance not respected, but works well for tree siblings) + rs.segpts = [posPts.x2, posPts.y1]; + } + } + } else { + // ideal routing + if (isVert) { + var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0); + + var _x4 = posPts.x1, + _x5 = posPts.x2; + rs.segpts = [_x4, _y4, _x5, _y4]; + } else { + // horizontal + var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0); + + var _y5 = posPts.y1, + _y6 = posPts.y2; + rs.segpts = [_x6, _y5, _x6, _y6]; + } + } +}; + +BRp$3.tryToCorrectInvalidPoints = function (edge, pairInfo) { + var rs = edge._private.rscratch; // can only correct beziers for now... + + if (rs.edgeType === 'bezier') { + var srcPos = pairInfo.srcPos, + tgtPos = pairInfo.tgtPos, + srcW = pairInfo.srcW, + srcH = pairInfo.srcH, + tgtW = pairInfo.tgtW, + tgtH = pairInfo.tgtH, + srcShape = pairInfo.srcShape, + tgtShape = pairInfo.tgtShape; + var badStart = !number(rs.startX) || !number(rs.startY); + var badAStart = !number(rs.arrowStartX) || !number(rs.arrowStartY); + var badEnd = !number(rs.endX) || !number(rs.endY); + var badAEnd = !number(rs.arrowEndX) || !number(rs.arrowEndY); + var minCpADistFactor = 3; + var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; + var minCpADist = minCpADistFactor * arrowW; + var startACpDist = dist({ + x: rs.ctrlpts[0], + y: rs.ctrlpts[1] + }, { + x: rs.startX, + y: rs.startY + }); + var closeStartACp = startACpDist < minCpADist; + var endACpDist = dist({ + x: rs.ctrlpts[0], + y: rs.ctrlpts[1] + }, { + x: rs.endX, + y: rs.endY + }); + var closeEndACp = endACpDist < minCpADist; + var overlapping = false; + + if (badStart || badAStart || closeStartACp) { + overlapping = true; // project control point along line from src centre to outside the src shape + // (otherwise intersection will yield nothing) + + var cpD = { + // delta + x: rs.ctrlpts[0] - srcPos.x, + y: rs.ctrlpts[1] - srcPos.y + }; + var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line + + var cpM = { + // normalised delta + x: cpD.x / cpL, + y: cpD.y / cpL + }; + var radius = Math.max(srcW, srcH); + var cpProj = { + // *2 radius guarantees outside shape + x: rs.ctrlpts[0] + cpM.x * 2 * radius, + y: rs.ctrlpts[1] + cpM.y * 2 * radius + }; + var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0); + + if (closeStartACp) { + rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist); + rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist); + } else { + rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist; + rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist; + } + } + + if (badEnd || badAEnd || closeEndACp) { + overlapping = true; // project control point along line from tgt centre to outside the tgt shape + // (otherwise intersection will yield nothing) + + var _cpD = { + // delta + x: rs.ctrlpts[0] - tgtPos.x, + y: rs.ctrlpts[1] - tgtPos.y + }; + + var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line + + + var _cpM = { + // normalised delta + x: _cpD.x / _cpL, + y: _cpD.y / _cpL + }; + + var _radius = Math.max(srcW, srcH); + + var _cpProj = { + // *2 radius guarantees outside shape + x: rs.ctrlpts[0] + _cpM.x * 2 * _radius, + y: rs.ctrlpts[1] + _cpM.y * 2 * _radius + }; + var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0); + + if (closeEndACp) { + rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist); + rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist); + } else { + rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist; + rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist; + } + } + + if (overlapping) { + // recalc endpts + this.findEndpoints(edge); + } + } +}; + +BRp$3.storeAllpts = function (edge) { + var rs = edge._private.rscratch; + + if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { + rs.allpts = []; + rs.allpts.push(rs.startX, rs.startY); + + for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) { + // ctrl pt itself + rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]); // the midpt between ctrlpts as intermediate destination pts + + if (b + 3 < rs.ctrlpts.length) { + rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2); + } + } + + rs.allpts.push(rs.endX, rs.endY); + var m, mt; + + if (rs.ctrlpts.length / 2 % 2 === 0) { + m = rs.allpts.length / 2 - 1; + rs.midX = rs.allpts[m]; + rs.midY = rs.allpts[m + 1]; + } else { + m = rs.allpts.length / 2 - 3; + mt = 0.5; + rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt); + rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt); + } + } else if (rs.edgeType === 'straight') { + // need to calc these after endpts + rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; // default midpt for labels etc + + rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4; + rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4; + } else if (rs.edgeType === 'segments') { + rs.allpts = []; + rs.allpts.push(rs.startX, rs.startY); + rs.allpts.push.apply(rs.allpts, rs.segpts); + rs.allpts.push(rs.endX, rs.endY); + + if (rs.segpts.length % 4 === 0) { + var i2 = rs.segpts.length / 2; + var i1 = i2 - 2; + rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2; + rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2; + } else { + var _i = rs.segpts.length / 2 - 1; + + rs.midX = rs.segpts[_i]; + rs.midY = rs.segpts[_i + 1]; + } + } +}; + +BRp$3.checkForInvalidEdgeWarning = function (edge) { + var rs = edge[0]._private.rscratch; + + if (rs.nodesOverlap || number(rs.startX) && number(rs.startY) && number(rs.endX) && number(rs.endY)) { + rs.loggedErr = false; + } else { + if (!rs.loggedErr) { + rs.loggedErr = true; + warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.'); + } + } +}; + +BRp$3.findEdgeControlPoints = function (edges) { + var _this = this; + + if (!edges || edges.length === 0) { + return; + } + + var r = this; + var cy = r.cy; + var hasCompounds = cy.hasCompoundNodes(); + var hashTable = { + map: new Map$1(), + get: function get(pairId) { + var map2 = this.map.get(pairId[0]); + + if (map2 != null) { + return map2.get(pairId[1]); + } else { + return null; + } + }, + set: function set(pairId, val) { + var map2 = this.map.get(pairId[0]); + + if (map2 == null) { + map2 = new Map$1(); + this.map.set(pairId[0], map2); + } + + map2.set(pairId[1], val); + } + }; + var pairIds = []; + var haystackEdges = []; // create a table of edge (src, tgt) => list of edges between them + + for (var i = 0; i < edges.length; i++) { + var edge = edges[i]; + var _p = edge._private; + var curveStyle = edge.pstyle('curve-style').value; // ignore edges who are not to be displayed + // they shouldn't take up space + + if (edge.removed() || !edge.takesUpSpace()) { + continue; + } + + if (curveStyle === 'haystack') { + haystackEdges.push(edge); + continue; + } + + var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'taxi'; + var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier'; + var src = _p.source; + var tgt = _p.target; + var srcIndex = src.poolIndex(); + var tgtIndex = tgt.poolIndex(); + var pairId = [srcIndex, tgtIndex].sort(); + var tableEntry = hashTable.get(pairId); + + if (tableEntry == null) { + tableEntry = { + eles: [] + }; + hashTable.set(pairId, tableEntry); + pairIds.push(pairId); + } + + tableEntry.eles.push(edge); + + if (edgeIsUnbundled) { + tableEntry.hasUnbundled = true; + } + + if (edgeIsBezier) { + tableEntry.hasBezier = true; + } + } // for each pair (src, tgt), create the ctrl pts + // Nested for loop is OK; total number of iterations for both loops = edgeCount + + + var _loop = function _loop(p) { + var pairId = pairIds[p]; + var pairInfo = hashTable.get(pairId); + var swappedpairInfo = void 0; + + if (!pairInfo.hasUnbundled) { + var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) { + return e.isBundledBezier(); + }); + clearArray(pairInfo.eles); + pllEdges.forEach(function (edge) { + return pairInfo.eles.push(edge); + }); // for each pair id, the edges should be sorted by index + + pairInfo.eles.sort(function (edge1, edge2) { + return edge1.poolIndex() - edge2.poolIndex(); + }); + } + + var firstEdge = pairInfo.eles[0]; + var src = firstEdge.source(); + var tgt = firstEdge.target(); // make sure src/tgt distinction is consistent w.r.t. pairId + + if (src.poolIndex() > tgt.poolIndex()) { + var temp = src; + src = tgt; + tgt = temp; + } + + var srcPos = pairInfo.srcPos = src.position(); + var tgtPos = pairInfo.tgtPos = tgt.position(); + var srcW = pairInfo.srcW = src.outerWidth(); + var srcH = pairInfo.srcH = src.outerHeight(); + var tgtW = pairInfo.tgtW = tgt.outerWidth(); + var tgtH = pairInfo.tgtH = tgt.outerHeight(); + + var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)]; + + var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)]; + + pairInfo.dirCounts = { + 'north': 0, + 'west': 0, + 'south': 0, + 'east': 0, + 'northwest': 0, + 'southwest': 0, + 'northeast': 0, + 'southeast': 0 + }; + + for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) { + var _edge = pairInfo.eles[_i2]; + var rs = _edge[0]._private.rscratch; + + var _curveStyle = _edge.pstyle('curve-style').value; + + var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi'; // whether the normalised pair order is the reverse of the edge's src-tgt order + + + var edgeIsSwapped = !src.same(_edge.source()); + + if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) { + pairInfo.calculatedIntersection = true; // pt outside src shape to calc distance/displacement from src to tgt + + var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0); + var srcIntn = pairInfo.srcIntn = srcOutside; // pt outside tgt shape to calc distance/displacement from src to tgt + + var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0); + var tgtIntn = pairInfo.tgtIntn = tgtOutside; + var intersectionPts = pairInfo.intersectionPts = { + x1: srcOutside[0], + x2: tgtOutside[0], + y1: srcOutside[1], + y2: tgtOutside[1] + }; + var posPts = pairInfo.posPts = { + x1: srcPos.x, + x2: tgtPos.x, + y1: srcPos.y, + y2: tgtPos.y + }; + var dy = tgtOutside[1] - srcOutside[1]; + var dx = tgtOutside[0] - srcOutside[0]; + var l = Math.sqrt(dx * dx + dy * dy); + var vector = pairInfo.vector = { + x: dx, + y: dy + }; + var vectorNorm = pairInfo.vectorNorm = { + x: vector.x / l, + y: vector.y / l + }; + var vectorNormInverse = { + x: -vectorNorm.y, + y: vectorNorm.x + }; // if node shapes overlap, then no ctrl pts to draw + + pairInfo.nodesOverlap = !number(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y); + pairInfo.vectorNormInverse = vectorNormInverse; + swappedpairInfo = { + nodesOverlap: pairInfo.nodesOverlap, + dirCounts: pairInfo.dirCounts, + calculatedIntersection: true, + hasBezier: pairInfo.hasBezier, + hasUnbundled: pairInfo.hasUnbundled, + eles: pairInfo.eles, + srcPos: tgtPos, + tgtPos: srcPos, + srcW: tgtW, + srcH: tgtH, + tgtW: srcW, + tgtH: srcH, + srcIntn: tgtIntn, + tgtIntn: srcIntn, + srcShape: tgtShape, + tgtShape: srcShape, + posPts: { + x1: posPts.x2, + y1: posPts.y2, + x2: posPts.x1, + y2: posPts.y1 + }, + intersectionPts: { + x1: intersectionPts.x2, + y1: intersectionPts.y2, + x2: intersectionPts.x1, + y2: intersectionPts.y1 + }, + vector: { + x: -vector.x, + y: -vector.y + }, + vectorNorm: { + x: -vectorNorm.x, + y: -vectorNorm.y + }, + vectorNormInverse: { + x: -vectorNormInverse.x, + y: -vectorNormInverse.y + } + }; + } + + var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo; + rs.nodesOverlap = passedPairInfo.nodesOverlap; + rs.srcIntn = passedPairInfo.srcIntn; + rs.tgtIntn = passedPairInfo.tgtIntn; + + if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) { + _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); + } else if (src === tgt) { + _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); + } else if (_curveStyle === 'segments') { + _this.findSegmentsPoints(_edge, passedPairInfo); + } else if (_curveStyle === 'taxi') { + _this.findTaxiPoints(_edge, passedPairInfo); + } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) { + _this.findStraightEdgePoints(_edge); + } else { + _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped); + } + + _this.findEndpoints(_edge); + + _this.tryToCorrectInvalidPoints(_edge, passedPairInfo); + + _this.checkForInvalidEdgeWarning(_edge); + + _this.storeAllpts(_edge); + + _this.storeEdgeProjections(_edge); + + _this.calculateArrowAngles(_edge); + + _this.recalculateEdgeLabelProjections(_edge); + + _this.calculateLabelAngles(_edge); + } // for pair edges + + }; + + for (var p = 0; p < pairIds.length; p++) { + _loop(p); + } // for pair ids + // haystacks avoid the expense of pairInfo stuff (intersections etc.) + + + this.findHaystackPoints(haystackEdges); +}; + +function getPts(pts) { + var retPts = []; + + if (pts == null) { + return; + } + + for (var i = 0; i < pts.length; i += 2) { + var x = pts[i]; + var y = pts[i + 1]; + retPts.push({ + x: x, + y: y + }); + } + + return retPts; +} + +BRp$3.getSegmentPoints = function (edge) { + var rs = edge[0]._private.rscratch; + var type = rs.edgeType; + + if (type === 'segments') { + this.recalculateRenderedStyle(edge); + return getPts(rs.segpts); + } +}; + +BRp$3.getControlPoints = function (edge) { + var rs = edge[0]._private.rscratch; + var type = rs.edgeType; + + if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') { + this.recalculateRenderedStyle(edge); + return getPts(rs.ctrlpts); + } +}; + +BRp$3.getEdgeMidpoint = function (edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + return { + x: rs.midX, + y: rs.midY + }; +}; + +var BRp$4 = {}; + +BRp$4.manualEndptToPx = function (node, prop) { + var r = this; + var npos = node.position(); + var w = node.outerWidth(); + var h = node.outerHeight(); + + if (prop.value.length === 2) { + var p = [prop.pfValue[0], prop.pfValue[1]]; + + if (prop.units[0] === '%') { + p[0] = p[0] * w; + } + + if (prop.units[1] === '%') { + p[1] = p[1] * h; + } + + p[0] += npos.x; + p[1] += npos.y; + return p; + } else { + var angle = prop.pfValue[0]; + angle = -Math.PI / 2 + angle; // start at 12 o'clock + + var l = 2 * Math.max(w, h); + var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l]; + return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0); + } +}; + +BRp$4.findEndpoints = function (edge) { + var r = this; + var intersect; + var source = edge.source()[0]; + var target = edge.target()[0]; + var srcPos = source.position(); + var tgtPos = target.position(); + var tgtArShape = edge.pstyle('target-arrow-shape').value; + var srcArShape = edge.pstyle('source-arrow-shape').value; + var tgtDist = edge.pstyle('target-distance-from-node').pfValue; + var srcDist = edge.pstyle('source-distance-from-node').pfValue; + var curveStyle = edge.pstyle('curve-style').value; + var rs = edge._private.rscratch; + var et = rs.edgeType; + var taxi = curveStyle === 'taxi'; + var self = et === 'self' || et === 'compound'; + var bezier = et === 'bezier' || et === 'multibezier' || self; + var multi = et !== 'bezier'; + var lines = et === 'straight' || et === 'segments'; + var segments = et === 'segments'; + var hasEndpts = bezier || multi || lines; + var overrideEndpts = self || taxi; + var srcManEndpt = edge.pstyle('source-endpoint'); + var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value; + var tgtManEndpt = edge.pstyle('target-endpoint'); + var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value; + rs.srcManEndpt = srcManEndpt; + rs.tgtManEndpt = tgtManEndpt; + var p1; // last known point of edge on target side + + var p2; // last known point of edge on source side + + var p1_i; // point to intersect with target shape + + var p2_i; // point to intersect with source shape + + if (bezier) { + var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]]; + var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart; + p1 = cpEnd; + p2 = cpStart; + } else if (lines) { + var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2); + var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2); + p1 = tgtArrowFromPt; + p2 = srcArrowFromPt; + } + + if (tgtManEndptVal === 'inside-to-node') { + intersect = [tgtPos.x, tgtPos.y]; + } else if (tgtManEndpt.units) { + intersect = this.manualEndptToPx(target, tgtManEndpt); + } else if (tgtManEndptVal === 'outside-to-line') { + intersect = rs.tgtIntn; // use cached value from ctrlpt calc + } else { + if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') { + p1_i = p1; + } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') { + p1_i = [srcPos.x, srcPos.y]; + } + + intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0); + + if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') { + var trs = target._private.rscratch; + var lw = trs.labelWidth; + var lh = trs.labelHeight; + var lx = trs.labelX; + var ly = trs.labelY; + var lw2 = lw / 2; + var lh2 = lh / 2; + var va = target.pstyle('text-valign').value; + + if (va === 'top') { + ly -= lh2; + } else if (va === 'bottom') { + ly += lh2; + } + + var ha = target.pstyle('text-halign').value; + + if (ha === 'left') { + lx -= lw2; + } else if (ha === 'right') { + lx += lw2; + } + + var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y); + + if (labelIntersect.length > 0) { + var refPt = srcPos; + var intSqdist = sqdist(refPt, array2point(intersect)); + var labIntSqdist = sqdist(refPt, array2point(labelIntersect)); + var minSqDist = intSqdist; + + if (labIntSqdist < intSqdist) { + intersect = labelIntersect; + minSqDist = labIntSqdist; + } + + if (labelIntersect.length > 2) { + var labInt2SqDist = sqdist(refPt, { + x: labelIntersect[2], + y: labelIntersect[3] + }); + + if (labInt2SqDist < minSqDist) { + intersect = [labelIntersect[2], labelIntersect[3]]; + } + } + } + } + } + + var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist); + var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist); + rs.endX = edgeEnd[0]; + rs.endY = edgeEnd[1]; + rs.arrowEndX = arrowEnd[0]; + rs.arrowEndY = arrowEnd[1]; + + if (srcManEndptVal === 'inside-to-node') { + intersect = [srcPos.x, srcPos.y]; + } else if (srcManEndpt.units) { + intersect = this.manualEndptToPx(source, srcManEndpt); + } else if (srcManEndptVal === 'outside-to-line') { + intersect = rs.srcIntn; // use cached value from ctrlpt calc + } else { + if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') { + p2_i = p2; + } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') { + p2_i = [tgtPos.x, tgtPos.y]; + } + + intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0); + + if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') { + var srs = source._private.rscratch; + var _lw = srs.labelWidth; + var _lh = srs.labelHeight; + var _lx = srs.labelX; + var _ly = srs.labelY; + + var _lw2 = _lw / 2; + + var _lh2 = _lh / 2; + + var _va = source.pstyle('text-valign').value; + + if (_va === 'top') { + _ly -= _lh2; + } else if (_va === 'bottom') { + _ly += _lh2; + } + + var _ha = source.pstyle('text-halign').value; + + if (_ha === 'left') { + _lx -= _lw2; + } else if (_ha === 'right') { + _lx += _lw2; + } + + var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y); + + if (_labelIntersect.length > 0) { + var _refPt = tgtPos; + + var _intSqdist = sqdist(_refPt, array2point(intersect)); + + var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect)); + + var _minSqDist = _intSqdist; + + if (_labIntSqdist < _intSqdist) { + intersect = [_labelIntersect[0], _labelIntersect[1]]; + _minSqDist = _labIntSqdist; + } + + if (_labelIntersect.length > 2) { + var _labInt2SqDist = sqdist(_refPt, { + x: _labelIntersect[2], + y: _labelIntersect[3] + }); + + if (_labInt2SqDist < _minSqDist) { + intersect = [_labelIntersect[2], _labelIntersect[3]]; + } + } + } + } + } + + var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist); + var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist); + rs.startX = edgeStart[0]; + rs.startY = edgeStart[1]; + rs.arrowStartX = arrowStart[0]; + rs.arrowStartY = arrowStart[1]; + + if (hasEndpts) { + if (!number(rs.startX) || !number(rs.startY) || !number(rs.endX) || !number(rs.endY)) { + rs.badLine = true; + } else { + rs.badLine = false; + } + } +}; + +BRp$4.getSourceEndpoint = function (edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + + switch (rs.edgeType) { + case 'haystack': + return { + x: rs.haystackPts[0], + y: rs.haystackPts[1] + }; + + default: + return { + x: rs.arrowStartX, + y: rs.arrowStartY + }; + } +}; + +BRp$4.getTargetEndpoint = function (edge) { + var rs = edge[0]._private.rscratch; + this.recalculateRenderedStyle(edge); + + switch (rs.edgeType) { + case 'haystack': + return { + x: rs.haystackPts[2], + y: rs.haystackPts[3] + }; + + default: + return { + x: rs.arrowEndX, + y: rs.arrowEndY + }; + } +}; + +var BRp$5 = {}; + +function pushBezierPts(r, edge, pts) { + var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) { + return qbezierAt(p1, p2, p3, t); + }; + + var _p = edge._private; + var bpts = _p.rstyle.bezierPts; + + for (var i = 0; i < r.bezierProjPcts.length; i++) { + var p = r.bezierProjPcts[i]; + bpts.push({ + x: qbezierAt$1(pts[0], pts[2], pts[4], p), + y: qbezierAt$1(pts[1], pts[3], pts[5], p) + }); + } +} + +BRp$5.storeEdgeProjections = function (edge) { + var _p = edge._private; + var rs = _p.rscratch; + var et = rs.edgeType; // clear the cached points state + + _p.rstyle.bezierPts = null; + _p.rstyle.linePts = null; + _p.rstyle.haystackPts = null; + + if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') { + _p.rstyle.bezierPts = []; + + for (var i = 0; i + 5 < rs.allpts.length; i += 4) { + pushBezierPts(this, edge, rs.allpts.slice(i, i + 6)); + } + } else if (et === 'segments') { + var lpts = _p.rstyle.linePts = []; + + for (var i = 0; i + 1 < rs.allpts.length; i += 2) { + lpts.push({ + x: rs.allpts[i], + y: rs.allpts[i + 1] + }); + } + } else if (et === 'haystack') { + var hpts = rs.haystackPts; + _p.rstyle.haystackPts = [{ + x: hpts[0], + y: hpts[1] + }, { + x: hpts[2], + y: hpts[3] + }]; + } + + _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; +}; + +BRp$5.recalculateEdgeProjections = function (edges) { + this.findEdgeControlPoints(edges); +}; + +/* global document */ + +var BRp$6 = {}; + +BRp$6.recalculateNodeLabelProjection = function (node) { + var content = node.pstyle('label').strValue; + + if (emptyString(content)) { + return; + } + + var textX, textY; + var _p = node._private; + var nodeWidth = node.width(); + var nodeHeight = node.height(); + var padding = node.padding(); + var nodePos = node.position(); + var textHalign = node.pstyle('text-halign').strValue; + var textValign = node.pstyle('text-valign').strValue; + var rs = _p.rscratch; + var rstyle = _p.rstyle; + + switch (textHalign) { + case 'left': + textX = nodePos.x - nodeWidth / 2 - padding; + break; + + case 'right': + textX = nodePos.x + nodeWidth / 2 + padding; + break; + + default: + // e.g. center + textX = nodePos.x; + } + + switch (textValign) { + case 'top': + textY = nodePos.y - nodeHeight / 2 - padding; + break; + + case 'bottom': + textY = nodePos.y + nodeHeight / 2 + padding; + break; + + default: + // e.g. middle + textY = nodePos.y; + } + + rs.labelX = textX; + rs.labelY = textY; + rstyle.labelX = textX; + rstyle.labelY = textY; + this.applyLabelDimensions(node); +}; + +var lineAngleFromDelta = function lineAngleFromDelta(dx, dy) { + var angle = Math.atan(dy / dx); + + if (dx === 0 && angle < 0) { + angle = angle * -1; + } + + return angle; +}; + +var lineAngle = function lineAngle(p0, p1) { + var dx = p1.x - p0.x; + var dy = p1.y - p0.y; + return lineAngleFromDelta(dx, dy); +}; + +var bezierAngle = function bezierAngle(p0, p1, p2, t) { + var t0 = bound(0, t - 0.001, 1); + var t1 = bound(0, t + 0.001, 1); + var lp0 = qbezierPtAt(p0, p1, p2, t0); + var lp1 = qbezierPtAt(p0, p1, p2, t1); + return lineAngle(lp0, lp1); +}; + +BRp$6.recalculateEdgeLabelProjections = function (edge) { + var p; + var _p = edge._private; + var rs = _p.rscratch; + var r = this; + var content = { + mid: edge.pstyle('label').strValue, + source: edge.pstyle('source-label').strValue, + target: edge.pstyle('target-label').strValue + }; + + if (content.mid || content.source || content.target) ; else { + return; // no labels => no calcs + } // add center point to style so bounding box calculations can use it + // + + + p = { + x: rs.midX, + y: rs.midY + }; + + var setRs = function setRs(propName, prefix, value) { + setPrefixedProperty(_p.rscratch, propName, prefix, value); + setPrefixedProperty(_p.rstyle, propName, prefix, value); + }; + + setRs('labelX', null, p.x); + setRs('labelY', null, p.y); + var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY); + setRs('labelAutoAngle', null, midAngle); + + var createControlPointInfo = function createControlPointInfo() { + if (createControlPointInfo.cache) { + return createControlPointInfo.cache; + } // use cache so only 1x per edge + + + var ctrlpts = []; // store each ctrlpt info init + + for (var i = 0; i + 5 < rs.allpts.length; i += 4) { + var p0 = { + x: rs.allpts[i], + y: rs.allpts[i + 1] + }; + var p1 = { + x: rs.allpts[i + 2], + y: rs.allpts[i + 3] + }; // ctrlpt + + var p2 = { + x: rs.allpts[i + 4], + y: rs.allpts[i + 5] + }; + ctrlpts.push({ + p0: p0, + p1: p1, + p2: p2, + startDist: 0, + length: 0, + segments: [] + }); + } + + var bpts = _p.rstyle.bezierPts; + var nProjs = r.bezierProjPcts.length; + + function addSegment(cp, p0, p1, t0, t1) { + var length = dist(p0, p1); + var prevSegment = cp.segments[cp.segments.length - 1]; + var segment = { + p0: p0, + p1: p1, + t0: t0, + t1: t1, + startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0, + length: length + }; + cp.segments.push(segment); + cp.length += length; + } // update each ctrlpt with segment info + + + for (var _i = 0; _i < ctrlpts.length; _i++) { + var cp = ctrlpts[_i]; + var prevCp = ctrlpts[_i - 1]; + + if (prevCp) { + cp.startDist = prevCp.startDist + prevCp.length; + } + + addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first + + for (var j = 0; j < nProjs - 1; j++) { + addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]); + } + + addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last + } + + return createControlPointInfo.cache = ctrlpts; + }; + + var calculateEndProjection = function calculateEndProjection(prefix) { + var angle; + var isSrc = prefix === 'source'; + + if (!content[prefix]) { + return; + } + + var offset = edge.pstyle(prefix + '-text-offset').pfValue; + + switch (rs.edgeType) { + case 'self': + case 'compound': + case 'bezier': + case 'multibezier': + { + var cps = createControlPointInfo(); + var selected; + var startDist = 0; + var totalDist = 0; // find the segment we're on + + for (var i = 0; i < cps.length; i++) { + var _cp = cps[isSrc ? i : cps.length - 1 - i]; + + for (var j = 0; j < _cp.segments.length; j++) { + var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j]; + var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1; + startDist = totalDist; + totalDist += _seg.length; + + if (totalDist >= offset || lastSeg) { + selected = { + cp: _cp, + segment: _seg + }; + break; + } + } + + if (selected) { + break; + } + } + + var cp = selected.cp; + var seg = selected.segment; + var tSegment = (offset - startDist) / seg.length; + var segDt = seg.t1 - seg.t0; + var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment; + t = bound(0, t, 1); + p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t); + angle = bezierAngle(cp.p0, cp.p1, cp.p2, t); + break; + } + + case 'straight': + case 'segments': + case 'haystack': + { + var d = 0, + di, + d0; + var p0, p1; + var l = rs.allpts.length; + + for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) { + if (isSrc) { + p0 = { + x: rs.allpts[_i2], + y: rs.allpts[_i2 + 1] + }; + p1 = { + x: rs.allpts[_i2 + 2], + y: rs.allpts[_i2 + 3] + }; + } else { + p0 = { + x: rs.allpts[l - 2 - _i2], + y: rs.allpts[l - 1 - _i2] + }; + p1 = { + x: rs.allpts[l - 4 - _i2], + y: rs.allpts[l - 3 - _i2] + }; + } + + di = dist(p0, p1); + d0 = d; + d += di; + + if (d >= offset) { + break; + } + } + + var pD = offset - d0; + + var _t = pD / di; + + _t = bound(0, _t, 1); + p = lineAt(p0, p1, _t); + angle = lineAngle(p0, p1); + break; + } + } + + setRs('labelX', prefix, p.x); + setRs('labelY', prefix, p.y); + setRs('labelAutoAngle', prefix, angle); + }; + + calculateEndProjection('source'); + calculateEndProjection('target'); + this.applyLabelDimensions(edge); +}; + +BRp$6.applyLabelDimensions = function (ele) { + this.applyPrefixedLabelDimensions(ele); + + if (ele.isEdge()) { + this.applyPrefixedLabelDimensions(ele, 'source'); + this.applyPrefixedLabelDimensions(ele, 'target'); + } +}; + +BRp$6.applyPrefixedLabelDimensions = function (ele, prefix) { + var _p = ele._private; + var text = this.getLabelText(ele, prefix); + var labelDims = this.calculateLabelDimensions(ele, text); + var lineHeight = ele.pstyle('line-height').pfValue; + var textWrap = ele.pstyle('text-wrap').strValue; + var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || []; + var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1); + var normPerLineHeight = labelDims.height / numLines; + var labelLineHeight = normPerLineHeight * lineHeight; + var width = labelDims.width; + var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight; + setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width); + setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width); + setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height); + setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height); + setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight); +}; + +BRp$6.getLabelText = function (ele, prefix) { + var _p = ele._private; + var pfd = prefix ? prefix + '-' : ''; + var text = ele.pstyle(pfd + 'label').strValue; + var textTransform = ele.pstyle('text-transform').value; + + var rscratch = function rscratch(propName, value) { + if (value) { + setPrefixedProperty(_p.rscratch, propName, prefix, value); + return value; + } else { + return getPrefixedProperty(_p.rscratch, propName, prefix); + } + }; // for empty text, skip all processing + + + if (!text) { + return ''; + } + + if (textTransform == 'none') ; else if (textTransform == 'uppercase') { + text = text.toUpperCase(); + } else if (textTransform == 'lowercase') { + text = text.toLowerCase(); + } + + var wrapStyle = ele.pstyle('text-wrap').value; + + if (wrapStyle === 'wrap') { + var labelKey = rscratch('labelKey'); // save recalc if the label is the same as before + + if (labelKey != null && rscratch('labelWrapKey') === labelKey) { + return rscratch('labelWrapCachedText'); + } + + var zwsp = "\u200B"; + var lines = text.split('\n'); + var maxW = ele.pstyle('text-max-width').pfValue; + var overflow = ele.pstyle('text-overflow-wrap').value; + var overflowAny = overflow === 'anywhere'; + var wrappedLines = []; + var wordsRegex = /[\s\u200b]+/; + var wordSeparator = overflowAny ? '' : ' '; + + for (var l = 0; l < lines.length; l++) { + var line = lines[l]; + var lineDims = this.calculateLabelDimensions(ele, line); + var lineW = lineDims.width; + + if (overflowAny) { + var processedLine = line.split('').join(zwsp); + line = processedLine; + } + + if (lineW > maxW) { + // line is too long + var words = line.split(wordsRegex); + var subline = ''; + + for (var w = 0; w < words.length; w++) { + var word = words[w]; + var testLine = subline.length === 0 ? word : subline + wordSeparator + word; + var testDims = this.calculateLabelDimensions(ele, testLine); + var testW = testDims.width; + + if (testW <= maxW) { + // word fits on current line + subline += word + wordSeparator; + } else { + // word starts new line + if (subline) { + wrappedLines.push(subline); + } + + subline = word + wordSeparator; + } + } // if there's remaining text, put it in a wrapped line + + + if (!subline.match(/^[\s\u200b]+$/)) { + wrappedLines.push(subline); + } + } else { + // line is already short enough + wrappedLines.push(line); + } + } // for + + + rscratch('labelWrapCachedLines', wrappedLines); + text = rscratch('labelWrapCachedText', wrappedLines.join('\n')); + rscratch('labelWrapKey', labelKey); + } else if (wrapStyle === 'ellipsis') { + var _maxW = ele.pstyle('text-max-width').pfValue; + var ellipsized = ''; + var ellipsis = "\u2026"; + var incLastCh = false; + + for (var i = 0; i < text.length; i++) { + var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width; + + if (widthWithNextCh > _maxW) { + break; + } + + ellipsized += text[i]; + + if (i === text.length - 1) { + incLastCh = true; + } + } + + if (!incLastCh) { + ellipsized += ellipsis; + } + + return ellipsized; + } // if ellipsize + + + return text; +}; + +BRp$6.getLabelJustification = function (ele) { + var justification = ele.pstyle('text-justification').strValue; + var textHalign = ele.pstyle('text-halign').strValue; + + if (justification === 'auto') { + if (ele.isNode()) { + switch (textHalign) { + case 'left': + return 'right'; + + case 'right': + return 'left'; + + default: + return 'center'; + } + } else { + return 'center'; + } + } else { + return justification; + } +}; + +BRp$6.calculateLabelDimensions = function (ele, text) { + var r = this; + var cacheKey = hashString(text, ele._private.labelDimsKey); + var cache = r.labelDimCache || (r.labelDimCache = []); + var existingVal = cache[cacheKey]; + + if (existingVal != null) { + return existingVal; + } + + var padding = 6; // add padding around text dims, as the measurement isn't that accurate + + var fStyle = ele.pstyle('font-style').strValue; + var size = ele.pstyle('font-size').pfValue; + var family = ele.pstyle('font-family').strValue; + var weight = ele.pstyle('font-weight').strValue; + var canvas = this.labelCalcCanvas; + var c2d = this.labelCalcCanvasContext; + + if (!canvas) { + canvas = this.labelCalcCanvas = document.createElement('canvas'); + c2d = this.labelCalcCanvasContext = canvas.getContext('2d'); + var ds = canvas.style; + ds.position = 'absolute'; + ds.left = '-9999px'; + ds.top = '-9999px'; + ds.zIndex = '-1'; + ds.visibility = 'hidden'; + ds.pointerEvents = 'none'; + } + + c2d.font = "".concat(fStyle, " ").concat(weight, " ").concat(size, "px ").concat(family); + var width = 0; + var height = 0; + var lines = text.split('\n'); + + for (var i = 0; i < lines.length; i++) { + var line = lines[i]; + var metrics = c2d.measureText(line); + var w = Math.ceil(metrics.width); + var h = size; + width = Math.max(w, width); + height += h; + } + + width += padding; + height += padding; + return cache[cacheKey] = { + width: width, + height: height + }; +}; + +BRp$6.calculateLabelAngle = function (ele, prefix) { + var _p = ele._private; + var rs = _p.rscratch; + var isEdge = ele.isEdge(); + var prefixDash = prefix ? prefix + '-' : ''; + var rot = ele.pstyle(prefixDash + 'text-rotation'); + var rotStr = rot.strValue; + + if (rotStr === 'none') { + return 0; + } else if (isEdge && rotStr === 'autorotate') { + return rs.labelAutoAngle; + } else if (rotStr === 'autorotate') { + return 0; + } else { + return rot.pfValue; + } +}; + +BRp$6.calculateLabelAngles = function (ele) { + var r = this; + var isEdge = ele.isEdge(); + var _p = ele._private; + var rs = _p.rscratch; + rs.labelAngle = r.calculateLabelAngle(ele); + + if (isEdge) { + rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source'); + rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target'); + } +}; + +var BRp$7 = {}; +var TOO_SMALL_CUT_RECT = 28; +var warnedCutRect = false; + +BRp$7.getNodeShape = function (node) { + var r = this; + var shape = node.pstyle('shape').value; + + if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) { + if (!warnedCutRect) { + warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead'); + warnedCutRect = true; + } + + return 'rectangle'; + } + + if (node.isParent()) { + if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') { + return shape; + } else { + return 'rectangle'; + } + } + + if (shape === 'polygon') { + var points = node.pstyle('shape-polygon-points').value; + return r.nodeShapes.makePolygon(points).name; + } + + return shape; +}; + +var BRp$8 = {}; + +BRp$8.registerCalculationListeners = function () { + var cy = this.cy; + var elesToUpdate = cy.collection(); + var r = this; + + var enqueue = function enqueue(eles) { + var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; + elesToUpdate.merge(eles); + + if (dirtyStyleCaches) { + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _p = ele._private; + var rstyle = _p.rstyle; + rstyle.clean = false; + rstyle.cleanConnected = false; + } + } + }; + + r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) { + var ele = e.target; + enqueue(ele); + }).on('style.* background.*', function onDirtyStyle(e) { + var ele = e.target; + enqueue(ele, false); + }); + + var updateEleCalcs = function updateEleCalcs(willDraw) { + if (willDraw) { + var fns = r.onUpdateEleCalcsFns; + + for (var i = 0; i < elesToUpdate.length; i++) { + var ele = elesToUpdate[i]; + var rstyle = ele._private.rstyle; + + if (ele.isNode() && !rstyle.cleanConnected) { + enqueue(ele.connectedEdges()); + rstyle.cleanConnected = true; + } + } + + if (fns) { + for (var _i = 0; _i < fns.length; _i++) { + var fn = fns[_i]; + fn(willDraw, elesToUpdate); + } + } + + r.recalculateRenderedStyle(elesToUpdate); + elesToUpdate = cy.collection(); + } + }; + + r.flushRenderedStyleQueue = function () { + updateEleCalcs(true); + }; + + r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs); +}; + +BRp$8.onUpdateEleCalcs = function (fn) { + var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || []; + fns.push(fn); +}; + +BRp$8.recalculateRenderedStyle = function (eles, useCache) { + var isCleanConnected = function isCleanConnected(ele) { + return ele._private.rstyle.cleanConnected; + }; + + var edges = []; + var nodes = []; // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox() + + if (this.destroyed) { + return; + } // use cache by default for perf + + + if (useCache === undefined) { + useCache = true; + } + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var _p = ele._private; + var rstyle = _p.rstyle; // an edge may be implicitly dirty b/c of one of its connected nodes + // (and a request for recalc may come in between frames) + + if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) { + rstyle.clean = false; + } // only update if dirty and in graph + + + if (useCache && rstyle.clean || ele.removed()) { + continue; + } // only update if not display: none + + + if (ele.pstyle('display').value === 'none') { + continue; + } + + if (_p.group === 'nodes') { + nodes.push(ele); + } else { + // edges + edges.push(ele); + } + + rstyle.clean = true; + } // update node data from projections + + + for (var _i2 = 0; _i2 < nodes.length; _i2++) { + var _ele = nodes[_i2]; + var _p2 = _ele._private; + var _rstyle = _p2.rstyle; + + var pos = _ele.position(); + + this.recalculateNodeLabelProjection(_ele); + _rstyle.nodeX = pos.x; + _rstyle.nodeY = pos.y; + _rstyle.nodeW = _ele.pstyle('width').pfValue; + _rstyle.nodeH = _ele.pstyle('height').pfValue; + } + + this.recalculateEdgeProjections(edges); // update edge data from projections + + for (var _i3 = 0; _i3 < edges.length; _i3++) { + var _ele2 = edges[_i3]; + var _p3 = _ele2._private; + var _rstyle2 = _p3.rstyle; + var rs = _p3.rscratch; // update rstyle positions + + _rstyle2.srcX = rs.arrowStartX; + _rstyle2.srcY = rs.arrowStartY; + _rstyle2.tgtX = rs.arrowEndX; + _rstyle2.tgtY = rs.arrowEndY; + _rstyle2.midX = rs.midX; + _rstyle2.midY = rs.midY; + _rstyle2.labelAngle = rs.labelAngle; + _rstyle2.sourceLabelAngle = rs.sourceLabelAngle; + _rstyle2.targetLabelAngle = rs.targetLabelAngle; + } +}; + +var BRp$9 = {}; + +BRp$9.updateCachedGrabbedEles = function () { + var eles = this.cachedZSortedEles; + + if (!eles) { + // just let this be recalculated on the next z sort tick + return; + } + + eles.drag = []; + eles.nondrag = []; + var grabTargets = []; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var rs = ele._private.rscratch; + + if (ele.grabbed() && !ele.isParent()) { + grabTargets.push(ele); + } else if (rs.inDragLayer) { + eles.drag.push(ele); + } else { + eles.nondrag.push(ele); + } + } // put the grab target nodes last so it's on top of its neighbourhood + + + for (var i = 0; i < grabTargets.length; i++) { + var ele = grabTargets[i]; + eles.drag.push(ele); + } +}; + +BRp$9.invalidateCachedZSortedEles = function () { + this.cachedZSortedEles = null; +}; + +BRp$9.getCachedZSortedEles = function (forceRecalc) { + if (forceRecalc || !this.cachedZSortedEles) { + var eles = this.cy.mutableElements().toArray(); + eles.sort(zIndexSort); + eles.interactive = eles.filter(function (ele) { + return ele.interactive(); + }); + this.cachedZSortedEles = eles; + this.updateCachedGrabbedEles(); + } else { + eles = this.cachedZSortedEles; + } + + return eles; +}; + +var BRp$a = {}; +[BRp$1, BRp$2, BRp$3, BRp$4, BRp$5, BRp$6, BRp$7, BRp$8, BRp$9].forEach(function (props) { + extend(BRp$a, props); +}); + +var BRp$b = {}; + +BRp$b.getCachedImage = function (url, crossOrigin, onLoad) { + var r = this; + var imageCache = r.imageCache = r.imageCache || {}; + var cache = imageCache[url]; + + if (cache) { + if (!cache.image.complete) { + cache.image.addEventListener('load', onLoad); + } + + return cache.image; + } else { + cache = imageCache[url] = imageCache[url] || {}; + var image = cache.image = new Image(); // eslint-disable-line no-undef + + image.addEventListener('load', onLoad); + image.addEventListener('error', function () { + image.error = true; + }); // #1582 safari doesn't load data uris with crossOrigin properly + // https://bugs.webkit.org/show_bug.cgi?id=123978 + + var dataUriPrefix = 'data:'; + var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix; + + if (!isDataUri) { + image.crossOrigin = crossOrigin; // prevent tainted canvas + } + + image.src = url; + return image; + } +}; + +var BRp$c = {}; +/* global document, window, ResizeObserver, MutationObserver */ + +BRp$c.registerBinding = function (target, event, handler, useCapture) { + // eslint-disable-line no-unused-vars + var args = Array.prototype.slice.apply(arguments, [1]); // copy + + var b = this.binder(target); + return b.on.apply(b, args); +}; + +BRp$c.binder = function (tgt) { + var r = this; + var tgtIsDom = tgt === window || tgt === document || tgt === document.body || domElement(tgt); + + if (r.supportsPassiveEvents == null) { + // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection + var supportsPassive = false; + + try { + var opts = Object.defineProperty({}, 'passive', { + get: function get() { + supportsPassive = true; + return true; + } + }); + window.addEventListener('test', null, opts); + } catch (err) {// not supported + } + + r.supportsPassiveEvents = supportsPassive; + } + + var on = function on(event, handler, useCapture) { + var args = Array.prototype.slice.call(arguments); + + if (tgtIsDom && r.supportsPassiveEvents) { + // replace useCapture w/ opts obj + args[2] = { + capture: useCapture != null ? useCapture : false, + passive: false, + once: false + }; + } + + r.bindings.push({ + target: tgt, + args: args + }); + (tgt.addEventListener || tgt.on).apply(tgt, args); + return this; + }; + + return { + on: on, + addEventListener: on, + addListener: on, + bind: on + }; +}; + +BRp$c.nodeIsDraggable = function (node) { + return node && node.isNode() && !node.locked() && node.grabbable(); +}; + +BRp$c.nodeIsGrabbable = function (node) { + return this.nodeIsDraggable(node) && node.interactive(); +}; + +BRp$c.load = function () { + var r = this; + + var isSelected = function isSelected(ele) { + return ele.selected(); + }; + + var triggerEvents = function triggerEvents(target, names, e, position) { + if (target == null) { + target = r.cy; + } + + for (var i = 0; i < names.length; i++) { + var name = names[i]; + target.emit({ + originalEvent: e, + type: name, + position: position + }); + } + }; + + var isMultSelKeyDown = function isMultSelKeyDown(e) { + return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey + }; + + var allowPanningPassthrough = function allowPanningPassthrough(down, downs) { + var allowPassthrough = true; + + if (r.cy.hasCompoundNodes() && down && down.pannable()) { + // a grabbable compound node below the ele => no passthrough panning + for (var i = 0; downs && i < downs.length; i++) { + var down = downs[i]; + + if (down.isNode() && down.isParent()) { + allowPassthrough = false; + break; + } + } + } else { + allowPassthrough = true; + } + + return allowPassthrough; + }; + + var setGrabbed = function setGrabbed(ele) { + ele[0]._private.grabbed = true; + }; + + var setFreed = function setFreed(ele) { + ele[0]._private.grabbed = false; + }; + + var setInDragLayer = function setInDragLayer(ele) { + ele[0]._private.rscratch.inDragLayer = true; + }; + + var setOutDragLayer = function setOutDragLayer(ele) { + ele[0]._private.rscratch.inDragLayer = false; + }; + + var setGrabTarget = function setGrabTarget(ele) { + ele[0]._private.rscratch.isGrabTarget = true; + }; + + var removeGrabTarget = function removeGrabTarget(ele) { + ele[0]._private.rscratch.isGrabTarget = false; + }; + + var addToDragList = function addToDragList(ele, opts) { + var list = opts.addToList; + var listHasEle = list.has(ele); + + if (!listHasEle) { + list.merge(ele); + setGrabbed(ele); + } + }; // helper function to determine which child nodes and inner edges + // of a compound node to be dragged as well as the grabbed and selected nodes + + + var addDescendantsToDrag = function addDescendantsToDrag(node, opts) { + if (!node.cy().hasCompoundNodes()) { + return; + } + + if (opts.inDragLayer == null && opts.addToList == null) { + return; + } // nothing to do + + + var innerNodes = node.descendants(); + + if (opts.inDragLayer) { + innerNodes.forEach(setInDragLayer); + innerNodes.connectedEdges().forEach(setInDragLayer); + } + + if (opts.addToList) { + opts.addToList.unmerge(innerNodes); + } + }; // adds the given nodes and its neighbourhood to the drag layer + + + var addNodesToDrag = function addNodesToDrag(nodes, opts) { + opts = opts || {}; + var hasCompoundNodes = nodes.cy().hasCompoundNodes(); + + if (opts.inDragLayer) { + nodes.forEach(setInDragLayer); + nodes.neighborhood().stdFilter(function (ele) { + return !hasCompoundNodes || ele.isEdge(); + }).forEach(setInDragLayer); + } + + if (opts.addToList) { + nodes.forEach(function (ele) { + addToDragList(ele, opts); + }); + } + + addDescendantsToDrag(nodes, opts); // always add to drag + // also add nodes and edges related to the topmost ancestor + + updateAncestorsInDragLayer(nodes, { + inDragLayer: opts.inDragLayer + }); + r.updateCachedGrabbedEles(); + }; + + var addNodeToDrag = addNodesToDrag; + + var freeDraggedElements = function freeDraggedElements(grabbedEles) { + if (!grabbedEles) { + return; + } // just go over all elements rather than doing a bunch of (possibly expensive) traversals + + + r.getCachedZSortedEles().forEach(function (ele) { + setFreed(ele); + setOutDragLayer(ele); + removeGrabTarget(ele); + }); + r.updateCachedGrabbedEles(); + }; // helper function to determine which ancestor nodes and edges should go + // to the drag layer (or should be removed from drag layer). + + + var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) { + if (opts.inDragLayer == null && opts.addToList == null) { + return; + } // nothing to do + + + if (!node.cy().hasCompoundNodes()) { + return; + } // find top-level parent + + + var parent = node.ancestors().orphans(); // no parent node: no nodes to add to the drag layer + + if (parent.same(node)) { + return; + } + + var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants()); + var edges = nodes.connectedEdges(); + + if (opts.inDragLayer) { + edges.forEach(setInDragLayer); + nodes.forEach(setInDragLayer); + } + + if (opts.addToList) { + nodes.forEach(function (ele) { + addToDragList(ele, opts); + }); + } + }; + + var blurActiveDomElement = function blurActiveDomElement() { + if (document.activeElement != null && document.activeElement.blur != null) { + document.activeElement.blur(); + } + }; + + var haveMutationsApi = typeof MutationObserver !== 'undefined'; + var haveResizeObserverApi = typeof ResizeObserver !== 'undefined'; // watch for when the cy container is removed from the dom + + if (haveMutationsApi) { + r.removeObserver = new MutationObserver(function (mutns) { + // eslint-disable-line no-undef + for (var i = 0; i < mutns.length; i++) { + var mutn = mutns[i]; + var rNodes = mutn.removedNodes; + + if (rNodes) { + for (var j = 0; j < rNodes.length; j++) { + var rNode = rNodes[j]; + + if (rNode === r.container) { + r.destroy(); + break; + } + } + } + } + }); + + if (r.container.parentNode) { + r.removeObserver.observe(r.container.parentNode, { + childList: true + }); + } + } else { + r.registerBinding(r.container, 'DOMNodeRemoved', function (e) { + // eslint-disable-line no-unused-vars + r.destroy(); + }); + } + + var onResize = util(function () { + r.cy.resize(); + }, 100); + + if (haveMutationsApi) { + r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef + + r.styleObserver.observe(r.container, { + attributes: true + }); + } // auto resize + + + r.registerBinding(window, 'resize', onResize); // eslint-disable-line no-undef + + if (haveResizeObserverApi) { + r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef + + r.resizeObserver.observe(r.container); + } + + var forEachUp = function forEachUp(domEle, fn) { + while (domEle != null) { + fn(domEle); + domEle = domEle.parentNode; + } + }; + + var invalidateCoords = function invalidateCoords() { + r.invalidateContainerClientCoordsCache(); + }; + + forEachUp(r.container, function (domEle) { + r.registerBinding(domEle, 'transitionend', invalidateCoords); + r.registerBinding(domEle, 'animationend', invalidateCoords); + r.registerBinding(domEle, 'scroll', invalidateCoords); + }); // stop right click menu from appearing on cy + + r.registerBinding(r.container, 'contextmenu', function (e) { + e.preventDefault(); + }); + + var inBoxSelection = function inBoxSelection() { + return r.selection[4] !== 0; + }; + + var eventInContainer = function eventInContainer(e) { + // save cycles if mouse events aren't to be captured + var containerPageCoords = r.findContainerClientCoords(); + var x = containerPageCoords[0]; + var y = containerPageCoords[1]; + var width = containerPageCoords[2]; + var height = containerPageCoords[3]; + var positions = e.touches ? e.touches : [e]; + var atLeastOnePosInside = false; + + for (var i = 0; i < positions.length; i++) { + var p = positions[i]; + + if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) { + atLeastOnePosInside = true; + break; + } + } + + if (!atLeastOnePosInside) { + return false; + } + + var container = r.container; + var target = e.target; + var tParent = target.parentNode; + var containerIsTarget = false; + + while (tParent) { + if (tParent === container) { + containerIsTarget = true; + break; + } + + tParent = tParent.parentNode; + } + + if (!containerIsTarget) { + return false; + } // if target is outisde cy container, then this event is not for us + + + return true; + }; // Primary key + + + r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) { + if (!eventInContainer(e)) { + return; + } + + e.preventDefault(); + blurActiveDomElement(); + r.hoverData.capture = true; + r.hoverData.which = e.which; + var cy = r.cy; + var gpos = [e.clientX, e.clientY]; + var pos = r.projectIntoViewport(gpos[0], gpos[1]); + var select = r.selection; + var nears = r.findNearestElements(pos[0], pos[1], true, false); + var near = nears[0]; + var draggedElements = r.dragData.possibleDragElements; + r.hoverData.mdownPos = pos; + r.hoverData.mdownGPos = gpos; + + var checkForTaphold = function checkForTaphold() { + r.hoverData.tapholdCancelled = false; + clearTimeout(r.hoverData.tapholdTimeout); + r.hoverData.tapholdTimeout = setTimeout(function () { + if (r.hoverData.tapholdCancelled) { + return; + } else { + var ele = r.hoverData.down; + + if (ele) { + ele.emit({ + originalEvent: e, + type: 'taphold', + position: { + x: pos[0], + y: pos[1] + } + }); + } else { + cy.emit({ + originalEvent: e, + type: 'taphold', + position: { + x: pos[0], + y: pos[1] + } + }); + } + } + }, r.tapholdDuration); + }; // Right click button + + + if (e.which == 3) { + r.hoverData.cxtStarted = true; + var cxtEvt = { + originalEvent: e, + type: 'cxttapstart', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (near) { + near.activate(); + near.emit(cxtEvt); + r.hoverData.down = near; + } else { + cy.emit(cxtEvt); + } + + r.hoverData.downTime = new Date().getTime(); + r.hoverData.cxtDragged = false; // Primary button + } else if (e.which == 1) { + if (near) { + near.activate(); + } // Element dragging + + + { + // If something is under the cursor and it is draggable, prepare to grab it + if (near != null) { + if (r.nodeIsGrabbable(near)) { + var makeEvent = function makeEvent(type) { + return { + originalEvent: e, + type: type, + position: { + x: pos[0], + y: pos[1] + } + }; + }; + + var triggerGrab = function triggerGrab(ele) { + ele.emit(makeEvent('grab')); + }; + + setGrabTarget(near); + + if (!near.selected()) { + draggedElements = r.dragData.possibleDragElements = cy.collection(); + addNodeToDrag(near, { + addToList: draggedElements + }); + near.emit(makeEvent('grabon')).emit(makeEvent('grab')); + } else { + draggedElements = r.dragData.possibleDragElements = cy.collection(); + var selectedNodes = cy.$(function (ele) { + return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele); + }); + addNodesToDrag(selectedNodes, { + addToList: draggedElements + }); + near.emit(makeEvent('grabon')); + selectedNodes.forEach(triggerGrab); + } + + r.redrawHint('eles', true); + r.redrawHint('drag', true); + } + } + + r.hoverData.down = near; + r.hoverData.downs = nears; + r.hoverData.downTime = new Date().getTime(); + } + triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, { + x: pos[0], + y: pos[1] + }); + + if (near == null) { + select[4] = 1; + r.data.bgActivePosistion = { + x: pos[0], + y: pos[1] + }; + r.redrawHint('select', true); + r.redraw(); + } else if (near.pannable()) { + select[4] = 1; // for future pan + } + + checkForTaphold(); + } // Initialize selection box coordinates + + + select[0] = select[2] = pos[0]; + select[1] = select[3] = pos[1]; + }, false); + r.registerBinding(window, 'mousemove', function mousemoveHandler(e) { + // eslint-disable-line no-undef + var capture = r.hoverData.capture; + + if (!capture && !eventInContainer(e)) { + return; + } + + var preventDefault = false; + var cy = r.cy; + var zoom = cy.zoom(); + var gpos = [e.clientX, e.clientY]; + var pos = r.projectIntoViewport(gpos[0], gpos[1]); + var mdownPos = r.hoverData.mdownPos; + var mdownGPos = r.hoverData.mdownGPos; + var select = r.selection; + var near = null; + + if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) { + near = r.findNearestElement(pos[0], pos[1], true, false); + } + + var last = r.hoverData.last; + var down = r.hoverData.down; + var disp = [pos[0] - select[2], pos[1] - select[3]]; + var draggedElements = r.dragData.possibleDragElements; + var isOverThresholdDrag; + + if (mdownGPos) { + var dx = gpos[0] - mdownGPos[0]; + var dx2 = dx * dx; + var dy = gpos[1] - mdownGPos[1]; + var dy2 = dy * dy; + var dist2 = dx2 + dy2; + r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2; + } + + var multSelKeyDown = isMultSelKeyDown(e); + + if (isOverThresholdDrag) { + r.hoverData.tapholdCancelled = true; + } + + var updateDragDelta = function updateDragDelta() { + var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || []; + + if (dragDelta.length === 0) { + dragDelta.push(disp[0]); + dragDelta.push(disp[1]); + } else { + dragDelta[0] += disp[0]; + dragDelta[1] += disp[1]; + } + }; + + preventDefault = true; + triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, { + x: pos[0], + y: pos[1] + }); + + var goIntoBoxMode = function goIntoBoxMode() { + r.data.bgActivePosistion = undefined; + + if (!r.hoverData.selecting) { + cy.emit({ + originalEvent: e, + type: 'boxstart', + position: { + x: pos[0], + y: pos[1] + } + }); + } + + select[4] = 1; + r.hoverData.selecting = true; + r.redrawHint('select', true); + r.redraw(); + }; // trigger context drag if rmouse down + + + if (r.hoverData.which === 3) { + // but only if over threshold + if (isOverThresholdDrag) { + var cxtEvt = { + originalEvent: e, + type: 'cxtdrag', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (down) { + down.emit(cxtEvt); + } else { + cy.emit(cxtEvt); + } + + r.hoverData.cxtDragged = true; + + if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) { + if (r.hoverData.cxtOver) { + r.hoverData.cxtOver.emit({ + originalEvent: e, + type: 'cxtdragout', + position: { + x: pos[0], + y: pos[1] + } + }); + } + + r.hoverData.cxtOver = near; + + if (near) { + near.emit({ + originalEvent: e, + type: 'cxtdragover', + position: { + x: pos[0], + y: pos[1] + } + }); + } + } + } // Check if we are drag panning the entire graph + + } else if (r.hoverData.dragging) { + preventDefault = true; + + if (cy.panningEnabled() && cy.userPanningEnabled()) { + var deltaP; + + if (r.hoverData.justStartedPan) { + var mdPos = r.hoverData.mdownPos; + deltaP = { + x: (pos[0] - mdPos[0]) * zoom, + y: (pos[1] - mdPos[1]) * zoom + }; + r.hoverData.justStartedPan = false; + } else { + deltaP = { + x: disp[0] * zoom, + y: disp[1] * zoom + }; + } + + cy.panBy(deltaP); + r.hoverData.dragged = true; + } // Needs reproject due to pan changing viewport + + + pos = r.projectIntoViewport(e.clientX, e.clientY); // Checks primary button down & out of time & mouse not moved much + } else if (select[4] == 1 && (down == null || down.pannable())) { + if (isOverThresholdDrag) { + if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) { + goIntoBoxMode(); + } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) { + var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs); + + if (allowPassthrough) { + r.hoverData.dragging = true; + r.hoverData.justStartedPan = true; + select[4] = 0; + r.data.bgActivePosistion = array2point(mdownPos); + r.redrawHint('select', true); + r.redraw(); + } + } + + if (down && down.pannable() && down.active()) { + down.unactivate(); + } + } + } else { + if (down && down.pannable() && down.active()) { + down.unactivate(); + } + + if ((!down || !down.grabbed()) && near != last) { + if (last) { + triggerEvents(last, ['mouseout', 'tapdragout'], e, { + x: pos[0], + y: pos[1] + }); + } + + if (near) { + triggerEvents(near, ['mouseover', 'tapdragover'], e, { + x: pos[0], + y: pos[1] + }); + } + + r.hoverData.last = near; + } + + if (down) { + if (isOverThresholdDrag) { + // then we can take action + if (cy.boxSelectionEnabled() && multSelKeyDown) { + // then selection overrides + if (down && down.grabbed()) { + freeDraggedElements(draggedElements); + down.emit('freeon'); + draggedElements.emit('free'); + + if (r.dragData.didDrag) { + down.emit('dragfreeon'); + draggedElements.emit('dragfree'); + } + } + + goIntoBoxMode(); + } else if (down && down.grabbed() && r.nodeIsDraggable(down)) { + // drag node + var justStartedDrag = !r.dragData.didDrag; + + if (justStartedDrag) { + r.redrawHint('eles', true); + } + + r.dragData.didDrag = true; // indicate that we actually did drag the node + + var toTrigger = cy.collection(); // now, add the elements to the drag layer if not done already + + if (!r.hoverData.draggingEles) { + addNodesToDrag(draggedElements, { + inDragLayer: true + }); + } + + var totalShift = { + x: 0, + y: 0 + }; + + if (number(disp[0]) && number(disp[1])) { + totalShift.x += disp[0]; + totalShift.y += disp[1]; + + if (justStartedDrag) { + var dragDelta = r.hoverData.dragDelta; + + if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { + totalShift.x += dragDelta[0]; + totalShift.y += dragDelta[1]; + } + } + } + + for (var i = 0; i < draggedElements.length; i++) { + var dEle = draggedElements[i]; + + if (r.nodeIsDraggable(dEle) && dEle.grabbed()) { + toTrigger.push(dEle); + } + } + + r.hoverData.draggingEles = true; + toTrigger.silentShift(totalShift).emit('position drag'); + r.redrawHint('drag', true); + r.redraw(); + } + } else { + // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant + updateDragDelta(); + } + } // prevent the dragging from triggering text selection on the page + + + preventDefault = true; + } + + select[2] = pos[0]; + select[3] = pos[1]; + + if (preventDefault) { + if (e.stopPropagation) e.stopPropagation(); + if (e.preventDefault) e.preventDefault(); + return false; + } + }, false); + r.registerBinding(window, 'mouseup', function mouseupHandler(e) { + // eslint-disable-line no-undef + var capture = r.hoverData.capture; + + if (!capture) { + return; + } + + r.hoverData.capture = false; + var cy = r.cy; + var pos = r.projectIntoViewport(e.clientX, e.clientY); + var select = r.selection; + var near = r.findNearestElement(pos[0], pos[1], true, false); + var draggedElements = r.dragData.possibleDragElements; + var down = r.hoverData.down; + var multSelKeyDown = isMultSelKeyDown(e); + + if (r.data.bgActivePosistion) { + r.redrawHint('select', true); + r.redraw(); + } + + r.hoverData.tapholdCancelled = true; + r.data.bgActivePosistion = undefined; // not active bg now + + if (down) { + down.unactivate(); + } + + if (r.hoverData.which === 3) { + var cxtEvt = { + originalEvent: e, + type: 'cxttapend', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (down) { + down.emit(cxtEvt); + } else { + cy.emit(cxtEvt); + } + + if (!r.hoverData.cxtDragged) { + var cxtTap = { + originalEvent: e, + type: 'cxttap', + position: { + x: pos[0], + y: pos[1] + } + }; + + if (down) { + down.emit(cxtTap); + } else { + cy.emit(cxtTap); + } + } + + r.hoverData.cxtDragged = false; + r.hoverData.which = null; + } else if (r.hoverData.which === 1) { + triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, { + x: pos[0], + y: pos[1] + }); + + if (!r.dragData.didDrag // didn't move a node around + && !r.hoverData.dragged // didn't pan + && !r.hoverData.selecting // not box selection + && !r.hoverData.isOverThresholdDrag // didn't move too much + ) { + triggerEvents(down, ['click', 'tap', 'vclick'], e, { + x: pos[0], + y: pos[1] + }); + } // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something + + + if (down == null && // not mousedown on node + !r.dragData.didDrag // didn't move the node around + && !r.hoverData.selecting // not box selection + && !r.hoverData.dragged // didn't pan + && !isMultSelKeyDown(e)) { + cy.$(isSelected).unselect(['tapunselect']); + + if (draggedElements.length > 0) { + r.redrawHint('eles', true); + } + + r.dragData.possibleDragElements = draggedElements = cy.collection(); + } // Single selection + + + if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) { + if (near != null && near._private.selectable) { + if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) { + if (near.selected()) { + near.unselect(['tapunselect']); + } else { + near.select(['tapselect']); + } + } else { + if (!multSelKeyDown) { + cy.$(isSelected).unmerge(near).unselect(['tapunselect']); + near.select(['tapselect']); + } + } + + r.redrawHint('eles', true); + } + } + + if (r.hoverData.selecting) { + var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); + r.redrawHint('select', true); + + if (box.length > 0) { + r.redrawHint('eles', true); + } + + cy.emit({ + type: 'boxend', + originalEvent: e, + position: { + x: pos[0], + y: pos[1] + } + }); + + var eleWouldBeSelected = function eleWouldBeSelected(ele) { + return ele.selectable() && !ele.selected(); + }; + + if (cy.selectionType() === 'additive') { + box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); + } else { + if (!multSelKeyDown) { + cy.$(isSelected).unmerge(box).unselect(); + } + + box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); + } // always need redraw in case eles unselectable + + + r.redraw(); + } // Cancel drag pan + + + if (r.hoverData.dragging) { + r.hoverData.dragging = false; + r.redrawHint('select', true); + r.redrawHint('eles', true); + r.redraw(); + } + + if (!select[4]) { + r.redrawHint('drag', true); + r.redrawHint('eles', true); + var downWasGrabbed = down && down.grabbed(); + freeDraggedElements(draggedElements); + + if (downWasGrabbed) { + down.emit('freeon'); + draggedElements.emit('free'); + + if (r.dragData.didDrag) { + down.emit('dragfreeon'); + draggedElements.emit('dragfree'); + } + } + } + } // else not right mouse + + + select[4] = 0; + r.hoverData.down = null; + r.hoverData.cxtStarted = false; + r.hoverData.draggingEles = false; + r.hoverData.selecting = false; + r.hoverData.isOverThresholdDrag = false; + r.dragData.didDrag = false; + r.hoverData.dragged = false; + r.hoverData.dragDelta = []; + r.hoverData.mdownPos = null; + r.hoverData.mdownGPos = null; + }, false); + + var wheelHandler = function wheelHandler(e) { + if (r.scrollingPage) { + return; + } // while scrolling, ignore wheel-to-zoom + + + var cy = r.cy; + var zoom = cy.zoom(); + var pan = cy.pan(); + var pos = r.projectIntoViewport(e.clientX, e.clientY); + var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y]; + + if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) { + // if pan dragging or cxt dragging, wheel movements make no zoom + e.preventDefault(); + return; + } + + if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) { + e.preventDefault(); + r.data.wheelZooming = true; + clearTimeout(r.data.wheelTimeout); + r.data.wheelTimeout = setTimeout(function () { + r.data.wheelZooming = false; + r.redrawHint('eles', true); + r.redraw(); + }, 150); + var diff; + + if (e.deltaY != null) { + diff = e.deltaY / -250; + } else if (e.wheelDeltaY != null) { + diff = e.wheelDeltaY / 1000; + } else { + diff = e.wheelDelta / 1000; + } + + diff = diff * r.wheelSensitivity; + var needsWheelFix = e.deltaMode === 1; + + if (needsWheelFix) { + // fixes slow wheel events on ff/linux and ff/windows + diff *= 33; + } + + var newZoom = cy.zoom() * Math.pow(10, diff); + + if (e.type === 'gesturechange') { + newZoom = r.gestureStartZoom * e.scale; + } + + cy.zoom({ + level: newZoom, + renderedPosition: { + x: rpos[0], + y: rpos[1] + } + }); + } + }; // Functions to help with whether mouse wheel should trigger zooming + // -- + + + r.registerBinding(r.container, 'wheel', wheelHandler, true); // disable nonstandard wheel events + // r.registerBinding(r.container, 'mousewheel', wheelHandler, true); + // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true); + // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox + + r.registerBinding(window, 'scroll', function scrollHandler(e) { + // eslint-disable-line no-unused-vars + r.scrollingPage = true; + clearTimeout(r.scrollingPageTimeout); + r.scrollingPageTimeout = setTimeout(function () { + r.scrollingPage = false; + }, 250); + }, true); // desktop safari pinch to zoom start + + r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) { + r.gestureStartZoom = r.cy.zoom(); + + if (!r.hasTouchStarted) { + // don't affect touch devices like iphone + e.preventDefault(); + } + }, true); + r.registerBinding(r.container, 'gesturechange', function (e) { + if (!r.hasTouchStarted) { + // don't affect touch devices like iphone + wheelHandler(e); + } + }, true); // Functions to help with handling mouseout/mouseover on the Cytoscape container + // Handle mouseout on Cytoscape container + + r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) { + var pos = r.projectIntoViewport(e.clientX, e.clientY); + r.cy.emit({ + originalEvent: e, + type: 'mouseout', + position: { + x: pos[0], + y: pos[1] + } + }); + }, false); + r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) { + var pos = r.projectIntoViewport(e.clientX, e.clientY); + r.cy.emit({ + originalEvent: e, + type: 'mouseover', + position: { + x: pos[0], + y: pos[1] + } + }); + }, false); + var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom + + var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom + + var center1, modelCenter1; // center point on start pinch to zoom + + var offsetLeft, offsetTop; + var containerWidth, containerHeight; + var twoFingersStartInside; + + var distance = function distance(x1, y1, x2, y2) { + return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); + }; + + var distanceSq = function distanceSq(x1, y1, x2, y2) { + return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); + }; + + var touchstartHandler; + r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) { + r.hasTouchStarted = true; + + if (!eventInContainer(e)) { + return; + } + + blurActiveDomElement(); + r.touchData.capture = true; + r.data.bgActivePosistion = undefined; + var cy = r.cy; + var now = r.touchData.now; + var earlier = r.touchData.earlier; + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } // record starting points for pinch-to-zoom + + + if (e.touches[1]) { + r.touchData.singleTouchMoved = true; + freeDraggedElements(r.dragData.touchDragEles); + var offsets = r.findContainerClientCoords(); + offsetLeft = offsets[0]; + offsetTop = offsets[1]; + containerWidth = offsets[2]; + containerHeight = offsets[3]; + f1x1 = e.touches[0].clientX - offsetLeft; + f1y1 = e.touches[0].clientY - offsetTop; + f2x1 = e.touches[1].clientX - offsetLeft; + f2y1 = e.touches[1].clientY - offsetTop; + twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight; + var pan = cy.pan(); + var zoom = cy.zoom(); + distance1 = distance(f1x1, f1y1, f2x1, f2y1); + distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1); + center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2]; + modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom]; // consider context tap + + var cxtDistThreshold = 200; + var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold; + + if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) { + var near1 = r.findNearestElement(now[0], now[1], true, true); + var near2 = r.findNearestElement(now[2], now[3], true, true); + + if (near1 && near1.isNode()) { + near1.activate().emit({ + originalEvent: e, + type: 'cxttapstart', + position: { + x: now[0], + y: now[1] + } + }); + r.touchData.start = near1; + } else if (near2 && near2.isNode()) { + near2.activate().emit({ + originalEvent: e, + type: 'cxttapstart', + position: { + x: now[0], + y: now[1] + } + }); + r.touchData.start = near2; + } else { + cy.emit({ + originalEvent: e, + type: 'cxttapstart', + position: { + x: now[0], + y: now[1] + } + }); + } + + if (r.touchData.start) { + r.touchData.start._private.grabbed = false; + } + + r.touchData.cxt = true; + r.touchData.cxtDragged = false; + r.data.bgActivePosistion = undefined; + r.redraw(); + return; + } + } + + if (e.touches[2]) { + // ignore + // safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...) + if (cy.boxSelectionEnabled()) { + e.preventDefault(); + } + } else if (e.touches[1]) ; else if (e.touches[0]) { + var nears = r.findNearestElements(now[0], now[1], true, true); + var near = nears[0]; + + if (near != null) { + near.activate(); + r.touchData.start = near; + r.touchData.starts = nears; + + if (r.nodeIsGrabbable(near)) { + var draggedEles = r.dragData.touchDragEles = cy.collection(); + var selectedNodes = null; + r.redrawHint('eles', true); + r.redrawHint('drag', true); + + if (near.selected()) { + // reset drag elements, since near will be added again + selectedNodes = cy.$(function (ele) { + return ele.selected() && r.nodeIsGrabbable(ele); + }); + addNodesToDrag(selectedNodes, { + addToList: draggedEles + }); + } else { + addNodeToDrag(near, { + addToList: draggedEles + }); + } + + setGrabTarget(near); + + var makeEvent = function makeEvent(type) { + return { + originalEvent: e, + type: type, + position: { + x: now[0], + y: now[1] + } + }; + }; + + near.emit(makeEvent('grabon')); + + if (selectedNodes) { + selectedNodes.forEach(function (n) { + n.emit(makeEvent('grab')); + }); + } else { + near.emit(makeEvent('grab')); + } + } + } + + triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, { + x: now[0], + y: now[1] + }); + + if (near == null) { + r.data.bgActivePosistion = { + x: pos[0], + y: pos[1] + }; + r.redrawHint('select', true); + r.redraw(); + } // Tap, taphold + // ----- + + + r.touchData.singleTouchMoved = false; + r.touchData.singleTouchStartTime = +new Date(); + clearTimeout(r.touchData.tapholdTimeout); + r.touchData.tapholdTimeout = setTimeout(function () { + if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect + && !r.touchData.selecting // box selection shouldn't allow taphold through + ) { + triggerEvents(r.touchData.start, ['taphold'], e, { + x: now[0], + y: now[1] + }); + } + }, r.tapholdDuration); + } + + if (e.touches.length >= 1) { + var sPos = r.touchData.startPosition = []; + + for (var i = 0; i < now.length; i++) { + sPos[i] = earlier[i] = now[i]; + } + + var touch0 = e.touches[0]; + r.touchData.startGPosition = [touch0.clientX, touch0.clientY]; + } + }, false); + var touchmoveHandler; + r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) { + // eslint-disable-line no-undef + var capture = r.touchData.capture; + + if (!capture && !eventInContainer(e)) { + return; + } + + var select = r.selection; + var cy = r.cy; + var now = r.touchData.now; + var earlier = r.touchData.earlier; + var zoom = cy.zoom(); + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } + + var startGPos = r.touchData.startGPosition; + var isOverThresholdDrag; + + if (capture && e.touches[0] && startGPos) { + var disp = []; + + for (var j = 0; j < now.length; j++) { + disp[j] = now[j] - earlier[j]; + } + + var dx = e.touches[0].clientX - startGPos[0]; + var dx2 = dx * dx; + var dy = e.touches[0].clientY - startGPos[1]; + var dy2 = dy * dy; + var dist2 = dx2 + dy2; + isOverThresholdDrag = dist2 >= r.touchTapThreshold2; + } // context swipe cancelling + + + if (capture && r.touchData.cxt) { + e.preventDefault(); + var f1x2 = e.touches[0].clientX - offsetLeft, + f1y2 = e.touches[0].clientY - offsetTop; + var f2x2 = e.touches[1].clientX - offsetLeft, + f2y2 = e.touches[1].clientY - offsetTop; // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 ); + + var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2); + var factorSq = distance2Sq / distance1Sq; + var distThreshold = 150; + var distThresholdSq = distThreshold * distThreshold; + var factorThreshold = 1.5; + var factorThresholdSq = factorThreshold * factorThreshold; // cancel ctx gestures if the distance b/t the fingers increases + + if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) { + r.touchData.cxt = false; + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + var cxtEvt = { + originalEvent: e, + type: 'cxttapend', + position: { + x: now[0], + y: now[1] + } + }; + + if (r.touchData.start) { + r.touchData.start.unactivate().emit(cxtEvt); + r.touchData.start = null; + } else { + cy.emit(cxtEvt); + } + } + } // context swipe + + + if (capture && r.touchData.cxt) { + var cxtEvt = { + originalEvent: e, + type: 'cxtdrag', + position: { + x: now[0], + y: now[1] + } + }; + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + + if (r.touchData.start) { + r.touchData.start.emit(cxtEvt); + } else { + cy.emit(cxtEvt); + } + + if (r.touchData.start) { + r.touchData.start._private.grabbed = false; + } + + r.touchData.cxtDragged = true; + var near = r.findNearestElement(now[0], now[1], true, true); + + if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) { + if (r.touchData.cxtOver) { + r.touchData.cxtOver.emit({ + originalEvent: e, + type: 'cxtdragout', + position: { + x: now[0], + y: now[1] + } + }); + } + + r.touchData.cxtOver = near; + + if (near) { + near.emit({ + originalEvent: e, + type: 'cxtdragover', + position: { + x: now[0], + y: now[1] + } + }); + } + } // box selection + + } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) { + e.preventDefault(); + r.data.bgActivePosistion = undefined; + this.lastThreeTouch = +new Date(); + + if (!r.touchData.selecting) { + cy.emit({ + originalEvent: e, + type: 'boxstart', + position: { + x: now[0], + y: now[1] + } + }); + } + + r.touchData.selecting = true; + r.touchData.didSelect = true; + select[4] = 1; + + if (!select || select.length === 0 || select[0] === undefined) { + select[0] = (now[0] + now[2] + now[4]) / 3; + select[1] = (now[1] + now[3] + now[5]) / 3; + select[2] = (now[0] + now[2] + now[4]) / 3 + 1; + select[3] = (now[1] + now[3] + now[5]) / 3 + 1; + } else { + select[2] = (now[0] + now[2] + now[4]) / 3; + select[3] = (now[1] + now[3] + now[5]) / 3; + } + + r.redrawHint('select', true); + r.redraw(); // pinch to zoom + } else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom + && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) { + // two fingers => pinch to zoom + e.preventDefault(); + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + var draggedEles = r.dragData.touchDragEles; + + if (draggedEles) { + r.redrawHint('drag', true); + + for (var i = 0; i < draggedEles.length; i++) { + var de_p = draggedEles[i]._private; + de_p.grabbed = false; + de_p.rscratch.inDragLayer = false; + } + } + + var _start = r.touchData.start; // (x2, y2) for fingers 1 and 2 + + var f1x2 = e.touches[0].clientX - offsetLeft, + f1y2 = e.touches[0].clientY - offsetTop; + var f2x2 = e.touches[1].clientX - offsetLeft, + f2y2 = e.touches[1].clientY - offsetTop; + var distance2 = distance(f1x2, f1y2, f2x2, f2y2); // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 ); + // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq ); + + var factor = distance2 / distance1; + + if (twoFingersStartInside) { + // delta finger1 + var df1x = f1x2 - f1x1; + var df1y = f1y2 - f1y1; // delta finger 2 + + var df2x = f2x2 - f2x1; + var df2y = f2y2 - f2y1; // translation is the normalised vector of the two fingers movement + // i.e. so pinching cancels out and moving together pans + + var tx = (df1x + df2x) / 2; + var ty = (df1y + df2y) / 2; // now calculate the zoom + + var zoom1 = cy.zoom(); + var zoom2 = zoom1 * factor; + var pan1 = cy.pan(); // the model center point converted to the current rendered pos + + var ctrx = modelCenter1[0] * zoom1 + pan1.x; + var ctry = modelCenter1[1] * zoom1 + pan1.y; + var pan2 = { + x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx, + y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry + }; // remove dragged eles + + if (_start && _start.active()) { + var draggedEles = r.dragData.touchDragEles; + freeDraggedElements(draggedEles); + r.redrawHint('drag', true); + r.redrawHint('eles', true); + + _start.unactivate().emit('freeon'); + + draggedEles.emit('free'); + + if (r.dragData.didDrag) { + _start.emit('dragfreeon'); + + draggedEles.emit('dragfree'); + } + } + + cy.viewport({ + zoom: zoom2, + pan: pan2, + cancelOnFailedZoom: true + }); + distance1 = distance2; + f1x1 = f1x2; + f1y1 = f1y2; + f2x1 = f2x2; + f2y1 = f2y2; + r.pinching = true; + } // Re-project + + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } + } else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning + ) { + var start = r.touchData.start; + var last = r.touchData.last; + var near; + + if (!r.hoverData.draggingEles && !r.swipePanning) { + near = r.findNearestElement(now[0], now[1], true, true); + } + + if (capture && start != null) { + e.preventDefault(); + } // dragging nodes + + + if (capture && start != null && r.nodeIsDraggable(start)) { + if (isOverThresholdDrag) { + // then dragging can happen + var draggedEles = r.dragData.touchDragEles; + var justStartedDrag = !r.dragData.didDrag; + + if (justStartedDrag) { + addNodesToDrag(draggedEles, { + inDragLayer: true + }); + } + + r.dragData.didDrag = true; + var totalShift = { + x: 0, + y: 0 + }; + + if (number(disp[0]) && number(disp[1])) { + totalShift.x += disp[0]; + totalShift.y += disp[1]; + + if (justStartedDrag) { + r.redrawHint('eles', true); + var dragDelta = r.touchData.dragDelta; + + if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { + totalShift.x += dragDelta[0]; + totalShift.y += dragDelta[1]; + } + } + } + + r.hoverData.draggingEles = true; + draggedEles.silentShift(totalShift).emit('position drag'); + r.redrawHint('drag', true); + + if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) { + r.redrawHint('eles', true); + } + + r.redraw(); + } else { + // otherise keep track of drag delta for later + var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || []; + + if (dragDelta.length === 0) { + dragDelta.push(disp[0]); + dragDelta.push(disp[1]); + } else { + dragDelta[0] += disp[0]; + dragDelta[1] += disp[1]; + } + } + } // touchmove + + + { + triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, { + x: now[0], + y: now[1] + }); + + if ((!start || !start.grabbed()) && near != last) { + if (last) { + last.emit({ + originalEvent: e, + type: 'tapdragout', + position: { + x: now[0], + y: now[1] + } + }); + } + + if (near) { + near.emit({ + originalEvent: e, + type: 'tapdragover', + position: { + x: now[0], + y: now[1] + } + }); + } + } + + r.touchData.last = near; + } // check to cancel taphold + + if (capture) { + for (var i = 0; i < now.length; i++) { + if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) { + r.touchData.singleTouchMoved = true; + } + } + } // panning + + + if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) { + var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts); + + if (allowPassthrough) { + e.preventDefault(); + + if (!r.data.bgActivePosistion) { + r.data.bgActivePosistion = array2point(r.touchData.startPosition); + } + + if (r.swipePanning) { + cy.panBy({ + x: disp[0] * zoom, + y: disp[1] * zoom + }); + } else if (isOverThresholdDrag) { + r.swipePanning = true; + cy.panBy({ + x: dx * zoom, + y: dy * zoom + }); + + if (start) { + start.unactivate(); + r.redrawHint('select', true); + r.touchData.start = null; + } + } + } // Re-project + + + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + } + + for (var j = 0; j < now.length; j++) { + earlier[j] = now[j]; + } // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning + + + if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) { + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + r.redraw(); + } + }, false); + var touchcancelHandler; + r.registerBinding(window, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) { + // eslint-disable-line no-unused-vars + var start = r.touchData.start; + r.touchData.capture = false; + + if (start) { + start.unactivate(); + } + }); + var touchendHandler; + r.registerBinding(window, 'touchend', touchendHandler = function touchendHandler(e) { + // eslint-disable-line no-unused-vars + var start = r.touchData.start; + var capture = r.touchData.capture; + + if (capture) { + if (e.touches.length === 0) { + r.touchData.capture = false; + } + + e.preventDefault(); + } else { + return; + } + + var select = r.selection; + r.swipePanning = false; + r.hoverData.draggingEles = false; + var cy = r.cy; + var zoom = cy.zoom(); + var now = r.touchData.now; + var earlier = r.touchData.earlier; + + if (e.touches[0]) { + var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); + now[0] = pos[0]; + now[1] = pos[1]; + } + + if (e.touches[1]) { + var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); + now[2] = pos[0]; + now[3] = pos[1]; + } + + if (e.touches[2]) { + var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); + now[4] = pos[0]; + now[5] = pos[1]; + } + + if (start) { + start.unactivate(); + } + + var ctxTapend; + + if (r.touchData.cxt) { + ctxTapend = { + originalEvent: e, + type: 'cxttapend', + position: { + x: now[0], + y: now[1] + } + }; + + if (start) { + start.emit(ctxTapend); + } else { + cy.emit(ctxTapend); + } + + if (!r.touchData.cxtDragged) { + var ctxTap = { + originalEvent: e, + type: 'cxttap', + position: { + x: now[0], + y: now[1] + } + }; + + if (start) { + start.emit(ctxTap); + } else { + cy.emit(ctxTap); + } + } + + if (r.touchData.start) { + r.touchData.start._private.grabbed = false; + } + + r.touchData.cxt = false; + r.touchData.start = null; + r.redraw(); + return; + } // no more box selection if we don't have three fingers + + + if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) { + r.touchData.selecting = false; + var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); + select[0] = undefined; + select[1] = undefined; + select[2] = undefined; + select[3] = undefined; + select[4] = 0; + r.redrawHint('select', true); + cy.emit({ + type: 'boxend', + originalEvent: e, + position: { + x: now[0], + y: now[1] + } + }); + + var eleWouldBeSelected = function eleWouldBeSelected(ele) { + return ele.selectable() && !ele.selected(); + }; + + box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); + + if (box.nonempty()) { + r.redrawHint('eles', true); + } + + r.redraw(); + } + + if (start != null) { + start.unactivate(); + } + + if (e.touches[2]) { + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) { + r.data.bgActivePosistion = undefined; + r.redrawHint('select', true); + var draggedEles = r.dragData.touchDragEles; + + if (start != null) { + var startWasGrabbed = start._private.grabbed; + freeDraggedElements(draggedEles); + r.redrawHint('drag', true); + r.redrawHint('eles', true); + + if (startWasGrabbed) { + start.emit('freeon'); + draggedEles.emit('free'); + + if (r.dragData.didDrag) { + start.emit('dragfreeon'); + draggedEles.emit('dragfree'); + } + } + + triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { + x: now[0], + y: now[1] + }); + start.unactivate(); + r.touchData.start = null; + } else { + var near = r.findNearestElement(now[0], now[1], true, true); + triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { + x: now[0], + y: now[1] + }); + } + + var dx = r.touchData.startPosition[0] - now[0]; + var dx2 = dx * dx; + var dy = r.touchData.startPosition[1] - now[1]; + var dy2 = dy * dy; + var dist2 = dx2 + dy2; + var rdist2 = dist2 * zoom * zoom; // Tap event, roughly same as mouse click event for touch + + if (!r.touchData.singleTouchMoved) { + if (!start) { + cy.$(':selected').unselect(['tapunselect']); + } + + triggerEvents(start, ['tap', 'vclick'], e, { + x: now[0], + y: now[1] + }); + } // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance + + + if (start != null && !r.dragData.didDrag // didn't drag nodes around + && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection + ) { + if (cy.selectionType() === 'single') { + cy.$(isSelected).unmerge(start).unselect(['tapunselect']); + start.select(['tapselect']); + } else { + if (start.selected()) { + start.unselect(['tapunselect']); + } else { + start.select(['tapselect']); + } + } + + r.redrawHint('eles', true); + } + + r.touchData.singleTouchMoved = true; + } + + for (var j = 0; j < now.length; j++) { + earlier[j] = now[j]; + } + + r.dragData.didDrag = false; // reset for next touchstart + + if (e.touches.length === 0) { + r.touchData.dragDelta = []; + r.touchData.startPosition = null; + r.touchData.startGPosition = null; + r.touchData.didSelect = false; + } + + if (e.touches.length < 2) { + if (e.touches.length === 1) { + // the old start global pos'n may not be the same finger that remains + r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY]; + } + + r.pinching = false; + r.redrawHint('eles', true); + r.redraw(); + } //r.redraw(); + + }, false); // fallback compatibility layer for ms pointer events + + if (typeof TouchEvent === 'undefined') { + var pointers = []; + + var makeTouch = function makeTouch(e) { + return { + clientX: e.clientX, + clientY: e.clientY, + force: 1, + identifier: e.pointerId, + pageX: e.pageX, + pageY: e.pageY, + radiusX: e.width / 2, + radiusY: e.height / 2, + screenX: e.screenX, + screenY: e.screenY, + target: e.target + }; + }; + + var makePointer = function makePointer(e) { + return { + event: e, + touch: makeTouch(e) + }; + }; + + var addPointer = function addPointer(e) { + pointers.push(makePointer(e)); + }; + + var removePointer = function removePointer(e) { + for (var i = 0; i < pointers.length; i++) { + var p = pointers[i]; + + if (p.event.pointerId === e.pointerId) { + pointers.splice(i, 1); + return; + } + } + }; + + var updatePointer = function updatePointer(e) { + var p = pointers.filter(function (p) { + return p.event.pointerId === e.pointerId; + })[0]; + p.event = e; + p.touch = makeTouch(e); + }; + + var addTouchesToEvent = function addTouchesToEvent(e) { + e.touches = pointers.map(function (p) { + return p.touch; + }); + }; + + var pointerIsMouse = function pointerIsMouse(e) { + return e.pointerType === 'mouse' || e.pointerType === 4; + }; + + r.registerBinding(r.container, 'pointerdown', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + e.preventDefault(); + addPointer(e); + addTouchesToEvent(e); + touchstartHandler(e); + }); + r.registerBinding(r.container, 'pointerup', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + removePointer(e); + addTouchesToEvent(e); + touchendHandler(e); + }); + r.registerBinding(r.container, 'pointercancel', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + removePointer(e); + addTouchesToEvent(e); + touchcancelHandler(e); + }); + r.registerBinding(r.container, 'pointermove', function (e) { + if (pointerIsMouse(e)) { + return; + } // mouse already handled + + + e.preventDefault(); + updatePointer(e); + addTouchesToEvent(e); + touchmoveHandler(e); + }); + } +}; + +var BRp$d = {}; + +BRp$d.generatePolygon = function (name, points) { + return this.nodeShapes[name] = { + renderer: this, + name: name, + points: points, + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding); + } + }; +}; + +BRp$d.generateEllipse = function () { + return this.nodeShapes['ellipse'] = { + renderer: this, + name: 'ellipse', + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + return checkInEllipse(x, y, width, height, centerX, centerY, padding); + } + }; +}; + +BRp$d.generateRoundPolygon = function (name, points) { + // Pre-compute control points + // Since these points depend on the radius length (which in turns depend on the width/height of the node) we will only pre-compute + // the unit vectors. + // For simplicity the layout will be: + // [ p0, UnitVectorP0P1, p1, UniVectorP1P2, ..., pn, UnitVectorPnP0 ] + var allPoints = new Array(points.length * 2); + + for (var i = 0; i < points.length / 2; i++) { + var sourceIndex = i * 2; + var destIndex = void 0; + + if (i < points.length / 2 - 1) { + destIndex = (i + 1) * 2; + } else { + destIndex = 0; + } + + allPoints[i * 4] = points[sourceIndex]; + allPoints[i * 4 + 1] = points[sourceIndex + 1]; + var xDest = points[destIndex] - points[sourceIndex]; + var yDest = points[destIndex + 1] - points[sourceIndex + 1]; + var norm = Math.sqrt(xDest * xDest + yDest * yDest); + allPoints[i * 4 + 2] = xDest / norm; + allPoints[i * 4 + 3] = yDest / norm; + } + + return this.nodeShapes[name] = { + renderer: this, + name: name, + points: allPoints, + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height); + } + }; +}; + +BRp$d.generateRoundRectangle = function () { + return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = { + renderer: this, + name: 'round-rectangle', + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + var cornerRadius = getRoundRectangleRadius(width, height); + var diam = cornerRadius * 2; // Check hBox + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { + return true; + } // Check top left quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) { + return true; + } // Check top right quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) { + return true; + } // Check bottom right quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } // Check bottom left quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } + + return false; + } + }; +}; + +BRp$d.generateCutRectangle = function () { + return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = { + renderer: this, + name: 'cut-rectangle', + cornerLength: getCutRectangleCornerLength(), + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) { + var cl = this.cornerLength; + var hh = height / 2; + var hw = width / 2; + var xBegin = centerX - hw; + var xEnd = centerX + hw; + var yBegin = centerY - hh; + var yEnd = centerY + hh; // points are in clockwise order, inner (imaginary) triangle pt on [4, 5] + + return { + topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl], + topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl], + bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl], + bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl] + }; + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); + var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]); + return polygonIntersectLine(x, y, pts, nodeX, nodeY); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + // Check hBox + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) { + return true; + } + + var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY); + return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft); + } + }; +}; + +BRp$d.generateBarrel = function () { + return this.nodeShapes['barrel'] = { + renderer: this, + name: 'barrel', + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + // use two fixed t values for the bezier curve approximation + var t0 = 0.15; + var t1 = 0.5; + var t2 = 0.85; + var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); + + var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) { + // approximate curve pts based on the two t values + var m0 = qbezierPtAt({ + x: pts[0], + y: pts[1] + }, { + x: pts[2], + y: pts[3] + }, { + x: pts[4], + y: pts[5] + }, t0); + var m1 = qbezierPtAt({ + x: pts[0], + y: pts[1] + }, { + x: pts[2], + y: pts[3] + }, { + x: pts[4], + y: pts[5] + }, t1); + var m2 = qbezierPtAt({ + x: pts[0], + y: pts[1] + }, { + x: pts[2], + y: pts[3] + }, { + x: pts[4], + y: pts[5] + }, t2); + return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]]; + }; + + var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft)); + return polygonIntersectLine(x, y, pts, nodeX, nodeY); + }, + generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) { + var hh = height / 2; + var hw = width / 2; + var xBegin = centerX - hw; + var xEnd = centerX + hw; + var yBegin = centerY - hh; + var yEnd = centerY + hh; + var curveConstants = getBarrelCurveConstants(width, height); + var hOffset = curveConstants.heightOffset; + var wOffset = curveConstants.widthOffset; + var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width; // points are in clockwise order, inner (imaginary) control pt on [4, 5] + + var pts = { + topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin], + topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset], + bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd], + bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset] + }; + pts.topLeft.isTop = true; + pts.topRight.isTop = true; + pts.bottomLeft.isBottom = true; + pts.bottomRight.isBottom = true; + return pts; + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + var curveConstants = getBarrelCurveConstants(width, height); + var hOffset = curveConstants.heightOffset; + var wOffset = curveConstants.widthOffset; // Check hBox + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) { + return true; + } + + var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY); + + var getCurveT = function getCurveT(x, y, curvePts) { + var x0 = curvePts[4]; + var x1 = curvePts[2]; + var x2 = curvePts[0]; + var y0 = curvePts[5]; // var y1 = curvePts[ 3 ]; + + var y2 = curvePts[1]; + var xMin = Math.min(x0, x2); + var xMax = Math.max(x0, x2); + var yMin = Math.min(y0, y2); + var yMax = Math.max(y0, y2); + + if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) { + var coeff = bezierPtsToQuadCoeff(x0, x1, x2); + var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x); + var validRoots = roots.filter(function (r) { + return 0 <= r && r <= 1; + }); + + if (validRoots.length > 0) { + return validRoots[0]; + } + } + + return null; + }; + + var curveRegions = Object.keys(barrelCurvePts); + + for (var i = 0; i < curveRegions.length; i++) { + var corner = curveRegions[i]; + var cornerPts = barrelCurvePts[corner]; + var t = getCurveT(x, y, cornerPts); + + if (t == null) { + continue; + } + + var y0 = cornerPts[5]; + var y1 = cornerPts[3]; + var y2 = cornerPts[1]; + var bezY = qbezierAt(y0, y1, y2, t); + + if (cornerPts.isTop && bezY <= y) { + return true; + } + + if (cornerPts.isBottom && y <= bezY) { + return true; + } + } + + return false; + } + }; +}; + +BRp$d.generateBottomRoundrectangle = function () { + return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = { + renderer: this, + name: 'bottom-round-rectangle', + points: generateUnitNgonPointsFitToSquare(4, 0), + draw: function draw(context, centerX, centerY, width, height) { + this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); + }, + intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { + var topStartX = nodeX - (width / 2 + padding); + var topStartY = nodeY - (height / 2 + padding); + var topEndY = topStartY; + var topEndX = nodeX + (width / 2 + padding); + var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); + + if (topIntersections.length > 0) { + return topIntersections; + } + + return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); + }, + checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { + var cornerRadius = getRoundRectangleRadius(width, height); + var diam = 2 * cornerRadius; // Check hBox + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { + return true; + } // Check vBox + + + if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { + return true; + } // check non-rounded top side + + + var outerWidth = width / 2 + 2 * padding; + var outerHeight = height / 2 + 2 * padding; + var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight]; + + if (pointInsidePolygonPoints(x, y, points)) { + return true; + } // Check bottom right quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } // Check bottom left quarter circle + + + if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { + return true; + } + + return false; + } + }; +}; + +BRp$d.registerNodeShapes = function () { + var nodeShapes = this.nodeShapes = {}; + var renderer = this; + this.generateEllipse(); + this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0)); + this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0)); + this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0)); + nodeShapes['square'] = nodeShapes['rectangle']; + this.generateRoundRectangle(); + this.generateCutRectangle(); + this.generateBarrel(); + this.generateBottomRoundrectangle(); + { + var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0]; + this.generatePolygon('diamond', diamondPoints); + this.generateRoundPolygon('round-diamond', diamondPoints); + } + this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0)); + this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0)); + this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0)); + this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0)); + this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0)); + this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0)); + this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0)); + this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0)); + var star5Points = new Array(20); + { + var outerPoints = generateUnitNgonPoints(5, 0); + var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); // Outer radius is 1; inner radius of star is smaller + + var innerRadius = 0.5 * (3 - Math.sqrt(5)); + innerRadius *= 1.57; + + for (var i = 0; i < innerPoints.length / 2; i++) { + innerPoints[i * 2] *= innerRadius; + innerPoints[i * 2 + 1] *= innerRadius; + } + + for (var i = 0; i < 20 / 4; i++) { + star5Points[i * 4] = outerPoints[i * 2]; + star5Points[i * 4 + 1] = outerPoints[i * 2 + 1]; + star5Points[i * 4 + 2] = innerPoints[i * 2]; + star5Points[i * 4 + 3] = innerPoints[i * 2 + 1]; + } + } + star5Points = fitPolygonToSquare(star5Points); + this.generatePolygon('star', star5Points); + this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]); + this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]); + this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]); + { + var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]; + this.generatePolygon('tag', tagPoints); + this.generateRoundPolygon('round-tag', tagPoints); + } + + nodeShapes.makePolygon = function (points) { + // use caching on user-specified polygons so they are as fast as native shapes + var key = points.join('$'); + var name = 'polygon-' + key; + var shape; + + if (shape = this[name]) { + // got cached shape + return shape; + } // create and cache new shape + + + return renderer.generatePolygon(name, points); + }; +}; + +var BRp$e = {}; + +BRp$e.timeToRender = function () { + return this.redrawTotalTime / this.redrawCount; +}; + +BRp$e.redraw = function (options) { + options = options || staticEmptyObject(); + var r = this; + + if (r.averageRedrawTime === undefined) { + r.averageRedrawTime = 0; + } + + if (r.lastRedrawTime === undefined) { + r.lastRedrawTime = 0; + } + + if (r.lastDrawTime === undefined) { + r.lastDrawTime = 0; + } + + r.requestedFrame = true; + r.renderOptions = options; +}; + +BRp$e.beforeRender = function (fn, priority) { + // the renderer can't add tick callbacks when destroyed + if (this.destroyed) { + return; + } + + if (priority == null) { + error('Priority is not optional for beforeRender'); + } + + var cbs = this.beforeRenderCallbacks; + cbs.push({ + fn: fn, + priority: priority + }); // higher priority callbacks executed first + + cbs.sort(function (a, b) { + return b.priority - a.priority; + }); +}; + +var beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) { + var cbs = r.beforeRenderCallbacks; + + for (var i = 0; i < cbs.length; i++) { + cbs[i].fn(willDraw, startTime); + } +}; + +BRp$e.startRenderLoop = function () { + var r = this; + var cy = r.cy; + + if (r.renderLoopStarted) { + return; + } else { + r.renderLoopStarted = true; + } + + var renderFn = function renderFn(requestTime) { + if (r.destroyed) { + return; + } + + if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) { + beforeRenderCallbacks(r, true, requestTime); + var startTime = performanceNow(); + r.render(r.renderOptions); + var endTime = r.lastDrawTime = performanceNow(); + + if (r.averageRedrawTime === undefined) { + r.averageRedrawTime = endTime - startTime; + } + + if (r.redrawCount === undefined) { + r.redrawCount = 0; + } + + r.redrawCount++; + + if (r.redrawTotalTime === undefined) { + r.redrawTotalTime = 0; + } + + var duration = endTime - startTime; + r.redrawTotalTime += duration; + r.lastRedrawTime = duration; // use a weighted average with a bias from the previous average so we don't spike so easily + + r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2; + r.requestedFrame = false; + } else { + beforeRenderCallbacks(r, false, requestTime); + } + + r.skipFrame = false; + requestAnimationFrame(renderFn); + }; + + requestAnimationFrame(renderFn); +}; + +var BaseRenderer = function BaseRenderer(options) { + this.init(options); +}; + +var BR = BaseRenderer; +var BRp$f = BR.prototype; +BRp$f.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl']; + +BRp$f.init = function (options) { + var r = this; + r.options = options; + r.cy = options.cy; + var ctr = r.container = options.cy.container(); // prepend a stylesheet in the head such that + + if (window$1) { + var document = window$1.document; + var head = document.head; + var stylesheetId = '__________cytoscape_stylesheet'; + var className = '__________cytoscape_container'; + var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null; + + if (ctr.className.indexOf(className) < 0) { + ctr.className = (ctr.className || '') + ' ' + className; + } + + if (!stylesheetAlreadyExists) { + var stylesheet = document.createElement('style'); + stylesheet.id = stylesheetId; + stylesheet.innerHTML = '.' + className + ' { position: relative; }'; + head.insertBefore(stylesheet, head.children[0]); // first so lowest priority + } + + var computedStyle = window$1.getComputedStyle(ctr); + var position = computedStyle.getPropertyValue('position'); + + if (position === 'static') { + warn('A Cytoscape container has style position:static and so can not use UI extensions properly'); + } + } + + r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag + + r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; //--Pointer-related data + + r.hoverData = { + down: null, + last: null, + downTime: null, + triggerMode: null, + dragging: false, + initialPan: [null, null], + capture: false + }; + r.dragData = { + possibleDragElements: [] + }; + r.touchData = { + start: null, + capture: false, + // These 3 fields related to tap, taphold events + startPosition: [null, null, null, null, null, null], + singleTouchStartTime: null, + singleTouchMoved: true, + now: [null, null, null, null, null, null], + earlier: [null, null, null, null, null, null] + }; + r.redraws = 0; + r.showFps = options.showFps; + r.debug = options.debug; + r.hideEdgesOnViewport = options.hideEdgesOnViewport; + r.textureOnViewport = options.textureOnViewport; + r.wheelSensitivity = options.wheelSensitivity; + r.motionBlurEnabled = options.motionBlur; // on by default + + r.forcedPixelRatio = number(options.pixelRatio) ? options.pixelRatio : null; + r.motionBlur = options.motionBlur; // for initial kick off + + r.motionBlurOpacity = options.motionBlurOpacity; + r.motionBlurTransparency = 1 - r.motionBlurOpacity; + r.motionBlurPxRatio = 1; + r.mbPxRBlurry = 1; //0.8; + + r.minMbLowQualFrames = 4; + r.fullQualityMb = false; + r.clearedForMotionBlur = []; + r.desktopTapThreshold = options.desktopTapThreshold; + r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold; + r.touchTapThreshold = options.touchTapThreshold; + r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold; + r.tapholdDuration = 500; + r.bindings = []; + r.beforeRenderCallbacks = []; + r.beforeRenderPriorities = { + // higher priority execs before lower one + animations: 400, + eleCalcs: 300, + eleTxrDeq: 200, + lyrTxrDeq: 150, + lyrTxrSkip: 100 + }; + r.registerNodeShapes(); + r.registerArrowShapes(); + r.registerCalculationListeners(); +}; + +BRp$f.notify = function (eventName, eles) { + var r = this; + var cy = r.cy; // the renderer can't be notified after it's destroyed + + if (this.destroyed) { + return; + } + + if (eventName === 'init') { + r.load(); + return; + } + + if (eventName === 'destroy') { + r.destroy(); + return; + } + + if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') { + r.invalidateCachedZSortedEles(); + } + + if (eventName === 'viewport') { + r.redrawHint('select', true); + } + + if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') { + r.invalidateContainerClientCoordsCache(); + r.matchCanvasSize(r.container); + } + + r.redrawHint('eles', true); + r.redrawHint('drag', true); + this.startRenderLoop(); + this.redraw(); +}; + +BRp$f.destroy = function () { + var r = this; + r.destroyed = true; + r.cy.stopAnimationLoop(); + + for (var i = 0; i < r.bindings.length; i++) { + var binding = r.bindings[i]; + var b = binding; + var tgt = b.target; + (tgt.off || tgt.removeEventListener).apply(tgt, b.args); + } + + r.bindings = []; + r.beforeRenderCallbacks = []; + r.onUpdateEleCalcsFns = []; + + if (r.removeObserver) { + r.removeObserver.disconnect(); + } + + if (r.styleObserver) { + r.styleObserver.disconnect(); + } + + if (r.resizeObserver) { + r.resizeObserver.disconnect(); + } + + if (r.labelCalcDiv) { + try { + document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef + } catch (e) {// ie10 issue #1014 + } + } +}; + +BRp$f.isHeadless = function () { + return false; +}; + +[BRp, BRp$a, BRp$b, BRp$c, BRp$d, BRp$e].forEach(function (props) { + extend(BRp$f, props); +}); + +var fullFpsTime = 1000 / 60; // assume 60 frames per second + +var defs = { + setupDequeueing: function setupDequeueing(opts) { + return function setupDequeueingImpl() { + var self = this; + var r = this.renderer; + + if (self.dequeueingSetup) { + return; + } else { + self.dequeueingSetup = true; + } + + var queueRedraw = util(function () { + r.redrawHint('eles', true); + r.redrawHint('drag', true); + r.redraw(); + }, opts.deqRedrawThreshold); + + var dequeue = function dequeue(willDraw, frameStartTime) { + var startTime = performanceNow(); + var avgRenderTime = r.averageRedrawTime; + var renderTime = r.lastRedrawTime; + var deqd = []; + var extent = r.cy.extent(); + var pixelRatio = r.getPixelRatio(); // if we aren't in a tick that causes a draw, then the rendered style + // queue won't automatically be flushed before dequeueing starts + + if (!willDraw) { + r.flushRenderedStyleQueue(); + } + + while (true) { + // eslint-disable-line no-constant-condition + var now = performanceNow(); + var duration = now - startTime; + var frameDuration = now - frameStartTime; + + if (renderTime < fullFpsTime) { + // if we're rendering faster than the ideal fps, then do dequeueing + // during all of the remaining frame time + var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0); + + if (frameDuration >= opts.deqFastCost * timeAvailable) { + break; + } + } else { + if (willDraw) { + if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) { + break; + } + } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) { + break; + } + } + + var thisDeqd = opts.deq(self, pixelRatio, extent); + + if (thisDeqd.length > 0) { + for (var i = 0; i < thisDeqd.length; i++) { + deqd.push(thisDeqd[i]); + } + } else { + break; + } + } // callbacks on dequeue + + + if (deqd.length > 0) { + opts.onDeqd(self, deqd); + + if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) { + queueRedraw(); + } + } + }; + + var priority = opts.priority || noop; + r.beforeRender(dequeue, priority(self)); + }; + } +}; + +// Uses keys so elements may share the same cache. + +var ElementTextureCacheLookup = +/*#__PURE__*/ +function () { + function ElementTextureCacheLookup(getKey) { + var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify; + + _classCallCheck(this, ElementTextureCacheLookup); + + this.idsByKey = new Map$1(); + this.keyForId = new Map$1(); + this.cachesByLvl = new Map$1(); + this.lvls = []; + this.getKey = getKey; + this.doesEleInvalidateKey = doesEleInvalidateKey; + } + + _createClass(ElementTextureCacheLookup, [{ + key: "getIdsFor", + value: function getIdsFor(key) { + if (key == null) { + error("Can not get id list for null key"); + } + + var idsByKey = this.idsByKey; + var ids = this.idsByKey.get(key); + + if (!ids) { + ids = new Set$1(); + idsByKey.set(key, ids); + } + + return ids; + } + }, { + key: "addIdForKey", + value: function addIdForKey(key, id) { + if (key != null) { + this.getIdsFor(key).add(id); + } + } + }, { + key: "deleteIdForKey", + value: function deleteIdForKey(key, id) { + if (key != null) { + this.getIdsFor(key)["delete"](id); + } + } + }, { + key: "getNumberOfIdsForKey", + value: function getNumberOfIdsForKey(key) { + if (key == null) { + return 0; + } else { + return this.getIdsFor(key).size; + } + } + }, { + key: "updateKeyMappingFor", + value: function updateKeyMappingFor(ele) { + var id = ele.id(); + var prevKey = this.keyForId.get(id); + var currKey = this.getKey(ele); + this.deleteIdForKey(prevKey, id); + this.addIdForKey(currKey, id); + this.keyForId.set(id, currKey); + } + }, { + key: "deleteKeyMappingFor", + value: function deleteKeyMappingFor(ele) { + var id = ele.id(); + var prevKey = this.keyForId.get(id); + this.deleteIdForKey(prevKey, id); + this.keyForId["delete"](id); + } + }, { + key: "keyHasChangedFor", + value: function keyHasChangedFor(ele) { + var id = ele.id(); + var prevKey = this.keyForId.get(id); + var newKey = this.getKey(ele); + return prevKey !== newKey; + } + }, { + key: "isInvalid", + value: function isInvalid(ele) { + return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele); + } + }, { + key: "getCachesAt", + value: function getCachesAt(lvl) { + var cachesByLvl = this.cachesByLvl, + lvls = this.lvls; + var caches = cachesByLvl.get(lvl); + + if (!caches) { + caches = new Map$1(); + cachesByLvl.set(lvl, caches); + lvls.push(lvl); + } + + return caches; + } + }, { + key: "getCache", + value: function getCache(key, lvl) { + return this.getCachesAt(lvl).get(key); + } + }, { + key: "get", + value: function get(ele, lvl) { + var key = this.getKey(ele); + var cache = this.getCache(key, lvl); // getting for an element may need to add to the id list b/c eles can share keys + + if (cache != null) { + this.updateKeyMappingFor(ele); + } + + return cache; + } + }, { + key: "getForCachedKey", + value: function getForCachedKey(ele, lvl) { + var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key + + var cache = this.getCache(key, lvl); + return cache; + } + }, { + key: "hasCache", + value: function hasCache(key, lvl) { + return this.getCachesAt(lvl).has(key); + } + }, { + key: "has", + value: function has(ele, lvl) { + var key = this.getKey(ele); + return this.hasCache(key, lvl); + } + }, { + key: "setCache", + value: function setCache(key, lvl, cache) { + cache.key = key; + this.getCachesAt(lvl).set(key, cache); + } + }, { + key: "set", + value: function set(ele, lvl, cache) { + var key = this.getKey(ele); + this.setCache(key, lvl, cache); + this.updateKeyMappingFor(ele); + } + }, { + key: "deleteCache", + value: function deleteCache(key, lvl) { + this.getCachesAt(lvl)["delete"](key); + } + }, { + key: "delete", + value: function _delete(ele, lvl) { + var key = this.getKey(ele); + this.deleteCache(key, lvl); + } + }, { + key: "invalidateKey", + value: function invalidateKey(key) { + var _this = this; + + this.lvls.forEach(function (lvl) { + return _this.deleteCache(key, lvl); + }); + } // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key) + + }, { + key: "invalidate", + value: function invalidate(ele) { + var id = ele.id(); + var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key) + + this.deleteKeyMappingFor(ele); + var entireKeyInvalidated = this.doesEleInvalidateKey(ele); + + if (entireKeyInvalidated) { + // clear mapping for current key + this.invalidateKey(key); + } + + return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0; + } + }]); + + return ElementTextureCacheLookup; +}(); + +var minTxrH = 25; // the size of the texture cache for small height eles (special case) + +var txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up + +var minLvl = -4; // when scaling smaller than that we don't need to re-render + +var maxLvl = 3; // when larger than this scale just render directly (caching is not helpful) + +var maxZoom = 7.99; // beyond this zoom level, layered textures are not used + +var eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps + +var defTxrWidth = 1024; // default/minimum texture width + +var maxTxrW = 1024; // the maximum width of a texture + +var maxTxrH = 1024; // the maximum height of a texture + +var minUtility = 0.2; // if usage of texture is less than this, it is retired + +var maxFullness = 0.8; // fullness of texture after which queue removal is checked + +var maxFullnessChecks = 10; // dequeued after this many checks + +var deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame + +var deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time + +var deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing + +var deqFastCost = 0.9; // % of frame time to be used when >60fps + +var deqRedrawThreshold = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile + +var maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch + +var getTxrReasons = { + dequeue: 'dequeue', + downscale: 'downscale', + highQuality: 'highQuality' +}; +var initDefaults = defaults({ + getKey: null, + doesEleInvalidateKey: falsify, + drawElement: null, + getBoundingBox: null, + getRotationPoint: null, + getRotationOffset: null, + isVisible: trueify, + allowEdgeTxrCaching: true, + allowParentTxrCaching: true +}); + +var ElementTextureCache = function ElementTextureCache(renderer, initOptions) { + var self = this; + self.renderer = renderer; + self.onDequeues = []; + var opts = initDefaults(initOptions); + extend(self, opts); + self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey); + self.setupDequeueing(); +}; + +var ETCp = ElementTextureCache.prototype; +ETCp.reasons = getTxrReasons; // the list of textures in which new subtextures for elements can be placed + +ETCp.getTextureQueue = function (txrH) { + var self = this; + self.eleImgCaches = self.eleImgCaches || {}; + return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || []; +}; // the list of usused textures which can be recycled (in use in texture queue) + + +ETCp.getRetiredTextureQueue = function (txrH) { + var self = this; + var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {}; + var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || []; + return rtxtrQ; +}; // queue of element draw requests at different scale levels + + +ETCp.getElementQueue = function () { + var self = this; + var q = self.eleCacheQueue = self.eleCacheQueue || new Heap(function (a, b) { + return b.reqs - a.reqs; + }); + return q; +}; // queue of element draw requests at different scale levels (element id lookup) + + +ETCp.getElementKeyToQueue = function () { + var self = this; + var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {}; + return k2q; +}; + +ETCp.getElement = function (ele, bb, pxRatio, lvl, reason) { + var self = this; + var r = this.renderer; + var zoom = r.cy.zoom(); + var lookup = this.lookup; + + if (bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible()) { + return null; + } + + if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) { + return null; + } + + if (lvl == null) { + lvl = Math.ceil(log2(zoom * pxRatio)); + } + + if (lvl < minLvl) { + lvl = minLvl; + } else if (zoom >= maxZoom || lvl > maxLvl) { + return null; + } + + var scale = Math.pow(2, lvl); + var eleScaledH = bb.h * scale; + var eleScaledW = bb.w * scale; + var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale); + + if (!this.isVisible(ele, scaledLabelShown)) { + return null; + } + + var eleCache = lookup.get(ele, lvl); // if this get was on an unused/invalidated cache, then restore the texture usage metric + + if (eleCache && eleCache.invalidated) { + eleCache.invalidated = false; + eleCache.texture.invalidatedWidth -= eleCache.width; + } + + if (eleCache) { + return eleCache; + } + + var txrH; // which texture height this ele belongs to + + if (eleScaledH <= minTxrH) { + txrH = minTxrH; + } else if (eleScaledH <= txrStepH) { + txrH = txrStepH; + } else { + txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH; + } + + if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) { + return null; // caching large elements is not efficient + } + + var txrQ = self.getTextureQueue(txrH); // first try the second last one in case it has space at the end + + var txr = txrQ[txrQ.length - 2]; + + var addNewTxr = function addNewTxr() { + return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW); + }; // try the last one if there is no second last one + + + if (!txr) { + txr = txrQ[txrQ.length - 1]; + } // if the last one doesn't exist, we need a first one + + + if (!txr) { + txr = addNewTxr(); + } // if there's no room in the current texture, we need a new one + + + if (txr.width - txr.usedWidth < eleScaledW) { + txr = addNewTxr(); + } + + var scalableFrom = function scalableFrom(otherCache) { + return otherCache && otherCache.scaledLabelShown === scaledLabelShown; + }; + + var deqing = reason && reason === getTxrReasons.dequeue; + var highQualityReq = reason && reason === getTxrReasons.highQuality; + var downscaleReq = reason && reason === getTxrReasons.downscale; + var higherCache; // the nearest cache with a higher level + + for (var l = lvl + 1; l <= maxLvl; l++) { + var c = lookup.get(ele, l); + + if (c) { + higherCache = c; + break; + } + } + + var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null; + + var downscale = function downscale() { + txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH); + }; // reset ele area in texture + + + txr.context.setTransform(1, 0, 0, 1, 0, 0); + txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH); + + if (scalableFrom(oneUpCache)) { + // then we can relatively cheaply rescale the existing image w/o rerendering + downscale(); + } else if (scalableFrom(higherCache)) { + // then use the higher cache for now and queue the next level down + // to cheaply scale towards the smaller level + if (highQualityReq) { + for (var _l = higherCache.level; _l > lvl; _l--) { + oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale); + } + + downscale(); + } else { + self.queueElement(ele, higherCache.level - 1); + return higherCache; + } + } else { + var lowerCache; // the nearest cache with a lower level + + if (!deqing && !highQualityReq && !downscaleReq) { + for (var _l2 = lvl - 1; _l2 >= minLvl; _l2--) { + var _c = lookup.get(ele, _l2); + + if (_c) { + lowerCache = _c; + break; + } + } + } + + if (scalableFrom(lowerCache)) { + // then use the lower quality cache for now and queue the better one for later + self.queueElement(ele, lvl); + return lowerCache; + } + + txr.context.translate(txr.usedWidth, 0); + txr.context.scale(scale, scale); + this.drawElement(txr.context, ele, bb, scaledLabelShown, false); + txr.context.scale(1 / scale, 1 / scale); + txr.context.translate(-txr.usedWidth, 0); + } + + eleCache = { + x: txr.usedWidth, + texture: txr, + level: lvl, + scale: scale, + width: eleScaledW, + height: eleScaledH, + scaledLabelShown: scaledLabelShown + }; + txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing); + txr.eleCaches.push(eleCache); + lookup.set(ele, lvl, eleCache); + self.checkTextureFullness(txr); + return eleCache; +}; + +ETCp.invalidateElements = function (eles) { + for (var i = 0; i < eles.length; i++) { + this.invalidateElement(eles[i]); + } +}; + +ETCp.invalidateElement = function (ele) { + var self = this; + var lookup = self.lookup; + var caches = []; + var invalid = lookup.isInvalid(ele); + + if (!invalid) { + return; // override the invalidation request if the element key has not changed + } + + for (var lvl = minLvl; lvl <= maxLvl; lvl++) { + var cache = lookup.getForCachedKey(ele, lvl); + + if (cache) { + caches.push(cache); + } + } + + var noOtherElesUseCache = lookup.invalidate(ele); + + if (noOtherElesUseCache) { + for (var i = 0; i < caches.length; i++) { + var _cache = caches[i]; + var txr = _cache.texture; // remove space from the texture it belongs to + + txr.invalidatedWidth += _cache.width; // mark the cache as invalidated + + _cache.invalidated = true; // retire the texture if its utility is low + + self.checkTextureUtility(txr); + } + } // remove from queue since the old req was for the old state + + + self.removeFromQueue(ele); +}; + +ETCp.checkTextureUtility = function (txr) { + // invalidate all entries in the cache if the cache size is small + if (txr.invalidatedWidth >= minUtility * txr.width) { + this.retireTexture(txr); + } +}; + +ETCp.checkTextureFullness = function (txr) { + // if texture has been mostly filled and passed over several times, remove + // it from the queue so we don't need to waste time looking at it to put new things + var self = this; + var txrQ = self.getTextureQueue(txr.height); + + if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) { + removeFromArray(txrQ, txr); + } else { + txr.fullnessChecks++; + } +}; + +ETCp.retireTexture = function (txr) { + var self = this; + var txrH = txr.height; + var txrQ = self.getTextureQueue(txrH); + var lookup = this.lookup; // retire the texture from the active / searchable queue: + + removeFromArray(txrQ, txr); + txr.retired = true; // remove the refs from the eles to the caches: + + var eleCaches = txr.eleCaches; + + for (var i = 0; i < eleCaches.length; i++) { + var eleCache = eleCaches[i]; + lookup.deleteCache(eleCache.key, eleCache.level); + } + + clearArray(eleCaches); // add the texture to a retired queue so it can be recycled in future: + + var rtxtrQ = self.getRetiredTextureQueue(txrH); + rtxtrQ.push(txr); +}; + +ETCp.addTexture = function (txrH, minW) { + var self = this; + var txrQ = self.getTextureQueue(txrH); + var txr = {}; + txrQ.push(txr); + txr.eleCaches = []; + txr.height = txrH; + txr.width = Math.max(defTxrWidth, minW); + txr.usedWidth = 0; + txr.invalidatedWidth = 0; + txr.fullnessChecks = 0; + txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height); + txr.context = txr.canvas.getContext('2d'); + return txr; +}; + +ETCp.recycleTexture = function (txrH, minW) { + var self = this; + var txrQ = self.getTextureQueue(txrH); + var rtxtrQ = self.getRetiredTextureQueue(txrH); + + for (var i = 0; i < rtxtrQ.length; i++) { + var txr = rtxtrQ[i]; + + if (txr.width >= minW) { + txr.retired = false; + txr.usedWidth = 0; + txr.invalidatedWidth = 0; + txr.fullnessChecks = 0; + clearArray(txr.eleCaches); + txr.context.setTransform(1, 0, 0, 1, 0, 0); + txr.context.clearRect(0, 0, txr.width, txr.height); + removeFromArray(rtxtrQ, txr); + txrQ.push(txr); + return txr; + } + } +}; + +ETCp.queueElement = function (ele, lvl) { + var self = this; + var q = self.getElementQueue(); + var k2q = self.getElementKeyToQueue(); + var key = this.getKey(ele); + var existingReq = k2q[key]; + + if (existingReq) { + // use the max lvl b/c in between lvls are cheap to make + existingReq.level = Math.max(existingReq.level, lvl); + existingReq.eles.merge(ele); + existingReq.reqs++; + q.updateItem(existingReq); + } else { + var req = { + eles: ele.spawn().merge(ele), + level: lvl, + reqs: 1, + key: key + }; + q.push(req); + k2q[key] = req; + } +}; + +ETCp.dequeue = function (pxRatio +/*, extent*/ +) { + var self = this; + var q = self.getElementQueue(); + var k2q = self.getElementKeyToQueue(); + var dequeued = []; + var lookup = self.lookup; + + for (var i = 0; i < maxDeqSize; i++) { + if (q.size() > 0) { + var req = q.pop(); + var key = req.key; + var ele = req.eles[0]; // all eles have the same key + + var cacheExists = lookup.hasCache(ele, req.level); // clear out the key to req lookup + + k2q[key] = null; // dequeueing isn't necessary with an existing cache + + if (cacheExists) { + continue; + } + + dequeued.push(req); + var bb = self.getBoundingBox(ele); + self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue); + } else { + break; + } + } + + return dequeued; +}; + +ETCp.removeFromQueue = function (ele) { + var self = this; + var q = self.getElementQueue(); + var k2q = self.getElementKeyToQueue(); + var key = this.getKey(ele); + var req = k2q[key]; + + if (req != null) { + if (req.eles.length === 1) { + // remove if last ele in the req + // bring to front of queue + req.reqs = MAX_INT; + q.updateItem(req); + q.pop(); // remove from queue + + k2q[key] = null; // remove from lookup map + } else { + // otherwise just remove ele from req + req.eles.unmerge(ele); + } + } +}; + +ETCp.onDequeue = function (fn) { + this.onDequeues.push(fn); +}; + +ETCp.offDequeue = function (fn) { + removeFromArray(this.onDequeues, fn); +}; + +ETCp.setupDequeueing = defs.setupDequeueing({ + deqRedrawThreshold: deqRedrawThreshold, + deqCost: deqCost, + deqAvgCost: deqAvgCost, + deqNoDrawCost: deqNoDrawCost, + deqFastCost: deqFastCost, + deq: function deq(self, pxRatio, extent) { + return self.dequeue(pxRatio, extent); + }, + onDeqd: function onDeqd(self, deqd) { + for (var i = 0; i < self.onDequeues.length; i++) { + var fn = self.onDequeues[i]; + fn(deqd); + } + }, + shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) { + for (var i = 0; i < deqd.length; i++) { + var eles = deqd[i].eles; + + for (var j = 0; j < eles.length; j++) { + var bb = eles[j].boundingBox(); + + if (boundingBoxesIntersect(bb, extent)) { + return true; + } + } + } + + return false; + }, + priority: function priority(self) { + return self.renderer.beforeRenderPriorities.eleTxrDeq; + } +}); + +var defNumLayers = 1; // default number of layers to use + +var minLvl$1 = -4; // when scaling smaller than that we don't need to re-render + +var maxLvl$1 = 2; // when larger than this scale just render directly (caching is not helpful) + +var maxZoom$1 = 3.99; // beyond this zoom level, layered textures are not used + +var deqRedrawThreshold$1 = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile + +var refineEleDebounceTime = 50; // time to debounce sharper ele texture updates + +var deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame + +var deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time + +var deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing + +var deqFastCost$1 = 0.9; // % of frame time to be used when >60fps + +var maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch + +var invalidThreshold = 250; // time threshold for disabling b/c of invalidations + +var maxLayerArea = 4000 * 4000; // layers can't be bigger than this + +var useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm) +// var log = function(){ console.log.apply( console, arguments ); }; + +var LayeredTextureCache = function LayeredTextureCache(renderer) { + var self = this; + var r = self.renderer = renderer; + var cy = r.cy; + self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ] + + self.firstGet = true; + self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold; + self.skipping = false; + self.eleTxrDeqs = cy.collection(); + self.scheduleElementRefinement = util(function () { + self.refineElementTextures(self.eleTxrDeqs); + self.eleTxrDeqs.unmerge(self.eleTxrDeqs); + }, refineEleDebounceTime); + r.beforeRender(function (willDraw, now) { + if (now - self.lastInvalidationTime <= invalidThreshold) { + self.skipping = true; + } else { + self.skipping = false; + } + }, r.beforeRenderPriorities.lyrTxrSkip); + + var qSort = function qSort(a, b) { + return b.reqs - a.reqs; + }; + + self.layersQueue = new Heap(qSort); + self.setupDequeueing(); +}; + +var LTCp = LayeredTextureCache.prototype; +var layerIdPool = 0; +var MAX_INT$1 = Math.pow(2, 53) - 1; + +LTCp.makeLayer = function (bb, lvl) { + var scale = Math.pow(2, lvl); + var w = Math.ceil(bb.w * scale); + var h = Math.ceil(bb.h * scale); + var canvas = this.renderer.makeOffscreenCanvas(w, h); + var layer = { + id: layerIdPool = ++layerIdPool % MAX_INT$1, + bb: bb, + level: lvl, + width: w, + height: h, + canvas: canvas, + context: canvas.getContext('2d'), + eles: [], + elesQueue: [], + reqs: 0 + }; // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level); + + var cxt = layer.context; + var dx = -layer.bb.x1; + var dy = -layer.bb.y1; // do the transform on creation to save cycles (it's the same for all eles) + + cxt.scale(scale, scale); + cxt.translate(dx, dy); + return layer; +}; + +LTCp.getLayers = function (eles, pxRatio, lvl) { + var self = this; + var r = self.renderer; + var cy = r.cy; + var zoom = cy.zoom(); + var firstGet = self.firstGet; + self.firstGet = false; // log('--\nget layers with %s eles', eles.length); + //log eles.map(function(ele){ return ele.id() }) ); + + if (lvl == null) { + lvl = Math.ceil(log2(zoom * pxRatio)); + + if (lvl < minLvl$1) { + lvl = minLvl$1; + } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) { + return null; + } + } + + self.validateLayersElesOrdering(lvl, eles); + var layersByLvl = self.layersByLevel; + var scale = Math.pow(2, lvl); + var layers = layersByLvl[lvl] = layersByLvl[lvl] || []; + var bb; + var lvlComplete = self.levelIsComplete(lvl, eles); + var tmpLayers; + + var checkTempLevels = function checkTempLevels() { + var canUseAsTmpLvl = function canUseAsTmpLvl(l) { + self.validateLayersElesOrdering(l, eles); + + if (self.levelIsComplete(l, eles)) { + tmpLayers = layersByLvl[l]; + return true; + } + }; + + var checkLvls = function checkLvls(dir) { + if (tmpLayers) { + return; + } + + for (var l = lvl + dir; minLvl$1 <= l && l <= maxLvl$1; l += dir) { + if (canUseAsTmpLvl(l)) { + break; + } + } + }; + + checkLvls(+1); + checkLvls(-1); // remove the invalid layers; they will be replaced as needed later in this function + + for (var i = layers.length - 1; i >= 0; i--) { + var layer = layers[i]; + + if (layer.invalid) { + removeFromArray(layers, layer); + } + } + }; + + if (!lvlComplete) { + // if the current level is incomplete, then use the closest, best quality layerset temporarily + // and later queue the current layerset so we can get the proper quality level soon + checkTempLevels(); + } else { + // log('level complete, using existing layers\n--'); + return layers; + } + + var getBb = function getBb() { + if (!bb) { + bb = makeBoundingBox(); + + for (var i = 0; i < eles.length; i++) { + updateBoundingBox(bb, eles[i].boundingBox()); + } + } + + return bb; + }; + + var makeLayer = function makeLayer(opts) { + opts = opts || {}; + var after = opts.after; + getBb(); + var area = bb.w * scale * (bb.h * scale); + + if (area > maxLayerArea) { + return null; + } + + var layer = self.makeLayer(bb, lvl); + + if (after != null) { + var index = layers.indexOf(after) + 1; + layers.splice(index, 0, layer); + } else if (opts.insert === undefined || opts.insert) { + // no after specified => first layer made so put at start + layers.unshift(layer); + } // if( tmpLayers ){ + //self.queueLayer( layer ); + // } + + + return layer; + }; + + if (self.skipping && !firstGet) { + // log('skip layers'); + return null; + } // log('do layers'); + + + var layer = null; + var maxElesPerLayer = eles.length / defNumLayers; + var allowLazyQueueing = !firstGet; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + var rs = ele._private.rscratch; + var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; // log('look at ele', ele.id()); + + var existingLayer = caches[lvl]; + + if (existingLayer) { + // reuse layer for later eles + // log('reuse layer for', ele.id()); + layer = existingLayer; + continue; + } + + if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) { + // log('make new layer for ele %s', ele.id()); + layer = makeLayer({ + insert: true, + after: layer + }); // if now layer can be built then we can't use layers at this level + + if (!layer) { + return null; + } // log('new layer with id %s', layer.id); + + } + + if (tmpLayers || allowLazyQueueing) { + // log('queue ele %s in layer %s', ele.id(), layer.id); + self.queueLayer(layer, ele); + } else { + // log('draw ele %s in layer %s', ele.id(), layer.id); + self.drawEleInLayer(layer, ele, lvl, pxRatio); + } + + layer.eles.push(ele); + caches[lvl] = layer; + } // log('--'); + + + if (tmpLayers) { + // then we only queued the current layerset and can't draw it yet + return tmpLayers; + } + + if (allowLazyQueueing) { + // log('lazy queue level', lvl); + return null; + } + + return layers; +}; // a layer may want to use an ele cache of a higher level to avoid blurriness +// so the layer level might not equal the ele level + + +LTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) { + return lvl; +}; + +LTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) { + var self = this; + var r = this.renderer; + var context = layer.context; + var bb = ele.boundingBox(); + + if (bb.w === 0 || bb.h === 0 || !ele.visible()) { + return; + } + + lvl = self.getEleLevelForLayerLevel(lvl, pxRatio); + + { + r.setImgSmoothing(context, false); + } + + { + r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs); + } + + { + r.setImgSmoothing(context, true); + } +}; + +LTCp.levelIsComplete = function (lvl, eles) { + var self = this; + var layers = self.layersByLevel[lvl]; + + if (!layers || layers.length === 0) { + return false; + } + + var numElesInLayers = 0; + + for (var i = 0; i < layers.length; i++) { + var layer = layers[i]; // if there are any eles needed to be drawn yet, the level is not complete + + if (layer.reqs > 0) { + return false; + } // if the layer is invalid, the level is not complete + + + if (layer.invalid) { + return false; + } + + numElesInLayers += layer.eles.length; + } // we should have exactly the number of eles passed in to be complete + + + if (numElesInLayers !== eles.length) { + return false; + } + + return true; +}; + +LTCp.validateLayersElesOrdering = function (lvl, eles) { + var layers = this.layersByLevel[lvl]; + + if (!layers) { + return; + } // if in a layer the eles are not in the same order, then the layer is invalid + // (i.e. there is an ele in between the eles in the layer) + + + for (var i = 0; i < layers.length; i++) { + var layer = layers[i]; + var offset = -1; // find the offset + + for (var j = 0; j < eles.length; j++) { + if (layer.eles[0] === eles[j]) { + offset = j; + break; + } + } + + if (offset < 0) { + // then the layer has nonexistant elements and is invalid + this.invalidateLayer(layer); + continue; + } // the eles in the layer must be in the same continuous order, else the layer is invalid + + + var o = offset; + + for (var j = 0; j < layer.eles.length; j++) { + if (layer.eles[j] !== eles[o + j]) { + // log('invalidate based on ordering', layer.id); + this.invalidateLayer(layer); + break; + } + } + } +}; + +LTCp.updateElementsInLayers = function (eles, update) { + var self = this; + var isEles = element(eles[0]); // collect udpated elements (cascaded from the layers) and update each + // layer itself along the way + + for (var i = 0; i < eles.length; i++) { + var req = isEles ? null : eles[i]; + var ele = isEles ? eles[i] : eles[i].ele; + var rs = ele._private.rscratch; + var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; + + for (var l = minLvl$1; l <= maxLvl$1; l++) { + var layer = caches[l]; + + if (!layer) { + continue; + } // if update is a request from the ele cache, then it affects only + // the matching level + + + if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) { + continue; + } + + update(layer, ele, req); + } + } +}; + +LTCp.haveLayers = function () { + var self = this; + var haveLayers = false; + + for (var l = minLvl$1; l <= maxLvl$1; l++) { + var layers = self.layersByLevel[l]; + + if (layers && layers.length > 0) { + haveLayers = true; + break; + } + } + + return haveLayers; +}; + +LTCp.invalidateElements = function (eles) { + var self = this; + + if (eles.length === 0) { + return; + } + + self.lastInvalidationTime = performanceNow(); // log('update invalidate layer time from eles'); + + if (eles.length === 0 || !self.haveLayers()) { + return; + } + + self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) { + self.invalidateLayer(layer); + }); +}; + +LTCp.invalidateLayer = function (layer) { + // log('update invalidate layer time'); + this.lastInvalidationTime = performanceNow(); + + if (layer.invalid) { + return; + } // save cycles + + + var lvl = layer.level; + var eles = layer.eles; + var layers = this.layersByLevel[lvl]; // log('invalidate layer', layer.id ); + + removeFromArray(layers, layer); // layer.eles = []; + + layer.elesQueue = []; + layer.invalid = true; + + if (layer.replacement) { + layer.replacement.invalid = true; + } + + for (var i = 0; i < eles.length; i++) { + var caches = eles[i]._private.rscratch.imgLayerCaches; + + if (caches) { + caches[lvl] = null; + } + } +}; + +LTCp.refineElementTextures = function (eles) { + var self = this; // log('refine', eles.length); + + self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) { + var rLyr = layer.replacement; + + if (!rLyr) { + rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level); + rLyr.replaces = layer; + rLyr.eles = layer.eles; // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level); + } + + if (!rLyr.reqs) { + for (var i = 0; i < rLyr.eles.length; i++) { + self.queueLayer(rLyr, rLyr.eles[i]); + } // log('queue replacement layer refinement', rLyr.id); + + } + }); +}; + +LTCp.enqueueElementRefinement = function (ele) { + + this.eleTxrDeqs.merge(ele); + this.scheduleElementRefinement(); +}; + +LTCp.queueLayer = function (layer, ele) { + var self = this; + var q = self.layersQueue; + var elesQ = layer.elesQueue; + var hasId = elesQ.hasId = elesQ.hasId || {}; // if a layer is going to be replaced, queuing is a waste of time + + if (layer.replacement) { + return; + } + + if (ele) { + if (hasId[ele.id()]) { + return; + } + + elesQ.push(ele); + hasId[ele.id()] = true; + } + + if (layer.reqs) { + layer.reqs++; + q.updateItem(layer); + } else { + layer.reqs = 1; + q.push(layer); + } +}; + +LTCp.dequeue = function (pxRatio) { + var self = this; + var q = self.layersQueue; + var deqd = []; + var eleDeqs = 0; + + while (eleDeqs < maxDeqSize$1) { + if (q.size() === 0) { + break; + } + + var layer = q.peek(); // if a layer has been or will be replaced, then don't waste time with it + + if (layer.replacement) { + // log('layer %s in queue skipped b/c it already has a replacement', layer.id); + q.pop(); + continue; + } // if this is a replacement layer that has been superceded, then forget it + + + if (layer.replaces && layer !== layer.replaces.replacement) { + // log('layer is no longer the most uptodate replacement; dequeued', layer.id) + q.pop(); + continue; + } + + if (layer.invalid) { + // log('replacement layer %s is invalid; dequeued', layer.id); + q.pop(); + continue; + } + + var ele = layer.elesQueue.shift(); + + if (ele) { + // log('dequeue layer %s', layer.id); + self.drawEleInLayer(layer, ele, layer.level, pxRatio); + eleDeqs++; + } + + if (deqd.length === 0) { + // we need only one entry in deqd to queue redrawing etc + deqd.push(true); + } // if the layer has all its eles done, then remove from the queue + + + if (layer.elesQueue.length === 0) { + q.pop(); + layer.reqs = 0; // log('dequeue of layer %s complete', layer.id); + // when a replacement layer is dequeued, it replaces the old layer in the level + + if (layer.replaces) { + self.applyLayerReplacement(layer); + } + + self.requestRedraw(); + } + } + + return deqd; +}; + +LTCp.applyLayerReplacement = function (layer) { + var self = this; + var layersInLevel = self.layersByLevel[layer.level]; + var replaced = layer.replaces; + var index = layersInLevel.indexOf(replaced); // if the replaced layer is not in the active list for the level, then replacing + // refs would be a mistake (i.e. overwriting the true active layer) + + if (index < 0 || replaced.invalid) { + // log('replacement layer would have no effect', layer.id); + return; + } + + layersInLevel[index] = layer; // replace level ref + // replace refs in eles + + for (var i = 0; i < layer.eles.length; i++) { + var _p = layer.eles[i]._private; + var cache = _p.imgLayerCaches = _p.imgLayerCaches || {}; + + if (cache) { + cache[layer.level] = layer; + } + } // log('apply replacement layer %s over %s', layer.id, replaced.id); + + + self.requestRedraw(); +}; + +LTCp.requestRedraw = util(function () { + var r = this.renderer; + r.redrawHint('eles', true); + r.redrawHint('drag', true); + r.redraw(); +}, 100); +LTCp.setupDequeueing = defs.setupDequeueing({ + deqRedrawThreshold: deqRedrawThreshold$1, + deqCost: deqCost$1, + deqAvgCost: deqAvgCost$1, + deqNoDrawCost: deqNoDrawCost$1, + deqFastCost: deqFastCost$1, + deq: function deq(self, pxRatio) { + return self.dequeue(pxRatio); + }, + onDeqd: noop, + shouldRedraw: trueify, + priority: function priority(self) { + return self.renderer.beforeRenderPriorities.lyrTxrDeq; + } +}); + +var CRp = {}; +var impl; + +function polygon(context, points) { + for (var i = 0; i < points.length; i++) { + var pt = points[i]; + context.lineTo(pt.x, pt.y); + } +} + +function triangleBackcurve(context, points, controlPoint) { + var firstPt; + + for (var i = 0; i < points.length; i++) { + var pt = points[i]; + + if (i === 0) { + firstPt = pt; + } + + context.lineTo(pt.x, pt.y); + } + + context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y); +} + +function triangleTee(context, trianglePoints, teePoints) { + if (context.beginPath) { + context.beginPath(); + } + + var triPts = trianglePoints; + + for (var i = 0; i < triPts.length; i++) { + var pt = triPts[i]; + context.lineTo(pt.x, pt.y); + } + + var teePts = teePoints; + var firstTeePt = teePoints[0]; + context.moveTo(firstTeePt.x, firstTeePt.y); + + for (var i = 1; i < teePts.length; i++) { + var pt = teePts[i]; + context.lineTo(pt.x, pt.y); + } + + if (context.closePath) { + context.closePath(); + } +} + +function circleTriangle(context, trianglePoints, rx, ry, r) { + if (context.beginPath) { + context.beginPath(); + } + + context.arc(rx, ry, r, 0, Math.PI * 2, false); + var triPts = trianglePoints; + var firstTrPt = triPts[0]; + context.moveTo(firstTrPt.x, firstTrPt.y); + + for (var i = 0; i < triPts.length; i++) { + var pt = triPts[i]; + context.lineTo(pt.x, pt.y); + } + + if (context.closePath) { + context.closePath(); + } +} + +function circle(context, rx, ry, r) { + context.arc(rx, ry, r, 0, Math.PI * 2, false); +} + +CRp.arrowShapeImpl = function (name) { + return (impl || (impl = { + 'polygon': polygon, + 'triangle-backcurve': triangleBackcurve, + 'triangle-tee': triangleTee, + 'circle-triangle': circleTriangle, + 'triangle-cross': triangleTee, + 'circle': circle + }))[name]; +}; + +var CRp$1 = {}; + +CRp$1.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) { + var r = this; + + if (ele.isNode()) { + r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); + } else { + r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); + } +}; + +CRp$1.drawElementOverlay = function (context, ele) { + var r = this; + + if (ele.isNode()) { + r.drawNodeOverlay(context, ele); + } else { + r.drawEdgeOverlay(context, ele); + } +}; + +CRp$1.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) { + var r = this; + var bb = eleTxrCache.getBoundingBox(ele); + + if (bb.w === 0 || bb.h === 0) { + return; + } // ignore zero size case + + + var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason); + + if (eleCache != null) { + var opacity = getOpacity(r, ele); + + if (opacity === 0) { + return; + } + + var theta = getRotation(r, ele); + var x1 = bb.x1, + y1 = bb.y1, + w = bb.w, + h = bb.h; + var x, y, sx, sy, smooth; + + if (theta !== 0) { + var rotPt = eleTxrCache.getRotationPoint(ele); + sx = rotPt.x; + sy = rotPt.y; + context.translate(sx, sy); + context.rotate(theta); + smooth = r.getImgSmoothing(context); + + if (!smooth) { + r.setImgSmoothing(context, true); + } + + var off = eleTxrCache.getRotationOffset(ele); + x = off.x; + y = off.y; + } else { + x = x1; + y = y1; + } + + var oldGlobalAlpha; + + if (opacity !== 1) { + oldGlobalAlpha = context.globalAlpha; + context.globalAlpha = oldGlobalAlpha * opacity; + } + + context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h); + + if (opacity !== 1) { + context.globalAlpha = oldGlobalAlpha; + } + + if (theta !== 0) { + context.rotate(-theta); + context.translate(-sx, -sy); + + if (!smooth) { + r.setImgSmoothing(context, false); + } + } + } else { + eleTxrCache.drawElement(context, ele); // direct draw fallback + } +}; + +var getZeroRotation = function getZeroRotation() { + return 0; +}; + +var getLabelRotation = function getLabelRotation(r, ele) { + return r.getTextAngle(ele, null); +}; + +var getSourceLabelRotation = function getSourceLabelRotation(r, ele) { + return r.getTextAngle(ele, 'source'); +}; + +var getTargetLabelRotation = function getTargetLabelRotation(r, ele) { + return r.getTextAngle(ele, 'target'); +}; + +var getOpacity = function getOpacity(r, ele) { + return ele.effectiveOpacity(); +}; + +var getTextOpacity = function getTextOpacity(e, ele) { + return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity(); +}; + +CRp$1.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) { + var r = this; + var _r$data = r.data, + eleTxrCache = _r$data.eleTxrCache, + lblTxrCache = _r$data.lblTxrCache, + slbTxrCache = _r$data.slbTxrCache, + tlbTxrCache = _r$data.tlbTxrCache; + var bb = ele.boundingBox(); + var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null; + + if (bb.w === 0 || bb.h === 0 || !ele.visible()) { + return; + } + + if (!extent || boundingBoxesIntersect(bb, extent)) { + var isEdge = ele.isEdge(); + + var badLine = ele.element()._private.rscratch.badLine; + + r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity); + + if (!isEdge || !badLine) { + r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity); + } + + if (isEdge && !badLine) { + r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity); + r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity); + } + + r.drawElementOverlay(context, ele); + } +}; + +CRp$1.drawElements = function (context, eles) { + var r = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + r.drawElement(context, ele); + } +}; + +CRp$1.drawCachedElements = function (context, eles, pxRatio, extent) { + var r = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + r.drawCachedElement(context, ele, pxRatio, extent); + } +}; + +CRp$1.drawCachedNodes = function (context, eles, pxRatio, extent) { + var r = this; + + for (var i = 0; i < eles.length; i++) { + var ele = eles[i]; + + if (!ele.isNode()) { + continue; + } + + r.drawCachedElement(context, ele, pxRatio, extent); + } +}; + +CRp$1.drawLayeredElements = function (context, eles, pxRatio, extent) { + var r = this; + var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio); + + if (layers) { + for (var i = 0; i < layers.length; i++) { + var layer = layers[i]; + var bb = layer.bb; + + if (bb.w === 0 || bb.h === 0) { + continue; + } + + context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h); + } + } else { + // fall back on plain caching if no layers + r.drawCachedElements(context, eles, pxRatio, extent); + } +}; + +/* global Path2D */ +var CRp$2 = {}; + +CRp$2.drawEdge = function (context, edge, shiftToOriginWithBb) { + var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + var r = this; + var rs = edge._private.rscratch; + + if (shouldDrawOpacity && !edge.visible()) { + return; + } // if bezier ctrl pts can not be calculated, then die + + + if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) { + // isNaN in case edge is impossible and browser bugs (e.g. safari) + return; + } + + var bb; + + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } + + var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1; + var lineStyle = edge.pstyle('line-style').value; + var edgeWidth = edge.pstyle('width').pfValue; + var lineCap = edge.pstyle('line-cap').value; + + var drawLine = function drawLine() { + var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : opacity; + context.lineWidth = edgeWidth; + context.lineCap = lineCap; + r.eleStrokeStyle(context, edge, strokeOpacity); + r.drawEdgePath(edge, context, rs.allpts, lineStyle); + context.lineCap = 'butt'; // reset for other drawing functions + }; + + var drawOverlay = function drawOverlay() { + if (!shouldDrawOverlay) { + return; + } + + r.drawEdgeOverlay(context, edge); + }; + + var drawArrows = function drawArrows() { + var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : opacity; + r.drawArrowheads(context, edge, arrowOpacity); + }; + + var drawText = function drawText() { + r.drawElementText(context, edge, null, drawLabel); + }; + + context.lineJoin = 'round'; + var ghost = edge.pstyle('ghost').value === 'yes'; + + if (ghost) { + var gx = edge.pstyle('ghost-offset-x').pfValue; + var gy = edge.pstyle('ghost-offset-y').pfValue; + var ghostOpacity = edge.pstyle('ghost-opacity').value; + var effectiveGhostOpacity = opacity * ghostOpacity; + context.translate(gx, gy); + drawLine(effectiveGhostOpacity); + drawArrows(effectiveGhostOpacity); + context.translate(-gx, -gy); + } + + drawLine(); + drawArrows(); + drawOverlay(); + drawText(); + + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } +}; + +CRp$2.drawEdgeOverlay = function (context, edge) { + if (!edge.visible()) { + return; + } + + var overlayOpacity = edge.pstyle('overlay-opacity').value; + + if (overlayOpacity === 0) { + return; + } + + var r = this; + var usePaths = r.usePaths(); + var rs = edge._private.rscratch; + var overlayPadding = edge.pstyle('overlay-padding').pfValue; + var overlayWidth = 2 * overlayPadding; + var overlayColor = edge.pstyle('overlay-color').value; + context.lineWidth = overlayWidth; + + if (rs.edgeType === 'self' && !usePaths) { + context.lineCap = 'butt'; + } else { + context.lineCap = 'round'; + } + + r.colorStrokeStyle(context, overlayColor[0], overlayColor[1], overlayColor[2], overlayOpacity); + r.drawEdgePath(edge, context, rs.allpts, 'solid'); +}; + +CRp$2.drawEdgePath = function (edge, context, pts, type) { + var rs = edge._private.rscratch; + var canvasCxt = context; + var path; + var pathCacheHit = false; + var usePaths = this.usePaths(); + var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue; + var lineDashOffset = edge.pstyle('line-dash-offset').pfValue; + + if (usePaths) { + var pathCacheKey = pts.join('$'); + var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey; + + if (keyMatches) { + path = context = rs.pathCache; + pathCacheHit = true; + } else { + path = context = new Path2D(); + rs.pathCacheKey = pathCacheKey; + rs.pathCache = path; + } + } + + if (canvasCxt.setLineDash) { + // for very outofdate browsers + switch (type) { + case 'dotted': + canvasCxt.setLineDash([1, 1]); + break; + + case 'dashed': + canvasCxt.setLineDash(lineDashPattern); + canvasCxt.lineDashOffset = lineDashOffset; + break; + + case 'solid': + canvasCxt.setLineDash([]); + break; + } + } + + if (!pathCacheHit && !rs.badLine) { + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(pts[0], pts[1]); + + switch (rs.edgeType) { + case 'bezier': + case 'self': + case 'compound': + case 'multibezier': + for (var i = 2; i + 3 < pts.length; i += 4) { + context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]); + } + + break; + + case 'straight': + case 'segments': + case 'haystack': + for (var _i = 2; _i + 1 < pts.length; _i += 2) { + context.lineTo(pts[_i], pts[_i + 1]); + } + + break; + } + } + + context = canvasCxt; + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } // reset any line dashes + + + if (context.setLineDash) { + // for very outofdate browsers + context.setLineDash([]); + } +}; + +CRp$2.drawArrowheads = function (context, edge, opacity) { + var rs = edge._private.rscratch; + var isHaystack = rs.edgeType === 'haystack'; + + if (!isHaystack) { + this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity); + } + + this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity); + this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity); + + if (!isHaystack) { + this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity); + } +}; + +CRp$2.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) { + if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) { + return; + } + + var self = this; + var arrowShape = edge.pstyle(prefix + '-arrow-shape').value; + + if (arrowShape === 'none') { + return; + } + + var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled'; + var arrowFill = edge.pstyle(prefix + '-arrow-fill').value; + var edgeWidth = edge.pstyle('width').pfValue; + var edgeOpacity = edge.pstyle('opacity').value; + + if (opacity === undefined) { + opacity = edgeOpacity; + } + + var gco = context.globalCompositeOperation; + + if (opacity !== 1 || arrowFill === 'hollow') { + // then extra clear is needed + context.globalCompositeOperation = 'destination-out'; + self.colorFillStyle(context, 255, 255, 255, 1); + self.colorStrokeStyle(context, 255, 255, 255, 1); + self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle); + context.globalCompositeOperation = gco; + } // otherwise, the opaque arrow clears it for free :) + + + var color = edge.pstyle(prefix + '-arrow-color').value; + self.colorFillStyle(context, color[0], color[1], color[2], opacity); + self.colorStrokeStyle(context, color[0], color[1], color[2], opacity); + self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle); +}; + +CRp$2.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) { + var r = this; + var usePaths = this.usePaths() && shape !== 'triangle-cross'; + var pathCacheHit = false; + var path; + var canvasContext = context; + var translation = { + x: x, + y: y + }; + var scale = edge.pstyle('arrow-scale').value; + var size = this.getArrowWidth(edgeWidth, scale); + var shapeImpl = r.arrowShapes[shape]; + + if (usePaths) { + var cache = r.arrowPathCache = r.arrowPathCache || []; + var key = hashString(shape); + var cachedPath = cache[key]; + + if (cachedPath != null) { + path = context = cachedPath; + pathCacheHit = true; + } else { + path = context = new Path2D(); + cache[key] = path; + } + } + + if (!pathCacheHit) { + if (context.beginPath) { + context.beginPath(); + } + + if (usePaths) { + // store in the path cache with values easily manipulated later + shapeImpl.draw(context, 1, 0, { + x: 0, + y: 0 + }, 1); + } else { + shapeImpl.draw(context, size, angle, translation, edgeWidth); + } + + if (context.closePath) { + context.closePath(); + } + } + + context = canvasContext; + + if (usePaths) { + // set transform to arrow position/orientation + context.translate(x, y); + context.rotate(angle); + context.scale(size, size); + } + + if (fill === 'filled' || fill === 'both') { + if (usePaths) { + context.fill(path); + } else { + context.fill(); + } + } + + if (fill === 'hollow' || fill === 'both') { + context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1); + context.lineJoin = 'miter'; + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } + } + + if (usePaths) { + // reset transform by applying inverse + context.scale(1 / size, 1 / size); + context.rotate(-angle); + context.translate(-x, -y); + } +}; + +var CRp$3 = {}; + +CRp$3.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) { + // detect problematic cases for old browsers with bad images (cheaper than try-catch) + if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) { + return; + } + + context.drawImage(img, ix, iy, iw, ih, x, y, w, h); +}; + +CRp$3.drawInscribedImage = function (context, img, node, index, nodeOpacity) { + var r = this; + var pos = node.position(); + var nodeX = pos.x; + var nodeY = pos.y; + var styleObj = node.cy().style(); + var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj); + var fit = getIndexedStyle(node, 'background-fit', 'value', index); + var repeat = getIndexedStyle(node, 'background-repeat', 'value', index); + var nodeW = node.width(); + var nodeH = node.height(); + var paddingX2 = node.padding() * 2; + var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); + var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); + var rs = node._private.rscratch; + var clip = getIndexedStyle(node, 'background-clip', 'value', index); + var shouldClip = clip === 'node'; + var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity; + var imgW = img.width || img.cachedW; + var imgH = img.height || img.cachedH; // workaround for broken browsers like ie + + if (null == imgW || null == imgH) { + document.body.appendChild(img); // eslint-disable-line no-undef + + imgW = img.cachedW = img.width || img.offsetWidth; + imgH = img.cachedH = img.height || img.offsetHeight; + document.body.removeChild(img); // eslint-disable-line no-undef + } + + var w = imgW; + var h = imgH; + + if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') { + if (getIndexedStyle(node, 'background-width', 'units', index) === '%') { + w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW; + } else { + w = getIndexedStyle(node, 'background-width', 'pfValue', index); + } + } + + if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') { + if (getIndexedStyle(node, 'background-height', 'units', index) === '%') { + h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH; + } else { + h = getIndexedStyle(node, 'background-height', 'pfValue', index); + } + } + + if (w === 0 || h === 0) { + return; // no point in drawing empty image (and chrome is broken in this case) + } + + if (fit === 'contain') { + var scale = Math.min(nodeTW / w, nodeTH / h); + w *= scale; + h *= scale; + } else if (fit === 'cover') { + var scale = Math.max(nodeTW / w, nodeTH / h); + w *= scale; + h *= scale; + } + + var x = nodeX - nodeTW / 2; // left + + var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index); + var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index); + + if (posXUnits === '%') { + x += (nodeTW - w) * posXPfVal; + } else { + x += posXPfVal; + } + + var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index); + var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index); + + if (offXUnits === '%') { + x += (nodeTW - w) * offXPfVal; + } else { + x += offXPfVal; + } + + var y = nodeY - nodeTH / 2; // top + + var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index); + var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index); + + if (posYUnits === '%') { + y += (nodeTH - h) * posYPfVal; + } else { + y += posYPfVal; + } + + var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index); + var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index); + + if (offYUnits === '%') { + y += (nodeTH - h) * offYPfVal; + } else { + y += offYPfVal; + } + + if (rs.pathCache) { + x -= nodeX; + y -= nodeY; + nodeX = 0; + nodeY = 0; + } + + var gAlpha = context.globalAlpha; + context.globalAlpha = imgOpacity; + + if (repeat === 'no-repeat') { + if (shouldClip) { + context.save(); + + if (rs.pathCache) { + context.clip(rs.pathCache); + } else { + r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); + context.clip(); + } + } + + r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h); + + if (shouldClip) { + context.restore(); + } + } else { + var pattern = context.createPattern(img, repeat); + context.fillStyle = pattern; + r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); + context.translate(x, y); + context.fill(); + context.translate(-x, -y); + } + + context.globalAlpha = gAlpha; +}; + +var CRp$4 = {}; + +CRp$4.eleTextBiggerThanMin = function (ele, scale) { + if (!scale) { + var zoom = ele.cy().zoom(); + var pxRatio = this.getPixelRatio(); + var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level + + scale = Math.pow(2, lvl); + } + + var computedSize = ele.pstyle('font-size').pfValue * scale; + var minSize = ele.pstyle('min-zoomed-font-size').pfValue; + + if (computedSize < minSize) { + return false; + } + + return true; +}; + +CRp$4.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) { + var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + var r = this; + + if (force == null) { + if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) { + return; + } + } else if (force === false) { + return; + } + + if (ele.isNode()) { + var label = ele.pstyle('label'); + + if (!label || !label.value) { + return; + } + + var justification = r.getLabelJustification(ele); + context.textAlign = justification; + context.textBaseline = 'bottom'; + } else { + var badLine = ele.element()._private.rscratch.badLine; + + var _label = ele.pstyle('label'); + + var srcLabel = ele.pstyle('source-label'); + var tgtLabel = ele.pstyle('target-label'); + + if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) { + return; + } + + context.textAlign = 'center'; + context.textBaseline = 'bottom'; + } + + var applyRotation = !shiftToOriginWithBb; + var bb; + + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } + + if (prefix == null) { + r.drawText(context, ele, null, applyRotation, useEleOpacity); + + if (ele.isEdge()) { + r.drawText(context, ele, 'source', applyRotation, useEleOpacity); + r.drawText(context, ele, 'target', applyRotation, useEleOpacity); + } + } else { + r.drawText(context, ele, prefix, applyRotation, useEleOpacity); + } + + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } +}; + +CRp$4.getFontCache = function (context) { + var cache; + this.fontCaches = this.fontCaches || []; + + for (var i = 0; i < this.fontCaches.length; i++) { + cache = this.fontCaches[i]; + + if (cache.context === context) { + return cache; + } + } + + cache = { + context: context + }; + this.fontCaches.push(cache); + return cache; +}; // set up canvas context with font +// returns transformed text string + + +CRp$4.setupTextStyle = function (context, ele) { + var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; + // Font style + var labelStyle = ele.pstyle('font-style').strValue; + var labelSize = ele.pstyle('font-size').pfValue + 'px'; + var labelFamily = ele.pstyle('font-family').strValue; + var labelWeight = ele.pstyle('font-weight').strValue; + var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1; + var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity; + var color = ele.pstyle('color').value; + var outlineColor = ele.pstyle('text-outline-color').value; + context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily; + context.lineJoin = 'round'; // so text outlines aren't jagged + + this.colorFillStyle(context, color[0], color[1], color[2], opacity); + this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity); +}; // TODO ensure re-used + + +function roundRect(ctx, x, y, width, height) { + var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5; + ctx.beginPath(); + ctx.moveTo(x + radius, y); + ctx.lineTo(x + width - radius, y); + ctx.quadraticCurveTo(x + width, y, x + width, y + radius); + ctx.lineTo(x + width, y + height - radius); + ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); + ctx.lineTo(x + radius, y + height); + ctx.quadraticCurveTo(x, y + height, x, y + height - radius); + ctx.lineTo(x, y + radius); + ctx.quadraticCurveTo(x, y, x + radius, y); + ctx.closePath(); + ctx.fill(); +} + +CRp$4.getTextAngle = function (ele, prefix) { + var theta; + var _p = ele._private; + var rscratch = _p.rscratch; + var pdash = prefix ? prefix + '-' : ''; + var rotation = ele.pstyle(pdash + 'text-rotation'); + var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix); + + if (rotation.strValue === 'autorotate') { + theta = ele.isEdge() ? textAngle : 0; + } else if (rotation.strValue === 'none') { + theta = 0; + } else { + theta = rotation.pfValue; + } + + return theta; +}; + +CRp$4.drawText = function (context, ele, prefix) { + var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var _p = ele._private; + var rscratch = _p.rscratch; + var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1; + + if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) { + return; + } // use 'main' as an alias for the main label (i.e. null prefix) + + + if (prefix === 'main') { + prefix = null; + } + + var textX = getPrefixedProperty(rscratch, 'labelX', prefix); + var textY = getPrefixedProperty(rscratch, 'labelY', prefix); + var orgTextX, orgTextY; // used for rotation + + var text = this.getLabelText(ele, prefix); + + if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) { + this.setupTextStyle(context, ele, useEleOpacity); + var pdash = prefix ? prefix + '-' : ''; + var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix); + var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix); + var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue; + var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue; + var isEdge = ele.isEdge(); + var halign = ele.pstyle('text-halign').value; + var valign = ele.pstyle('text-valign').value; + + if (isEdge) { + halign = 'center'; + valign = 'center'; + } + + textX += marginX; + textY += marginY; + var theta; + + if (!applyRotation) { + theta = 0; + } else { + theta = this.getTextAngle(ele, prefix); + } + + if (theta !== 0) { + orgTextX = textX; + orgTextY = textY; + context.translate(orgTextX, orgTextY); + context.rotate(theta); + textX = 0; + textY = 0; + } + + switch (valign) { + case 'top': + break; + + case 'center': + textY += textH / 2; + break; + + case 'bottom': + textY += textH; + break; + } + + var backgroundOpacity = ele.pstyle('text-background-opacity').value; + var borderOpacity = ele.pstyle('text-border-opacity').value; + var textBorderWidth = ele.pstyle('text-border-width').pfValue; + var backgroundPadding = ele.pstyle('text-background-padding').pfValue; + + if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) { + var bgX = textX - backgroundPadding; + + switch (halign) { + case 'left': + bgX -= textW; + break; + + case 'center': + bgX -= textW / 2; + break; + } + + var bgY = textY - textH - backgroundPadding; + var bgW = textW + 2 * backgroundPadding; + var bgH = textH + 2 * backgroundPadding; + + if (backgroundOpacity > 0) { + var textFill = context.fillStyle; + var textBackgroundColor = ele.pstyle('text-background-color').value; + context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')'; + var styleShape = ele.pstyle('text-background-shape').strValue; + + if (styleShape.indexOf('round') === 0) { + roundRect(context, bgX, bgY, bgW, bgH, 2); + } else { + context.fillRect(bgX, bgY, bgW, bgH); + } + + context.fillStyle = textFill; + } + + if (textBorderWidth > 0 && borderOpacity > 0) { + var textStroke = context.strokeStyle; + var textLineWidth = context.lineWidth; + var textBorderColor = ele.pstyle('text-border-color').value; + var textBorderStyle = ele.pstyle('text-border-style').value; + context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')'; + context.lineWidth = textBorderWidth; + + if (context.setLineDash) { + // for very outofdate browsers + switch (textBorderStyle) { + case 'dotted': + context.setLineDash([1, 1]); + break; + + case 'dashed': + context.setLineDash([4, 2]); + break; + + case 'double': + context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders + + context.setLineDash([]); + break; + + case 'solid': + context.setLineDash([]); + break; + } + } + + context.strokeRect(bgX, bgY, bgW, bgH); + + if (textBorderStyle === 'double') { + var whiteWidth = textBorderWidth / 2; + context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2); + } + + if (context.setLineDash) { + // for very outofdate browsers + context.setLineDash([]); + } + + context.lineWidth = textLineWidth; + context.strokeStyle = textStroke; + } + } + + var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle + + if (lineWidth > 0) { + context.lineWidth = lineWidth; + } + + if (ele.pstyle('text-wrap').value === 'wrap') { + var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix); + var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix); + var halfTextW = textW / 2; + var justification = this.getLabelJustification(ele); + + if (justification === 'auto') ; else if (halign === 'left') { + // auto justification : right + if (justification === 'left') { + textX += -textW; + } else if (justification === 'center') { + textX += -halfTextW; + } // else same as auto + + } else if (halign === 'center') { + // auto justfication : center + if (justification === 'left') { + textX += -halfTextW; + } else if (justification === 'right') { + textX += halfTextW; + } // else same as auto + + } else if (halign === 'right') { + // auto justification : left + if (justification === 'center') { + textX += halfTextW; + } else if (justification === 'right') { + textX += textW; + } // else same as auto + + } + + switch (valign) { + case 'top': + textY -= (lines.length - 1) * lineHeight; + break; + + case 'center': + case 'bottom': + textY -= (lines.length - 1) * lineHeight; + break; + } + + for (var l = 0; l < lines.length; l++) { + if (lineWidth > 0) { + context.strokeText(lines[l], textX, textY); + } + + context.fillText(lines[l], textX, textY); + textY += lineHeight; + } + } else { + if (lineWidth > 0) { + context.strokeText(text, textX, textY); + } + + context.fillText(text, textX, textY); + } + + if (theta !== 0) { + context.rotate(-theta); + context.translate(-orgTextX, -orgTextY); + } + } +}; + +/* global Path2D */ +var CRp$5 = {}; + +CRp$5.drawNode = function (context, node, shiftToOriginWithBb) { + var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; + var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; + var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; + var r = this; + var nodeWidth, nodeHeight; + var _p = node._private; + var rs = _p.rscratch; + var pos = node.position(); + + if (!number(pos.x) || !number(pos.y)) { + return; // can't draw node with undefined position + } + + if (shouldDrawOpacity && !node.visible()) { + return; + } + + var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1; + var usePaths = r.usePaths(); + var path; + var pathCacheHit = false; + var padding = node.padding(); + nodeWidth = node.width() + 2 * padding; + nodeHeight = node.height() + 2 * padding; // + // setup shift + + var bb; + + if (shiftToOriginWithBb) { + bb = shiftToOriginWithBb; + context.translate(-bb.x1, -bb.y1); + } // + // load bg image + + + var bgImgProp = node.pstyle('background-image'); + var urls = bgImgProp.value; + var urlDefined = new Array(urls.length); + var image = new Array(urls.length); + var numImages = 0; + + for (var i = 0; i < urls.length; i++) { + var url = urls[i]; + var defd = urlDefined[i] = url != null && url !== 'none'; + + if (defd) { + var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i); + numImages++; // get image, and if not loaded then ask to redraw when later loaded + + image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () { + _p.backgroundTimestamp = Date.now(); + node.emitAndNotify('background'); + }); + } + } // + // setup styles + + + var darkness = node.pstyle('background-blacken').value; + var borderWidth = node.pstyle('border-width').pfValue; + var bgOpacity = node.pstyle('background-opacity').value * eleOpacity; + var borderColor = node.pstyle('border-color').value; + var borderStyle = node.pstyle('border-style').value; + var borderOpacity = node.pstyle('border-opacity').value * eleOpacity; + context.lineJoin = 'miter'; // so borders are square with the node shape + + var setupShapeColor = function setupShapeColor() { + var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity; + r.eleFillStyle(context, node, bgOpy); + }; + + var setupBorderColor = function setupBorderColor() { + var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity; + r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy); + }; // + // setup shape + + + var styleShape = node.pstyle('shape').strValue; + var shapePts = node.pstyle('shape-polygon-points').pfValue; + + if (usePaths) { + context.translate(pos.x, pos.y); + var pathCache = r.nodePathCache = r.nodePathCache || []; + var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth); + var cachedPath = pathCache[key]; + + if (cachedPath != null) { + path = cachedPath; + pathCacheHit = true; + rs.pathCache = path; + } else { + path = new Path2D(); + pathCache[key] = rs.pathCache = path; + } + } + + var drawShape = function drawShape() { + if (!pathCacheHit) { + var npos = pos; + + if (usePaths) { + npos = { + x: 0, + y: 0 + }; + } + + r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight); + } + + if (usePaths) { + context.fill(path); + } else { + context.fill(); + } + }; + + var drawImages = function drawImages() { + var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; + var prevBging = _p.backgrounding; + var totalCompleted = 0; + + for (var _i = 0; _i < image.length; _i++) { + if (urlDefined[_i] && image[_i].complete && !image[_i].error) { + totalCompleted++; + r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity); + } + } + + _p.backgrounding = !(totalCompleted === numImages); + + if (prevBging !== _p.backgrounding) { + // update style b/c :backgrounding state changed + node.updateStyle(false); + } + }; + + var drawPie = function drawPie() { + var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity; + + if (r.hasPie(node)) { + r.drawPie(context, node, pieOpacity); // redraw/restore path if steps after pie need it + + if (redrawShape) { + if (!usePaths) { + r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight); + } + } + } + }; + + var darken = function darken() { + var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; + var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity; + var c = darkness > 0 ? 0 : 255; + + if (darkness !== 0) { + r.colorFillStyle(context, c, c, c, opacity); + + if (usePaths) { + context.fill(path); + } else { + context.fill(); + } + } + }; + + var drawBorder = function drawBorder() { + if (borderWidth > 0) { + context.lineWidth = borderWidth; + context.lineCap = 'butt'; + + if (context.setLineDash) { + // for very outofdate browsers + switch (borderStyle) { + case 'dotted': + context.setLineDash([1, 1]); + break; + + case 'dashed': + context.setLineDash([4, 2]); + break; + + case 'solid': + case 'double': + context.setLineDash([]); + break; + } + } + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } + + if (borderStyle === 'double') { + context.lineWidth = borderWidth / 3; + var gco = context.globalCompositeOperation; + context.globalCompositeOperation = 'destination-out'; + + if (usePaths) { + context.stroke(path); + } else { + context.stroke(); + } + + context.globalCompositeOperation = gco; + } // reset in case we changed the border style + + + if (context.setLineDash) { + // for very outofdate browsers + context.setLineDash([]); + } + } + }; + + var drawOverlay = function drawOverlay() { + if (shouldDrawOverlay) { + r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight); + } + }; + + var drawText = function drawText() { + r.drawElementText(context, node, null, drawLabel); + }; + + var ghost = node.pstyle('ghost').value === 'yes'; + + if (ghost) { + var gx = node.pstyle('ghost-offset-x').pfValue; + var gy = node.pstyle('ghost-offset-y').pfValue; + var ghostOpacity = node.pstyle('ghost-opacity').value; + var effGhostOpacity = ghostOpacity * eleOpacity; + context.translate(gx, gy); + setupShapeColor(ghostOpacity * bgOpacity); + drawShape(); + drawImages(effGhostOpacity); + drawPie(darkness !== 0 || borderWidth !== 0); + darken(effGhostOpacity); + setupBorderColor(ghostOpacity * borderOpacity); + drawBorder(); + context.translate(-gx, -gy); + } + + setupShapeColor(); + drawShape(); + drawImages(); + drawPie(darkness !== 0 || borderWidth !== 0); + darken(); + setupBorderColor(); + drawBorder(); + + if (usePaths) { + context.translate(-pos.x, -pos.y); + } + + drawText(); + drawOverlay(); // + // clean up shift + + if (shiftToOriginWithBb) { + context.translate(bb.x1, bb.y1); + } +}; + +CRp$5.drawNodeOverlay = function (context, node, pos, nodeWidth, nodeHeight) { + var r = this; + + if (!node.visible()) { + return; + } + + var overlayPadding = node.pstyle('overlay-padding').pfValue; + var overlayOpacity = node.pstyle('overlay-opacity').value; + var overlayColor = node.pstyle('overlay-color').value; + + if (overlayOpacity > 0) { + pos = pos || node.position(); + + if (nodeWidth == null || nodeHeight == null) { + var padding = node.padding(); + nodeWidth = node.width() + 2 * padding; + nodeHeight = node.height() + 2 * padding; + } + + r.colorFillStyle(context, overlayColor[0], overlayColor[1], overlayColor[2], overlayOpacity); + r.nodeShapes['roundrectangle'].draw(context, pos.x, pos.y, nodeWidth + overlayPadding * 2, nodeHeight + overlayPadding * 2); + context.fill(); + } +}; // does the node have at least one pie piece? + + +CRp$5.hasPie = function (node) { + node = node[0]; // ensure ele ref + + return node._private.hasPie; +}; + +CRp$5.drawPie = function (context, node, nodeOpacity, pos) { + node = node[0]; // ensure ele ref + + pos = pos || node.position(); + var cyStyle = node.cy().style(); + var pieSize = node.pstyle('pie-size'); + var x = pos.x; + var y = pos.y; + var nodeW = node.width(); + var nodeH = node.height(); + var radius = Math.min(nodeW, nodeH) / 2; // must fit in node + + var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1] + + var usePaths = this.usePaths(); + + if (usePaths) { + x = 0; + y = 0; + } + + if (pieSize.units === '%') { + radius = radius * pieSize.pfValue; + } else if (pieSize.pfValue !== undefined) { + radius = pieSize.pfValue / 2; + } + + for (var i = 1; i <= cyStyle.pieBackgroundN; i++) { + // 1..N + var size = node.pstyle('pie-' + i + '-background-size').value; + var color = node.pstyle('pie-' + i + '-background-color').value; + var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity; + var percent = size / 100; // map integer range [0, 100] to [0, 1] + // percent can't push beyond 1 + + if (percent + lastPercent > 1) { + percent = 1 - lastPercent; + } + + var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise + + var angleDelta = 2 * Math.PI * percent; + var angleEnd = angleStart + angleDelta; // ignore if + // - zero size + // - we're already beyond the full circle + // - adding the current slice would go beyond the full circle + + if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) { + continue; + } + + context.beginPath(); + context.moveTo(x, y); + context.arc(x, y, radius, angleStart, angleEnd); + context.closePath(); + this.colorFillStyle(context, color[0], color[1], color[2], opacity); + context.fill(); + lastPercent += percent; + } +}; + +var CRp$6 = {}; +var motionBlurDelay = 100; // var isFirefox = typeof InstallTrigger !== 'undefined'; + +CRp$6.getPixelRatio = function () { + var context = this.data.contexts[0]; + + if (this.forcedPixelRatio != null) { + return this.forcedPixelRatio; + } + + var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; + return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef +}; + +CRp$6.paintCache = function (context) { + var caches = this.paintCaches = this.paintCaches || []; + var needToCreateCache = true; + var cache; + + for (var i = 0; i < caches.length; i++) { + cache = caches[i]; + + if (cache.context === context) { + needToCreateCache = false; + break; + } + } + + if (needToCreateCache) { + cache = { + context: context + }; + caches.push(cache); + } + + return cache; +}; + +CRp$6.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) { + var gradientStyle; + var usePaths = this.usePaths(); + var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value, + positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue; + + if (fill === 'radial-gradient') { + if (ele.isEdge()) { + var start = ele.sourceEndpoint(), + end = ele.targetEndpoint(), + mid = ele.midpoint(); + var d1 = dist(start, mid); + var d2 = dist(end, mid); + gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2)); + } else { + var pos = usePaths ? { + x: 0, + y: 0 + } : ele.position(), + width = ele.paddedWidth(), + height = ele.paddedHeight(); + gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height)); + } + } else { + if (ele.isEdge()) { + var _start = ele.sourceEndpoint(), + _end = ele.targetEndpoint(); + + gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y); + } else { + var _pos = usePaths ? { + x: 0, + y: 0 + } : ele.position(), + _width = ele.paddedWidth(), + _height = ele.paddedHeight(), + halfWidth = _width / 2, + halfHeight = _height / 2; + + var direction = ele.pstyle('background-gradient-direction').value; + + switch (direction) { + case 'to-bottom': + gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight); + break; + + case 'to-top': + gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight); + break; + + case 'to-left': + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y); + break; + + case 'to-right': + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y); + break; + + case 'to-bottom-right': + case 'to-right-bottom': + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight); + break; + + case 'to-top-right': + case 'to-right-top': + gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight); + break; + + case 'to-bottom-left': + case 'to-left-bottom': + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight); + break; + + case 'to-top-left': + case 'to-left-top': + gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight); + break; + } + } + } + + if (!gradientStyle) return null; // invalid gradient style + + var hasPositions = positions.length === colors.length; + var length = colors.length; + + for (var i = 0; i < length; i++) { + gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')'); + } + + return gradientStyle; +}; + +CRp$6.gradientFillStyle = function (context, ele, fill, opacity) { + var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity); + if (!gradientStyle) return null; // error + + context.fillStyle = gradientStyle; +}; + +CRp$6.colorFillStyle = function (context, r, g, b, a) { + context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching + // var cache = this.paintCache(context); + // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; + // if( cache.fillStyle !== fillStyle ){ + // context.fillStyle = cache.fillStyle = fillStyle; + // } +}; + +CRp$6.eleFillStyle = function (context, ele, opacity) { + var backgroundFill = ele.pstyle('background-fill').value; + + if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') { + this.gradientFillStyle(context, ele, backgroundFill, opacity); + } else { + var backgroundColor = ele.pstyle('background-color').value; + this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity); + } +}; + +CRp$6.gradientStrokeStyle = function (context, ele, fill, opacity) { + var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity); + if (!gradientStyle) return null; // error + + context.strokeStyle = gradientStyle; +}; + +CRp$6.colorStrokeStyle = function (context, r, g, b, a) { + context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching + // var cache = this.paintCache(context); + // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; + // if( cache.strokeStyle !== strokeStyle ){ + // context.strokeStyle = cache.strokeStyle = strokeStyle; + // } +}; + +CRp$6.eleStrokeStyle = function (context, ele, opacity) { + var lineFill = ele.pstyle('line-fill').value; + + if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') { + this.gradientStrokeStyle(context, ele, lineFill, opacity); + } else { + var lineColor = ele.pstyle('line-color').value; + this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity); + } +}; // Resize canvas + + +CRp$6.matchCanvasSize = function (container) { + var r = this; + var data = r.data; + var bb = r.findContainerClientCoords(); + var width = bb[2]; + var height = bb[3]; + var pixelRatio = r.getPixelRatio(); + var mbPxRatio = r.motionBlurPxRatio; + + if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) { + pixelRatio = mbPxRatio; + } + + var canvasWidth = width * pixelRatio; + var canvasHeight = height * pixelRatio; + var canvas; + + if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) { + return; // save cycles if same + } + + r.fontCaches = null; // resizing resets the style + + var canvasContainer = data.canvasContainer; + canvasContainer.style.width = width + 'px'; + canvasContainer.style.height = height + 'px'; + + for (var i = 0; i < r.CANVAS_LAYERS; i++) { + canvas = data.canvases[i]; + canvas.width = canvasWidth; + canvas.height = canvasHeight; + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + } + + for (var i = 0; i < r.BUFFER_COUNT; i++) { + canvas = data.bufferCanvases[i]; + canvas.width = canvasWidth; + canvas.height = canvasHeight; + canvas.style.width = width + 'px'; + canvas.style.height = height + 'px'; + } + + r.textureMult = 1; + + if (pixelRatio <= 1) { + canvas = data.bufferCanvases[r.TEXTURE_BUFFER]; + r.textureMult = 2; + canvas.width = canvasWidth * r.textureMult; + canvas.height = canvasHeight * r.textureMult; + } + + r.canvasWidth = canvasWidth; + r.canvasHeight = canvasHeight; +}; + +CRp$6.renderTo = function (cxt, zoom, pan, pxRatio) { + this.render({ + forcedContext: cxt, + forcedZoom: zoom, + forcedPan: pan, + drawAllLayers: true, + forcedPxRatio: pxRatio + }); +}; + +CRp$6.render = function (options) { + options = options || staticEmptyObject(); + var forcedContext = options.forcedContext; + var drawAllLayers = options.drawAllLayers; + var drawOnlyNodeLayer = options.drawOnlyNodeLayer; + var forcedZoom = options.forcedZoom; + var forcedPan = options.forcedPan; + var r = this; + var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio; + var cy = r.cy; + var data = r.data; + var needDraw = data.canvasNeedsRedraw; + var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming); + var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur; + var mbPxRatio = r.motionBlurPxRatio; + var hasCompoundNodes = cy.hasCompoundNodes(); + var inNodeDragGesture = r.hoverData.draggingEles; + var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false; + motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection; + var motionBlurFadeEffect = motionBlur; + + if (!forcedContext) { + if (r.prevPxRatio !== pixelRatio) { + r.invalidateContainerClientCoordsCache(); + r.matchCanvasSize(r.container); + r.redrawHint('eles', true); + r.redrawHint('drag', true); + } + + r.prevPxRatio = pixelRatio; + } + + if (!forcedContext && r.motionBlurTimeout) { + clearTimeout(r.motionBlurTimeout); + } + + if (motionBlur) { + if (r.mbFrames == null) { + r.mbFrames = 0; + } + + r.mbFrames++; + + if (r.mbFrames < 3) { + // need several frames before even high quality motionblur + motionBlurFadeEffect = false; + } // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing) + + + if (r.mbFrames > r.minMbLowQualFrames) { + //r.fullQualityMb = false; + r.motionBlurPxRatio = r.mbPxRBlurry; + } + } + + if (r.clearingMotionBlur) { + r.motionBlurPxRatio = 1; + } // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame + // because a rogue async texture frame would clear needDraw + + + if (r.textureDrawLastFrame && !textureDraw) { + needDraw[r.NODE] = true; + needDraw[r.SELECT_BOX] = true; + } + + var style = cy.style(); + var zoom = cy.zoom(); + var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom; + var pan = cy.pan(); + var effectivePan = { + x: pan.x, + y: pan.y + }; + var vp = { + zoom: zoom, + pan: { + x: pan.x, + y: pan.y + } + }; + var prevVp = r.prevViewport; + var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed) + + if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) { + r.motionBlurPxRatio = 1; + } + + if (forcedPan) { + effectivePan = forcedPan; + } // apply pixel ratio + + + effectiveZoom *= pixelRatio; + effectivePan.x *= pixelRatio; + effectivePan.y *= pixelRatio; + var eles = r.getCachedZSortedEles(); + + function mbclear(context, x, y, w, h) { + var gco = context.globalCompositeOperation; + context.globalCompositeOperation = 'destination-out'; + r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency); + context.fillRect(x, y, w, h); + context.globalCompositeOperation = gco; + } + + function setContextTransform(context, clear) { + var ePan, eZoom, w, h; + + if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) { + ePan = { + x: pan.x * mbPxRatio, + y: pan.y * mbPxRatio + }; + eZoom = zoom * mbPxRatio; + w = r.canvasWidth * mbPxRatio; + h = r.canvasHeight * mbPxRatio; + } else { + ePan = effectivePan; + eZoom = effectiveZoom; + w = r.canvasWidth; + h = r.canvasHeight; + } + + context.setTransform(1, 0, 0, 1, 0, 0); + + if (clear === 'motionBlur') { + mbclear(context, 0, 0, w, h); + } else if (!forcedContext && (clear === undefined || clear)) { + context.clearRect(0, 0, w, h); + } + + if (!drawAllLayers) { + context.translate(ePan.x, ePan.y); + context.scale(eZoom, eZoom); + } + + if (forcedPan) { + context.translate(forcedPan.x, forcedPan.y); + } + + if (forcedZoom) { + context.scale(forcedZoom, forcedZoom); + } + } + + if (!textureDraw) { + r.textureDrawLastFrame = false; + } + + if (textureDraw) { + r.textureDrawLastFrame = true; + + if (!r.textureCache) { + r.textureCache = {}; + r.textureCache.bb = cy.mutableElements().boundingBox(); + r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER]; + var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER]; + cxt.setTransform(1, 0, 0, 1, 0, 0); + cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult); + r.render({ + forcedContext: cxt, + drawOnlyNodeLayer: true, + forcedPxRatio: pixelRatio * r.textureMult + }); + var vp = r.textureCache.viewport = { + zoom: cy.zoom(), + pan: cy.pan(), + width: r.canvasWidth, + height: r.canvasHeight + }; + vp.mpan = { + x: (0 - vp.pan.x) / vp.zoom, + y: (0 - vp.pan.y) / vp.zoom + }; + } + + needDraw[r.DRAG] = false; + needDraw[r.NODE] = false; + var context = data.contexts[r.NODE]; + var texture = r.textureCache.texture; + var vp = r.textureCache.viewport; + context.setTransform(1, 0, 0, 1, 0, 0); + + if (motionBlur) { + mbclear(context, 0, 0, vp.width, vp.height); + } else { + context.clearRect(0, 0, vp.width, vp.height); + } + + var outsideBgColor = style.core('outside-texture-bg-color').value; + var outsideBgOpacity = style.core('outside-texture-bg-opacity').value; + r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity); + context.fillRect(0, 0, vp.width, vp.height); + var zoom = cy.zoom(); + setContextTransform(context, false); + context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); + context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); + } else if (r.textureOnViewport && !forcedContext) { + // clear the cache since we don't need it + r.textureCache = null; + } + + var extent = cy.extent(); + var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated(); + var hideEdges = r.hideEdgesOnViewport && vpManip; + var needMbClear = []; + needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur; + + if (needMbClear[r.NODE]) { + r.clearedForMotionBlur[r.NODE] = true; + } + + needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur; + + if (needMbClear[r.DRAG]) { + r.clearedForMotionBlur[r.DRAG] = true; + } + + if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) { + var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1; + var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]); + var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined; + setContextTransform(context, clear); + + if (hideEdges) { + r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent); + } else { + r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent); + } + + if (r.debug) { + r.drawDebugPoints(context, eles.nondrag); + } + + if (!drawAllLayers && !motionBlur) { + needDraw[r.NODE] = false; + } + } + + if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) { + var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1; + var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]); + setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined); + + if (hideEdges) { + r.drawCachedNodes(context, eles.drag, pixelRatio, extent); + } else { + r.drawCachedElements(context, eles.drag, pixelRatio, extent); + } + + if (r.debug) { + r.drawDebugPoints(context, eles.drag); + } + + if (!drawAllLayers && !motionBlur) { + needDraw[r.DRAG] = false; + } + } + + if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) { + var context = forcedContext || data.contexts[r.SELECT_BOX]; + setContextTransform(context); + + if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) { + var zoom = r.cy.zoom(); + var borderWidth = style.core('selection-box-border-width').value / zoom; + context.lineWidth = borderWidth; + context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; + context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); + + if (borderWidth > 0) { + context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; + context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); + } + } + + if (data.bgActivePosistion && !r.hoverData.selecting) { + var zoom = r.cy.zoom(); + var pos = data.bgActivePosistion; + context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')'; + context.beginPath(); + context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI); + context.fill(); + } + + var timeToRender = r.lastRedrawTime; + + if (r.showFps && timeToRender) { + timeToRender = Math.round(timeToRender); + var fps = Math.round(1000 / timeToRender); + context.setTransform(1, 0, 0, 1, 0, 0); + context.fillStyle = 'rgba(255, 0, 0, 0.75)'; + context.strokeStyle = 'rgba(255, 0, 0, 0.75)'; + context.lineWidth = 1; + context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20); + var maxFps = 60; + context.strokeRect(0, 30, 250, 20); + context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20); + } + + if (!drawAllLayers) { + needDraw[r.SELECT_BOX] = false; + } + } // motionblur: blit rendered blurry frames + + + if (motionBlur && mbPxRatio !== 1) { + var cxtNode = data.contexts[r.NODE]; + var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE]; + var cxtDrag = data.contexts[r.DRAG]; + var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]; + + var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) { + cxt.setTransform(1, 0, 0, 1, 0, 0); + + if (needClear || !motionBlurFadeEffect) { + cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight); + } else { + mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight); + } + + var pxr = mbPxRatio; + cxt.drawImage(txt, // img + 0, 0, // sx, sy + r.canvasWidth * pxr, r.canvasHeight * pxr, // sw, sh + 0, 0, // x, y + r.canvasWidth, r.canvasHeight // w, h + ); + }; + + if (needDraw[r.NODE] || needMbClear[r.NODE]) { + drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]); + needDraw[r.NODE] = false; + } + + if (needDraw[r.DRAG] || needMbClear[r.DRAG]) { + drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]); + needDraw[r.DRAG] = false; + } + } + + r.prevViewport = vp; + + if (r.clearingMotionBlur) { + r.clearingMotionBlur = false; + r.motionBlurCleared = true; + r.motionBlur = true; + } + + if (motionBlur) { + r.motionBlurTimeout = setTimeout(function () { + r.motionBlurTimeout = null; + r.clearedForMotionBlur[r.NODE] = false; + r.clearedForMotionBlur[r.DRAG] = false; + r.motionBlur = false; + r.clearingMotionBlur = !textureDraw; + r.mbFrames = 0; + needDraw[r.NODE] = true; + needDraw[r.DRAG] = true; + r.redraw(); + }, motionBlurDelay); + } + + if (!forcedContext) { + cy.emit('render'); + } +}; + +var CRp$7 = {}; // @O Polygon drawing + +CRp$7.drawPolygonPath = function (context, x, y, width, height, points) { + var halfW = width / 2; + var halfH = height / 2; + + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(x + halfW * points[0], y + halfH * points[1]); + + for (var i = 1; i < points.length / 2; i++) { + context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]); + } + + context.closePath(); +}; + +CRp$7.drawRoundPolygonPath = function (context, x, y, width, height, points) { + var halfW = width / 2; + var halfH = height / 2; + var cornerRadius = getRoundPolygonRadius(width, height); + + if (context.beginPath) { + context.beginPath(); + } + + for (var _i = 0; _i < points.length / 4; _i++) { + var sourceUv = void 0, + destUv = void 0; + + if (_i === 0) { + sourceUv = points.length - 2; + } else { + sourceUv = _i * 4 - 2; + } + + destUv = _i * 4 + 2; + var px = x + halfW * points[_i * 4]; + var py = y + halfH * points[_i * 4 + 1]; + var cosTheta = -points[sourceUv] * points[destUv] - points[sourceUv + 1] * points[destUv + 1]; + var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); + var cp0x = px - offset * points[sourceUv]; + var cp0y = py - offset * points[sourceUv + 1]; + var cp1x = px + offset * points[destUv]; + var cp1y = py + offset * points[destUv + 1]; + + if (_i === 0) { + context.moveTo(cp0x, cp0y); + } else { + context.lineTo(cp0x, cp0y); + } + + context.arcTo(px, py, cp1x, cp1y, cornerRadius); + } + + context.closePath(); +}; // Round rectangle drawing + + +CRp$7.drawRoundRectanglePath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var cornerRadius = getRoundRectangleRadius(width, height); + + if (context.beginPath) { + context.beginPath(); + } // Start at top middle + + + context.moveTo(x, y - halfHeight); // Arc from middle top to right side + + context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius); // Arc from right side to bottom + + context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); // Arc from bottom to left side + + context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); // Arc from left side to topBorder + + context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius); // Join line + + context.lineTo(x, y - halfHeight); + context.closePath(); +}; + +CRp$7.drawBottomRoundRectanglePath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var cornerRadius = getRoundRectangleRadius(width, height); + + if (context.beginPath) { + context.beginPath(); + } // Start at top middle + + + context.moveTo(x, y - halfHeight); + context.lineTo(x + halfWidth, y - halfHeight); + context.lineTo(x + halfWidth, y); + context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); + context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); + context.lineTo(x - halfWidth, y - halfHeight); + context.lineTo(x, y - halfHeight); + context.closePath(); +}; + +CRp$7.drawCutRectanglePath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var cornerLength = getCutRectangleCornerLength(); + + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(x - halfWidth + cornerLength, y - halfHeight); + context.lineTo(x + halfWidth - cornerLength, y - halfHeight); + context.lineTo(x + halfWidth, y - halfHeight + cornerLength); + context.lineTo(x + halfWidth, y + halfHeight - cornerLength); + context.lineTo(x + halfWidth - cornerLength, y + halfHeight); + context.lineTo(x - halfWidth + cornerLength, y + halfHeight); + context.lineTo(x - halfWidth, y + halfHeight - cornerLength); + context.lineTo(x - halfWidth, y - halfHeight + cornerLength); + context.closePath(); +}; + +CRp$7.drawBarrelPath = function (context, x, y, width, height) { + var halfWidth = width / 2; + var halfHeight = height / 2; + var xBegin = x - halfWidth; + var xEnd = x + halfWidth; + var yBegin = y - halfHeight; + var yEnd = y + halfHeight; + var barrelCurveConstants = getBarrelCurveConstants(width, height); + var wOffset = barrelCurveConstants.widthOffset; + var hOffset = barrelCurveConstants.heightOffset; + var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset; + + if (context.beginPath) { + context.beginPath(); + } + + context.moveTo(xBegin, yBegin + hOffset); + context.lineTo(xBegin, yEnd - hOffset); + context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd); + context.lineTo(xEnd - wOffset, yEnd); + context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset); + context.lineTo(xEnd, yBegin + hOffset); + context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin); + context.lineTo(xBegin + wOffset, yBegin); + context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset); + context.closePath(); +}; + +var sin0 = Math.sin(0); +var cos0 = Math.cos(0); +var sin = {}; +var cos = {}; +var ellipseStepSize = Math.PI / 40; + +for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { + sin[i] = Math.sin(i); + cos[i] = Math.cos(i); +} + +CRp$7.drawEllipsePath = function (context, centerX, centerY, width, height) { + if (context.beginPath) { + context.beginPath(); + } + + if (context.ellipse) { + context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI); + } else { + var xPos, yPos; + var rw = width / 2; + var rh = height / 2; + + for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { + xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0; + yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0; + + if (i === 0) { + context.moveTo(xPos, yPos); + } else { + context.lineTo(xPos, yPos); + } + } + } + + context.closePath(); +}; + +/* global atob, ArrayBuffer, Uint8Array, Blob */ +var CRp$8 = {}; + +CRp$8.createBuffer = function (w, h) { + var buffer = document.createElement('canvas'); // eslint-disable-line no-undef + + buffer.width = w; + buffer.height = h; + return [buffer, buffer.getContext('2d')]; +}; + +CRp$8.bufferCanvasImage = function (options) { + var cy = this.cy; + var eles = cy.mutableElements(); + var bb = eles.boundingBox(); + var ctrRect = this.findContainerClientCoords(); + var width = options.full ? Math.ceil(bb.w) : ctrRect[2]; + var height = options.full ? Math.ceil(bb.h) : ctrRect[3]; + var specdMaxDims = number(options.maxWidth) || number(options.maxHeight); + var pxRatio = this.getPixelRatio(); + var scale = 1; + + if (options.scale !== undefined) { + width *= options.scale; + height *= options.scale; + scale = options.scale; + } else if (specdMaxDims) { + var maxScaleW = Infinity; + var maxScaleH = Infinity; + + if (number(options.maxWidth)) { + maxScaleW = scale * options.maxWidth / width; + } + + if (number(options.maxHeight)) { + maxScaleH = scale * options.maxHeight / height; + } + + scale = Math.min(maxScaleW, maxScaleH); + width *= scale; + height *= scale; + } + + if (!specdMaxDims) { + width *= pxRatio; + height *= pxRatio; + scale *= pxRatio; + } + + var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef + + buffCanvas.width = width; + buffCanvas.height = height; + buffCanvas.style.width = width + 'px'; + buffCanvas.style.height = height + 'px'; + var buffCxt = buffCanvas.getContext('2d'); // Rasterize the layers, but only if container has nonzero size + + if (width > 0 && height > 0) { + buffCxt.clearRect(0, 0, width, height); + buffCxt.globalCompositeOperation = 'source-over'; + var zsortedEles = this.getCachedZSortedEles(); + + if (options.full) { + // draw the full bounds of the graph + buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale); + buffCxt.scale(scale, scale); + this.drawElements(buffCxt, zsortedEles); + buffCxt.scale(1 / scale, 1 / scale); + buffCxt.translate(bb.x1 * scale, bb.y1 * scale); + } else { + // draw the current view + var pan = cy.pan(); + var translation = { + x: pan.x * scale, + y: pan.y * scale + }; + scale *= cy.zoom(); + buffCxt.translate(translation.x, translation.y); + buffCxt.scale(scale, scale); + this.drawElements(buffCxt, zsortedEles); + buffCxt.scale(1 / scale, 1 / scale); + buffCxt.translate(-translation.x, -translation.y); + } // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs + + + if (options.bg) { + buffCxt.globalCompositeOperation = 'destination-over'; + buffCxt.fillStyle = options.bg; + buffCxt.rect(0, 0, width, height); + buffCxt.fill(); + } + } + + return buffCanvas; +}; + +function b64ToBlob(b64, mimeType) { + var bytes = atob(b64); + var buff = new ArrayBuffer(bytes.length); + var buffUint8 = new Uint8Array(buff); + + for (var i = 0; i < bytes.length; i++) { + buffUint8[i] = bytes.charCodeAt(i); + } + + return new Blob([buff], { + type: mimeType + }); +} + +function b64UriToB64(b64uri) { + var i = b64uri.indexOf(','); + return b64uri.substr(i + 1); +} + +function output(options, canvas, mimeType) { + var getB64Uri = function getB64Uri() { + return canvas.toDataURL(mimeType, options.quality); + }; + + switch (options.output) { + case 'blob-promise': + return new Promise$1(function (resolve, reject) { + try { + canvas.toBlob(function (blob) { + if (blob != null) { + resolve(blob); + } else { + reject(new Error('`canvas.toBlob()` sent a null value in its callback')); + } + }, mimeType, options.quality); + } catch (err) { + reject(err); + } + }); + + case 'blob': + return b64ToBlob(b64UriToB64(getB64Uri()), mimeType); + + case 'base64': + return b64UriToB64(getB64Uri()); + + case 'base64uri': + default: + return getB64Uri(); + } +} + +CRp$8.png = function (options) { + return output(options, this.bufferCanvasImage(options), 'image/png'); +}; + +CRp$8.jpg = function (options) { + return output(options, this.bufferCanvasImage(options), 'image/jpeg'); +}; + +var CRp$9 = {}; + +CRp$9.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) { + switch (name) { + case 'ellipse': + return this.drawEllipsePath(context, centerX, centerY, width, height); + + case 'polygon': + return this.drawPolygonPath(context, centerX, centerY, width, height, points); + + case 'round-polygon': + return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points); + + case 'roundrectangle': + case 'round-rectangle': + return this.drawRoundRectanglePath(context, centerX, centerY, width, height); + + case 'cutrectangle': + case 'cut-rectangle': + return this.drawCutRectanglePath(context, centerX, centerY, width, height); + + case 'bottomroundrectangle': + case 'bottom-round-rectangle': + return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height); + + case 'barrel': + return this.drawBarrelPath(context, centerX, centerY, width, height); + } +}; + +var CR = CanvasRenderer; +var CRp$a = CanvasRenderer.prototype; +CRp$a.CANVAS_LAYERS = 3; // + +CRp$a.SELECT_BOX = 0; +CRp$a.DRAG = 1; +CRp$a.NODE = 2; +CRp$a.BUFFER_COUNT = 3; // + +CRp$a.TEXTURE_BUFFER = 0; +CRp$a.MOTIONBLUR_BUFFER_NODE = 1; +CRp$a.MOTIONBLUR_BUFFER_DRAG = 2; + +function CanvasRenderer(options) { + var r = this; + r.data = { + canvases: new Array(CRp$a.CANVAS_LAYERS), + contexts: new Array(CRp$a.CANVAS_LAYERS), + canvasNeedsRedraw: new Array(CRp$a.CANVAS_LAYERS), + bufferCanvases: new Array(CRp$a.BUFFER_COUNT), + bufferContexts: new Array(CRp$a.CANVAS_LAYERS) + }; + var tapHlOffAttr = '-webkit-tap-highlight-color'; + var tapHlOffStyle = 'rgba(0,0,0,0)'; + r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef + + var containerStyle = r.data.canvasContainer.style; + r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle; + containerStyle.position = 'relative'; + containerStyle.zIndex = '0'; + containerStyle.overflow = 'hidden'; + var container = options.cy.container(); + container.appendChild(r.data.canvasContainer); + container.style[tapHlOffAttr] = tapHlOffStyle; + var styleMap = { + '-webkit-user-select': 'none', + '-moz-user-select': '-moz-none', + 'user-select': 'none', + '-webkit-tap-highlight-color': 'rgba(0,0,0,0)', + 'outline-style': 'none' + }; + + if (ms()) { + styleMap['-ms-touch-action'] = 'none'; + styleMap['touch-action'] = 'none'; + } + + for (var i = 0; i < CRp$a.CANVAS_LAYERS; i++) { + var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef + + r.data.contexts[i] = canvas.getContext('2d'); + Object.keys(styleMap).forEach(function (k) { + canvas.style[k] = styleMap[k]; + }); + canvas.style.position = 'absolute'; + canvas.setAttribute('data-id', 'layer' + i); + canvas.style.zIndex = String(CRp$a.CANVAS_LAYERS - i); + r.data.canvasContainer.appendChild(canvas); + r.data.canvasNeedsRedraw[i] = false; + } + + r.data.topCanvas = r.data.canvases[0]; + r.data.canvases[CRp$a.NODE].setAttribute('data-id', 'layer' + CRp$a.NODE + '-node'); + r.data.canvases[CRp$a.SELECT_BOX].setAttribute('data-id', 'layer' + CRp$a.SELECT_BOX + '-selectbox'); + r.data.canvases[CRp$a.DRAG].setAttribute('data-id', 'layer' + CRp$a.DRAG + '-drag'); + + for (var i = 0; i < CRp$a.BUFFER_COUNT; i++) { + r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef + + r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d'); + r.data.bufferCanvases[i].style.position = 'absolute'; + r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i); + r.data.bufferCanvases[i].style.zIndex = String(-i - 1); + r.data.bufferCanvases[i].style.visibility = 'hidden'; //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]); + } + + r.pathsEnabled = true; + var emptyBb = makeBoundingBox(); + + var getBoxCenter = function getBoxCenter(bb) { + return { + x: (bb.x1 + bb.x2) / 2, + y: (bb.y1 + bb.y2) / 2 + }; + }; + + var getCenterOffset = function getCenterOffset(bb) { + return { + x: -bb.w / 2, + y: -bb.h / 2 + }; + }; + + var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) { + var _p = ele[0]._private; + var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp; + return !same; + }; + + var getStyleKey = function getStyleKey(ele) { + return ele[0]._private.nodeKey; + }; + + var getLabelKey = function getLabelKey(ele) { + return ele[0]._private.labelStyleKey; + }; + + var getSourceLabelKey = function getSourceLabelKey(ele) { + return ele[0]._private.sourceLabelStyleKey; + }; + + var getTargetLabelKey = function getTargetLabelKey(ele) { + return ele[0]._private.targetLabelStyleKey; + }; + + var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElement(context, ele, bb, false, false, useEleOpacity); + }; + + var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity); + }; + + var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity); + }; + + var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { + return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity); + }; + + var getElementBox = function getElementBox(ele) { + ele.boundingBox(); + return ele[0]._private.bodyBounds; + }; + + var getLabelBox = function getLabelBox(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.main || emptyBb; + }; + + var getSourceLabelBox = function getSourceLabelBox(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.source || emptyBb; + }; + + var getTargetLabelBox = function getTargetLabelBox(ele) { + ele.boundingBox(); + return ele[0]._private.labelBounds.target || emptyBb; + }; + + var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) { + return scaledLabelShown; + }; + + var getElementRotationPoint = function getElementRotationPoint(ele) { + return getBoxCenter(getElementBox(ele)); + }; + + var addTextMargin = function addTextMargin(prefix, pt, ele) { + var pre = prefix ? prefix + '-' : ''; + return { + x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue, + y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue + }; + }; + + var getRsPt = function getRsPt(ele, x, y) { + var rs = ele[0]._private.rscratch; + return { + x: rs[x], + y: rs[y] + }; + }; + + var getLabelRotationPoint = function getLabelRotationPoint(ele) { + return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele); + }; + + var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) { + return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele); + }; + + var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) { + return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele); + }; + + var getElementRotationOffset = function getElementRotationOffset(ele) { + return getCenterOffset(getElementBox(ele)); + }; + + var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) { + return getCenterOffset(getSourceLabelBox(ele)); + }; + + var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) { + return getCenterOffset(getTargetLabelBox(ele)); + }; + + var getLabelRotationOffset = function getLabelRotationOffset(ele) { + var bb = getLabelBox(ele); + var p = getCenterOffset(getLabelBox(ele)); + + if (ele.isNode()) { + switch (ele.pstyle('text-halign').value) { + case 'left': + p.x = -bb.w; + break; + + case 'right': + p.x = 0; + break; + } + + switch (ele.pstyle('text-valign').value) { + case 'top': + p.y = -bb.h; + break; + + case 'bottom': + p.y = 0; + break; + } + } + + return p; + }; + + var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, { + getKey: getStyleKey, + doesEleInvalidateKey: backgroundTimestampHasChanged, + drawElement: drawElement, + getBoundingBox: getElementBox, + getRotationPoint: getElementRotationPoint, + getRotationOffset: getElementRotationOffset, + allowEdgeTxrCaching: false, + allowParentTxrCaching: false + }); + var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, { + getKey: getLabelKey, + drawElement: drawLabel, + getBoundingBox: getLabelBox, + getRotationPoint: getLabelRotationPoint, + getRotationOffset: getLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, { + getKey: getSourceLabelKey, + drawElement: drawSourceLabel, + getBoundingBox: getSourceLabelBox, + getRotationPoint: getSourceLabelRotationPoint, + getRotationOffset: getSourceLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, { + getKey: getTargetLabelKey, + drawElement: drawTargetLabel, + getBoundingBox: getTargetLabelBox, + getRotationPoint: getTargetLabelRotationPoint, + getRotationOffset: getTargetLabelRotationOffset, + isVisible: isLabelVisibleAtScale + }); + var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r); + r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) { + // each cache should check for sub-key diff to see that the update affects that cache particularly + eleTxrCache.invalidateElements(eles); + lblTxrCache.invalidateElements(eles); + slbTxrCache.invalidateElements(eles); + tlbTxrCache.invalidateElements(eles); // any change invalidates the layers + + lyrTxrCache.invalidateElements(eles); // update the old bg timestamp so diffs can be done in the ele txr caches + + for (var _i = 0; _i < eles.length; _i++) { + var _p = eles[_i]._private; + _p.oldBackgroundTimestamp = _p.backgroundTimestamp; + } + }); + + var refineInLayers = function refineInLayers(reqs) { + for (var i = 0; i < reqs.length; i++) { + lyrTxrCache.enqueueElementRefinement(reqs[i].ele); + } + }; + + eleTxrCache.onDequeue(refineInLayers); + lblTxrCache.onDequeue(refineInLayers); + slbTxrCache.onDequeue(refineInLayers); + tlbTxrCache.onDequeue(refineInLayers); +} + +CRp$a.redrawHint = function (group, bool) { + var r = this; + + switch (group) { + case 'eles': + r.data.canvasNeedsRedraw[CRp$a.NODE] = bool; + break; + + case 'drag': + r.data.canvasNeedsRedraw[CRp$a.DRAG] = bool; + break; + + case 'select': + r.data.canvasNeedsRedraw[CRp$a.SELECT_BOX] = bool; + break; + } +}; // whether to use Path2D caching for drawing + + +var pathsImpld = typeof Path2D !== 'undefined'; + +CRp$a.path2dEnabled = function (on) { + if (on === undefined) { + return this.pathsEnabled; + } + + this.pathsEnabled = on ? true : false; +}; + +CRp$a.usePaths = function () { + return pathsImpld && this.pathsEnabled; +}; + +CRp$a.setImgSmoothing = function (context, bool) { + if (context.imageSmoothingEnabled != null) { + context.imageSmoothingEnabled = bool; + } else { + context.webkitImageSmoothingEnabled = bool; + context.mozImageSmoothingEnabled = bool; + context.msImageSmoothingEnabled = bool; + } +}; + +CRp$a.getImgSmoothing = function (context) { + if (context.imageSmoothingEnabled != null) { + return context.imageSmoothingEnabled; + } else { + return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled; + } +}; + +CRp$a.makeOffscreenCanvas = function (width, height) { + var canvas; + + if ((typeof OffscreenCanvas === "undefined" ? "undefined" : _typeof(OffscreenCanvas)) !== ( "undefined" )) { + canvas = new OffscreenCanvas(width, height); + } else { + canvas = document.createElement('canvas'); // eslint-disable-line no-undef + + canvas.width = width; + canvas.height = height; + } + + return canvas; +}; + +[CRp, CRp$1, CRp$2, CRp$3, CRp$4, CRp$5, CRp$6, CRp$7, CRp$8, CRp$9].forEach(function (props) { + extend(CRp$a, props); +}); + +var renderer = [{ + name: 'null', + impl: NullRenderer +}, { + name: 'base', + impl: BR +}, { + name: 'canvas', + impl: CR +}]; + +var incExts = [{ + type: 'layout', + extensions: layout +}, { + type: 'renderer', + extensions: renderer +}]; + +var extensions = {}; // registered modules for extensions, indexed by name + +var modules = {}; + +function setExtension(type, name, registrant) { + var ext = registrant; + + var overrideErr = function overrideErr(field) { + error('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden'); + }; + + if (type === 'core') { + if (Core.prototype[name]) { + return overrideErr(name); + } else { + Core.prototype[name] = registrant; + } + } else if (type === 'collection') { + if (Collection.prototype[name]) { + return overrideErr(name); + } else { + Collection.prototype[name] = registrant; + } + } else if (type === 'layout') { + // fill in missing layout functions in the prototype + var Layout = function Layout(options) { + this.options = options; + registrant.call(this, options); // make sure layout has _private for use w/ std apis like .on() + + if (!plainObject(this._private)) { + this._private = {}; + } + + this._private.cy = options.cy; + this._private.listeners = []; + this.createEmitter(); + }; + + var layoutProto = Layout.prototype = Object.create(registrant.prototype); + var optLayoutFns = []; + + for (var i = 0; i < optLayoutFns.length; i++) { + var fnName = optLayoutFns[i]; + + layoutProto[fnName] = layoutProto[fnName] || function () { + return this; + }; + } // either .start() or .run() is defined, so autogen the other + + + if (layoutProto.start && !layoutProto.run) { + layoutProto.run = function () { + this.start(); + return this; + }; + } else if (!layoutProto.start && layoutProto.run) { + layoutProto.start = function () { + this.run(); + return this; + }; + } + + var regStop = registrant.prototype.stop; + + layoutProto.stop = function () { + var opts = this.options; + + if (opts && opts.animate) { + var anis = this.animations; + + if (anis) { + for (var _i = 0; _i < anis.length; _i++) { + anis[_i].stop(); + } + } + } + + if (regStop) { + regStop.call(this); + } else { + this.emit('layoutstop'); + } + + return this; + }; + + if (!layoutProto.destroy) { + layoutProto.destroy = function () { + return this; + }; + } + + layoutProto.cy = function () { + return this._private.cy; + }; + + var getCy = function getCy(layout) { + return layout._private.cy; + }; + + var emitterOpts = { + addEventFields: function addEventFields(layout, evt) { + evt.layout = layout; + evt.cy = getCy(layout); + evt.target = layout; + }, + bubble: function bubble() { + return true; + }, + parent: function parent(layout) { + return getCy(layout); + } + }; + extend(layoutProto, { + createEmitter: function createEmitter() { + this._private.emitter = new Emitter(emitterOpts, this); + return this; + }, + emitter: function emitter() { + return this._private.emitter; + }, + on: function on(evt, cb) { + this.emitter().on(evt, cb); + return this; + }, + one: function one(evt, cb) { + this.emitter().one(evt, cb); + return this; + }, + once: function once(evt, cb) { + this.emitter().one(evt, cb); + return this; + }, + removeListener: function removeListener(evt, cb) { + this.emitter().removeListener(evt, cb); + return this; + }, + removeAllListeners: function removeAllListeners() { + this.emitter().removeAllListeners(); + return this; + }, + emit: function emit(evt, params) { + this.emitter().emit(evt, params); + return this; + } + }); + define$3.eventAliasesOn(layoutProto); + ext = Layout; // replace with our wrapped layout + } else if (type === 'renderer' && name !== 'null' && name !== 'base') { + // user registered renderers inherit from base + var BaseRenderer = getExtension('renderer', 'base'); + var bProto = BaseRenderer.prototype; + var RegistrantRenderer = registrant; + var rProto = registrant.prototype; + + var Renderer = function Renderer() { + BaseRenderer.apply(this, arguments); + RegistrantRenderer.apply(this, arguments); + }; + + var proto = Renderer.prototype; + + for (var pName in bProto) { + var pVal = bProto[pName]; + var existsInR = rProto[pName] != null; + + if (existsInR) { + return overrideErr(pName); + } + + proto[pName] = pVal; // take impl from base + } + + for (var _pName in rProto) { + proto[_pName] = rProto[_pName]; // take impl from registrant + } + + bProto.clientFunctions.forEach(function (name) { + proto[name] = proto[name] || function () { + error('Renderer does not implement `renderer.' + name + '()` on its prototype'); + }; + }); + ext = Renderer; + } + + return setMap({ + map: extensions, + keys: [type, name], + value: ext + }); +} + +function getExtension(type, name) { + return getMap({ + map: extensions, + keys: [type, name] + }); +} + +function setModule(type, name, moduleType, moduleName, registrant) { + return setMap({ + map: modules, + keys: [type, name, moduleType, moduleName], + value: registrant + }); +} + +function getModule(type, name, moduleType, moduleName) { + return getMap({ + map: modules, + keys: [type, name, moduleType, moduleName] + }); +} + +var extension = function extension() { + // e.g. extension('renderer', 'svg') + if (arguments.length === 2) { + return getExtension.apply(null, arguments); + } // e.g. extension('renderer', 'svg', { ... }) + else if (arguments.length === 3) { + return setExtension.apply(null, arguments); + } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse') + else if (arguments.length === 4) { + return getModule.apply(null, arguments); + } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... }) + else if (arguments.length === 5) { + return setModule.apply(null, arguments); + } else { + error('Invalid extension access syntax'); + } +}; // allows a core instance to access extensions internally + + +Core.prototype.extension = extension; // included extensions + +incExts.forEach(function (group) { + group.extensions.forEach(function (ext) { + setExtension(group.type, ext.name, ext.impl); + }); +}); + +// (useful for init) + +var Stylesheet = function Stylesheet() { + if (!(this instanceof Stylesheet)) { + return new Stylesheet(); + } + + this.length = 0; +}; + +var sheetfn = Stylesheet.prototype; + +sheetfn.instanceString = function () { + return 'stylesheet'; +}; // just store the selector to be parsed later + + +sheetfn.selector = function (selector) { + var i = this.length++; + this[i] = { + selector: selector, + properties: [] + }; + return this; // chaining +}; // just store the property to be parsed later + + +sheetfn.css = function (name, value) { + var i = this.length - 1; + + if (string(name)) { + this[i].properties.push({ + name: name, + value: value + }); + } else if (plainObject(name)) { + var map = name; + var propNames = Object.keys(map); + + for (var j = 0; j < propNames.length; j++) { + var key = propNames[j]; + var mapVal = map[key]; + + if (mapVal == null) { + continue; + } + + var prop = Style.properties[key] || Style.properties[dash2camel(key)]; + + if (prop == null) { + continue; + } + + var _name = prop.name; + var _value = mapVal; + this[i].properties.push({ + name: _name, + value: _value + }); + } + } + + return this; // chaining +}; + +sheetfn.style = sheetfn.css; // generate a real style object from the dummy stylesheet + +sheetfn.generateStyle = function (cy) { + var style = new Style(cy); + return this.appendToStyle(style); +}; // append a dummy stylesheet object on a real style object + + +sheetfn.appendToStyle = function (style) { + for (var i = 0; i < this.length; i++) { + var context = this[i]; + var selector = context.selector; + var props = context.properties; + style.selector(selector); // apply selector + + for (var j = 0; j < props.length; j++) { + var prop = props[j]; + style.css(prop.name, prop.value); // apply property + } + } + + return style; +}; + +var version = "3.16.0"; + +var cytoscape = function cytoscape(options) { + // if no options specified, use default + if (options === undefined) { + options = {}; + } // create instance + + + if (plainObject(options)) { + return new Core(options); + } // allow for registration of extensions + else if (string(options)) { + return extension.apply(extension, arguments); + } +}; // e.g. cytoscape.use( require('cytoscape-foo'), bar ) + + +cytoscape.use = function (ext) { + var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext + + args.unshift(cytoscape); // cytoscape is first arg to ext + + ext.apply(null, args); + return this; +}; + +cytoscape.warnings = function (bool) { + return warnings(bool); +}; // replaced by build system + + +cytoscape.version = version; // expose public apis (mostly for extensions) + +cytoscape.stylesheet = cytoscape.Stylesheet = Stylesheet; + +export default cytoscape; diff --git a/html/internal_dashboard/js/etl_viewer/GraphPanel.js b/html/internal_dashboard/js/etl_viewer/GraphPanel.js new file mode 100644 index 0000000000..c82fb5c954 --- /dev/null +++ b/html/internal_dashboard/js/etl_viewer/GraphPanel.js @@ -0,0 +1,131 @@ +/* global cytoscape, cytoscapeDagre */ +Ext.namespace('XDMoD', 'XDMoD.Admin', 'XDMoD.Admin.ETL'); + +XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { + title: 'Default Graph View', + layout: 'fit', + closable: true, + + // This GraphPanel's instance of Cytoscape + cy: null, + + // The JsonStore for this instance of GraphPanel. + store: null, + + // The pipeline that this Graph is meant to display. + // *NOTE: supplied by the code instantiating this panel. + pipeline: null, + + /** + * Initialize this component's contents. + */ + initComponent: function () { + let self = this; + + cytoscape.use(cytoscapeDagre); + + this.containerId = this.id + '_hc'; + + this.store = new Ext.data.JsonStore({ + + url: XDMoD.REST.url + '/etl/graph/pipelines/' + self.pipeline, + + autoDestroy: false, + + root: 'data', + fields: ['group', 'data'], + successProperty: 'success', + messageProperty: 'message', + listeners: { + load: function (store, records, options) { + let data = []; + records.forEach(function (elem) { + data.push(elem.json); + }); + self.cy.add(data); + self.cy.layout({ + name: 'dagre', + /*@ts-ignore*/ + fit: true, + /*@ts-ignore*/ + rankDir: 'LR' + }).run(); + }, + loadexception: function () { + + console.log('loadexception'); + }, + exception: function () { + console.log('error'); + } + } + }); + + + Ext.apply(this, { + items: [ + { + xtype: 'container', + id: this.containerId, + listeners: { + render: function () { + self.fireEvent('renderGraph', self); + } + } + } + ] + }); + + XDMoD.Admin.ETL.GraphPanel.superclass.initComponent.apply(this, arguments); + }, + + listeners: { + renderGraph: function () { + this.cy = cytoscape({ + container: document.getElementById(this.containerId), + style: [ + { + selector: 'node', + css: { + content: 'data(name)', + 'text-valign': 'center', + 'text-halign': 'center', + height: 'label', + width: 'label', + shape: 'rectangle' + } + }, + { + selector: ':parent', + css: { + 'text-valign': 'top', + 'text-halign': 'center', + 'background-color': '#FFF', + shape: 'round-rectangle', + 'font-size': '10px', + 'padding-top': '5px' + } + }, + { + selector: 'edge', + css: { + 'curve-style': 'bezier', + 'target-arrow-shape': 'triangle', + 'line-color': '#00FF00', + 'target-arrow-color': '#00FF00' + } + } + ], + layout: { + name: 'dagre', + /*@ts-ignore*/ + fit: true, + /*@ts-ignore*/ + rankDir: 'LR' + } + }); + + this.store.load(); + } + } +}); From 85e5e72b7290210f4eeb21eef8b9a9a3dc86fa74 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 21 Apr 2021 13:14:20 -0400 Subject: [PATCH 68/76] Add support for displaying tables in the Graph Panel --- .../Controllers/ETLControllerProvider.php | 75 ++++++++++++++----- .../js/etl_viewer/GraphPanel.js | 7 +- 2 files changed, 62 insertions(+), 20 deletions(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 4ced65f25b..70bbc3b6fc 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -406,9 +406,10 @@ public function getPipelinesForGraph(Request $request, Application $app, $pipeli * - Pipeline: xdmod.jobs-cloud-import-users-openstack * - Sources: * - MySQL: - * - Source 1,2,3..N: + * - Schema: + * - Table: * - JSON File: - * - Source 1,2,3..N: + * - Source 1,2,3..N: File name * - Actions: * - Action 1,2,3..N: Action Name * - Destinations: @@ -451,23 +452,35 @@ public function getPipelinesForGraph(Request $request, Application $app, $pipeli $actionId = $action['data']['id']; $destinationId = $destination['data']['id']; - $results[] = array( - 'group' => 'edges', - 'data' => array( - 'id' => "$sourceId-$actionId", - 'source' => $sourceId, - 'target' => $actionId - ) - ); + $sourceChildren = $this->getTargetChildren($actionData['source'], $sourceId); + $destinationChildren = $this->getTargetChildren($actionData['destination'], $destinationId); + + $results = array_merge($results, $sourceChildren); + $results = array_merge($results, $destinationChildren); + + foreach($sourceChildren as $sourceChild) { + $sourceChildId = $sourceChild['data']['id']; + $results[] = array( + 'group' => 'edges', + 'data' => array( + 'id' => sprintf("%s-%s", $sourceChildId, $actionId), + 'source' => $sourceChildId, + 'target' => $actionId + ) + ); + } - $results[] = array( - 'group' => 'edges', - 'data' => array( - 'id' => "$actionId-$destinationId", - 'source' => $actionId, - 'target' => $destinationId - ) - ); + foreach($destinationChildren as $destinationChild) { + $destinationChildId = $destinationChild['data']['id']; + $results[] = array( + 'group' => 'edges', + 'data' => array( + 'id' => sprintf("%s-%s", $actionId, $destinationChildId), + 'source' => $actionId, + 'target' => $destinationChildId + ) + ); + } } return $app->json( @@ -488,6 +501,32 @@ private function getTargetData($target, $idPrefix = null) ); } + private function getTargetChildren($target, $parentId) + { + $results = array(); + + if (array_key_exists('tables', $target)) { + $key = 'tables'; + } else if (array_key_exists('definition_file_list', $target)) { + $key = 'definition_file_list'; + } else { + return $results; + } + + foreach($target[$key] as $child) { + $results[] = array( + 'group' => 'nodes', + 'data' => array( + 'id' => "$parentId-$child", + 'name' => $child, + 'parent' => $parentId + ) + ); + } + + return $results; + } + /** * * @param array $source diff --git a/html/internal_dashboard/js/etl_viewer/GraphPanel.js b/html/internal_dashboard/js/etl_viewer/GraphPanel.js index c82fb5c954..1e8ce6d803 100644 --- a/html/internal_dashboard/js/etl_viewer/GraphPanel.js +++ b/html/internal_dashboard/js/etl_viewer/GraphPanel.js @@ -92,7 +92,7 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { 'text-halign': 'center', height: 'label', width: 'label', - shape: 'rectangle' + shape: 'round-rectangle' } }, { @@ -109,7 +109,10 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { { selector: 'edge', css: { - 'curve-style': 'bezier', + 'curve-style': 'taxi', + 'taxi-direction': 'downwards', + 'taxi-turn': 20, + 'taxi-turn-min-distance': 5, 'target-arrow-shape': 'triangle', 'line-color': '#00FF00', 'target-arrow-color': '#00FF00' From 50559c4cf882b1251d5dc2b0d131d17c0187253c Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Mon, 26 Apr 2021 10:05:23 -0400 Subject: [PATCH 69/76] checkpointing --- .../Controllers/ETLControllerProvider.php | 47 ++++++++++++++++--- html/internal_dashboard/index.php | 1 + .../js/etl_viewer/GraphPanel.js | 22 +++++---- 3 files changed, 55 insertions(+), 15 deletions(-) diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 70bbc3b6fc..de2af38274 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -424,6 +424,7 @@ public function getPipelinesForGraph(Request $request, Application $app, $pipeli 'name' => $pipeline, ) ); + foreach($actions as $key => $actionData) { $actionName = $actionData['name']; @@ -504,12 +505,16 @@ private function getTargetData($target, $idPrefix = null) private function getTargetChildren($target, $parentId) { $results = array(); + $properties = array('tables', 'definition_file_list', 'sql_file_list', 'definition_file'); + $key = null; + foreach($properties as $property) { + if (array_key_exists($property, $target)) { + $key = $property; + break; + } + } - if (array_key_exists('tables', $target)) { - $key = 'tables'; - } else if (array_key_exists('definition_file_list', $target)) { - $key = 'definition_file_list'; - } else { + if ($key === null) { return $results; } @@ -713,8 +718,38 @@ function ($carry, $item) { break; case "StructuredFileIngestor": $parsed = $action->parsed_definition_file; + $tables = array(); - $destination['tables'] = array_keys(get_object_vars($parsed->destination_record_map)); + $properties = array( + 'destination_record_map' => function ($source) { + return array_keys(get_object_vars($source->destination_record_map)); + }, + 'table_definition' => function ($source) { + if (is_array($source) && count($source) > 0) { + $table = $source[0]; + return array($table->name); + } elseif (is_object($source)) { + return array($source->name); + } + /*if (count($source) > 0) { + + }*/ + #var_dump($source); + return array(); + } + ); + + foreach($properties as $property => $propertyExtractor) { + if (property_exists($parsed, $property)) { + $tables = $propertyExtractor($parsed->$property); + break; + } + } + + $destination['tables'] = $tables; + break; + case "ExecuteSql": + $source['sql_file_list'] = $action->options->options->sql_file_list; break; default: break; diff --git a/html/internal_dashboard/index.php b/html/internal_dashboard/index.php index 06c4543da9..1ef000b3ed 100644 --- a/html/internal_dashboard/index.php +++ b/html/internal_dashboard/index.php @@ -205,6 +205,7 @@ // ETL Viewer Dependencies + // ETL Viewer diff --git a/html/internal_dashboard/js/etl_viewer/GraphPanel.js b/html/internal_dashboard/js/etl_viewer/GraphPanel.js index 1e8ce6d803..af27c5b244 100644 --- a/html/internal_dashboard/js/etl_viewer/GraphPanel.js +++ b/html/internal_dashboard/js/etl_viewer/GraphPanel.js @@ -52,7 +52,6 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { }).run(); }, loadexception: function () { - console.log('loadexception'); }, exception: function () { @@ -90,9 +89,14 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { content: 'data(name)', 'text-valign': 'center', 'text-halign': 'center', + shape: 'round-rectangle', + 'padding-left': '5px', height: 'label', width: 'label', - shape: 'round-rectangle' + 'border-width': '2px', + 'border-color': '#000', + 'background-color': '#262626', + 'background-opacity': 0.3 } }, { @@ -109,13 +113,12 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { { selector: 'edge', css: { - 'curve-style': 'taxi', - 'taxi-direction': 'downwards', - 'taxi-turn': 20, - 'taxi-turn-min-distance': 5, + 'curve-style': 'bezier', + 'arrow-scale': 0.66, 'target-arrow-shape': 'triangle', - 'line-color': '#00FF00', - 'target-arrow-color': '#00FF00' + 'line-color': '#0099ff', + 'line-opacity': 0.66, + 'target-arrow-color': '#000' } } ], @@ -124,7 +127,8 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { /*@ts-ignore*/ fit: true, /*@ts-ignore*/ - rankDir: 'LR' + rankDir: 'LR', + nodeSep: 20 } }); From 9a2bd43a9c4fce80245fa589df5a1fcb44417148 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 28 Apr 2021 15:29:09 -0400 Subject: [PATCH 70/76] Check Pointing Have things in a enough of a shape for people to get an idea of how things work --- ...oscape-dagre-esm.js => cytoscape-dagre.js} | 0 html/gui/lib/cytoscape/cytoscape.min.js | 32 +++++++++++++++++++ html/internal_dashboard/index.php | 4 +-- .../js/etl_viewer/ETLViewer.js | 22 +++---------- .../js/etl_viewer/ETLViewerTreeTab.js | 18 ++++++++--- 5 files changed, 51 insertions(+), 25 deletions(-) rename html/gui/lib/cytoscape-dagre/{cytoscape-dagre-esm.js => cytoscape-dagre.js} (100%) create mode 100644 html/gui/lib/cytoscape/cytoscape.min.js diff --git a/html/gui/lib/cytoscape-dagre/cytoscape-dagre-esm.js b/html/gui/lib/cytoscape-dagre/cytoscape-dagre.js similarity index 100% rename from html/gui/lib/cytoscape-dagre/cytoscape-dagre-esm.js rename to html/gui/lib/cytoscape-dagre/cytoscape-dagre.js diff --git a/html/gui/lib/cytoscape/cytoscape.min.js b/html/gui/lib/cytoscape/cytoscape.min.js new file mode 100644 index 0000000000..e4de5d47ad --- /dev/null +++ b/html/gui/lib/cytoscape/cytoscape.min.js @@ -0,0 +1,32 @@ +/** + * Copyright (c) 2016-2021, The Cytoscape Consortium. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the “Software”), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).cytoscape=t()}(this,(function(){"use strict";function e(t){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(t)}function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;nt?1:0},I=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n255)return;t.push(Math.floor(a))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,i,a,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^hsl[a]?\\(((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?)))\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))[%])\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))[%])(?:\\s*,\\s*((?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))))?\\)$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(i=parseFloat(c[3]))<0||i>100)return;if(i/=100,void 0!==(a=c[4])&&((a=parseFloat(a))<0||a>1))return;if(0===r)o=s=l=Math.round(255*i);else{var d=i<.5?i*(1+r):i+r-i*r,h=2*i-d;o=Math.round(255*u(h,d,n+1/3)),s=Math.round(255*u(h,d,n)),l=Math.round(255*u(h,d,n-1/3))}t=[o,s,l,a]}return t}(e)},L={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},A=function(e){for(var t=e.map,n=e.keys,r=n.length,i=0;i=t||n<0||d&&e-u>=a}function v(){var e=U();if(g(e))return y(e);s=setTimeout(v,function(e){var n=t-(e-l);return d?Z(n,a-(e-u)):n}(e))}function y(e){return s=void 0,h&&r?p(e):(r=i=void 0,o)}function m(){var e=U(),n=g(e);if(r=arguments,i=this,l=e,n){if(void 0===s)return f(l);if(d)return s=setTimeout(v,t),p(l)}return void 0===s&&(s=setTimeout(v,t)),o}return t=Q(t)||0,$(n)&&(c=!!n.leading,a=(d="maxWait"in n)?G(Q(n.maxWait)||0,t):a,h="trailing"in n?!!n.trailing:h),m.cancel=function(){void 0!==s&&clearTimeout(s),u=0,r=l=i=s=void 0},m.flush=function(){return void 0===s?o:y(U())},m},ee=o?o.performance:null,te=ee&&ee.now?function(){return ee.now()}:function(){return Date.now()},ne=function(){if(o){if(o.requestAnimationFrame)return function(e){o.requestAnimationFrame(e)};if(o.mozRequestAnimationFrame)return function(e){o.mozRequestAnimationFrame(e)};if(o.webkitRequestAnimationFrame)return function(e){o.webkitRequestAnimationFrame(e)};if(o.msRequestAnimationFrame)return function(e){o.msRequestAnimationFrame(e)}}return function(e){e&&setTimeout((function(){e(te())}),1e3/60)}}(),re=function(e){return ne(e)},ie=te,ae=65599,oe=function(e){for(var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9261,r=n;!(t=e.next()).done;)r=r*ae+t.value|0;return r},se=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9261;return t*ae+e|0},le=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5381;return(t<<5)+t+e|0},ue=function(e){return 2097152*e[0]+e[1]},ce=function(e,t){return[se(e[0],t[0]),le(e[1],t[1])]},de=function(e,t){var n={value:0,done:!1},r=0,i=e.length;return oe({next:function(){return r=0&&(e[r]!==t||(e.splice(r,1),!n));r--);},_e=function(e){e.splice(0,e.length)},Ne=function(e,t,n){return n&&(t=M(n,t)),e[t]},Ie=function(e,t,n,r){n&&(t=M(n,t)),e[t]=r},ze="undefined"!=typeof Map?Map:function(){function e(){t(this,e),this._obj={}}return r(e,[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}]),e}(),Le=function(){function e(n){if(t(this,e),this._obj=Object.create(null),this.size=0,null!=n){var r;r=null!=n.instanceString&&n.instanceString()===this.instanceString()?n.toArray():n;for(var i=0;i2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&E(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new Ae,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==i.position.x&&(i.position.x=0),null==i.position.y&&(i.position.y=0),t.renderedPosition){var a=t.renderedPosition,o=e.pan(),s=e.zoom();i.position={x:(a.x-o.x)/s,y:(a.y-o.y)/s}}var l=[];g(t.classes)?l=t.classes:p(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;ut?1:0},u=function(e,t,i,a,o){var s;if(null==i&&(i=0),null==o&&(o=n),i<0)throw new Error("lo must be non-negative");for(null==a&&(a=e.length);in;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse()).length;ag;0<=g?++h:--h)v.push(a(e,r));return v},f=function(e,t,r,i){var a,o,s;for(null==i&&(i=n),a=e[r];r>t&&i(a,o=e[s=r-1>>1])<0;)e[r]=o,r=s;return e[r]=a},g=function(e,t,r){var i,a,o,s,l;for(null==r&&(r=n),a=e.length,l=t,o=e[t],i=2*t+1;i0;){var k=b.pop(),C=y(k),S=k.id();if(d[S]=C,C!==1/0)for(var P=k.neighborhood().intersect(f),D=0;D0)for(n.unshift(t);c[i];){var a=c[i];n.unshift(a.edge),n.unshift(a.node),i=(r=a.node).id()}return o.spawn(n)}}}},Ye={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,i=n.length,a=new Array(i),o=n,s=function(e){for(var t=0;t0;){if(l=g.pop(),u=l.id(),v.delete(u),w++,u===d){for(var E=[],k=i,C=d,S=m[C];E.unshift(k),null!=S&&E.unshift(S),null!=(k=y[C]);)S=m[C=k.id()];return{found:!0,distance:h[u],path:this.spawn(E),steps:w}}f[u]=!0;for(var P=l._private.edges,D=0;DD&&(f[P]=D,m[P]=S,b[P]=w),!i){var T=S*u+C;!i&&f[T]>D&&(f[T]=D,m[T]=C,b[T]=w)}}}for(var M=0;M1&&void 0!==arguments[1]?arguments[1]:a,r=m(e),i=[],o=r;;){if(null==o)return t.spawn();var l=y(o),u=l.edge,c=l.pred;if(i.unshift(o[0]),o.same(n)&&i.length>0)break;null!=u&&i.unshift(u),o=c}return s.spawn(i)},hasNegativeWeightCycle:g,negativeWeightCycles:[]}}},Ue=Math.sqrt(2),$e=function(e,t,n){0===n.length&&Ee("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],i=r[1],a=r[2],o=t[i],s=t[a],l=n,u=l.length-1;u>=0;u--){var c=l[u],d=c[1],h=c[2];(t[d]===o&&t[h]===s||t[d]===s&&t[h]===o)&&l.splice(u,1)}for(var p=0;pr;){var i=Math.floor(Math.random()*t.length);t=$e(i,e,t),n--}return t},Je={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy((function(e){return e.isLoop()}));var i=n.length,a=r.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),s=Math.floor(i/Ue);if(!(i<2)){for(var l=[],u=0;u0?1:e<0?-1:0},ot=function(e,t){return Math.sqrt(st(e,t))},st=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},lt=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},pt=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},ft=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},gt=function(e){var t,n,r,i,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===o.length)t=n=r=i=o[0];else if(2===o.length)t=r=o[0],i=n=o[1];else if(4===o.length){var s=a(o,4);t=s[0],n=s[1],r=s[2],i=s[3]}return e.x1-=i,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},vt=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},yt=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},mt=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},bt=function(e,t){return mt(e,t.x1,t.y1)&&mt(e,t.x2,t.y2)},xt=function(e,t,n,r,i,a,o){var s,l=Rt(i,a),u=i/2,c=a/2,d=r-c-o;if((s=Nt(e,t,n,r,n-u+l-o,d,n+u-l+o,d,!1)).length>0)return s;var h=n+u+o;if((s=Nt(e,t,n,r,h,r-c+l-o,h,r+c-l+o,!1)).length>0)return s;var p=r+c+o;if((s=Nt(e,t,n,r,n-u+l-o,p,n+u-l+o,p,!1)).length>0)return s;var f,g=n-u-o;if((s=Nt(e,t,n,r,g,r-c+l-o,g,r+c-l+o,!1)).length>0)return s;var v=n-u+l,y=r-c+l;if((f=Bt(e,t,n,r,v,y,l+o)).length>0&&f[0]<=v&&f[1]<=y)return[f[0],f[1]];var m=n+u-l,b=r-c+l;if((f=Bt(e,t,n,r,m,b,l+o)).length>0&&f[0]>=m&&f[1]<=b)return[f[0],f[1]];var x=n+u-l,w=r+c-l;if((f=Bt(e,t,n,r,x,w,l+o)).length>0&&f[0]>=x&&f[1]>=w)return[f[0],f[1]];var E=n-u+l,k=r+c-l;return(f=Bt(e,t,n,r,E,k,l+o)).length>0&&f[0]<=E&&f[1]>=k?[f[0],f[1]]:[]},wt=function(e,t,n,r,i,a,o){var s=o,l=Math.min(n,i),u=Math.max(n,i),c=Math.min(r,a),d=Math.max(r,a);return l-s<=e&&e<=u+s&&c-s<=t&&t<=d+s},Et=function(e,t,n,r,i,a,o,s,l){var u=Math.min(n,o,i)-l,c=Math.max(n,o,i)+l,d=Math.min(r,s,a)-l,h=Math.max(r,s,a)+l;return!(ec||th)},kt=function(e,t,n,r,i,a,o,s){var l=[];!function(e,t,n,r,i){var a,o,s,l,u,c,d,h;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),a=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,i[1]=0,d=t/3,a>0?(u=(u=s+Math.sqrt(a))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(a))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-d+u+c,d+=(u+c)/2,i[4]=i[2]=-d,d=Math.sqrt(3)*(-c+u)/2,i[3]=d,i[5]=-d):(i[5]=i[3]=0,0===a?(h=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),i[0]=2*h-d,i[4]=i[2]=-(h+d)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),h=2*Math.sqrt(o),i[0]=-d+h*Math.cos(l/3),i[2]=-d+h*Math.cos((l+2*Math.PI)/3),i[4]=-d+h*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*i+2*n*o+4*i*i-4*i*o+o*o+r*r-4*r*a+2*r*s+4*a*a-4*a*s+s*s,9*n*i-3*n*n-3*n*o-6*i*i+3*i*o+9*r*a-3*r*r-3*r*s-6*a*a+3*a*s,3*n*n-6*n*i+n*o-n*e+2*i*i+2*i*e-o*e+3*r*r-6*r*a+r*s-r*t+2*a*a+2*a*t-s*t,1*n*i-n*n+n*e-i*e+r*a-r*r+r*t-a*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var d,h,p,f=-1,g=0;g=0?pl?(e-i)*(e-i)+(t-a)*(t-a):u-d},St=function(e,t,n){for(var r,i,a,o,s=0,l=0;l=e&&e>=a||r<=e&&e<=a))continue;(e-r)/(a-r)*(o-i)+i>t&&s++}return s%2!=0},Pt=function(e,t,n,r,i,a,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var d,h=Math.cos(-u),p=Math.sin(-u),f=0;f0){var g=Tt(c,-l);d=Dt(g)}else d=c;return St(e,t,d)},Dt=function(e){for(var t,n,r,i,a,o,s,l,u=new Array(e.length/2),c=0;c=0&&f<=1&&v.push(f),g>=0&&g<=1&&v.push(g),0===v.length)return[];var y=v[0]*s[0]+e,m=v[0]*s[1]+t;return v.length>1?v[0]==v[1]?[y,m]:[y,m,v[1]*s[0]+e,v[1]*s[1]+t]:[y,m]},_t=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},Nt=function(e,t,n,r,i,a,o,s,l){var u=e-i,c=n-e,d=o-i,h=t-a,p=r-t,f=s-a,g=d*h-f*u,v=c*h-p*u,y=f*c-d*p;if(0!==y){var m=g/y,b=v/y;return-.001<=m&&m<=1.001&&-.001<=b&&b<=1.001||l?[e+m*c,t+m*p]:[]}return 0===g||0===v?_t(e,n,o)===o?[o,s]:_t(e,n,i)===i?[i,a]:_t(i,o,n)===n?[n,r]:[]:[]},It=function(e,t,n,r,i,a,o,s){var l,u,c,d,h,p,f=[],g=new Array(n.length),v=!0;if(null==a&&(v=!1),v){for(var y=0;y0){var m=Tt(g,-s);u=Dt(m)}else u=g}else u=n;for(var b=0;bu&&(u=t)},d=function(e){return l[e]},h=0;h0?b.edgesTo(m)[0]:m.edgesTo(b)[0];var w=r(x);m=m.id(),h[m]>h[v]+w&&(h[m]=h[v]+w,p.nodes.indexOf(m)<0?p.push(m):p.updateItem(m),u[m]=0,l[m]=[]),h[m]==h[v]+w&&(u[m]=u[m]+u[v],l[m].push(v))}else for(var E=0;E0;){for(var P=n.pop(),D=0;D0&&o.push(n[s]);0!==o.length&&i.push(r.collection(o))}return i}(c,l,t,r);return b=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:on,o=r,s=0;s=2?hn(e,t,n,0,un,cn):hn(e,t,n,0,ln)},squaredEuclidean:function(e,t,n){return hn(e,t,n,0,un)},manhattan:function(e,t,n){return hn(e,t,n,0,ln)},max:function(e,t,n){return hn(e,t,n,-1/0,dn)}};function fn(e,t,n,r,i,a){var o;return o=f(e)?e:pn[e]||pn.euclidean,0===t&&f(e)?o(i,a):o(t,n,r,i,a)}pn["squared-euclidean"]=pn.squaredEuclidean,pn.squaredeuclidean=pn.squaredEuclidean;var gn=Me({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),vn=function(e){return gn(e)},yn=function(e,t,n,r,i){var a="kMedoids"!==i?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return fn(e,r.length,a,(function(e){return r[e](t)}),o,s)},mn=function(e,t,n){for(var r=n.length,i=new Array(r),a=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},En=function(e,t,n){for(var r=0;ri&&(i=t[l][u],a=u);o[a].push(e[l])}for(var c=0;c=i.threshold||"dendrogram"===i.mode&&1===e.length)return!1;var p,f=t[o],g=t[r[o]];p="dendrogram"===i.mode?{left:f,right:g,key:f.key}:{value:f.value.concat(g.value),key:f.key},e[f.index]=p,e.splice(g.index,1),t[f.key]=p;for(var v=0;vn[g.key][y.key]&&(a=n[g.key][y.key])):"max"===i.linkage?(a=n[f.key][y.key],n[f.key][y.key]1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];r?e=e.slice(t,n):(n0&&e.splice(0,t));for(var o=0,s=e.length-1;s>=0;s--){var l=e[s];a?isFinite(l)||(e[s]=-1/0,o++):e.splice(s,1)}i&&e.sort((function(e,t){return e-t}));var u=e.length,c=Math.floor(u/2);return u%2!=0?e[c+1+o]:(e[c-1+o]+e[c+o])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,i=0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,i=t;io&&(a=l,o=t[i*e+l])}a>0&&r.push(a)}for(var u=0;u=D?(T=D,D=B,M=_):B>T&&(T=B);for(var N=0;N0?1:0;C[k%u.minIterations*t+R]=V,O+=V}if(O>0&&(k>=u.minIterations-1||k==u.maxIterations-1)){for(var F=0,q=0;q0&&r.push(i);return r}(t,a,o),X=function(e,t,n){for(var r=Rn(e,t,n),i=0;il&&(s=u,l=c)}n[i]=a[s]}return r=Rn(e,t,n)}(t,r,Y),W={},H=0;H1)}}));var l=Object.keys(t).filter((function(e){return t[e].cutVertex})).map((function(t){return e.getElementById(t)}));return{cut:e.spawn(l),components:i}},Yn=function(){var e=this,t={},n=0,r=[],i=[],a=e.spawn(e);return e.forEach((function(o){if(o.isNode()){var s=o.id();s in t||function o(s){if(i.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach((function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))})),t[s].index===t[s].low){for(var l=e.spawn();;){var u=i.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),d=l.merge(c);r.push(d),a=a.difference(d)}}(s)}})),{cut:a,components:r}},Xn={};[Ve,je,Ye,We,Ke,Ze,Je,jt,Xt,Ht,Gt,an,Tn,zn,Fn,{hierholzer:function(e){if(!v(e)){var t=arguments;e={root:t[0],directed:t[1]}}var n,r,i,a=qn(e),o=a.root,s=a.directed,l=this,u=!1;o&&(i=p(o)?this.filter(o)[0].id():o[0].id());var c={},d={};s?l.forEach((function(e){var t=e.id();if(e.isNode()){var i=e.indegree(!0),a=e.outdegree(!0),o=i-a,s=a-i;1==o?n?u=!0:n=t:1==s?r?u=!0:r=t:(s>1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach((function(e){e.isEdge()&&c[t].push(e.id())}))}else d[t]=[void 0,e.target().id()]})):l.forEach((function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach((function(e){return c[t].push(e.id())}))):d[t]=[e.source().id(),e.target().id()]}));var h={found:!1,trail:void 0};if(u)return h;if(r&&n)if(s){if(i&&r!=i)return h;i=r}else{if(i&&r!=i&&n!=i)return h;i||(i=r)}else i||(i=l[0].id());var f=function(e){for(var t,n,r,i=e,a=[e];c[i].length;)t=c[i].shift(),n=d[t][0],i!=(r=d[t][1])?(c[r]=c[r].filter((function(e){return e!=t})),i=r):s||i==n||(c[n]=c[n].filter((function(e){return e!=t})),i=n),a.unshift(t),a.unshift(i);return a},g=[],y=[];for(y=f(i);1!=y.length;)0==c[y[0]].length?(g.unshift(l.getElementById(y.shift())),g.unshift(l.getElementById(y.shift()))):y=f(y.shift()).concat(y);for(var m in g.unshift(l.getElementById(y.shift())),c)if(c[m].length)return h;return h.found=!0,h.trail=this.spawn(g,!0),h}},{hopcroftTarjanBiconnected:jn,htbc:jn,htb:jn,hopcroftTarjanBiconnectedComponents:jn},{tarjanStronglyConnected:Yn,tsc:Yn,tscc:Yn,tarjanStronglyConnectedComponents:Yn}].forEach((function(e){I(Xn,e)})); + /*! + Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable + Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) + Licensed under The MIT License (http://opensource.org/licenses/MIT) + */ + var Wn=function e(t){if(!(this instanceof e))return new e(t);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof t&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))};Wn.prototype={fulfill:function(e){return Hn(this,1,"fulfillValue",e)},reject:function(e){return Hn(this,2,"rejectReason",e)},then:function(e,t){var n=new Wn;return this.onFulfilled.push(Zn(e,n,"fulfill")),this.onRejected.push(Zn(t,n,"reject")),Kn(this),n.proxy}};var Hn=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,Kn(e)),e},Kn=function(e){1===e.state?Gn(e,"onFulfilled",e.fulfillValue):2===e.state&&Gn(e,"onRejected",e.rejectReason)},Gn=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var i=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=void 0!==this.length?this:[this];if(!(this._private.cy||this).styleEnabled())return this;for(var t=0;t0&&this.spawn(n).updateStyle().emit("class"),this},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){g(e)||(e=e.match(/\S+/g)||[]);for(var n=void 0===t,r=[],i=0,a=this.length;i0&&this.spawn(r).updateStyle().emit("class"),this},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout((function(){n.removeClass(e)}),t),n}};nr.className=nr.classNames=nr.classes;var rr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:_,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};rr.variable="(?:[\\w-]|(?:\\\\"+rr.metaChar+"))+",rr.value=rr.string+"|"+rr.number,rr.className=rr.variable,rr.id=rr.variable,function(){var e,t,n;for(e=rr.comparatorOp.split("|"),n=0;n=0||"="!==t&&(rr.comparatorOp+="|\\!"+t)}();var ir=0,ar=1,or=2,sr=3,lr=4,ur=5,cr=6,dr=7,hr=8,pr=9,fr=10,gr=11,vr=12,yr=13,mr=14,br=15,xr=16,wr=17,Er=18,kr=19,Cr=20,Sr=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort((function(e,t){return function(e,t){return-1*N(e,t)}(e.selector,t.selector)})),Pr=function(){for(var e,t={},n=0;n0&&l.edgeCount>0)return Ce("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(l.edgeCount>1)return Ce("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===l.edgeCount&&Ce("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return p(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,a){var o=r.type,s=r.value;switch(o){case ir:var l=e(s);return l.substring(0,l.length-1);case sr:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case ur:var d=r.operator,h=r.field;return"["+e(d)+h+"]";case lr:return"["+r.field+"]";case cr:var p=r.operator;return"[["+r.field+n(e(p))+t(s)+"]]";case dr:return s;case hr:return"#"+s;case pr:return"."+s;case wr:case br:return i(r.parent,a)+n(">")+i(r.child,a);case Er:case xr:return i(r.ancestor,a)+" "+i(r.descendant,a);case kr:var f=i(r.left,a),g=i(r.subject,a),v=i(r.right,a);return f+(f.length>0?" ":"")+g+v;case Cr:return""}},i=function(e,t){return e.checks.reduce((function(n,i,a){return n+(t===e&&0===a?"$":"")+r(i,t)}),"")},a="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(i=o||s?""+e:"",a=""+n),u&&(e=i=i.toLowerCase(),n=a=a.toLowerCase()),t){case"*=":r=i.indexOf(a)>=0;break;case"$=":r=i.indexOf(a,i.length-a.length)>=0;break;case"^=":r=0===i.indexOf(a);break;case"=":r=e===n;break;case">":d=!0,r=e>n;break;case">=":d=!0,r=e>=n;break;case"<":d=!0,r=e0;){var u=i.shift();t(u),a.add(u.id()),o&&r(i,a,u)}return e}function Wr(e,t,n){if(n.isParent())for(var r=n._private.children,i=0;i1&&void 0!==arguments[1])||arguments[1];return Xr(this,e,t,Wr)},Yr.forEachUp=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return Xr(this,e,t,Hr)},Yr.forEachUpAndDown=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return Xr(this,e,t,Kr)},Yr.ancestors=Yr.parents,(Fr=qr={data:er.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:er.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:er.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:er.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:er.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:er.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=Fr.data,Fr.removeAttr=Fr.removeData;var Gr,Zr,Ur=qr,$r={};function Qr(e){return function(t){if(void 0===t&&(t=!0),0!==this.length&&this.isNode()&&!this.removed()){for(var n=0,r=this[0],i=r._private.edges,a=0;at})),minIndegree:Jr("indegree",(function(e,t){return et})),minOutdegree:Jr("outdegree",(function(e,t){return et}))}),I($r,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var d=c?l.position():{x:0,y:0};return i={x:s.x-d.x,y:s.y-d.y},void 0===e?i:i[e]}for(var h=0;h0,m=y;y&&(g=g[0]);var b=m?g.position():{x:0,y:0};void 0!==t?f.position(e,t+b[e]):void 0!==i&&f.position({x:i.x+b.x,y:i.y+b.y})}}else if(!a)return;return this}}).modelPosition=Gr.point=Gr.position,Gr.modelPositions=Gr.points=Gr.positions,Gr.renderedPoint=Gr.renderedPosition,Gr.relativePoint=Gr.relativePosition;var ni,ri,ii=Zr;ni=ri={},ri.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),i=n.pan(),a=t.x1*r+i.x,o=t.x2*r+i.x,s=t.y1*r+i.y,l=t.y2*r+i.y;return{x1:a,x2:o,y1:s,y2:l,w:o-a,h:l-s}},ri.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp((function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}})),this):this},ri.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,i={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},a=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==a.w&&0!==a.h||((a={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-a.w/2,a.x2=o.x+a.w/2,a.y1=o.y-a.h/2,a.y2=o.y+a.h/2);var s=i.width.left.value;"px"===i.width.left.units&&i.width.val>0&&(s=100*s/i.width.val);var l=i.width.right.value;"px"===i.width.right.units&&i.width.val>0&&(l=100*l/i.width.val);var u=i.height.top.value;"px"===i.height.top.units&&i.height.val>0&&(u=100*u/i.height.val);var c=i.height.bottom.value;"px"===i.height.bottom.units&&i.height.val>0&&(c=100*c/i.height.val);var d=y(i.width.val-a.w,s,l),h=d.biasDiff,p=d.biasComplementDiff,f=y(i.height.val-a.h,u,c),g=f.biasDiff,v=f.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(a.w,a.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(a.w,i.width.val),o.x=(-h+a.x1+a.x2+p)/2,t.autoHeight=Math.max(a.h,i.height.val),o.y=(-g+a.y1+a.y2+v)/2}function y(e,t,n){var r=0,i=0,a=t+n;return e>0&&a>0&&(r=t/a*e,i=n/a*e),{biasDiff:r,biasComplementDiff:i}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},si=function(e,t){return null==t?e:oi(e,t.x1,t.y1,t.x2,t.y2)},li=function(e,t,n){return Ne(e,t,n)},ui=function(e,t,n){if(!t.cy().headless()){var r,i,a=t._private,o=a.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,i=o.srcY):"target"===n?(r=o.tgtX,i=o.tgtY):(r=o.midX,i=o.midY);var l=a.arrowBounds=a.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=i-s,u.x2=r+s,u.y2=i+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,ft(u,1),oi(e,u.x1,u.y1,u.x2,u.y2)}}},ci=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var i=t._private,a=i.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),d=t.pstyle("text-valign"),h=li(a,"labelWidth",n),p=li(a,"labelHeight",n),f=li(a,"labelX",n),g=li(a,"labelY",n),v=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,k=p,C=h,S=C/2,P=k/2;if(m)o=f-S,s=f+S,l=g-P,u=g+P;else{switch(c.value){case"left":o=f-C,s=f;break;case"center":o=f-S,s=f+S;break;case"right":o=f,s=f+C}switch(d.value){case"top":l=g-k,u=g;break;case"center":l=g-P,u=g+P;break;case"bottom":l=g,u=g+k}}o+=v-Math.max(x,w)-E-2,s+=v+Math.max(x,w)+E+2,l+=y-Math.max(x,w)-E-2,u+=y+Math.max(x,w)+E+2;var D=n||"main",T=i.labelBounds,M=T[D]=T[D]||{};M.x1=o,M.y1=l,M.x2=s,M.y2=u,M.w=s-o,M.h=u-l;var B=m&&"autorotate"===b.strValue,_=null!=b.pfValue&&0!==b.pfValue;if(B||_){var N=B?li(i.rstyle,"labelAngle",n):b.pfValue,I=Math.cos(N),z=Math.sin(N),L=(o+s)/2,A=(l+u)/2;if(!m){switch(c.value){case"left":L=s;break;case"right":L=o}switch(d.value){case"top":A=u;break;case"bottom":A=l}}var O=function(e,t){return{x:(e-=L)*I-(t-=A)*z+L,y:e*z+t*I+A}},R=O(o,l),V=O(o,u),F=O(s,l),q=O(s,u);o=Math.min(R.x,V.x,F.x,q.x),s=Math.max(R.x,V.x,F.x,q.x),l=Math.min(R.y,V.y,F.y,q.y),u=Math.max(R.y,V.y,F.y,q.y)}var j=D+"Rot",Y=T[j]=T[j]||{};Y.x1=o,Y.y1=l,Y.x2=s,Y.y2=u,Y.w=s-o,Y.h=u-l,oi(e,o,l,s,u),oi(i.labelBounds.all,o,l,s,u)}return e}},di=function(e){var t=0,n=function(e){return(e?1:0)<(r=P[1].x)){var D=n;n=r,r=D}if(i>(a=P[1].y)){var T=i;i=a,a=T}oi(h,n-w,i-w,r+w,a+w)}}else if("bezier"===S||"unbundled-bezier"===S||"segments"===S||"taxi"===S){var M;switch(S){case"bezier":case"unbundled-bezier":M=v.bezierPts;break;case"segments":case"taxi":M=v.linePts}if(null!=M)for(var B=0;B(r=I.x)){var z=n;n=r,r=z}if((i=N.y)>(a=I.y)){var L=i;i=a,a=L}oi(h,n-=w,i-=w,r+=w,a+=w)}if(c&&t.includeEdges&&g&&(ui(h,e,"mid-source"),ui(h,e,"mid-target"),ui(h,e,"source"),ui(h,e,"target")),c)if("yes"===e.pstyle("ghost").value){var A=e.pstyle("ghost-offset-x").pfValue,O=e.pstyle("ghost-offset-y").pfValue;oi(h,h.x1+A,h.y1+O,h.x2+A,h.y2+O)}var R=p.bodyBounds=p.bodyBounds||{};vt(R,h),gt(R,y),ft(R,1),c&&(n=h.x1,r=h.x2,i=h.y1,a=h.y2,oi(h,n-x,i-x,r+x,a+x));var V=p.overlayBounds=p.overlayBounds||{};vt(V,h),gt(V,y),ft(V,1);var F=p.labelBounds=p.labelBounds||{};null!=F.all?((l=F.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):F.all=ht(),c&&t.includeLabels&&(t.includeMainLabels&&ci(h,e,null),g&&(t.includeSourceLabels&&ci(h,e,"source"),t.includeTargetLabels&&ci(h,e,"target")))}return h.x1=ai(h.x1),h.y1=ai(h.y1),h.x2=ai(h.x2),h.y2=ai(h.y2),h.w=ai(h.x2-h.x1),h.h=ai(h.y2-h.y1),h.w>0&&h.h>0&&b&&(gt(h,y),ft(h,1)),h}(e,fi),r.bbCache=n,r.bbCachePosKey=o):n=r.bbCache,!a){var c=e.isNode();n=ht(),(t.includeNodes&&c||t.includeEdges&&!c)&&(t.includeOverlays?si(n,r.overlayBounds):si(n,r.bodyBounds)),t.includeLabels&&(t.includeMainLabels&&(!i||t.includeSourceLabels&&t.includeTargetLabels)?si(n,r.labelBounds.all):(t.includeMainLabels&&si(n,r.labelBounds.mainRot),t.includeSourceLabels&&si(n,r.labelBounds.sourceRot),t.includeTargetLabels&&si(n,r.labelBounds.targetRot))),n.w=n.x2-n.x1,n.h=n.y2-n.y1}return n},fi={includeNodes:!0,includeEdges:!0,includeLabels:!0,includeMainLabels:!0,includeSourceLabels:!0,includeTargetLabels:!0,includeOverlays:!0,useCache:!0},gi=di(fi),vi=Me(fi);ri.boundingBox=function(e){var t;if(1!==this.length||null==this[0]._private.bbCache||this[0]._private.styleDirty||void 0!==e&&void 0!==e.useCache&&!0!==e.useCache){t=ht();var n=vi(e=e||fi);if(this.cy().styleEnabled())for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:_i,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},Ii.removeAllListeners=function(){return this.removeListener("*")},Ii.emit=Ii.trigger=function(e,t,n){var r=this.listeners,i=r.length;return this.emitting++,g(t)||(t=[t]),Ai(this,(function(e,a){null!=n&&(r=[{event:a.event,type:a.type,namespace:a.namespace,callback:n}],i=r.length);for(var o=function(n){var i=r[n];if(i.type===a.type&&(!i.namespace||i.namespace===a.namespace||".*"===i.namespace)&&e.eventMatches(e.context,i,a)){var o=[a];null!=t&&function(e,t){for(var n=0;n1&&!r){var i=this.length-1,a=this[i],o=a._private.data.id;this[i]=void 0,this[e]=a,n.set(o,{ele:a,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var i=r.index;return this.unmergeAt(i),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&p(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=0;rr&&(r=o,n=a)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,i=0;i=0&&i1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){this.cleanStyle();var i=n._private.style[e];return null!=i?i:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=n.style();if(v(e)){var i=e;r.applyBypass(this,i,!1),this.emitAndNotify("style")}else if(p(e)){if(void 0===t){var a=this[0];return a?r.getStylePropertyValue(a,e):void 0}r.applyBypass(this,e,t,!1),this.emitAndNotify("style")}else if(void 0===e){var o=this[0];return o?r.getRawStyle(o):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=t.style();if(void 0===e)for(var r=0;r0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)}),"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),oa.neighbourhood=oa.neighborhood,oa.closedNeighbourhood=oa.closedNeighborhood,oa.openNeighbourhood=oa.openNeighborhood,I(oa,{source:jr((function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t}),"source"),target:jr((function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t}),"target"),sources:ca({attr:"source"}),targets:ca({attr:"target"})}),I(oa,{edgesWith:jr(da(),"edgesWith"),edgesTo:jr(da({thisIsSrc:!0}),"edgesTo")}),I(oa,{connectedEdges:jr((function(e){for(var t=[],n=0;n0);return a},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),oa.componentsOf=oa.components;var pa=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0!==e){var r=new ze,i=!1;if(t){if(t.length>0&&v(t[0])&&!x(t[0])){i=!0;for(var a=[],o=new Ae,s=0,l=t.length;s0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this,a=i.cy(),o=a._private,s=[],l=[],u=0,c=i.length;u0){for(var R=e.length===i.length?i:new pa(a,e),V=0;V0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],i={},a=n._private.cy;function o(e){for(var t=e._private.edges,n=0;n0&&(e?D.emitAndNotify("remove"):t&&D.emit("remove"));for(var T=0;T1e-4&&Math.abs(s.v)>1e-4;);return a?function(e){return u[e*(u.length-1)|0]}:c}}(),ya=function(e,t,n,r){var i=function(e,t,n,r){var i=4,a=.001,o=1e-7,s=10,l=11,u=1/(l-1),c="undefined"!=typeof Float32Array;if(4!==arguments.length)return!1;for(var d=0;d<4;++d)if("number"!=typeof arguments[d]||isNaN(arguments[d])||!isFinite(arguments[d]))return!1;e=Math.min(e,1),n=Math.min(n,1),e=Math.max(e,0),n=Math.max(n,0);var h=c?new Float32Array(l):new Array(l);function p(e,t){return 1-3*t+3*e}function f(e,t){return 3*t-6*e}function g(e){return 3*e}function v(e,t,n){return((p(t,n)*e+f(t,n))*e+g(t))*e}function y(e,t,n){return 3*p(t,n)*e*e+2*f(t,n)*e+g(t)}function m(t,r){for(var a=0;a0?i=l:r=l}while(Math.abs(a)>o&&++u=a?m(t,s):0===c?s:x(t,r,r+u)}var E=!1;function k(){E=!0,e===t&&n===r||b()}var C=function(i){return E||k(),e===t&&n===r?i:0===i?0:1===i?1:v(w(i),t,r)};C.getControlPoints=function(){return[{x:e,y:t},{x:n,y:r}]};var S="generateBezier("+[e,t,n,r]+")";return C.toString=function(){return S},C}(e,t,n,r);return function(e,t,n){return e+(t-e)*i(n)}},ma={linear:function(e,t,n){return e+(t-e)*n},ease:ya(.25,.1,.25,1),"ease-in":ya(.42,0,1,1),"ease-out":ya(0,0,.58,1),"ease-in-out":ya(.42,0,.58,1),"ease-in-sine":ya(.47,0,.745,.715),"ease-out-sine":ya(.39,.575,.565,1),"ease-in-out-sine":ya(.445,.05,.55,.95),"ease-in-quad":ya(.55,.085,.68,.53),"ease-out-quad":ya(.25,.46,.45,.94),"ease-in-out-quad":ya(.455,.03,.515,.955),"ease-in-cubic":ya(.55,.055,.675,.19),"ease-out-cubic":ya(.215,.61,.355,1),"ease-in-out-cubic":ya(.645,.045,.355,1),"ease-in-quart":ya(.895,.03,.685,.22),"ease-out-quart":ya(.165,.84,.44,1),"ease-in-out-quart":ya(.77,0,.175,1),"ease-in-quint":ya(.755,.05,.855,.06),"ease-out-quint":ya(.23,1,.32,1),"ease-in-out-quint":ya(.86,0,.07,1),"ease-in-expo":ya(.95,.05,.795,.035),"ease-out-expo":ya(.19,1,.22,1),"ease-in-out-expo":ya(1,0,0,1),"ease-in-circ":ya(.6,.04,.98,.335),"ease-out-circ":ya(.075,.82,.165,1),"ease-in-out-circ":ya(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return ma.linear;var r=va(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":ya};function ba(e,t,n,r,i){if(1===r)return n;if(t===n)return n;var a=i(t,n,r);return null==e||((e.roundValue||e.color)&&(a=Math.round(a)),void 0!==e.min&&(a=Math.max(a,e.min)),void 0!==e.max&&(a=Math.min(a,e.max))),a}function xa(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function wa(e,t,n,r,i){var a=null!=i?i.type:null;n<0?n=0:n>1&&(n=1);var o=xa(e,i),s=xa(t,i);if(y(o)&&y(s))return ba(a,o,s,n,r);if(g(o)&&g(s)){for(var l=[],u=0;u0?("spring"===d&&h.push(o.duration),o.easingImpl=ma[d].apply(null,h)):o.easingImpl=ma[d]}var f,g=o.easingImpl;if(f=0===o.duration?1:(n-l)/o.duration,o.applying&&(f=o.progress),f<0?f=0:f>1&&(f=1),null==o.delay){var v=o.startPosition,y=o.position;if(y&&i&&!e.locked()){var m={};ka(v.x,y.x)&&(m.x=wa(v.x,y.x,f,g)),ka(v.y,y.y)&&(m.y=wa(v.y,y.y,f,g)),e.position(m)}var b=o.startPan,x=o.pan,w=a.pan,E=null!=x&&r;E&&(ka(b.x,x.x)&&(w.x=wa(b.x,x.x,f,g)),ka(b.y,x.y)&&(w.y=wa(b.y,x.y,f,g)),e.emit("pan"));var k=o.startZoom,C=o.zoom,S=null!=C&&r;S&&(ka(k,C)&&(a.zoom=dt(a.minZoom,wa(k,C,f,g),a.maxZoom)),e.emit("zoom")),(E||S)&&e.emit("viewport");var P=o.style;if(P&&P.length>0&&i){for(var D=0;D=0;t--){(0,e[t])()}e.splice(0,e.length)},c=a.length-1;c>=0;c--){var d=a[c],h=d._private;h.stopped?(a.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.frames)):(h.playing||h.applying)&&(h.playing&&h.applying&&(h.applying=!1),h.started||Ca(0,d,e),Ea(t,d,e,n),h.applying&&(h.applying=!1),u(h.frames),null!=h.step&&h.step(e),d.completed()&&(a.splice(c,1),h.hooked=!1,h.playing=!1,h.started=!1,u(h.completes)),s=!0)}return n||0!==a.length||0!==o.length||r.push(t),s}for(var a=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var Pa={animate:er.animate(),animation:er.animation(),animated:er.animated(),clearQueue:er.clearQueue(),delay:er.delay(),delayAnimation:er.delayAnimation(),stop:er.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender((function(t,n){Sa(n,e)}),t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&re((function(n){Sa(n,e),t()}))}()}}},Da={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&x(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},Ta=function(e){return p(e)?new Or(e):e},Ma={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new Ni(Da,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,Ta(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,Ta(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,Ta(t),n),this},once:function(e,t,n){return this.emitter().one(e,Ta(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};er.eventAliasesOn(Ma);var Ba={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};Ba.jpeg=Ba.jpg;var _a={layout:function(e){if(null!=e)if(null!=e.name){var t=e.name,n=this.extension("layout",t);if(null!=n){var r;r=p(e.eles)?this.$(e.eles):null!=e.eles?e.eles:this.$();var i=new n(I({},e,{cy:this,eles:r}));return i}Ee("No such layout `"+t+"` found. Did you forget to import it and `cytoscape.use()` it?")}else Ee("A `name` must be specified to make a layout");else Ee("Layout options must be specified to make a layout")}};_a.createLayout=_a.makeLayout=_a.layout;var Na={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var i=this.renderer();!this.destroyed()&&i&&i.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach((function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)}))}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch((function(){for(var n=Object.keys(e),r=0;r0;)e.removeChild(e.childNodes[0]);this._private.renderer=null,this.mutableElements().forEach((function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]}))},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};za.invalidateDimensions=za.resize;var La={collection:function(e,t){return p(e)?this.$(e):b(e)?e.collection():g(e)?new pa(this,e,t):new pa(this)},nodes:function(e){var t=this.$((function(e){return e.isNode()}));return e?t.filter(e):t},edges:function(e){var t=this.$((function(e){return e.isEdge()}));return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};La.elements=La.filter=La.$;var Aa={};Aa.apply=function(e){for(var t=this._private.cy.collection(),n=0;n0;if(d||c&&h){var p=void 0;d&&h||d?p=l.properties:h&&(p=l.mappedProperties);for(var f=0;f1&&(g=1),s.color){var w=i.valueMin[0],E=i.valueMax[0],k=i.valueMin[1],C=i.valueMax[1],S=i.valueMin[2],P=i.valueMax[2],D=null==i.valueMin[3]?1:i.valueMin[3],T=null==i.valueMax[3]?1:i.valueMax[3],M=[Math.round(w+(E-w)*g),Math.round(k+(C-k)*g),Math.round(S+(P-S)*g),Math.round(D+(T-D)*g)];n={bypass:i.bypass,name:i.name,value:M,strValue:"rgb("+M[0]+", "+M[1]+", "+M[2]+")"}}else{if(!s.number)return!1;var B=i.valueMin+(i.valueMax-i.valueMin)*g;n=this.parse(i.name,B,i.bypass,"mapping")}if(!n)return f(),!1;n.mapping=i,i=n;break;case o.data:for(var _=i.field.split("."),N=d.data,I=0;I<_.length&&N;I++){N=N[_[I]]}if(null!=N&&(n=this.parse(i.name,N,i.bypass,"mapping")),!n)return f(),!1;n.mapping=i,i=n;break;case o.fn:var z=i.value,L=null!=i.fnValue?i.fnValue:z(e);if(i.prevFnValue=L,null==L)return Ce("Custom function mappers may not return null (i.e. `"+i.name+"` for ele `"+e.id()+"` is null)"),!1;if(!(n=this.parse(i.name,L,i.bypass,"mapping")))return Ce("Custom function mappers may not return invalid values for the property type (i.e. `"+i.name+"` for ele `"+e.id()+"` is invalid)"),!1;n.mapping=Se(i),i=n;break;case void 0:break;default:return!1}return l?(i.bypassed=c?u.bypassed:u,a[i.name]=i):c?u.bypassed=i:a[i.name]=i,p(),!0},Aa.cleanElements=function(e,t){for(var n=0;n0&&a>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()})).then((function(){return e.animation({style:s,duration:a,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){n.removeBypasses(e,i),e.emitAndNotify("style"),r.transitioning=!1}))}else r.transitioning&&(this.removeBypasses(e,i),e.emitAndNotify("style"),r.transitioning=!1)},Aa.checkTrigger=function(e,t,n,r,i,a){var o=this.properties[t],s=i(o);null!=s&&s(n,r)&&a(o)},Aa.checkZOrderTrigger=function(e,t,n,r){var i=this;this.checkTrigger(e,t,n,r,(function(e){return e.triggersZOrder}),(function(){i._private.cy.notify("zorder",e)}))},Aa.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBounds}),(function(i){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache(),"curve-style"!==t||"bezier"!==n&&"bezier"!==r||!i.triggersBoundsOfParallelBeziers||e.parallelEdges().forEach((function(e){e.isBundledBezier()&&e.dirtyBoundingBoxCache()}))}))},Aa.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r)};var Oa={applyBypass:function(e,t,n,r){var i=[];if("*"===t||"**"===t){if(void 0!==n)for(var a=0;at.length?i.substr(t.length):""}function o(){n=n.length>r.length?n.substr(r.length):""}for(i=i.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(i.match(/^\s*$/))break;var s=i.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!s){Ce("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+i);break}t=s[0];var l=s[1];if("core"!==l)if(new Or(l).invalid){Ce("Skipping parsing of block: Invalid selector found in string stylesheet: "+l),a();continue}var u=s[2],c=!1;n=u;for(var d=[];;){if(n.match(/^\s*$/))break;var h=n.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/);if(!h){Ce("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+u),c=!0;break}r=h[0];var p=h[1],f=h[2];if(this.properties[p])this.parse(p,f)?(d.push({name:p,val:f}),o()):(Ce("Skipping property: Invalid property definition in: "+r),o());else Ce("Skipping property: Invalid property name in: "+r),o()}if(c){a();break}this.selector(l);for(var g=0;g=7&&"d"===t[0]&&(l=new RegExp(o.data.regex).exec(t))){if(n)return!1;var d=o.data;return{name:e,value:l,strValue:""+t,mapped:d,field:l[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(u=new RegExp(o.mapData.regex).exec(t))){if(n)return!1;if(c.multiple)return!1;var h=o.mapData;if(!c.color&&!c.number)return!1;var v=this.parse(e,u[4]);if(!v||v.mapped)return!1;var m=this.parse(e,u[5]);if(!m||m.mapped)return!1;if(v.pfValue===m.pfValue||v.strValue===m.strValue)return Ce("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+v.strValue+"`"),this.parse(e,v.strValue);if(c.color){var b=v.value,x=m.value;if(!(b[0]!==x[0]||b[1]!==x[1]||b[2]!==x[2]||b[3]!==x[3]&&(null!=b[3]&&1!==b[3]||null!=x[3]&&1!==x[3])))return!1}return{name:e,value:u,strValue:""+t,mapped:h,field:u[1],fieldMin:parseFloat(u[2]),fieldMax:parseFloat(u[3]),valueMin:v.value,valueMax:m.value,bypass:n}}}if(c.multiple&&"multiple"!==r){var w;if(w=s?t.split(/\s+/):g(t)?t:[t],c.evenMultiple&&w.length%2!=0)return null;for(var E=[],k=[],C=[],S="",P=!1,T=0;T0?" ":"")+M.strValue}return c.validate&&!c.validate(E,k)?null:c.singleEnum&&P?1===E.length&&p(E[0])?{name:e,value:E[0],strValue:E[0],bypass:n}:null:{name:e,value:E,pfValue:C,strValue:S,bypass:n,units:k}}var B,N,I=function(){for(var r=0;rc.max||c.strictMax&&t===c.max))return null;var V={name:e,value:t,strValue:""+t+(L||""),units:L,bypass:n};return c.unitless||"px"!==L&&"em"!==L?V.pfValue=t:V.pfValue="px"!==L&&L?this.getEmSizeInPixels()*t:t,"ms"!==L&&"s"!==L||(V.pfValue="ms"===L?t:1e3*t),"deg"!==L&&"rad"!==L||(V.pfValue="rad"===L?t:(B=t,Math.PI*B/180)),"%"===L&&(V.pfValue=t/100),V}if(c.propList){var F=[],q=""+t;if("none"===q);else{for(var j=q.split(/\s*,\s*|\s+/),Y=0;Y0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,i=r.pan,a=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),y(e)?n=e:v(e)&&(n=e.level,null!=e.position?t=et(e.position,a,i):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?a=!0:(t.zoom=s,i.push("zoom"))}if(r&&(!a||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;y(l.x)&&(t.pan.x=l.x,o=!1),y(l.y)&&(t.pan.y=l.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(p(e)){var n=e;e=this.mutableElements().filter(n)}else b(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),i=this.width(),a=this.height();return{x:(i-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(a-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container;return n.sizeCache=n.sizeCache||(r?(e=o.getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}}};Ka.centre=Ka.center,Ka.autolockNodes=Ka.autolock,Ka.autoungrabifyNodes=Ka.autoungrabify;var Ga={data:er.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:er.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:er.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:er.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};Ga.attr=Ga.data,Ga.removeAttr=Ga.removeData;var Za=function(e){var t=this,n=(e=I({},e)).container;n&&!m(n)&&m(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var i=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var a=void 0!==o&&void 0!==n&&!e.headless,s=e;s.layout=I({name:a?"grid":"null"},s.layout),s.renderer=I({name:a?"canvas":"null"},s.renderer);var l=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},u=this._private={container:n,ready:!1,options:s,elements:new pa(this),listeners:[],aniEles:new pa(this),data:s.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:l(!0,s.zoomingEnabled),userZoomingEnabled:l(!0,s.userZoomingEnabled),panningEnabled:l(!0,s.panningEnabled),userPanningEnabled:l(!0,s.userPanningEnabled),boxSelectionEnabled:l(!0,s.boxSelectionEnabled),autolock:l(!1,s.autolock,s.autolockNodes),autoungrabify:l(!1,s.autoungrabify,s.autoungrabifyNodes),autounselectify:l(!1,s.autounselectify),styleEnabled:void 0===s.styleEnabled?a:s.styleEnabled,zoom:y(s.zoom)?s.zoom:1,pan:{x:v(s.pan)&&y(s.pan.x)?s.pan.x:0,y:v(s.pan)&&y(s.pan.y)?s.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1};this.createEmitter(),this.selectionType(s.selectionType),this.zoomRange({min:s.minZoom,max:s.maxZoom});u.styleEnabled&&t.setStyle([]);var c=I({},s,s.renderer);t.initRenderer(c);!function(e,t){if(e.some(S))return $n.all(e).then(t);t(e)}([s.style,s.elements],(function(e){var n=e[0],a=e[1];u.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var i=t.mutableElements();i.length>0&&i.remove(),null!=e&&(v(e)||g(e))&&t.add(e),t.one("layoutready",(function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")})).one("layoutstop",(function(){t.one("done",r),t.emit("done")}));var a=I({},t._private.options.layout);a.eles=t.elements(),t.layout(a).run()}(a,(function(){t.startAnimationLoop(),u.ready=!0,f(s.ready)&&t.on("ready",s.ready);for(var e=0;e0,u=ht(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(b(n.roots))e=n.roots;else if(g(n.roots)){for(var c=[],d=0;d0;){var I=M.shift(),z=T(I,B);if(z)I.outgoers().filter((function(e){return e.isNode()&&i.has(e)})).forEach(_);else if(null===z){Ce("Detected double maximal shift for node `"+I.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}D();var L=0;if(n.avoidOverlap)for(var A=0;A0&&x[0].length<=3?l/2:0),d=2*Math.PI/x[r].length*i;return 0===r&&1===x[0].length&&(c=1),{x:G+c*Math.cos(d),y:Z+c*Math.sin(d)}}return{x:G+(i+1-(a+1)/2)*o,y:(r+1)*s}})),this};var to={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function no(e){this.options=I({},to,e)}no.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,i=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));for(var o,s=ht(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/a.length:t.sweep)/Math.max(1,a.length-1),d=0,h=0;h1&&t.avoidOverlap){d*=1.75;var v=Math.cos(c)-Math.cos(0),m=Math.sin(c)-Math.sin(0),b=Math.sqrt(d*d/(v*v+m*m));o=Math.max(b,o)}return r.nodes().layoutPositions(this,t,(function(e,n){var r=t.startAngle+n*c*(i?1:-1),a=o*Math.cos(r),s=o*Math.sin(r);return{x:l+a,y:u+s}})),this};var ro,io={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function ao(e){this.options=I({},io,e)}ao.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,i=t.eles,a=i.nodes().not(":parent"),o=ht(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,d=0;d0)Math.abs(m[0].value-x.value)>=v&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,k=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,k)}for(var C=0,S=0;S1&&t.avoidOverlap){var M=Math.cos(T)-Math.cos(0),B=Math.sin(T)-Math.sin(0),_=Math.sqrt(w*w/(M*M+B*B));C=Math.max(_,C)}P.r=C,C+=w}if(t.equidistant){for(var N=0,I=0,z=0;z=e.numIter)&&(go(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&a(),re(t)):(Do(r,e),s())}()}else{for(;u;)u=o(l),l++;Do(r,e),s()}return this},so.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},so.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var lo=function(e,t,n){for(var r=n.eles.edges(),i=n.eles.nodes(),a={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:e.width(),clientHeight:e.width(),boundingBox:ht(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()})},o=n.eles.components(),s={},l=0;l0){a.graphSet.push(w);for(l=0;lr.count?0:r.graph},co=function e(t,n,r,i){var a=i.graphSet[r];if(-10)var s=(u=r.nodeOverlap*o)*i/(g=Math.sqrt(i*i+a*a)),l=u*a/g;else{var u,c=xo(e,i,a),d=xo(t,-1*i,-1*a),h=d.x-c.x,p=d.y-c.y,f=h*h+p*p,g=Math.sqrt(f);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/f)*h/g,l=u*p/g}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},bo=function(e,t,n,r){if(n>0)var i=e.maxX-t.minX;else i=t.maxX-e.minX;if(r>0)var a=e.maxY-t.minY;else a=t.maxY-e.minY;return i>=0&&a>=0?Math.sqrt(i*i+a*a):0},xo=function(e,t,n){var r=e.positionX,i=e.positionY,a=e.height||1,o=e.width||1,s=n/t,l=a/o,u={};return 0===t&&0n?(u.x=r,u.y=i+a/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=i-o*n/2/t,u):0=l)?(u.x=r+a*t/2/n,u.y=i+a/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-a*t/2/n,u.y=i-a/2,u):u},wo=function(e,t){for(var n=0;n1){var f=t.gravity*d/p,g=t.gravity*h/p;c.offsetX+=f,c.offsetY+=g}}}}},ko=function(e,t){var n=[],r=0,i=-1;for(n.push.apply(n,e.graphSet[0]),i+=e.graphSet[0].length;r<=i;){var a=n[r++],o=e.idToIndex[a],s=e.layoutNodes[o],l=s.children;if(0n)var i={x:n*e/r,y:n*t/r};else i={x:e,y:t};return i},Po=function e(t,n){var r=t.parentId;if(null!=r){var i=n.layoutNodes[n.idToIndex[r]],a=!1;return(null==i.maxX||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(null==i.minX||t.minX-i.padLefti.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(null==i.minY||t.minY-i.padTopf&&(d+=p+t.componentSpacing,c=0,h=0,p=0)}}},To={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Mo(e){this.options=I({},To,e)}Mo.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));var a=ht(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===a.h||0===a.w)r.nodes().layoutPositions(this,t,(function(e){return{x:a.x1,y:a.y1}}));else{var o=i.size(),s=Math.sqrt(o*a.h/a.w),l=Math.round(s),u=Math.round(a.w/a.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},d=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},h=t.rows,p=null!=t.cols?t.cols:t.columns;if(null!=h&&null!=p)l=h,u=p;else if(null!=h&&null==p)l=h,u=Math.ceil(o/l);else if(null==h&&null!=p)u=p,l=Math.ceil(o/u);else if(u*l>o){var f=c(),g=d();(f-1)*g>=o?c(f-1):(g-1)*f>=o&&d(g-1)}else for(;u*l=o?d(y+1):c(v+1)}var m=a.w/u,b=a.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=u&&(_=0,B++)},I={},z=0;z(r=Ct(e,t,x[w],x[w+1],x[w+2],x[w+3])))return v(n,r),!0}else if("bezier"===a.edgeType||"multibezier"===a.edgeType||"self"===a.edgeType||"compound"===a.edgeType)for(x=a.allpts,w=0;w+5(r=kt(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return v(n,r),!0;m=m||i.source,b=b||i.target;var E=o.getArrowWidth(l,c),k=[{name:"source",x:a.arrowStartX,y:a.arrowStartY,angle:a.srcArrowAngle},{name:"target",x:a.arrowEndX,y:a.arrowEndY,angle:a.tgtArrowAngle},{name:"mid-source",x:a.midX,y:a.midY,angle:a.midsrcArrowAngle},{name:"mid-target",x:a.midX,y:a.midY,angle:a.midtgtArrowAngle}];for(w=0;w0&&(y(m),y(b))}function b(e,t,n){return Ne(e,t,n)}function x(n,r){var i,a=n._private,o=f;i=r?r+"-":"",n.boundingBox();var s=a.labelBounds[r||"main"],l=n.pstyle(i+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(a.rscratch,"labelX",r),c=b(a.rscratch,"labelY",r),d=b(a.rscratch,"labelAngle",r),h=n.pstyle(i+"text-margin-x").pfValue,p=n.pstyle(i+"text-margin-y").pfValue,g=s.x1-o-h,y=s.x2+o-h,m=s.y1-o-p,x=s.y2+o-p;if(d){var w=Math.cos(d),E=Math.sin(d),k=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},C=k(g,m),S=k(g,x),P=k(y,m),D=k(y,x),T=[C.x+h,C.y+p,P.x+h,P.y+p,D.x+h,D.y+p,S.x+h,S.y+p];if(St(e,t,T))return v(n),!0}else if(mt(s,e,t))return v(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){for(var i,a,o=this.getCachedZSortedEles().interactive,s=[],l=Math.min(e,n),u=Math.max(e,n),c=Math.min(t,r),d=Math.max(t,r),h=ht({x1:e=l,y1:t=c,x2:n=u,y2:r=d}),p=0;p0?Math.max(e-t,0):Math.min(e+t,0)},w=x(m,v),E=x(b,y),k=!1;"auto"===c?u=Math.abs(w)>Math.abs(E)?"horizontal":"vertical":"upward"===c||"downward"===c?(u="vertical",k=!0):"leftward"!==c&&"rightward"!==c||(u="horizontal",k=!0);var C,S="vertical"===u,P=S?E:w,D=S?b:m,T=at(D),M=!1;(k&&(h||f)||!("downward"===c&&D<0||"upward"===c&&D>0||"leftward"===c&&D>0||"rightward"===c&&D<0)||(P=(T*=-1)*Math.abs(P),M=!0),h)?C=(p<0?1+p:p)*P:C=(p<0?P:0)+p*T;var B=function(e){return Math.abs(e)=Math.abs(P)},_=B(C),N=B(Math.abs(P)-Math.abs(C));if((_||N)&&!M)if(S){var I=Math.abs(D)<=a/2,z=Math.abs(m)<=o/2;if(I){var L=(r.x1+r.x2)/2,A=r.y1,O=r.y2;n.segpts=[L,A,L,O]}else if(z){var R=(r.y1+r.y2)/2,V=r.x1,F=r.x2;n.segpts=[V,R,F,R]}else n.segpts=[r.x1,r.y2]}else{var q=Math.abs(D)<=i/2,j=Math.abs(b)<=s/2;if(q){var Y=(r.y1+r.y2)/2,X=r.x1,W=r.x2;n.segpts=[X,Y,W,Y]}else if(j){var H=(r.x1+r.x2)/2,K=r.y1,G=r.y2;n.segpts=[H,K,H,G]}else n.segpts=[r.x2,r.y1]}else if(S){var Z=r.y1+C+(l?a/2*T:0),U=r.x1,$=r.x2;n.segpts=[U,Z,$,Z]}else{var Q=r.x1+C+(l?i/2*T:0),J=r.y1,ee=r.y2;n.segpts=[Q,J,Q,ee]}},Yo.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,i=t.tgtPos,a=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,d=!y(n.startX)||!y(n.startY),h=!y(n.arrowStartX)||!y(n.arrowStartY),p=!y(n.endX)||!y(n.endY),f=!y(n.arrowEndX)||!y(n.arrowEndY),g=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),v=ot({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),m=vh.poolIndex()){var p=d;d=h,h=p}var f=s.srcPos=d.position(),g=s.tgtPos=h.position(),v=s.srcW=d.outerWidth(),m=s.srcH=d.outerHeight(),b=s.tgtW=h.outerWidth(),x=s.tgtH=h.outerHeight(),w=s.srcShape=n.nodeShapes[t.getNodeShape(d)],E=s.tgtShape=n.nodeShapes[t.getNodeShape(h)];s.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var k=0;k0){var j=u,Y=st(j,nt(t)),X=st(j,nt(q)),W=Y;if(X2)st(j,{x:q[2],y:q[3]})0){var ie=c,ae=st(ie,nt(t)),oe=st(ie,nt(re)),se=ae;if(oe2)st(ie,{x:re[2],y:re[3]})=c||b){d={cp:v,segment:m};break}}if(d)break}var x=d.cp,w=d.segment,E=(c-p)/w.length,k=w.t1-w.t0,C=u?w.t0+k*E:w.t1-k*E;C=dt(0,C,1),t=ct(x.p0,x.p1,x.p2,C),l=function(e,t,n,r){var i=dt(0,r-.001,1),a=dt(0,r+.001,1),o=ct(e,t,n,i),s=ct(e,t,n,a);return Uo(o,s)}(x.p0,x.p1,x.p2,C);break;case"straight":case"segments":case"haystack":for(var S,P,D,T,M=0,B=r.allpts.length,_=0;_+3=c));_+=2);var N=(c-P)/S;N=dt(0,N,1),t=function(e,t,n,r){var i=t.x-e.x,a=t.y-e.y,o=ot(e,t),s=i/o,l=a/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(D,T,N),l=Uo(D,T)}o("labelX",s,t.x),o("labelY",s,t.y),o("labelAutoAngle",s,l)}};l("source"),l("target"),this.applyLabelDimensions(e)}},Go.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},Go.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),i=this.calculateLabelDimensions(e,r),a=e.pstyle("line-height").pfValue,o=e.pstyle("text-wrap").strValue,s=Ne(n.rscratch,"labelWrapCachedLines",t)||[],l="wrap"!==o?1:Math.max(s.length,1),u=i.height/l,c=u*a,d=i.width,h=i.height+(l-1)*(a-1)*u;Ie(n.rstyle,"labelWidth",t,d),Ie(n.rscratch,"labelWidth",t,d),Ie(n.rstyle,"labelHeight",t,h),Ie(n.rscratch,"labelHeight",t,h),Ie(n.rscratch,"labelLineHeight",t,c)},Go.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",i=e.pstyle(r+"label").strValue,a=e.pstyle("text-transform").value,o=function(e,r){return r?(Ie(n.rscratch,e,t,r),r):Ne(n.rscratch,e,t)};if(!i)return"";"none"==a||("uppercase"==a?i=i.toUpperCase():"lowercase"==a&&(i=i.toLowerCase()));var s=e.pstyle("text-wrap").value;if("wrap"===s){var l=o("labelKey");if(null!=l&&o("labelWrapKey")===l)return o("labelWrapCachedText");for(var u=i.split("\n"),c=e.pstyle("text-max-width").pfValue,d="anywhere"===e.pstyle("text-overflow-wrap").value,h=[],p=/[\s\u200b]+/,f=d?"":" ",g=0;gc){for(var b=v.split(p),x="",w=0;wC)break;S+=i[D],D===i.length-1&&(P=!0)}return P||(S+="…"),S}return i},Go.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},Go.calculateLabelDimensions=function(e,t){var n=de(t,e._private.labelDimsKey),r=this.labelDimCache||(this.labelDimCache=[]),i=r[n];if(null!=i)return i;var a=e.pstyle("font-style").strValue,o=e.pstyle("font-size").pfValue,s=e.pstyle("font-family").strValue,l=e.pstyle("font-weight").strValue,u=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!u){u=this.labelCalcCanvas=document.createElement("canvas"),c=this.labelCalcCanvasContext=u.getContext("2d");var d=u.style;d.position="absolute",d.left="-9999px",d.top="-9999px",d.zIndex="-1",d.visibility="hidden",d.pointerEvents="none"}c.font="".concat(a," ").concat(l," ").concat(o,"px ").concat(s);for(var h=0,p=0,f=t.split("\n"),g=0;g1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var D=r(t);v&&(e.hoverData.tapholdCancelled=!0);a=!0,n(g,["mousemove","vmousemove","tapdrag"],t,{x:d[0],y:d[1]});var T=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:d[0],y:d[1]}}),f[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(v){var M={originalEvent:t,type:"cxtdrag",position:{x:d[0],y:d[1]}};x?x.emit(M):o.emit(M),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&g===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:d[0],y:d[1]}}),e.hoverData.cxtOver=g,g&&g.emit({originalEvent:t,type:"cxtdragover",position:{x:d[0],y:d[1]}}))}}else if(e.hoverData.dragging){if(a=!0,o.panningEnabled()&&o.userPanningEnabled()){var B;if(e.hoverData.justStartedPan){var _=e.hoverData.mdownPos;B={x:(d[0]-_[0])*s,y:(d[1]-_[1])*s},e.hoverData.justStartedPan=!1}else B={x:w[0]*s,y:w[1]*s};o.panBy(B),e.hoverData.dragged=!0}d=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=f[4]||null!=x&&!x.pannable()){if(x&&x.pannable()&&x.active()&&x.unactivate(),x&&x.grabbed()||g==b||(b&&n(b,["mouseout","tapdragout"],t,{x:d[0],y:d[1]}),g&&n(g,["mouseover","tapdragover"],t,{x:d[0],y:d[1]}),e.hoverData.last=g),x)if(v){if(o.boxSelectionEnabled()&&D)x&&x.grabbed()&&(c(E),x.emit("freeon"),E.emit("free"),e.dragData.didDrag&&(x.emit("dragfreeon"),E.emit("dragfree"))),T();else if(x&&x.grabbed()&&e.nodeIsDraggable(x)){var N=!e.dragData.didDrag;N&&e.redrawHint("eles",!0),e.dragData.didDrag=!0;var I=o.collection();e.hoverData.draggingEles||l(E,{inDragLayer:!0});var z={x:0,y:0};if(y(w[0])&&y(w[1])&&(z.x+=w[0],z.y+=w[1],N)){var L=e.hoverData.dragDelta;L&&y(L[0])&&y(L[1])&&(z.x+=L[0],z.y+=L[1])}for(var A=0;A0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=a.collection()),l!=d||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===a.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(a.$(t).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var g=a.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),g.length>0&&e.redrawHint("eles",!0),a.emit({type:"boxend",originalEvent:i,position:{x:o[0],y:o[1]}});var v=function(e){return e.selectable()&&!e.selected()};"additive"===a.selectionType()||h||a.$(t).unmerge(g).unselect(),g.emit("box").stdFilter(v).select().emit("boxselect"),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var y=d&&d.grabbed();c(u),y&&(d.emit("freeon"),u.emit("free"),e.dragData.didDrag&&(d.emit("dragfreeon"),u.emit("dragfree")))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null}}),!1);var b,x,w,E,k,C,S,P,D,T,M,B,_,N=function(t){if(!e.scrollingPage){var n=e.cy,r=n.zoom(),i=n.pan(),a=e.projectIntoViewport(t.clientX,t.clientY),o=[a[0]*r+i.x,a[1]*r+i.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4])t.preventDefault();else if(n.panningEnabled()&&n.userPanningEnabled()&&n.zoomingEnabled()&&n.userZoomingEnabled()){var s;t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout((function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()}),150),s=null!=t.deltaY?t.deltaY/-250:null!=t.wheelDeltaY?t.wheelDeltaY/1e3:t.wheelDelta/1e3,s*=e.wheelSensitivity,1===t.deltaMode&&(s*=33);var l=n.zoom()*Math.pow(10,s);"gesturechange"===t.type&&(l=e.gestureStartZoom*t.scale),n.zoom({level:l,renderedPosition:{x:o[0],y:o[1]}})}}};e.registerBinding(e.container,"wheel",N,!0),e.registerBinding(window,"scroll",(function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout((function(){e.scrollingPage=!1}),250)}),!0),e.registerBinding(e.container,"gesturestart",(function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()}),!0),e.registerBinding(e.container,"gesturechange",(function(t){e.hasTouchStarted||N(t)}),!0),e.registerBinding(e.container,"mouseout",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})}),!1),e.registerBinding(e.container,"mouseover",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})}),!1);var I,z,L,A,O=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},R=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",I=function(t){if(e.hasTouchStarted=!0,m(t)){h(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var r=e.cy,i=e.touchData.now,a=e.touchData.earlier;if(t.touches[0]){var s=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);i[0]=s[0],i[1]=s[1]}if(t.touches[1]){s=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);i[2]=s[0],i[3]=s[1]}if(t.touches[2]){s=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);i[4]=s[0],i[5]=s[1]}if(t.touches[1]){e.touchData.singleTouchMoved=!0,c(e.dragData.touchDragEles);var d=e.findContainerClientCoords();D=d[0],T=d[1],M=d[2],B=d[3],b=t.touches[0].clientX-D,x=t.touches[0].clientY-T,w=t.touches[1].clientX-D,E=t.touches[1].clientY-T,_=0<=b&&b<=M&&0<=w&&w<=M&&0<=x&&x<=B&&0<=E&&E<=B;var p=r.pan(),f=r.zoom();k=O(b,x,w,E),C=R(b,x,w,E),P=[((S=[(b+w)/2,(x+E)/2])[0]-p.x)/f,(S[1]-p.y)/f];if(C<4e4&&!t.touches[2]){var g=e.findNearestElement(i[0],i[1],!0,!0),v=e.findNearestElement(i[2],i[3],!0,!0);return g&&g.isNode()?(g.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=g):v&&v.isNode()?(v.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=v):r.emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])r.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var y=e.findNearestElements(i[0],i[1],!0,!0),N=y[0];if(null!=N&&(N.activate(),e.touchData.start=N,e.touchData.starts=y,e.nodeIsGrabbable(N))){var I=e.dragData.touchDragEles=r.collection(),z=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),N.selected()?(z=r.$((function(t){return t.selected()&&e.nodeIsGrabbable(t)})),l(z,{addToList:I})):u(N,{addToList:I}),o(N);var L=function(e){return{originalEvent:t,type:e,position:{x:i[0],y:i[1]}}};N.emit(L("grabon")),z?z.forEach((function(e){e.emit(L("grab"))})):N.emit(L("grab"))}n(N,["touchstart","tapstart","vmousedown"],t,{x:i[0],y:i[1]}),null==N&&(e.data.bgActivePosistion={x:s[0],y:s[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout((function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||n(e.touchData.start,["taphold"],t,{x:i[0],y:i[1]})}),e.tapholdDuration)}if(t.touches.length>=1){for(var A=e.touchData.startPosition=[],V=0;V=e.touchTapThreshold2}if(r&&e.touchData.cxt){t.preventDefault();var N=t.touches[0].clientX-D,I=t.touches[0].clientY-T,z=t.touches[1].clientX-D,L=t.touches[1].clientY-T,A=R(N,I,z,L);if(A/C>=2.25||A>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var V={originalEvent:t,type:"cxttapend",position:{x:s[0],y:s[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(V),e.touchData.start=null):o.emit(V)}}if(r&&e.touchData.cxt){V={originalEvent:t,type:"cxtdrag",position:{x:s[0],y:s[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(V):o.emit(V),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var F=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&F===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:s[0],y:s[1]}}),e.touchData.cxtOver=F,F&&F.emit({originalEvent:t,type:"cxtdragover",position:{x:s[0],y:s[1]}}))}else if(r&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:s[0],y:s[1]}}),e.touchData.selecting=!0,e.touchData.didSelect=!0,a[4]=1,a&&0!==a.length&&void 0!==a[0]?(a[2]=(s[0]+s[2]+s[4])/3,a[3]=(s[1]+s[3]+s[5])/3):(a[0]=(s[0]+s[2]+s[4])/3,a[1]=(s[1]+s[3]+s[5])/3,a[2]=(s[0]+s[2]+s[4])/3+1,a[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(r&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),ee=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var q=0;q0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(window,"touchcancel",L=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(window,"touchend",A=function(r){var i=e.touchData.start;if(e.touchData.capture){0===r.touches.length&&(e.touchData.capture=!1),r.preventDefault();var a=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o,s=e.cy,l=s.zoom(),u=e.touchData.now,d=e.touchData.earlier;if(r.touches[0]){var h=e.projectIntoViewport(r.touches[0].clientX,r.touches[0].clientY);u[0]=h[0],u[1]=h[1]}if(r.touches[1]){h=e.projectIntoViewport(r.touches[1].clientX,r.touches[1].clientY);u[2]=h[0],u[3]=h[1]}if(r.touches[2]){h=e.projectIntoViewport(r.touches[2].clientX,r.touches[2].clientY);u[4]=h[0],u[5]=h[1]}if(i&&i.unactivate(),e.touchData.cxt){if(o={originalEvent:r,type:"cxttapend",position:{x:u[0],y:u[1]}},i?i.emit(o):s.emit(o),!e.touchData.cxtDragged){var p={originalEvent:r,type:"cxttap",position:{x:u[0],y:u[1]}};i?i.emit(p):s.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!r.touches[2]&&s.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var f=s.collection(e.getAllInBox(a[0],a[1],a[2],a[3]));a[0]=void 0,a[1]=void 0,a[2]=void 0,a[3]=void 0,a[4]=0,e.redrawHint("select",!0),s.emit({type:"boxend",originalEvent:r,position:{x:u[0],y:u[1]}});f.emit("box").stdFilter((function(e){return e.selectable()&&!e.selected()})).select().emit("boxselect"),f.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=i&&i.unactivate(),r.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(r.touches[1]);else if(r.touches[0]);else if(!r.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var g=e.dragData.touchDragEles;if(null!=i){var v=i._private.grabbed;c(g),e.redrawHint("drag",!0),e.redrawHint("eles",!0),v&&(i.emit("freeon"),g.emit("free"),e.dragData.didDrag&&(i.emit("dragfreeon"),g.emit("dragfree"))),n(i,["touchend","tapend","vmouseup","tapdragout"],r,{x:u[0],y:u[1]}),i.unactivate(),e.touchData.start=null}else{var y=e.findNearestElement(u[0],u[1],!0,!0);n(y,["touchend","tapend","vmouseup","tapdragout"],r,{x:u[0],y:u[1]})}var m=e.touchData.startPosition[0]-u[0],b=m*m,x=e.touchData.startPosition[1]-u[1],w=(b+x*x)*l*l;e.touchData.singleTouchMoved||(i||s.$(":selected").unselect(["tapunselect"]),n(i,["tap","vclick"],r,{x:u[0],y:u[1]})),null!=i&&!e.dragData.didDrag&&i._private.selectable&&w2){for(var T=[u[0],u[1]],M=Math.pow(T[0]-e,2)+Math.pow(T[1]-t,2),B=1;B0)return g[0]}return null},h=Object.keys(c),p=0;p0?l:xt(i,a,e,t,n,r,o)},checkPoint:function(e,t,n,r,i,a,o){var s=Rt(r,i),l=2*s;if(Pt(e,t,this.points,a,o,r,i-l,[0,-1],n))return!0;if(Pt(e,t,this.points,a,o,r-l,i,[0,-1],n))return!0;var u=r/2+2*n,c=i/2+2*n;return!!St(e,t,[a-u,o-c,a-u,o,a+u,o,a+u,o-c])||(!!Mt(e,t,l,l,a+r/2-s,o+i/2-s,n)||!!Mt(e,t,l,l,a-r/2+s,o+i/2-s,n))}}},is.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Lt(3,0)),this.generateRoundPolygon("round-triangle",Lt(3,0)),this.generatePolygon("rectangle",Lt(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",Lt(5,0)),this.generateRoundPolygon("round-pentagon",Lt(5,0)),this.generatePolygon("hexagon",Lt(6,0)),this.generateRoundPolygon("round-hexagon",Lt(6,0)),this.generatePolygon("heptagon",Lt(7,0)),this.generateRoundPolygon("round-heptagon",Lt(7,0)),this.generatePolygon("octagon",Lt(8,0)),this.generateRoundPolygon("round-octagon",Lt(8,0));var r=new Array(20),i=Ot(5,0),a=Ot(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*g)break}else if(i){if(p>=e.deqCost*l||p>=e.deqAvgCost*s)break}else if(f>=e.deqNoDrawCost*(1e3/60))break;var v=e.deq(t,d,c);if(!(v.length>0))break;for(var y=0;y0&&(e.onDeqd(t,u),!i&&e.shouldRedraw(t,u,d,c)&&r())}),i(t))}}},cs=function(){function e(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:be;t(this,e),this.idsByKey=new ze,this.keyForId=new ze,this.cachesByLvl=new ze,this.lvls=[],this.getKey=n,this.doesEleInvalidateKey=r}return r(e,[{key:"getIdsFor",value:function(e){null==e&&Ee("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new Ae,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new ze,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach((function(n){return t.deleteCache(e,n)}))}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}]),e}(),ds={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},hs=Me({getKey:null,doesEleInvalidateKey:be,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:me,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),ps=function(e,t){this.renderer=e,this.onDequeues=[];var n=hs(t);I(this,n),this.lookup=new cs(n.getKey,n.doesEleInvalidateKey),this.setupDequeueing()},fs=ps.prototype;fs.reasons=ds,fs.getTextureQueue=function(e){return this.eleImgCaches=this.eleImgCaches||{},this.eleImgCaches[e]=this.eleImgCaches[e]||[]},fs.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},fs.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new Fe((function(e,t){return t.reqs-e.reqs}))},fs.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},fs.getElement=function(e,t,n,r,i){var a=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!a.allowEdgeTxrCaching&&e.isEdge()||!a.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(it(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,d=t.w*u,h=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,h))return null;var p,f=l.get(e,r);if(f&&f.invalidated&&(f.invalidated=!1,f.texture.invalidatedWidth-=f.width),f)return f;if(p=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||d>1024)return null;var g=a.getTextureQueue(p),v=g[g.length-2],y=function(){return a.recycleTexture(p,d)||a.addTexture(p,d)};v||(v=g[g.length-1]),v||(v=y()),v.width-v.usedWidthr;D--)S=a.getElement(e,t,n,D,ds.downscale);P()}else{var T;if(!x&&!w&&!E)for(var M=r-1;M>=-4;M--){var B=l.get(e,M);if(B){T=B;break}}if(b(T))return a.queueElement(e,r),T;v.context.translate(v.usedWidth,0),v.context.scale(u,u),this.drawElement(v.context,e,t,h,!1),v.context.scale(1/u,1/u),v.context.translate(-v.usedWidth,0)}return f={x:v.usedWidth,texture:v,level:r,scale:u,width:d,height:c,scaledLabelShown:h},v.usedWidth+=Math.ceil(d+8),v.eleCaches.push(f),l.set(e,r,f),a.checkTextureFullness(v),f},fs.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},fs.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?Be(t,e):e.fullnessChecks++},fs.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;Be(n,e),e.retired=!0;for(var i=e.eleCaches,a=0;a=t)return a.retired=!1,a.usedWidth=0,a.invalidatedWidth=0,a.fullnessChecks=0,_e(a.eleCaches),a.context.setTransform(1,0,0,1,0,0),a.context.clearRect(0,0,a.width,a.height),Be(r,a),n.push(a),a}},fs.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),i=this.getKey(e),a=r[i];if(a)a.level=Math.max(a.level,t),a.eles.merge(e),a.reqs++,n.updateItem(a);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:i};n.push(o),r[i]=o}},fs.dequeue=function(e){for(var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=[],i=this.lookup,a=0;a<1&&t.size()>0;a++){var o=t.pop(),s=o.key,l=o.eles[0],u=i.hasCache(l,o.level);if(n[s]=null,!u){r.push(o);var c=this.getBoundingBox(l);this.getElement(l,c,e,o.level,ds.dequeue)}}return r},fs.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),i=n[r];null!=i&&(1===i.eles.length?(i.reqs=ye,t.updateItem(i),t.pop(),n[r]=null):i.eles.unmerge(e))},fs.onDequeue=function(e){this.onDequeues.push(e)},fs.offDequeue=function(e){Be(this.onDequeues,e)},fs.setupDequeueing=us({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},i=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};i(1),i(-1);for(var a=c.length-1;a>=0;a--){var o=c[a];o.invalid&&Be(c,o)}}();var d=function(t){var i=(t=t||{}).after;if(function(){if(!o){o=ht();for(var t=0;t16e6)return null;var a=r.makeLayer(o,n);if(null!=i){var s=c.indexOf(i)+1;c.splice(s,0,a)}else(void 0===t.insert||t.insert)&&c.unshift(a);return a};if(r.skipping&&!a)return null;for(var h=null,p=e.length/1,f=!a,g=0;g=p||!bt(h.bb,v.boundingBox()))&&!(h=d({insert:!0,after:h})))return null;s||f?r.queueLayer(h,v):r.drawEleInLayer(h,v,n,t),h.eles.push(v),m[n]=h}}return s||(f?null:c)},vs.getEleLevelForLayerLevel=function(e,t){return e},vs.drawEleInLayer=function(e,t,n,r){var i=this.renderer,a=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),i.setImgSmoothing(a,!1),i.drawCachedElement(a,t,null,null,n,!0),i.setImgSmoothing(a,!0))},vs.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,i=0;i0)return!1;if(a.invalid)return!1;r+=a.eles.length}return r===t.length},vs.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},vs.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=ie(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,(function(e,n,r){t.invalidateLayer(e)})))},vs.invalidateLayer=function(e){if(this.lastInvalidationTime=ie(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];Be(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var i=0;i3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!a||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=a?t.pstyle("opacity").value:1,c=a?t.pstyle("line-opacity").value:1,d=t.pstyle("line-style").value,h=t.pstyle("width").pfValue,p=t.pstyle("line-cap").value,f=u*c,g=u*c,v=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;e.lineWidth=h,e.lineCap=p,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,d),e.lineCap="butt"},y=function(){i&&o.drawEdgeOverlay(e,t)},m=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g;o.drawArrowheads(e,t,n)},b=function(){o.drawElementText(e,t,null,r)};e.lineJoin="round";var x="yes"===t.pstyle("ghost").value;if(x){var w=t.pstyle("ghost-offset-x").pfValue,E=t.pstyle("ghost-offset-y").pfValue,k=t.pstyle("ghost-opacity").value,C=f*k;e.translate(w,E),v(C),m(C),e.translate(-w,-E)}v(),m(),y(),b(),n&&e.translate(l.x1,l.y1)}},drawEdgeOverlay:function(e,t){if(t.visible()){var n=t.pstyle("overlay-opacity").value;if(0!==n){var r=this,i=r.usePaths(),a=t._private.rscratch,o=2*t.pstyle("overlay-padding").pfValue,s=t.pstyle("overlay-color").value;e.lineWidth=o,"self"!==a.edgeType||i?e.lineCap="round":e.lineCap="butt",r.colorStrokeStyle(e,s[0],s[1],s[2],n),r.drawEdgePath(t,e,a.allpts,"solid")}}},drawEdgePath:function(e,t,n,r){var i,a=e._private.rscratch,o=t,s=!1,l=this.usePaths(),u=e.pstyle("line-dash-pattern").pfValue,c=e.pstyle("line-dash-offset").pfValue;if(l){var d=n.join("$");a.pathCacheKey&&a.pathCacheKey===d?(i=t=a.pathCache,s=!0):(i=t=new Path2D,a.pathCacheKey=d,a.pathCache=i)}if(o.setLineDash)switch(r){case"dotted":o.setLineDash([1,1]);break;case"dashed":o.setLineDash(u),o.lineDashOffset=c;break;case"solid":o.setLineDash([])}if(!s&&!a.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),a.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var h=2;h+35&&void 0!==arguments[5]?arguments[5]:5;e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.quadraticCurveTo(t+r,n,t+r,n+a),e.lineTo(t+r,n+i-a),e.quadraticCurveTo(t+r,n+i,t+r-a,n+i),e.lineTo(t+a,n+i),e.quadraticCurveTo(t,n+i,t,n+i-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n),e.closePath(),e.fill()}Ls.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),i=Math.ceil(it(n*r));t=Math.pow(2,i)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(a&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),d=t.pstyle("source-label"),h=t.pstyle("target-label");if(u||(!c||!c.value)&&(!d||!d.value)&&(!h||!h.value))return;e.textAlign="center",e.textBaseline="bottom"}var p,f=!n;n&&(p=n,e.translate(-p.x1,-p.y1)),null==i?(o.drawText(e,t,null,f,a),t.isEdge()&&(o.drawText(e,t,"source",f,a),o.drawText(e,t,"target",f,a))):o.drawText(e,t,i,f,a),n&&e.translate(p.x1,p.y1)},Ls.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,i=t.pstyle("font-size").pfValue+"px",a=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+i+" "+a,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},Ls.getTextAngle=function(e,t){var n=e._private.rscratch,r=t?t+"-":"",i=e.pstyle(r+"text-rotation"),a=Ne(n,"labelAngle",t);return"autorotate"===i.strValue?e.isEdge()?a:0:"none"===i.strValue?0:i.pfValue},Ls.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=t._private,o=a.rscratch,s=i?t.effectiveOpacity():1;if(!i||0!==s&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var l,u,c=Ne(o,"labelX",n),d=Ne(o,"labelY",n),h=this.getLabelText(t,n);if(null!=h&&""!==h&&!isNaN(c)&&!isNaN(d)){this.setupTextStyle(e,t,i);var p,f=n?n+"-":"",g=Ne(o,"labelWidth",n),v=Ne(o,"labelHeight",n),y=t.pstyle(f+"text-margin-x").pfValue,m=t.pstyle(f+"text-margin-y").pfValue,b=t.isEdge(),x=t.pstyle("text-halign").value,w=t.pstyle("text-valign").value;switch(b&&(x="center",w="center"),c+=y,d+=m,0!==(p=r?this.getTextAngle(t,n):0)&&(l=c,u=d,e.translate(l,u),e.rotate(p),c=0,d=0),w){case"top":break;case"center":d+=v/2;break;case"bottom":d+=v}var E=t.pstyle("text-background-opacity").value,k=t.pstyle("text-border-opacity").value,C=t.pstyle("text-border-width").pfValue,S=t.pstyle("text-background-padding").pfValue;if(E>0||C>0&&k>0){var P=c-S;switch(x){case"left":P-=g;break;case"center":P-=g/2}var D=d-v-S,T=g+2*S,M=v+2*S;if(E>0){var B=e.fillStyle,_=t.pstyle("text-background-color").value;e.fillStyle="rgba("+_[0]+","+_[1]+","+_[2]+","+E*s+")";var N=t.pstyle("text-background-shape").strValue;0===N.indexOf("round")?As(e,P,D,T,M,2):e.fillRect(P,D,T,M),e.fillStyle=B}if(C>0&&k>0){var I=e.strokeStyle,z=e.lineWidth,L=t.pstyle("text-border-color").value,A=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+L[0]+","+L[1]+","+L[2]+","+k*s+")",e.lineWidth=C,e.setLineDash)switch(A){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=C/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(e.strokeRect(P,D,T,M),"double"===A){var O=C/2;e.strokeRect(P+O,D+O,T-2*O,M-2*O)}e.setLineDash&&e.setLineDash([]),e.lineWidth=z,e.strokeStyle=I}}var R=2*t.pstyle("text-outline-width").pfValue;if(R>0&&(e.lineWidth=R),"wrap"===t.pstyle("text-wrap").value){var V=Ne(o,"labelWrapCachedLines",n),F=Ne(o,"labelLineHeight",n),q=g/2,j=this.getLabelJustification(t);switch("auto"===j||("left"===x?"left"===j?c+=-g:"center"===j&&(c+=-q):"center"===x?"left"===j?c+=-q:"right"===j&&(c+=q):"right"===x&&("center"===j?c+=q:"right"===j&&(c+=g))),w){case"top":d-=(V.length-1)*F;break;case"center":case"bottom":d-=(V.length-1)*F}for(var Y=0;Y0&&e.strokeText(V[Y],c,d),e.fillText(V[Y],c,d),d+=F}else R>0&&e.strokeText(h,c,d),e.fillText(h,c,d);0!==p&&(e.rotate(-p),e.translate(-l,-u))}}};var Os={drawNode:function(e,t,n){var r,i,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,d=t.position();if(y(d.x)&&y(d.y)&&(!s||t.visible())){var h,p,f=s?t.effectiveOpacity():1,g=l.usePaths(),v=!1,m=t.padding();r=t.width()+2*m,i=t.height()+2*m,n&&(p=n,e.translate(-p.x1,-p.y1));for(var b=t.pstyle("background-image"),x=b.value,w=new Array(x.length),E=new Array(x.length),k=0,C=0;C0&&void 0!==arguments[0]?arguments[0]:B;l.eleFillStyle(e,t,n)},L=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:I;l.colorStrokeStyle(e,_[0],_[1],_[2],t)},A=t.pstyle("shape").strValue,O=t.pstyle("shape-polygon-points").pfValue;if(g){e.translate(d.x,d.y);var R=l.nodePathCache=l.nodePathCache||[],V=he("polygon"===A?A+","+O.join(","):A,""+i,""+r),F=R[V];null!=F?(h=F,v=!0,c.pathCache=h):(h=new Path2D,R[V]=c.pathCache=h)}var q=function(){if(!v){var n=d;g&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(h||e,n.x,n.y,r,i)}g?e.fill(h):e.fill()},j=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=u.backgrounding,a=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:f;l.hasPie(t)&&(l.drawPie(e,t,a),n&&(g||l.nodeShapes[l.getNodeShape(t)].draw(e,d.x,d.y,r,i)))},X=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f,n=(T>0?T:-T)*t,r=T>0?0:255;0!==T&&(l.colorFillStyle(e,r,r,r,n),g?e.fill(h):e.fill())},W=function(){if(M>0){if(e.lineWidth=M,e.lineCap="butt",e.setLineDash)switch(N){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}if(g?e.stroke(h):e.stroke(),"double"===N){e.lineWidth=M/3;var t=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",g?e.stroke(h):e.stroke(),e.globalCompositeOperation=t}e.setLineDash&&e.setLineDash([])}},H=function(){o&&l.drawNodeOverlay(e,t,d,r,i)},K=function(){l.drawElementText(e,t,null,a)},G="yes"===t.pstyle("ghost").value;if(G){var Z=t.pstyle("ghost-offset-x").pfValue,U=t.pstyle("ghost-offset-y").pfValue,$=t.pstyle("ghost-opacity").value,Q=$*f;e.translate(Z,U),z($*B),q(),j(Q,!0),L($*I),W(),Y(0!==T||0!==M),j(Q,!1),X(Q),e.translate(-Z,-U)}z(),q(),j(f,!0),L(),W(),Y(0!==T||0!==M),j(f,!1),X(),g&&e.translate(-d.x,-d.y),K(),H(),n&&e.translate(p.x1,p.y1)}},drawNodeOverlay:function(e,t,n,r,i){if(t.visible()){var a=t.pstyle("overlay-padding").pfValue,o=t.pstyle("overlay-opacity").value,s=t.pstyle("overlay-color").value;if(o>0){if(n=n||t.position(),null==r||null==i){var l=t.padding();r=t.width()+2*l,i=t.height()+2*l}this.colorFillStyle(e,s[0],s[1],s[2],o),this.nodeShapes.roundrectangle.draw(e,n.x,n.y,r+2*a,i+2*a),e.fill()}}},hasPie:function(e){return(e=e[0])._private.hasPie},drawPie:function(e,t,n,r){t=t[0],r=r||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),o=r.x,s=r.y,l=t.width(),u=t.height(),c=Math.min(l,u)/2,d=0;this.usePaths()&&(o=0,s=0),"%"===a.units?c*=a.pfValue:void 0!==a.pfValue&&(c=a.pfValue/2);for(var h=1;h<=i.pieBackgroundN;h++){var p=t.pstyle("pie-"+h+"-background-size").value,f=t.pstyle("pie-"+h+"-background-color").value,g=t.pstyle("pie-"+h+"-background-opacity").value*n,v=p/100;v+d>1&&(v=1-d);var y=1.5*Math.PI+2*Math.PI*d,m=y+2*Math.PI*v;0===p||d>=1||d+v>1||(e.beginPath(),e.moveTo(o,s),e.arc(o,s,c,y,m),e.closePath(),this.colorFillStyle(e,f[0],f[1],f[2],g),e.fill(),d+=v)}}},Rs={};Rs.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t},Rs.paintCache=function(e){for(var t,n=this.paintCaches=this.paintCaches||[],r=!0,i=0;io.minMbLowQualFrames&&(o.motionBlurPxRatio=o.mbPxRBlurry)),o.clearingMotionBlur&&(o.motionBlurPxRatio=1),o.textureDrawLastFrame&&!d&&(c[o.NODE]=!0,c[o.SELECT_BOX]=!0);var m=l.style(),b=l.zoom(),x=void 0!==i?i:b,w=l.pan(),E={x:w.x,y:w.y},k={zoom:b,pan:{x:w.x,y:w.y}},C=o.prevViewport;void 0===C||k.zoom!==C.zoom||k.pan.x!==C.pan.x||k.pan.y!==C.pan.y||g&&!f||(o.motionBlurPxRatio=1),a&&(E=a),x*=s,E.x*=s,E.y*=s;var S=o.getCachedZSortedEles();function P(e,t,n,r,i){var a=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",o.colorFillStyle(e,255,255,255,o.motionBlurTransparency),e.fillRect(t,n,r,i),e.globalCompositeOperation=a}function D(e,r){var s,l,c,d;o.clearingMotionBlur||e!==u.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]?(s=E,l=x,c=o.canvasWidth,d=o.canvasHeight):(s={x:w.x*p,y:w.y*p},l=b*p,c=o.canvasWidth*p,d=o.canvasHeight*p),e.setTransform(1,0,0,1,0,0),"motionBlur"===r?P(e,0,0,c,d):t||void 0!==r&&!r||e.clearRect(0,0,c,d),n||(e.translate(s.x,s.y),e.scale(l,l)),a&&e.translate(a.x,a.y),i&&e.scale(i,i)}if(d||(o.textureDrawLastFrame=!1),d){if(o.textureDrawLastFrame=!0,!o.textureCache){o.textureCache={},o.textureCache.bb=l.mutableElements().boundingBox(),o.textureCache.texture=o.data.bufferCanvases[o.TEXTURE_BUFFER];var T=o.data.bufferContexts[o.TEXTURE_BUFFER];T.setTransform(1,0,0,1,0,0),T.clearRect(0,0,o.canvasWidth*o.textureMult,o.canvasHeight*o.textureMult),o.render({forcedContext:T,drawOnlyNodeLayer:!0,forcedPxRatio:s*o.textureMult}),(k=o.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:o.canvasWidth,height:o.canvasHeight}).mpan={x:(0-k.pan.x)/k.zoom,y:(0-k.pan.y)/k.zoom}}c[o.DRAG]=!1,c[o.NODE]=!1;var M=u.contexts[o.NODE],B=o.textureCache.texture;k=o.textureCache.viewport;M.setTransform(1,0,0,1,0,0),h?P(M,0,0,k.width,k.height):M.clearRect(0,0,k.width,k.height);var _=m.core("outside-texture-bg-color").value,N=m.core("outside-texture-bg-opacity").value;o.colorFillStyle(M,_[0],_[1],_[2],N),M.fillRect(0,0,k.width,k.height);b=l.zoom();D(M,!1),M.clearRect(k.mpan.x,k.mpan.y,k.width/k.zoom/s,k.height/k.zoom/s),M.drawImage(B,k.mpan.x,k.mpan.y,k.width/k.zoom/s,k.height/k.zoom/s)}else o.textureOnViewport&&!t&&(o.textureCache=null);var I=l.extent(),z=o.pinching||o.hoverData.dragging||o.swipePanning||o.data.wheelZooming||o.hoverData.draggingEles||o.cy.animated(),L=o.hideEdgesOnViewport&&z,A=[];if(A[o.NODE]=!c[o.NODE]&&h&&!o.clearedForMotionBlur[o.NODE]||o.clearingMotionBlur,A[o.NODE]&&(o.clearedForMotionBlur[o.NODE]=!0),A[o.DRAG]=!c[o.DRAG]&&h&&!o.clearedForMotionBlur[o.DRAG]||o.clearingMotionBlur,A[o.DRAG]&&(o.clearedForMotionBlur[o.DRAG]=!0),c[o.NODE]||n||r||A[o.NODE]){var O=h&&!A[o.NODE]&&1!==p;D(M=t||(O?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]:u.contexts[o.NODE]),h&&!O?"motionBlur":void 0),L?o.drawCachedNodes(M,S.nondrag,s,I):o.drawLayeredElements(M,S.nondrag,s,I),o.debug&&o.drawDebugPoints(M,S.nondrag),n||h||(c[o.NODE]=!1)}if(!r&&(c[o.DRAG]||n||A[o.DRAG])){O=h&&!A[o.DRAG]&&1!==p;D(M=t||(O?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]:u.contexts[o.DRAG]),h&&!O?"motionBlur":void 0),L?o.drawCachedNodes(M,S.drag,s,I):o.drawCachedElements(M,S.drag,s,I),o.debug&&o.drawDebugPoints(M,S.drag),n||h||(c[o.DRAG]=!1)}if(o.showFps||!r&&c[o.SELECT_BOX]&&!n){if(D(M=t||u.contexts[o.SELECT_BOX]),1==o.selection[4]&&(o.hoverData.selecting||o.touchData.selecting)){b=o.cy.zoom();var R=m.core("selection-box-border-width").value/b;M.lineWidth=R,M.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",M.fillRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]),R>0&&(M.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",M.strokeRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]))}if(u.bgActivePosistion&&!o.hoverData.selecting){b=o.cy.zoom();var V=u.bgActivePosistion;M.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",M.beginPath(),M.arc(V.x,V.y,m.core("active-bg-size").pfValue/b,0,2*Math.PI),M.fill()}var F=o.lastRedrawTime;if(o.showFps&&F){F=Math.round(F);var q=Math.round(1e3/F);M.setTransform(1,0,0,1,0,0),M.fillStyle="rgba(255, 0, 0, 0.75)",M.strokeStyle="rgba(255, 0, 0, 0.75)",M.lineWidth=1,M.fillText("1 frame = "+F+" ms = "+q+" fps",0,20);M.strokeRect(0,30,250,20),M.fillRect(0,30,250*Math.min(q/60,1),20)}n||(c[o.SELECT_BOX]=!1)}if(h&&1!==p){var j=u.contexts[o.NODE],Y=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_NODE],X=u.contexts[o.DRAG],W=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_DRAG],H=function(e,t,n){e.setTransform(1,0,0,1,0,0),n||!y?e.clearRect(0,0,o.canvasWidth,o.canvasHeight):P(e,0,0,o.canvasWidth,o.canvasHeight);var r=p;e.drawImage(t,0,0,o.canvasWidth*r,o.canvasHeight*r,0,0,o.canvasWidth,o.canvasHeight)};(c[o.NODE]||A[o.NODE])&&(H(j,Y,A[o.NODE]),c[o.NODE]=!1),(c[o.DRAG]||A[o.DRAG])&&(H(X,W,A[o.DRAG]),c[o.DRAG]=!1)}o.prevViewport=k,o.clearingMotionBlur&&(o.clearingMotionBlur=!1,o.motionBlurCleared=!0,o.motionBlur=!0),h&&(o.motionBlurTimeout=setTimeout((function(){o.motionBlurTimeout=null,o.clearedForMotionBlur[o.NODE]=!1,o.clearedForMotionBlur[o.DRAG]=!1,o.motionBlur=!1,o.clearingMotionBlur=!d,o.mbFrames=0,c[o.NODE]=!0,c[o.DRAG]=!0,o.redraw()}),100)),t||l.emit("render")};for(var Vs={drawPolygonPath:function(e,t,n,r,i,a){var o=r/2,s=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+o*a[0],n+s*a[1]);for(var l=1;l0&&a>0){h.clearRect(0,0,i,a),h.globalCompositeOperation="source-over";var p=this.getCachedZSortedEles();if(e.full)h.translate(-n.x1*l,-n.y1*l),h.scale(l,l),this.drawElements(h,p),h.scale(1/l,1/l),h.translate(n.x1*l,n.y1*l);else{var f=t.pan(),g={x:f.x*l,y:f.y*l};l*=t.zoom(),h.translate(g.x,g.y),h.scale(l,l),this.drawElements(h,p),h.scale(1/l,1/l),h.translate(-g.x,-g.y)}e.bg&&(h.globalCompositeOperation="destination-over",h.fillStyle=e.bg,h.rect(0,0,i,a),h.fill())}return d},Hs.png=function(e){return Gs(e,this.bufferCanvasImage(e),"image/png")},Hs.jpg=function(e){return Gs(e,this.bufferCanvasImage(e),"image/jpeg")};var Zs={nodeShapeImpl:function(e,t,n,r,i,a,o){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,i,a);case"polygon":return this.drawPolygonPath(t,n,r,i,a,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,i,a,o);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,i,a);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,i,a);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,i,a);case"barrel":return this.drawBarrelPath(t,n,r,i,a)}}},Us=Qs,$s=Qs.prototype;function Qs(e){var t=this;t.data={canvases:new Array($s.CANVAS_LAYERS),contexts:new Array($s.CANVAS_LAYERS),canvasNeedsRedraw:new Array($s.CANVAS_LAYERS),bufferCanvases:new Array($s.BUFFER_COUNT),bufferContexts:new Array($s.CANVAS_LAYERS)};t.data.canvasContainer=document.createElement("div");var n=t.data.canvasContainer.style;t.data.canvasContainer.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)",n.position="relative",n.zIndex="0",n.overflow="hidden";var r=e.cy.container();r.appendChild(t.data.canvasContainer),r.style["-webkit-tap-highlight-color"]="rgba(0,0,0,0)";var i={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};s&&s.userAgent.match(/msie|trident|edge/i)&&(i["-ms-touch-action"]="none",i["touch-action"]="none");for(var a=0;a<$s.CANVAS_LAYERS;a++){var o=t.data.canvases[a]=document.createElement("canvas");t.data.contexts[a]=o.getContext("2d"),Object.keys(i).forEach((function(e){o.style[e]=i[e]})),o.style.position="absolute",o.setAttribute("data-id","layer"+a),o.style.zIndex=String($s.CANVAS_LAYERS-a),t.data.canvasContainer.appendChild(o),t.data.canvasNeedsRedraw[a]=!1}t.data.topCanvas=t.data.canvases[0],t.data.canvases[$s.NODE].setAttribute("data-id","layer"+$s.NODE+"-node"),t.data.canvases[$s.SELECT_BOX].setAttribute("data-id","layer"+$s.SELECT_BOX+"-selectbox"),t.data.canvases[$s.DRAG].setAttribute("data-id","layer"+$s.DRAG+"-drag");for(a=0;a<$s.BUFFER_COUNT;a++)t.data.bufferCanvases[a]=document.createElement("canvas"),t.data.bufferContexts[a]=t.data.bufferCanvases[a].getContext("2d"),t.data.bufferCanvases[a].style.position="absolute",t.data.bufferCanvases[a].setAttribute("data-id","buffer"+a),t.data.bufferCanvases[a].style.zIndex=String(-a-1),t.data.bufferCanvases[a].style.visibility="hidden";t.pathsEnabled=!0;var l=ht(),u=function(e){return{x:-e.w/2,y:-e.h/2}},c=function(e){return e.boundingBox(),e[0]._private.bodyBounds},d=function(e){return e.boundingBox(),e[0]._private.labelBounds.main||l},h=function(e){return e.boundingBox(),e[0]._private.labelBounds.source||l},p=function(e){return e.boundingBox(),e[0]._private.labelBounds.target||l},f=function(e,t){return t},g=function(e,t,n){var r=e?e+"-":"";return{x:t.x+n.pstyle(r+"text-margin-x").pfValue,y:t.y+n.pstyle(r+"text-margin-y").pfValue}},v=function(e,t,n){var r=e[0]._private.rscratch;return{x:r[t],y:r[n]}},y=t.data.eleTxrCache=new ps(t,{getKey:function(e){return e[0]._private.nodeKey},doesEleInvalidateKey:function(e){var t=e[0]._private;return!(t.oldBackgroundTimestamp===t.backgroundTimestamp)},drawElement:function(e,n,r,i,a){return t.drawElement(e,n,r,!1,!1,a)},getBoundingBox:c,getRotationPoint:function(e){return{x:((t=c(e)).x1+t.x2)/2,y:(t.y1+t.y2)/2};var t},getRotationOffset:function(e){return u(c(e))},allowEdgeTxrCaching:!1,allowParentTxrCaching:!1}),m=t.data.lblTxrCache=new ps(t,{getKey:function(e){return e[0]._private.labelStyleKey},drawElement:function(e,n,r,i,a){return t.drawElementText(e,n,r,i,"main",a)},getBoundingBox:d,getRotationPoint:function(e){return g("",v(e,"labelX","labelY"),e)},getRotationOffset:function(e){var t=d(e),n=u(d(e));if(e.isNode()){switch(e.pstyle("text-halign").value){case"left":n.x=-t.w;break;case"right":n.x=0}switch(e.pstyle("text-valign").value){case"top":n.y=-t.h;break;case"bottom":n.y=0}}return n},isVisible:f}),b=t.data.slbTxrCache=new ps(t,{getKey:function(e){return e[0]._private.sourceLabelStyleKey},drawElement:function(e,n,r,i,a){return t.drawElementText(e,n,r,i,"source",a)},getBoundingBox:h,getRotationPoint:function(e){return g("source",v(e,"sourceLabelX","sourceLabelY"),e)},getRotationOffset:function(e){return u(h(e))},isVisible:f}),x=t.data.tlbTxrCache=new ps(t,{getKey:function(e){return e[0]._private.targetLabelStyleKey},drawElement:function(e,n,r,i,a){return t.drawElementText(e,n,r,i,"target",a)},getBoundingBox:p,getRotationPoint:function(e){return g("target",v(e,"targetLabelX","targetLabelY"),e)},getRotationOffset:function(e){return u(p(e))},isVisible:f}),w=t.data.lyrTxrCache=new gs(t);t.onUpdateEleCalcs((function(e,t){y.invalidateElements(t),m.invalidateElements(t),b.invalidateElements(t),x.invalidateElements(t),w.invalidateElements(t);for(var n=0;n + // ETL Viewer Dependencies - - + // ETL Viewer diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewer.js b/html/internal_dashboard/js/etl_viewer/ETLViewer.js index 8aa7ed7407..3747ff6603 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewer.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewer.js @@ -17,25 +17,11 @@ XDMoD.Admin.ETL.ETLViewer = Ext.extend(Ext.Panel, { tabCls: 'tab-strip' } }); + this.treeView = new XDMoD.Admin.ETL.ETLViewerTreeTab({etlViewer: this}); + this.tabPanel.add(this.treeView) + Ext.apply(this, { - items: [ - this.tabPanel - ], - tbar: { - items: [ - { - xtype: 'button', - text: 'Tree View', - cls: 'x-btn-text-icon', - icon: '', - handler: function() { - self.addTab('tree', { - etlViewer: self - }); - } - } - ] - } + items: [this.tabPanel] }); XDMoD.Admin.ETL.ETLViewer.superclass.initComponent.apply(this, arguments); }, diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index 828a1f9546..e2f3972731 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -3,7 +3,6 @@ Ext.namespace('XDMoD', 'XDMoD.Admin', 'XDMoD.Admin.ETL'); XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { title: 'ETL Tree View', layout: 'border', - closable: true, height: '100%', width: '100%', @@ -25,13 +24,19 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { xtype: 'button', text: 'Expand All', icon: '', - cls: 'x-btn-text-icon' + cls: 'x-btn-text-icon', + handler: function () { + alert("This doesn't function yet, try pressing shift while expanding a node."); + } }, { xtype: 'button', text: 'Collapse All', icon: '', - cls: 'x-btn-text-icon' + cls: 'x-btn-text-icon', + handler: function () { + alert("This doesn't function yet, try pressing shift while collapsing a node.") + } }, '-', { @@ -71,11 +76,14 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { title = 'Pipeline'; config['pipeline'] = node.attributes.name; config['title'] = node.attributes.name; - } else if (isAction) { + } + + // don't quite have the action specific backend setup yet. + /*else if (isAction) { title = 'Action'; let pipeline = node.parentNode.parentNode.attributes.name; config['action'] = `${pipeline}.${node.attributes.name}`; - } + }*/ let items = [ `${title}
`, From b4cb3653bb8dcf9f6665f41019905d81e3b297be Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Thu, 6 May 2021 10:24:47 -0400 Subject: [PATCH 71/76] Adding Graph viewing for an Action and fixing libraries --- .../Controllers/ETLControllerProvider.php | 50 +- .../lib/cytoscape-dagre/cytoscape-dagre.js | 24496 ++++++------ html/gui/lib/cytoscape/cytoscape.esm.js | 31608 ---------------- 3 files changed, 12291 insertions(+), 43863 deletions(-) delete mode 100644 html/gui/lib/cytoscape/cytoscape.esm.js diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index de2af38274..d45e7e85e8 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -78,6 +78,9 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $controller->get("$root/graph/pipelines/{pipeline}", "$class::getPipelinesForGraph"); $controller->post("$root/graph/pipelines/{pipeline}", "$class::getPipelinesForGraph"); + + $controller->get("$root/graph/pipelines/{pipeline}/actions/{action}", "$class::getPipelineActionForGraph"); + $controller->post("$root/graph/pipelines/{pipeline}/actions/{action}", "$class::getPipelineActionForGraph"); } /** @@ -385,7 +388,42 @@ public function search(Request $request, Application $app) return $app->json($results); } + /** + * @param Request $request + * @param Application $app + * @param string $pipeline + * @return JsonResponse + */ public function getPipelinesForGraph(Request $request, Application $app, $pipeline) + { + return $app->json( + array( + 'success' => true, + 'message' => "Retrieved $pipeline", + 'data' => $this->preparePipelineForGraph($pipeline) + ) + ); + } + + /** + * @param Request $request + * @param Application $app + * @param string $pipeline + * @param string $action + * @return JsonResponse + */ + public function getPipelineActionForGraph(Request $request, Application $app, $pipeline, $action) + { + return $app->json( + array( + 'success' => true, + 'message' => "Retrieved $action of $pipeline", + 'data' => $this->preparePipelineForGraph($pipeline, $action) + ) + ); + } + + protected function preparePipelineForGraph($pipeline, $action = null) { /* Parent Group nodes should be formatted as such: * { group: 'nodes', data: { id: '', name: ''} } @@ -426,7 +464,11 @@ public function getPipelinesForGraph(Request $request, Application $app, $pipeli ); foreach($actions as $key => $actionData) { + $actionName = $actionData['name']; + if (isset($action) && $action !== $actionName) { + break; + } $action = array( 'group' => 'nodes', @@ -484,13 +526,7 @@ public function getPipelinesForGraph(Request $request, Application $app, $pipeli } } - return $app->json( - array( - 'success' => true, - 'message' => "Retrieved $pipeline", - 'data' => $results - ) - ); + return $results; } private function getTargetData($target, $idPrefix = null) diff --git a/html/gui/lib/cytoscape-dagre/cytoscape-dagre.js b/html/gui/lib/cytoscape-dagre/cytoscape-dagre.js index 4c01bf61ea..5bdbc3c866 100644 --- a/html/gui/lib/cytoscape-dagre/cytoscape-dagre.js +++ b/html/gui/lib/cytoscape-dagre/cytoscape-dagre.js @@ -1,100 +1,100 @@ var cytoscapeDagre = -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); -/******/ } -/******/ }; -/******/ -/******/ // define __esModule on exports -/******/ __webpack_require__.r = function(exports) { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ -/******/ // create a fake namespace object -/******/ // mode & 1: value is a module id, require it -/******/ // mode & 2: merge all properties of value into the ns -/******/ // mode & 4: return value when already ns object -/******/ // mode & 8|1: behave like require -/******/ __webpack_require__.t = function(value, mode) { -/******/ if(mode & 1) value = __webpack_require__(value); -/******/ if(mode & 8) return value; -/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; -/******/ var ns = Object.create(null); -/******/ __webpack_require__.r(ns); -/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); -/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); -/******/ return ns; -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); -/******/ }) -/************************************************************************/ -/******/ ({ - -/***/ "./node_modules/dagre/index.js": -/*!*************************************!*\ + /******/ (function(modules) { // webpackBootstrap + /******/ // The module cache + /******/ var installedModules = {}; + /******/ + /******/ // The require function + /******/ function __webpack_require__(moduleId) { + /******/ + /******/ // Check if module is in cache + /******/ if(installedModules[moduleId]) { + /******/ return installedModules[moduleId].exports; + /******/ } + /******/ // Create a new module (and put it into the cache) + /******/ var module = installedModules[moduleId] = { + /******/ i: moduleId, + /******/ l: false, + /******/ exports: {} + /******/ }; + /******/ + /******/ // Execute the module function + /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + /******/ + /******/ // Flag the module as loaded + /******/ module.l = true; + /******/ + /******/ // Return the exports of the module + /******/ return module.exports; + /******/ } + /******/ + /******/ + /******/ // expose the modules object (__webpack_modules__) + /******/ __webpack_require__.m = modules; + /******/ + /******/ // expose the module cache + /******/ __webpack_require__.c = installedModules; + /******/ + /******/ // define getter function for harmony exports + /******/ __webpack_require__.d = function(exports, name, getter) { + /******/ if(!__webpack_require__.o(exports, name)) { + /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); + /******/ } + /******/ }; + /******/ + /******/ // define __esModule on exports + /******/ __webpack_require__.r = function(exports) { + /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { + /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); + /******/ } + /******/ Object.defineProperty(exports, '__esModule', { value: true }); + /******/ }; + /******/ + /******/ // create a fake namespace object + /******/ // mode & 1: value is a module id, require it + /******/ // mode & 2: merge all properties of value into the ns + /******/ // mode & 4: return value when already ns object + /******/ // mode & 8|1: behave like require + /******/ __webpack_require__.t = function(value, mode) { + /******/ if(mode & 1) value = __webpack_require__(value); + /******/ if(mode & 8) return value; + /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; + /******/ var ns = Object.create(null); + /******/ __webpack_require__.r(ns); + /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); + /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); + /******/ return ns; + /******/ }; + /******/ + /******/ // getDefaultExport function for compatibility with non-harmony modules + /******/ __webpack_require__.n = function(module) { + /******/ var getter = module && module.__esModule ? + /******/ function getDefault() { return module['default']; } : + /******/ function getModuleExports() { return module; }; + /******/ __webpack_require__.d(getter, 'a', getter); + /******/ return getter; + /******/ }; + /******/ + /******/ // Object.prototype.hasOwnProperty.call + /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; + /******/ + /******/ // __webpack_public_path__ + /******/ __webpack_require__.p = ""; + /******/ + /******/ + /******/ // Load entry module and return exports + /******/ return __webpack_require__(__webpack_require__.s = "./src/index.js"); + /******/ }) + /************************************************************************/ + /******/ ({ + + /***/ "./node_modules/dagre/index.js": + /*!*************************************!*\ !*** ./node_modules/dagre/index.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -/* + /* Copyright (c) 2012-2014 Chris Pettitt Permission is hereby granted, free of charge, to any person obtaining a copy @@ -116,651 +116,651 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -module.exports = { - graphlib: __webpack_require__(/*! ./lib/graphlib */ "./node_modules/dagre/lib/graphlib.js"), + module.exports = { + graphlib: __webpack_require__(/*! ./lib/graphlib */ "./node_modules/dagre/lib/graphlib.js"), - layout: __webpack_require__(/*! ./lib/layout */ "./node_modules/dagre/lib/layout.js"), - debug: __webpack_require__(/*! ./lib/debug */ "./node_modules/dagre/lib/debug.js"), - util: { - time: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").time, - notime: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").notime - }, - version: __webpack_require__(/*! ./lib/version */ "./node_modules/dagre/lib/version.js") -}; + layout: __webpack_require__(/*! ./lib/layout */ "./node_modules/dagre/lib/layout.js"), + debug: __webpack_require__(/*! ./lib/debug */ "./node_modules/dagre/lib/debug.js"), + util: { + time: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").time, + notime: __webpack_require__(/*! ./lib/util */ "./node_modules/dagre/lib/util.js").notime + }, + version: __webpack_require__(/*! ./lib/version */ "./node_modules/dagre/lib/version.js") + }; -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/acyclic.js": -/*!*******************************************!*\ + /***/ "./node_modules/dagre/lib/acyclic.js": + /*!*******************************************!*\ !*** ./node_modules/dagre/lib/acyclic.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var greedyFAS = __webpack_require__(/*! ./greedy-fas */ "./node_modules/dagre/lib/greedy-fas.js"); - -module.exports = { - run: run, - undo: undo -}; - -function run(g) { - var fas = (g.graph().acyclicer === "greedy" - ? greedyFAS(g, weightFn(g)) - : dfsFAS(g)); - _.forEach(fas, function(e) { - var label = g.edge(e); - g.removeEdge(e); - label.forwardName = e.name; - label.reversed = true; - g.setEdge(e.w, e.v, label, _.uniqueId("rev")); - }); - - function weightFn(g) { - return function(e) { - return g.edge(e).weight; - }; - } -} - -function dfsFAS(g) { - var fas = []; - var stack = {}; - var visited = {}; - - function dfs(v) { - if (_.has(visited, v)) { - return; - } - visited[v] = true; - stack[v] = true; - _.forEach(g.outEdges(v), function(e) { - if (_.has(stack, e.w)) { - fas.push(e); - } else { - dfs(e.w); - } - }); - delete stack[v]; - } - - _.forEach(g.nodes(), dfs); - return fas; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + "use strict"; + + + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var greedyFAS = __webpack_require__(/*! ./greedy-fas */ "./node_modules/dagre/lib/greedy-fas.js"); + + module.exports = { + run: run, + undo: undo + }; + + function run(g) { + var fas = (g.graph().acyclicer === "greedy" + ? greedyFAS(g, weightFn(g)) + : dfsFAS(g)); + _.forEach(fas, function(e) { + var label = g.edge(e); + g.removeEdge(e); + label.forwardName = e.name; + label.reversed = true; + g.setEdge(e.w, e.v, label, _.uniqueId("rev")); + }); + + function weightFn(g) { + return function(e) { + return g.edge(e).weight; + }; + } + } -function undo(g) { - _.forEach(g.edges(), function(e) { - var label = g.edge(e); - if (label.reversed) { - g.removeEdge(e); + function dfsFAS(g) { + var fas = []; + var stack = {}; + var visited = {}; + + function dfs(v) { + if (_.has(visited, v)) { + return; + } + visited[v] = true; + stack[v] = true; + _.forEach(g.outEdges(v), function(e) { + if (_.has(stack, e.w)) { + fas.push(e); + } else { + dfs(e.w); + } + }); + delete stack[v]; + } + + _.forEach(g.nodes(), dfs); + return fas; + } - var forwardName = label.forwardName; - delete label.reversed; - delete label.forwardName; - g.setEdge(e.w, e.v, label, forwardName); - } - }); -} + function undo(g) { + _.forEach(g.edges(), function(e) { + var label = g.edge(e); + if (label.reversed) { + g.removeEdge(e); + + var forwardName = label.forwardName; + delete label.reversed; + delete label.forwardName; + g.setEdge(e.w, e.v, label, forwardName); + } + }); + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/add-border-segments.js": -/*!*******************************************************!*\ + /***/ "./node_modules/dagre/lib/add-border-segments.js": + /*!*******************************************************!*\ !*** ./node_modules/dagre/lib/add-border-segments.js ***! \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + + module.exports = addBorderSegments; + + function addBorderSegments(g) { + function dfs(v) { + var children = g.children(v); + var node = g.node(v); + if (children.length) { + _.forEach(children, dfs); + } + + if (_.has(node, "minRank")) { + node.borderLeft = []; + node.borderRight = []; + for (var rank = node.minRank, maxRank = node.maxRank + 1; + rank < maxRank; + ++rank) { + addBorderNode(g, "borderLeft", "_bl", v, node, rank); + addBorderNode(g, "borderRight", "_br", v, node, rank); + } + } + } + + _.forEach(g.children(), dfs); + } -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + function addBorderNode(g, prop, prefix, sg, sgNode, rank) { + var label = { width: 0, height: 0, rank: rank, borderType: prop }; + var prev = sgNode[prop][rank - 1]; + var curr = util.addDummyNode(g, "border", label, prefix); + sgNode[prop][rank] = curr; + g.setParent(curr, sg); + if (prev) { + g.setEdge(prev, curr, { weight: 1 }); + } + } -module.exports = addBorderSegments; -function addBorderSegments(g) { - function dfs(v) { - var children = g.children(v); - var node = g.node(v); - if (children.length) { - _.forEach(children, dfs); - } + /***/ }), - if (_.has(node, "minRank")) { - node.borderLeft = []; - node.borderRight = []; - for (var rank = node.minRank, maxRank = node.maxRank + 1; - rank < maxRank; - ++rank) { - addBorderNode(g, "borderLeft", "_bl", v, node, rank); - addBorderNode(g, "borderRight", "_br", v, node, rank); - } - } - } + /***/ "./node_modules/dagre/lib/coordinate-system.js": + /*!*****************************************************!*\ + !*** ./node_modules/dagre/lib/coordinate-system.js ***! + \*****************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { - _.forEach(g.children(), dfs); -} - -function addBorderNode(g, prop, prefix, sg, sgNode, rank) { - var label = { width: 0, height: 0, rank: rank, borderType: prop }; - var prev = sgNode[prop][rank - 1]; - var curr = util.addDummyNode(g, "border", label, prefix); - sgNode[prop][rank] = curr; - g.setParent(curr, sg); - if (prev) { - g.setEdge(prev, curr, { weight: 1 }); - } -} + "use strict"; -/***/ }), + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -/***/ "./node_modules/dagre/lib/coordinate-system.js": -/*!*****************************************************!*\ - !*** ./node_modules/dagre/lib/coordinate-system.js ***! - \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + module.exports = { + adjust: adjust, + undo: undo + }; -"use strict"; + function adjust(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === "lr" || rankDir === "rl") { + swapWidthHeight(g); + } + } + function undo(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === "bt" || rankDir === "rl") { + reverseY(g); + } -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + if (rankDir === "lr" || rankDir === "rl") { + swapXY(g); + swapWidthHeight(g); + } + } -module.exports = { - adjust: adjust, - undo: undo -}; + function swapWidthHeight(g) { + _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); }); + _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); }); + } -function adjust(g) { - var rankDir = g.graph().rankdir.toLowerCase(); - if (rankDir === "lr" || rankDir === "rl") { - swapWidthHeight(g); - } -} + function swapWidthHeightOne(attrs) { + var w = attrs.width; + attrs.width = attrs.height; + attrs.height = w; + } -function undo(g) { - var rankDir = g.graph().rankdir.toLowerCase(); - if (rankDir === "bt" || rankDir === "rl") { - reverseY(g); - } + function reverseY(g) { + _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); }); - if (rankDir === "lr" || rankDir === "rl") { - swapXY(g); - swapWidthHeight(g); - } -} - -function swapWidthHeight(g) { - _.forEach(g.nodes(), function(v) { swapWidthHeightOne(g.node(v)); }); - _.forEach(g.edges(), function(e) { swapWidthHeightOne(g.edge(e)); }); -} - -function swapWidthHeightOne(attrs) { - var w = attrs.width; - attrs.width = attrs.height; - attrs.height = w; -} - -function reverseY(g) { - _.forEach(g.nodes(), function(v) { reverseYOne(g.node(v)); }); - - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - _.forEach(edge.points, reverseYOne); - if (_.has(edge, "y")) { - reverseYOne(edge); - } - }); -} + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + _.forEach(edge.points, reverseYOne); + if (_.has(edge, "y")) { + reverseYOne(edge); + } + }); + } -function reverseYOne(attrs) { - attrs.y = -attrs.y; -} + function reverseYOne(attrs) { + attrs.y = -attrs.y; + } -function swapXY(g) { - _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); }); + function swapXY(g) { + _.forEach(g.nodes(), function(v) { swapXYOne(g.node(v)); }); - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - _.forEach(edge.points, swapXYOne); - if (_.has(edge, "x")) { - swapXYOne(edge); - } - }); -} + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + _.forEach(edge.points, swapXYOne); + if (_.has(edge, "x")) { + swapXYOne(edge); + } + }); + } -function swapXYOne(attrs) { - var x = attrs.x; - attrs.x = attrs.y; - attrs.y = x; -} + function swapXYOne(attrs) { + var x = attrs.x; + attrs.x = attrs.y; + attrs.y = x; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/data/list.js": -/*!*********************************************!*\ + /***/ "./node_modules/dagre/lib/data/list.js": + /*!*********************************************!*\ !*** ./node_modules/dagre/lib/data/list.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports) { -/* + /* * Simple doubly linked list implementation derived from Cormen, et al., * "Introduction to Algorithms". */ -module.exports = List; + module.exports = List; -function List() { - var sentinel = {}; - sentinel._next = sentinel._prev = sentinel; - this._sentinel = sentinel; -} + function List() { + var sentinel = {}; + sentinel._next = sentinel._prev = sentinel; + this._sentinel = sentinel; + } -List.prototype.dequeue = function() { - var sentinel = this._sentinel; - var entry = sentinel._prev; - if (entry !== sentinel) { - unlink(entry); - return entry; - } -}; + List.prototype.dequeue = function() { + var sentinel = this._sentinel; + var entry = sentinel._prev; + if (entry !== sentinel) { + unlink(entry); + return entry; + } + }; + + List.prototype.enqueue = function(entry) { + var sentinel = this._sentinel; + if (entry._prev && entry._next) { + unlink(entry); + } + entry._next = sentinel._next; + sentinel._next._prev = entry; + sentinel._next = entry; + entry._prev = sentinel; + }; + + List.prototype.toString = function() { + var strs = []; + var sentinel = this._sentinel; + var curr = sentinel._prev; + while (curr !== sentinel) { + strs.push(JSON.stringify(curr, filterOutLinks)); + curr = curr._prev; + } + return "[" + strs.join(", ") + "]"; + }; + + function unlink(entry) { + entry._prev._next = entry._next; + entry._next._prev = entry._prev; + delete entry._next; + delete entry._prev; + } -List.prototype.enqueue = function(entry) { - var sentinel = this._sentinel; - if (entry._prev && entry._next) { - unlink(entry); - } - entry._next = sentinel._next; - sentinel._next._prev = entry; - sentinel._next = entry; - entry._prev = sentinel; -}; - -List.prototype.toString = function() { - var strs = []; - var sentinel = this._sentinel; - var curr = sentinel._prev; - while (curr !== sentinel) { - strs.push(JSON.stringify(curr, filterOutLinks)); - curr = curr._prev; - } - return "[" + strs.join(", ") + "]"; -}; - -function unlink(entry) { - entry._prev._next = entry._next; - entry._next._prev = entry._prev; - delete entry._next; - delete entry._prev; -} - -function filterOutLinks(k, v) { - if (k !== "_next" && k !== "_prev") { - return v; - } -} + function filterOutLinks(k, v) { + if (k !== "_next" && k !== "_prev") { + return v; + } + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/debug.js": -/*!*****************************************!*\ + /***/ "./node_modules/dagre/lib/debug.js": + /*!*****************************************!*\ !*** ./node_modules/dagre/lib/debug.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); -var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; - -module.exports = { - debugOrdering: debugOrdering -}; - -/* istanbul ignore next */ -function debugOrdering(g) { - var layerMatrix = util.buildLayerMatrix(g); - - var h = new Graph({ compound: true, multigraph: true }).setGraph({}); - - _.forEach(g.nodes(), function(v) { - h.setNode(v, { label: v }); - h.setParent(v, "layer" + g.node(v).rank); - }); - - _.forEach(g.edges(), function(e) { - h.setEdge(e.v, e.w, {}, e.name); - }); - - _.forEach(layerMatrix, function(layer, i) { - var layerV = "layer" + i; - h.setNode(layerV, { rank: "same" }); - _.reduce(layer, function(u, v) { - h.setEdge(u, v, { style: "invis" }); - return v; - }); - }); - - return h; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + + module.exports = { + debugOrdering: debugOrdering + }; + + /* istanbul ignore next */ + function debugOrdering(g) { + var layerMatrix = util.buildLayerMatrix(g); + + var h = new Graph({ compound: true, multigraph: true }).setGraph({}); + + _.forEach(g.nodes(), function(v) { + h.setNode(v, { label: v }); + h.setParent(v, "layer" + g.node(v).rank); + }); + + _.forEach(g.edges(), function(e) { + h.setEdge(e.v, e.w, {}, e.name); + }); + + _.forEach(layerMatrix, function(layer, i) { + var layerV = "layer" + i; + h.setNode(layerV, { rank: "same" }); + _.reduce(layer, function(u, v) { + h.setEdge(u, v, { style: "invis" }); + return v; + }); + }); + + return h; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/graphlib.js": -/*!********************************************!*\ + /***/ "./node_modules/dagre/lib/graphlib.js": + /*!********************************************!*\ !*** ./node_modules/dagre/lib/graphlib.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -/* global window */ + /* global window */ -var graphlib; + var graphlib; -if (true) { - try { - graphlib = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js"); - } catch (e) { - // continue regardless of error - } -} + if (true) { + try { + graphlib = __webpack_require__(/*! graphlib */ "./node_modules/graphlib/index.js"); + } catch (e) { + // continue regardless of error + } + } -if (!graphlib) { - graphlib = window.graphlib; -} + if (!graphlib) { + graphlib = window.graphlib; + } -module.exports = graphlib; + module.exports = graphlib; -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/greedy-fas.js": -/*!**********************************************!*\ + /***/ "./node_modules/dagre/lib/greedy-fas.js": + /*!**********************************************!*\ !*** ./node_modules/dagre/lib/greedy-fas.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; -var List = __webpack_require__(/*! ./data/list */ "./node_modules/dagre/lib/data/list.js"); + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + var List = __webpack_require__(/*! ./data/list */ "./node_modules/dagre/lib/data/list.js"); -/* + /* * A greedy heuristic for finding a feedback arc set for a graph. A feedback * arc set is a set of edges that can be removed to make a graph acyclic. * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and * effective heuristic for the feedback arc set problem." This implementation * adjusts that from the paper to allow for weighted edges. */ -module.exports = greedyFAS; + module.exports = greedyFAS; -var DEFAULT_WEIGHT_FN = _.constant(1); + var DEFAULT_WEIGHT_FN = _.constant(1); -function greedyFAS(g, weightFn) { - if (g.nodeCount() <= 1) { - return []; - } - var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN); - var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx); - - // Expand multi-edges - return _.flatten(_.map(results, function(e) { - return g.outEdges(e.v, e.w); - }), true); -} - -function doGreedyFAS(g, buckets, zeroIdx) { - var results = []; - var sources = buckets[buckets.length - 1]; - var sinks = buckets[0]; - - var entry; - while (g.nodeCount()) { - while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } - while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } - if (g.nodeCount()) { - for (var i = buckets.length - 2; i > 0; --i) { - entry = buckets[i].dequeue(); - if (entry) { - results = results.concat(removeNode(g, buckets, zeroIdx, entry, true)); - break; - } - } - } - } + function greedyFAS(g, weightFn) { + if (g.nodeCount() <= 1) { + return []; + } + var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN); + var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx); + + // Expand multi-edges + return _.flatten(_.map(results, function(e) { + return g.outEdges(e.v, e.w); + }), true); + } - return results; -} + function doGreedyFAS(g, buckets, zeroIdx) { + var results = []; + var sources = buckets[buckets.length - 1]; + var sinks = buckets[0]; + + var entry; + while (g.nodeCount()) { + while ((entry = sinks.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } + while ((entry = sources.dequeue())) { removeNode(g, buckets, zeroIdx, entry); } + if (g.nodeCount()) { + for (var i = buckets.length - 2; i > 0; --i) { + entry = buckets[i].dequeue(); + if (entry) { + results = results.concat(removeNode(g, buckets, zeroIdx, entry, true)); + break; + } + } + } + } + + return results; + } -function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) { - var results = collectPredecessors ? [] : undefined; + function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) { + var results = collectPredecessors ? [] : undefined; - _.forEach(g.inEdges(entry.v), function(edge) { - var weight = g.edge(edge); - var uEntry = g.node(edge.v); + _.forEach(g.inEdges(entry.v), function(edge) { + var weight = g.edge(edge); + var uEntry = g.node(edge.v); - if (collectPredecessors) { - results.push({ v: edge.v, w: edge.w }); - } + if (collectPredecessors) { + results.push({ v: edge.v, w: edge.w }); + } - uEntry.out -= weight; - assignBucket(buckets, zeroIdx, uEntry); - }); - - _.forEach(g.outEdges(entry.v), function(edge) { - var weight = g.edge(edge); - var w = edge.w; - var wEntry = g.node(w); - wEntry["in"] -= weight; - assignBucket(buckets, zeroIdx, wEntry); - }); - - g.removeNode(entry.v); - - return results; -} - -function buildState(g, weightFn) { - var fasGraph = new Graph(); - var maxIn = 0; - var maxOut = 0; - - _.forEach(g.nodes(), function(v) { - fasGraph.setNode(v, { v: v, "in": 0, out: 0 }); - }); - - // Aggregate weights on nodes, but also sum the weights across multi-edges - // into a single edge for the fasGraph. - _.forEach(g.edges(), function(e) { - var prevWeight = fasGraph.edge(e.v, e.w) || 0; - var weight = weightFn(e); - var edgeWeight = prevWeight + weight; - fasGraph.setEdge(e.v, e.w, edgeWeight); - maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight); - maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight); - }); - - var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); }); - var zeroIdx = maxIn + 1; - - _.forEach(fasGraph.nodes(), function(v) { - assignBucket(buckets, zeroIdx, fasGraph.node(v)); - }); - - return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx }; -} - -function assignBucket(buckets, zeroIdx, entry) { - if (!entry.out) { - buckets[0].enqueue(entry); - } else if (!entry["in"]) { - buckets[buckets.length - 1].enqueue(entry); - } else { - buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry); - } -} + uEntry.out -= weight; + assignBucket(buckets, zeroIdx, uEntry); + }); + _.forEach(g.outEdges(entry.v), function(edge) { + var weight = g.edge(edge); + var w = edge.w; + var wEntry = g.node(w); + wEntry["in"] -= weight; + assignBucket(buckets, zeroIdx, wEntry); + }); -/***/ }), + g.removeNode(entry.v); -/***/ "./node_modules/dagre/lib/layout.js": -/*!******************************************!*\ + return results; + } + + function buildState(g, weightFn) { + var fasGraph = new Graph(); + var maxIn = 0; + var maxOut = 0; + + _.forEach(g.nodes(), function(v) { + fasGraph.setNode(v, { v: v, "in": 0, out: 0 }); + }); + + // Aggregate weights on nodes, but also sum the weights across multi-edges + // into a single edge for the fasGraph. + _.forEach(g.edges(), function(e) { + var prevWeight = fasGraph.edge(e.v, e.w) || 0; + var weight = weightFn(e); + var edgeWeight = prevWeight + weight; + fasGraph.setEdge(e.v, e.w, edgeWeight); + maxOut = Math.max(maxOut, fasGraph.node(e.v).out += weight); + maxIn = Math.max(maxIn, fasGraph.node(e.w)["in"] += weight); + }); + + var buckets = _.range(maxOut + maxIn + 3).map(function() { return new List(); }); + var zeroIdx = maxIn + 1; + + _.forEach(fasGraph.nodes(), function(v) { + assignBucket(buckets, zeroIdx, fasGraph.node(v)); + }); + + return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx }; + } + + function assignBucket(buckets, zeroIdx, entry) { + if (!entry.out) { + buckets[0].enqueue(entry); + } else if (!entry["in"]) { + buckets[buckets.length - 1].enqueue(entry); + } else { + buckets[entry.out - entry["in"] + zeroIdx].enqueue(entry); + } + } + + + /***/ }), + + /***/ "./node_modules/dagre/lib/layout.js": + /*!******************************************!*\ !*** ./node_modules/dagre/lib/layout.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var acyclic = __webpack_require__(/*! ./acyclic */ "./node_modules/dagre/lib/acyclic.js"); -var normalize = __webpack_require__(/*! ./normalize */ "./node_modules/dagre/lib/normalize.js"); -var rank = __webpack_require__(/*! ./rank */ "./node_modules/dagre/lib/rank/index.js"); -var normalizeRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").normalizeRanks; -var parentDummyChains = __webpack_require__(/*! ./parent-dummy-chains */ "./node_modules/dagre/lib/parent-dummy-chains.js"); -var removeEmptyRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").removeEmptyRanks; -var nestingGraph = __webpack_require__(/*! ./nesting-graph */ "./node_modules/dagre/lib/nesting-graph.js"); -var addBorderSegments = __webpack_require__(/*! ./add-border-segments */ "./node_modules/dagre/lib/add-border-segments.js"); -var coordinateSystem = __webpack_require__(/*! ./coordinate-system */ "./node_modules/dagre/lib/coordinate-system.js"); -var order = __webpack_require__(/*! ./order */ "./node_modules/dagre/lib/order/index.js"); -var position = __webpack_require__(/*! ./position */ "./node_modules/dagre/lib/position/index.js"); -var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); -var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; - -module.exports = layout; - -function layout(g, opts) { - var time = opts && opts.debugTiming ? util.time : util.notime; - time("layout", function() { - var layoutGraph = - time(" buildLayoutGraph", function() { return buildLayoutGraph(g); }); - time(" runLayout", function() { runLayout(layoutGraph, time); }); - time(" updateInputGraph", function() { updateInputGraph(g, layoutGraph); }); - }); -} - -function runLayout(g, time) { - time(" makeSpaceForEdgeLabels", function() { makeSpaceForEdgeLabels(g); }); - time(" removeSelfEdges", function() { removeSelfEdges(g); }); - time(" acyclic", function() { acyclic.run(g); }); - time(" nestingGraph.run", function() { nestingGraph.run(g); }); - time(" rank", function() { rank(util.asNonCompoundGraph(g)); }); - time(" injectEdgeLabelProxies", function() { injectEdgeLabelProxies(g); }); - time(" removeEmptyRanks", function() { removeEmptyRanks(g); }); - time(" nestingGraph.cleanup", function() { nestingGraph.cleanup(g); }); - time(" normalizeRanks", function() { normalizeRanks(g); }); - time(" assignRankMinMax", function() { assignRankMinMax(g); }); - time(" removeEdgeLabelProxies", function() { removeEdgeLabelProxies(g); }); - time(" normalize.run", function() { normalize.run(g); }); - time(" parentDummyChains", function() { parentDummyChains(g); }); - time(" addBorderSegments", function() { addBorderSegments(g); }); - time(" order", function() { order(g); }); - time(" insertSelfEdges", function() { insertSelfEdges(g); }); - time(" adjustCoordinateSystem", function() { coordinateSystem.adjust(g); }); - time(" position", function() { position(g); }); - time(" positionSelfEdges", function() { positionSelfEdges(g); }); - time(" removeBorderNodes", function() { removeBorderNodes(g); }); - time(" normalize.undo", function() { normalize.undo(g); }); - time(" fixupEdgeLabelCoords", function() { fixupEdgeLabelCoords(g); }); - time(" undoCoordinateSystem", function() { coordinateSystem.undo(g); }); - time(" translateGraph", function() { translateGraph(g); }); - time(" assignNodeIntersects", function() { assignNodeIntersects(g); }); - time(" reversePoints", function() { reversePointsForReversedEdges(g); }); - time(" acyclic.undo", function() { acyclic.undo(g); }); -} - -/* + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + "use strict"; + + + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var acyclic = __webpack_require__(/*! ./acyclic */ "./node_modules/dagre/lib/acyclic.js"); + var normalize = __webpack_require__(/*! ./normalize */ "./node_modules/dagre/lib/normalize.js"); + var rank = __webpack_require__(/*! ./rank */ "./node_modules/dagre/lib/rank/index.js"); + var normalizeRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").normalizeRanks; + var parentDummyChains = __webpack_require__(/*! ./parent-dummy-chains */ "./node_modules/dagre/lib/parent-dummy-chains.js"); + var removeEmptyRanks = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js").removeEmptyRanks; + var nestingGraph = __webpack_require__(/*! ./nesting-graph */ "./node_modules/dagre/lib/nesting-graph.js"); + var addBorderSegments = __webpack_require__(/*! ./add-border-segments */ "./node_modules/dagre/lib/add-border-segments.js"); + var coordinateSystem = __webpack_require__(/*! ./coordinate-system */ "./node_modules/dagre/lib/coordinate-system.js"); + var order = __webpack_require__(/*! ./order */ "./node_modules/dagre/lib/order/index.js"); + var position = __webpack_require__(/*! ./position */ "./node_modules/dagre/lib/position/index.js"); + var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + + module.exports = layout; + + function layout(g, opts) { + var time = opts && opts.debugTiming ? util.time : util.notime; + time("layout", function() { + var layoutGraph = + time(" buildLayoutGraph", function() { return buildLayoutGraph(g); }); + time(" runLayout", function() { runLayout(layoutGraph, time); }); + time(" updateInputGraph", function() { updateInputGraph(g, layoutGraph); }); + }); + } + + function runLayout(g, time) { + time(" makeSpaceForEdgeLabels", function() { makeSpaceForEdgeLabels(g); }); + time(" removeSelfEdges", function() { removeSelfEdges(g); }); + time(" acyclic", function() { acyclic.run(g); }); + time(" nestingGraph.run", function() { nestingGraph.run(g); }); + time(" rank", function() { rank(util.asNonCompoundGraph(g)); }); + time(" injectEdgeLabelProxies", function() { injectEdgeLabelProxies(g); }); + time(" removeEmptyRanks", function() { removeEmptyRanks(g); }); + time(" nestingGraph.cleanup", function() { nestingGraph.cleanup(g); }); + time(" normalizeRanks", function() { normalizeRanks(g); }); + time(" assignRankMinMax", function() { assignRankMinMax(g); }); + time(" removeEdgeLabelProxies", function() { removeEdgeLabelProxies(g); }); + time(" normalize.run", function() { normalize.run(g); }); + time(" parentDummyChains", function() { parentDummyChains(g); }); + time(" addBorderSegments", function() { addBorderSegments(g); }); + time(" order", function() { order(g); }); + time(" insertSelfEdges", function() { insertSelfEdges(g); }); + time(" adjustCoordinateSystem", function() { coordinateSystem.adjust(g); }); + time(" position", function() { position(g); }); + time(" positionSelfEdges", function() { positionSelfEdges(g); }); + time(" removeBorderNodes", function() { removeBorderNodes(g); }); + time(" normalize.undo", function() { normalize.undo(g); }); + time(" fixupEdgeLabelCoords", function() { fixupEdgeLabelCoords(g); }); + time(" undoCoordinateSystem", function() { coordinateSystem.undo(g); }); + time(" translateGraph", function() { translateGraph(g); }); + time(" assignNodeIntersects", function() { assignNodeIntersects(g); }); + time(" reversePoints", function() { reversePointsForReversedEdges(g); }); + time(" acyclic.undo", function() { acyclic.undo(g); }); + } + + /* * Copies final layout information from the layout graph back to the input * graph. This process only copies whitelisted attributes from the layout graph * to the input graph, so it serves as a good place to determine what * attributes can influence layout. */ -function updateInputGraph(inputGraph, layoutGraph) { - _.forEach(inputGraph.nodes(), function(v) { - var inputLabel = inputGraph.node(v); - var layoutLabel = layoutGraph.node(v); - - if (inputLabel) { - inputLabel.x = layoutLabel.x; - inputLabel.y = layoutLabel.y; - - if (layoutGraph.children(v).length) { - inputLabel.width = layoutLabel.width; - inputLabel.height = layoutLabel.height; - } - } - }); - - _.forEach(inputGraph.edges(), function(e) { - var inputLabel = inputGraph.edge(e); - var layoutLabel = layoutGraph.edge(e); + function updateInputGraph(inputGraph, layoutGraph) { + _.forEach(inputGraph.nodes(), function(v) { + var inputLabel = inputGraph.node(v); + var layoutLabel = layoutGraph.node(v); + + if (inputLabel) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + + if (layoutGraph.children(v).length) { + inputLabel.width = layoutLabel.width; + inputLabel.height = layoutLabel.height; + } + } + }); + + _.forEach(inputGraph.edges(), function(e) { + var inputLabel = inputGraph.edge(e); + var layoutLabel = layoutGraph.edge(e); + + inputLabel.points = layoutLabel.points; + if (_.has(layoutLabel, "x")) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + } + }); + + inputGraph.graph().width = layoutGraph.graph().width; + inputGraph.graph().height = layoutGraph.graph().height; + } - inputLabel.points = layoutLabel.points; - if (_.has(layoutLabel, "x")) { - inputLabel.x = layoutLabel.x; - inputLabel.y = layoutLabel.y; - } - }); - - inputGraph.graph().width = layoutGraph.graph().width; - inputGraph.graph().height = layoutGraph.graph().height; -} - -var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"]; -var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }; -var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"]; -var nodeNumAttrs = ["width", "height"]; -var nodeDefaults = { width: 0, height: 0 }; -var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"]; -var edgeDefaults = { - minlen: 1, weight: 1, width: 0, height: 0, - labeloffset: 10, labelpos: "r" -}; -var edgeAttrs = ["labelpos"]; - -/* + var graphNumAttrs = ["nodesep", "edgesep", "ranksep", "marginx", "marginy"]; + var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: "tb" }; + var graphAttrs = ["acyclicer", "ranker", "rankdir", "align"]; + var nodeNumAttrs = ["width", "height"]; + var nodeDefaults = { width: 0, height: 0 }; + var edgeNumAttrs = ["minlen", "weight", "width", "height", "labeloffset"]; + var edgeDefaults = { + minlen: 1, weight: 1, width: 0, height: 0, + labeloffset: 10, labelpos: "r" + }; + var edgeAttrs = ["labelpos"]; + + /* * Constructs a new graph from the input graph, which can be used for layout. * This process copies only whitelisted attributes from the input graph to the * layout graph. Thus this function serves as a good place to determine what * attributes can influence layout. */ -function buildLayoutGraph(inputGraph) { - var g = new Graph({ multigraph: true, compound: true }); - var graph = canonicalize(inputGraph.graph()); - - g.setGraph(_.merge({}, - graphDefaults, - selectNumberAttrs(graph, graphNumAttrs), - _.pick(graph, graphAttrs))); - - _.forEach(inputGraph.nodes(), function(v) { - var node = canonicalize(inputGraph.node(v)); - g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults)); - g.setParent(v, inputGraph.parent(v)); - }); - - _.forEach(inputGraph.edges(), function(e) { - var edge = canonicalize(inputGraph.edge(e)); - g.setEdge(e, _.merge({}, - edgeDefaults, - selectNumberAttrs(edge, edgeNumAttrs), - _.pick(edge, edgeAttrs))); - }); - - return g; -} - -/* + function buildLayoutGraph(inputGraph) { + var g = new Graph({ multigraph: true, compound: true }); + var graph = canonicalize(inputGraph.graph()); + + g.setGraph(_.merge({}, + graphDefaults, + selectNumberAttrs(graph, graphNumAttrs), + _.pick(graph, graphAttrs))); + + _.forEach(inputGraph.nodes(), function(v) { + var node = canonicalize(inputGraph.node(v)); + g.setNode(v, _.defaults(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults)); + g.setParent(v, inputGraph.parent(v)); + }); + + _.forEach(inputGraph.edges(), function(e) { + var edge = canonicalize(inputGraph.edge(e)); + g.setEdge(e, _.merge({}, + edgeDefaults, + selectNumberAttrs(edge, edgeNumAttrs), + _.pick(edge, edgeAttrs))); + }); + + return g; + } + + /* * This idea comes from the Gansner paper: to account for edge labels in our * layout we split each rank in half by doubling minlen and halving ranksep. * Then we can place labels at these mid-points between nodes. @@ -768,325 +768,325 @@ function buildLayoutGraph(inputGraph) { * We also add some minimal padding to the width to push the label for the edge * away from the edge itself a bit. */ -function makeSpaceForEdgeLabels(g) { - var graph = g.graph(); - graph.ranksep /= 2; - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - edge.minlen *= 2; - if (edge.labelpos.toLowerCase() !== "c") { - if (graph.rankdir === "TB" || graph.rankdir === "BT") { - edge.width += edge.labeloffset; - } else { - edge.height += edge.labeloffset; - } - } - }); -} + function makeSpaceForEdgeLabels(g) { + var graph = g.graph(); + graph.ranksep /= 2; + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + edge.minlen *= 2; + if (edge.labelpos.toLowerCase() !== "c") { + if (graph.rankdir === "TB" || graph.rankdir === "BT") { + edge.width += edge.labeloffset; + } else { + edge.height += edge.labeloffset; + } + } + }); + } -/* + /* * Creates temporary dummy nodes that capture the rank in which each edge's * label is going to, if it has one of non-zero width and height. We do this * so that we can safely remove empty ranks while preserving balance for the * label's position. */ -function injectEdgeLabelProxies(g) { - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (edge.width && edge.height) { - var v = g.node(e.v); - var w = g.node(e.w); - var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e }; - util.addDummyNode(g, "edge-proxy", label, "_ep"); - } - }); -} - -function assignRankMinMax(g) { - var maxRank = 0; - _.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (node.borderTop) { - node.minRank = g.node(node.borderTop).rank; - node.maxRank = g.node(node.borderBottom).rank; - maxRank = _.max(maxRank, node.maxRank); - } - }); - g.graph().maxRank = maxRank; -} - -function removeEdgeLabelProxies(g) { - _.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (node.dummy === "edge-proxy") { - g.edge(node.e).labelRank = node.rank; - g.removeNode(v); - } - }); -} - -function translateGraph(g) { - var minX = Number.POSITIVE_INFINITY; - var maxX = 0; - var minY = Number.POSITIVE_INFINITY; - var maxY = 0; - var graphLabel = g.graph(); - var marginX = graphLabel.marginx || 0; - var marginY = graphLabel.marginy || 0; - - function getExtremes(attrs) { - var x = attrs.x; - var y = attrs.y; - var w = attrs.width; - var h = attrs.height; - minX = Math.min(minX, x - w / 2); - maxX = Math.max(maxX, x + w / 2); - minY = Math.min(minY, y - h / 2); - maxY = Math.max(maxY, y + h / 2); - } + function injectEdgeLabelProxies(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.width && edge.height) { + var v = g.node(e.v); + var w = g.node(e.w); + var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e }; + util.addDummyNode(g, "edge-proxy", label, "_ep"); + } + }); + } - _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); }); - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (_.has(edge, "x")) { - getExtremes(edge); - } - }); - - minX -= marginX; - minY -= marginY; - - _.forEach(g.nodes(), function(v) { - var node = g.node(v); - node.x -= minX; - node.y -= minY; - }); - - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - _.forEach(edge.points, function(p) { - p.x -= minX; - p.y -= minY; - }); - if (_.has(edge, "x")) { edge.x -= minX; } - if (_.has(edge, "y")) { edge.y -= minY; } - }); - - graphLabel.width = maxX - minX + marginX; - graphLabel.height = maxY - minY + marginY; -} - -function assignNodeIntersects(g) { - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - var nodeV = g.node(e.v); - var nodeW = g.node(e.w); - var p1, p2; - if (!edge.points) { - edge.points = []; - p1 = nodeW; - p2 = nodeV; - } else { - p1 = edge.points[0]; - p2 = edge.points[edge.points.length - 1]; - } - edge.points.unshift(util.intersectRect(nodeV, p1)); - edge.points.push(util.intersectRect(nodeW, p2)); - }); -} - -function fixupEdgeLabelCoords(g) { - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (_.has(edge, "x")) { - if (edge.labelpos === "l" || edge.labelpos === "r") { - edge.width -= edge.labeloffset; - } - switch (edge.labelpos) { - case "l": edge.x -= edge.width / 2 + edge.labeloffset; break; - case "r": edge.x += edge.width / 2 + edge.labeloffset; break; - } - } - }); -} - -function reversePointsForReversedEdges(g) { - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (edge.reversed) { - edge.points.reverse(); - } - }); -} - -function removeBorderNodes(g) { - _.forEach(g.nodes(), function(v) { - if (g.children(v).length) { - var node = g.node(v); - var t = g.node(node.borderTop); - var b = g.node(node.borderBottom); - var l = g.node(_.last(node.borderLeft)); - var r = g.node(_.last(node.borderRight)); - - node.width = Math.abs(r.x - l.x); - node.height = Math.abs(b.y - t.y); - node.x = l.x + node.width / 2; - node.y = t.y + node.height / 2; - } - }); + function assignRankMinMax(g) { + var maxRank = 0; + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.borderTop) { + node.minRank = g.node(node.borderTop).rank; + node.maxRank = g.node(node.borderBottom).rank; + maxRank = _.max(maxRank, node.maxRank); + } + }); + g.graph().maxRank = maxRank; + } - _.forEach(g.nodes(), function(v) { - if (g.node(v).dummy === "border") { - g.removeNode(v); - } - }); -} - -function removeSelfEdges(g) { - _.forEach(g.edges(), function(e) { - if (e.v === e.w) { - var node = g.node(e.v); - if (!node.selfEdges) { - node.selfEdges = []; - } - node.selfEdges.push({ e: e, label: g.edge(e) }); - g.removeEdge(e); - } - }); -} - -function insertSelfEdges(g) { - var layers = util.buildLayerMatrix(g); - _.forEach(layers, function(layer) { - var orderShift = 0; - _.forEach(layer, function(v, i) { - var node = g.node(v); - node.order = i + orderShift; - _.forEach(node.selfEdges, function(selfEdge) { - util.addDummyNode(g, "selfedge", { - width: selfEdge.label.width, - height: selfEdge.label.height, - rank: node.rank, - order: i + (++orderShift), - e: selfEdge.e, - label: selfEdge.label - }, "_se"); - }); - delete node.selfEdges; - }); - }); -} - -function positionSelfEdges(g) { - _.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (node.dummy === "selfedge") { - var selfNode = g.node(node.e.v); - var x = selfNode.x + selfNode.width / 2; - var y = selfNode.y; - var dx = node.x - x; - var dy = selfNode.height / 2; - g.setEdge(node.e, node.label); - g.removeNode(v); - node.label.points = [ - { x: x + 2 * dx / 3, y: y - dy }, - { x: x + 5 * dx / 6, y: y - dy }, - { x: x + dx , y: y }, - { x: x + 5 * dx / 6, y: y + dy }, - { x: x + 2 * dx / 3, y: y + dy } - ]; - node.label.x = node.x; - node.label.y = node.y; - } - }); -} + function removeEdgeLabelProxies(g) { + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.dummy === "edge-proxy") { + g.edge(node.e).labelRank = node.rank; + g.removeNode(v); + } + }); + } + + function translateGraph(g) { + var minX = Number.POSITIVE_INFINITY; + var maxX = 0; + var minY = Number.POSITIVE_INFINITY; + var maxY = 0; + var graphLabel = g.graph(); + var marginX = graphLabel.marginx || 0; + var marginY = graphLabel.marginy || 0; + + function getExtremes(attrs) { + var x = attrs.x; + var y = attrs.y; + var w = attrs.width; + var h = attrs.height; + minX = Math.min(minX, x - w / 2); + maxX = Math.max(maxX, x + w / 2); + minY = Math.min(minY, y - h / 2); + maxY = Math.max(maxY, y + h / 2); + } + + _.forEach(g.nodes(), function(v) { getExtremes(g.node(v)); }); + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (_.has(edge, "x")) { + getExtremes(edge); + } + }); + + minX -= marginX; + minY -= marginY; + + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + node.x -= minX; + node.y -= minY; + }); + + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + _.forEach(edge.points, function(p) { + p.x -= minX; + p.y -= minY; + }); + if (_.has(edge, "x")) { edge.x -= minX; } + if (_.has(edge, "y")) { edge.y -= minY; } + }); + + graphLabel.width = maxX - minX + marginX; + graphLabel.height = maxY - minY + marginY; + } + + function assignNodeIntersects(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + var nodeV = g.node(e.v); + var nodeW = g.node(e.w); + var p1, p2; + if (!edge.points) { + edge.points = []; + p1 = nodeW; + p2 = nodeV; + } else { + p1 = edge.points[0]; + p2 = edge.points[edge.points.length - 1]; + } + edge.points.unshift(util.intersectRect(nodeV, p1)); + edge.points.push(util.intersectRect(nodeW, p2)); + }); + } + + function fixupEdgeLabelCoords(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (_.has(edge, "x")) { + if (edge.labelpos === "l" || edge.labelpos === "r") { + edge.width -= edge.labeloffset; + } + switch (edge.labelpos) { + case "l": edge.x -= edge.width / 2 + edge.labeloffset; break; + case "r": edge.x += edge.width / 2 + edge.labeloffset; break; + } + } + }); + } + + function reversePointsForReversedEdges(g) { + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.reversed) { + edge.points.reverse(); + } + }); + } + + function removeBorderNodes(g) { + _.forEach(g.nodes(), function(v) { + if (g.children(v).length) { + var node = g.node(v); + var t = g.node(node.borderTop); + var b = g.node(node.borderBottom); + var l = g.node(_.last(node.borderLeft)); + var r = g.node(_.last(node.borderRight)); + + node.width = Math.abs(r.x - l.x); + node.height = Math.abs(b.y - t.y); + node.x = l.x + node.width / 2; + node.y = t.y + node.height / 2; + } + }); + + _.forEach(g.nodes(), function(v) { + if (g.node(v).dummy === "border") { + g.removeNode(v); + } + }); + } + + function removeSelfEdges(g) { + _.forEach(g.edges(), function(e) { + if (e.v === e.w) { + var node = g.node(e.v); + if (!node.selfEdges) { + node.selfEdges = []; + } + node.selfEdges.push({ e: e, label: g.edge(e) }); + g.removeEdge(e); + } + }); + } -function selectNumberAttrs(obj, attrs) { - return _.mapValues(_.pick(obj, attrs), Number); -} + function insertSelfEdges(g) { + var layers = util.buildLayerMatrix(g); + _.forEach(layers, function(layer) { + var orderShift = 0; + _.forEach(layer, function(v, i) { + var node = g.node(v); + node.order = i + orderShift; + _.forEach(node.selfEdges, function(selfEdge) { + util.addDummyNode(g, "selfedge", { + width: selfEdge.label.width, + height: selfEdge.label.height, + rank: node.rank, + order: i + (++orderShift), + e: selfEdge.e, + label: selfEdge.label + }, "_se"); + }); + delete node.selfEdges; + }); + }); + } + + function positionSelfEdges(g) { + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (node.dummy === "selfedge") { + var selfNode = g.node(node.e.v); + var x = selfNode.x + selfNode.width / 2; + var y = selfNode.y; + var dx = node.x - x; + var dy = selfNode.height / 2; + g.setEdge(node.e, node.label); + g.removeNode(v); + node.label.points = [ + { x: x + 2 * dx / 3, y: y - dy }, + { x: x + 5 * dx / 6, y: y - dy }, + { x: x + dx , y: y }, + { x: x + 5 * dx / 6, y: y + dy }, + { x: x + 2 * dx / 3, y: y + dy } + ]; + node.label.x = node.x; + node.label.y = node.y; + } + }); + } + + function selectNumberAttrs(obj, attrs) { + return _.mapValues(_.pick(obj, attrs), Number); + } -function canonicalize(attrs) { - var newAttrs = {}; - _.forEach(attrs, function(v, k) { - newAttrs[k.toLowerCase()] = v; - }); - return newAttrs; -} + function canonicalize(attrs) { + var newAttrs = {}; + _.forEach(attrs, function(v, k) { + newAttrs[k.toLowerCase()] = v; + }); + return newAttrs; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/lodash.js": -/*!******************************************!*\ + /***/ "./node_modules/dagre/lib/lodash.js": + /*!******************************************!*\ !*** ./node_modules/dagre/lib/lodash.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* global window */ - -var lodash; - -if (true) { - try { - lodash = { - cloneDeep: __webpack_require__(/*! lodash/cloneDeep */ "./node_modules/lodash/cloneDeep.js"), - constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"), - defaults: __webpack_require__(/*! lodash/defaults */ "./node_modules/lodash/defaults.js"), - each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"), - filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"), - find: __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js"), - flatten: __webpack_require__(/*! lodash/flatten */ "./node_modules/lodash/flatten.js"), - forEach: __webpack_require__(/*! lodash/forEach */ "./node_modules/lodash/forEach.js"), - forIn: __webpack_require__(/*! lodash/forIn */ "./node_modules/lodash/forIn.js"), - has: __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"), - isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"), - last: __webpack_require__(/*! lodash/last */ "./node_modules/lodash/last.js"), - map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"), - mapValues: __webpack_require__(/*! lodash/mapValues */ "./node_modules/lodash/mapValues.js"), - max: __webpack_require__(/*! lodash/max */ "./node_modules/lodash/max.js"), - merge: __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js"), - min: __webpack_require__(/*! lodash/min */ "./node_modules/lodash/min.js"), - minBy: __webpack_require__(/*! lodash/minBy */ "./node_modules/lodash/minBy.js"), - now: __webpack_require__(/*! lodash/now */ "./node_modules/lodash/now.js"), - pick: __webpack_require__(/*! lodash/pick */ "./node_modules/lodash/pick.js"), - range: __webpack_require__(/*! lodash/range */ "./node_modules/lodash/range.js"), - reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"), - sortBy: __webpack_require__(/*! lodash/sortBy */ "./node_modules/lodash/sortBy.js"), - uniqueId: __webpack_require__(/*! lodash/uniqueId */ "./node_modules/lodash/uniqueId.js"), - values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js"), - zipObject: __webpack_require__(/*! lodash/zipObject */ "./node_modules/lodash/zipObject.js"), - }; - } catch (e) { - // continue regardless of error - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + /* global window */ + + var lodash; + + if (true) { + try { + lodash = { + cloneDeep: __webpack_require__(/*! lodash/cloneDeep */ "./node_modules/lodash/cloneDeep.js"), + constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"), + defaults: __webpack_require__(/*! lodash/defaults */ "./node_modules/lodash/defaults.js"), + each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"), + filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"), + find: __webpack_require__(/*! lodash/find */ "./node_modules/lodash/find.js"), + flatten: __webpack_require__(/*! lodash/flatten */ "./node_modules/lodash/flatten.js"), + forEach: __webpack_require__(/*! lodash/forEach */ "./node_modules/lodash/forEach.js"), + forIn: __webpack_require__(/*! lodash/forIn */ "./node_modules/lodash/forIn.js"), + has: __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"), + isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"), + last: __webpack_require__(/*! lodash/last */ "./node_modules/lodash/last.js"), + map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"), + mapValues: __webpack_require__(/*! lodash/mapValues */ "./node_modules/lodash/mapValues.js"), + max: __webpack_require__(/*! lodash/max */ "./node_modules/lodash/max.js"), + merge: __webpack_require__(/*! lodash/merge */ "./node_modules/lodash/merge.js"), + min: __webpack_require__(/*! lodash/min */ "./node_modules/lodash/min.js"), + minBy: __webpack_require__(/*! lodash/minBy */ "./node_modules/lodash/minBy.js"), + now: __webpack_require__(/*! lodash/now */ "./node_modules/lodash/now.js"), + pick: __webpack_require__(/*! lodash/pick */ "./node_modules/lodash/pick.js"), + range: __webpack_require__(/*! lodash/range */ "./node_modules/lodash/range.js"), + reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"), + sortBy: __webpack_require__(/*! lodash/sortBy */ "./node_modules/lodash/sortBy.js"), + uniqueId: __webpack_require__(/*! lodash/uniqueId */ "./node_modules/lodash/uniqueId.js"), + values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js"), + zipObject: __webpack_require__(/*! lodash/zipObject */ "./node_modules/lodash/zipObject.js"), + }; + } catch (e) { + // continue regardless of error + } + } -if (!lodash) { - lodash = window._; -} + if (!lodash) { + lodash = window._; + } -module.exports = lodash; + module.exports = lodash; -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/nesting-graph.js": -/*!*************************************************!*\ + /***/ "./node_modules/dagre/lib/nesting-graph.js": + /*!*************************************************!*\ !*** ./node_modules/dagre/lib/nesting-graph.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); -module.exports = { - run: run, - cleanup: cleanup -}; + module.exports = { + run: run, + cleanup: cleanup + }; -/* + /* * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs, * adds appropriate edges to ensure that all cluster nodes are placed between * these boundries, and ensures that the graph is connected. @@ -1109,130 +1109,130 @@ module.exports = { * The nesting graph idea comes from Sander, "Layout of Compound Directed * Graphs." */ -function run(g) { - var root = util.addDummyNode(g, "root", {}, "_root"); - var depths = treeDepths(g); - var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array - var nodeSep = 2 * height + 1; - - g.graph().nestingRoot = root; - - // Multiply minlen by nodeSep to align nodes on non-border ranks. - _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; }); - - // Calculate a weight that is sufficient to keep subgraphs vertically compact - var weight = sumWeights(g) + 1; - - // Create border nodes and link them up - _.forEach(g.children(), function(child) { - dfs(g, root, nodeSep, weight, height, depths, child); - }); - - // Save the multiplier for node layers for later removal of empty border - // layers. - g.graph().nodeRankFactor = nodeSep; -} - -function dfs(g, root, nodeSep, weight, height, depths, v) { - var children = g.children(v); - if (!children.length) { - if (v !== root) { - g.setEdge(root, v, { weight: 0, minlen: nodeSep }); - } - return; - } + function run(g) { + var root = util.addDummyNode(g, "root", {}, "_root"); + var depths = treeDepths(g); + var height = _.max(_.values(depths)) - 1; // Note: depths is an Object not an array + var nodeSep = 2 * height + 1; - var top = util.addBorderNode(g, "_bt"); - var bottom = util.addBorderNode(g, "_bb"); - var label = g.node(v); - - g.setParent(top, v); - label.borderTop = top; - g.setParent(bottom, v); - label.borderBottom = bottom; - - _.forEach(children, function(child) { - dfs(g, root, nodeSep, weight, height, depths, child); - - var childNode = g.node(child); - var childTop = childNode.borderTop ? childNode.borderTop : child; - var childBottom = childNode.borderBottom ? childNode.borderBottom : child; - var thisWeight = childNode.borderTop ? weight : 2 * weight; - var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1; - - g.setEdge(top, childTop, { - weight: thisWeight, - minlen: minlen, - nestingEdge: true - }); - - g.setEdge(childBottom, bottom, { - weight: thisWeight, - minlen: minlen, - nestingEdge: true - }); - }); - - if (!g.parent(v)) { - g.setEdge(root, top, { weight: 0, minlen: height + depths[v] }); - } -} - -function treeDepths(g) { - var depths = {}; - function dfs(v, depth) { - var children = g.children(v); - if (children && children.length) { - _.forEach(children, function(child) { - dfs(child, depth + 1); - }); - } - depths[v] = depth; - } - _.forEach(g.children(), function(v) { dfs(v, 1); }); - return depths; -} - -function sumWeights(g) { - return _.reduce(g.edges(), function(acc, e) { - return acc + g.edge(e).weight; - }, 0); -} - -function cleanup(g) { - var graphLabel = g.graph(); - g.removeNode(graphLabel.nestingRoot); - delete graphLabel.nestingRoot; - _.forEach(g.edges(), function(e) { - var edge = g.edge(e); - if (edge.nestingEdge) { - g.removeEdge(e); - } - }); -} + g.graph().nestingRoot = root; + // Multiply minlen by nodeSep to align nodes on non-border ranks. + _.forEach(g.edges(), function(e) { g.edge(e).minlen *= nodeSep; }); -/***/ }), + // Calculate a weight that is sufficient to keep subgraphs vertically compact + var weight = sumWeights(g) + 1; -/***/ "./node_modules/dagre/lib/normalize.js": -/*!*********************************************!*\ + // Create border nodes and link them up + _.forEach(g.children(), function(child) { + dfs(g, root, nodeSep, weight, height, depths, child); + }); + + // Save the multiplier for node layers for later removal of empty border + // layers. + g.graph().nodeRankFactor = nodeSep; + } + + function dfs(g, root, nodeSep, weight, height, depths, v) { + var children = g.children(v); + if (!children.length) { + if (v !== root) { + g.setEdge(root, v, { weight: 0, minlen: nodeSep }); + } + return; + } + + var top = util.addBorderNode(g, "_bt"); + var bottom = util.addBorderNode(g, "_bb"); + var label = g.node(v); + + g.setParent(top, v); + label.borderTop = top; + g.setParent(bottom, v); + label.borderBottom = bottom; + + _.forEach(children, function(child) { + dfs(g, root, nodeSep, weight, height, depths, child); + + var childNode = g.node(child); + var childTop = childNode.borderTop ? childNode.borderTop : child; + var childBottom = childNode.borderBottom ? childNode.borderBottom : child; + var thisWeight = childNode.borderTop ? weight : 2 * weight; + var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1; + + g.setEdge(top, childTop, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true + }); + + g.setEdge(childBottom, bottom, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true + }); + }); + + if (!g.parent(v)) { + g.setEdge(root, top, { weight: 0, minlen: height + depths[v] }); + } + } + + function treeDepths(g) { + var depths = {}; + function dfs(v, depth) { + var children = g.children(v); + if (children && children.length) { + _.forEach(children, function(child) { + dfs(child, depth + 1); + }); + } + depths[v] = depth; + } + _.forEach(g.children(), function(v) { dfs(v, 1); }); + return depths; + } + + function sumWeights(g) { + return _.reduce(g.edges(), function(acc, e) { + return acc + g.edge(e).weight; + }, 0); + } + + function cleanup(g) { + var graphLabel = g.graph(); + g.removeNode(graphLabel.nestingRoot); + delete graphLabel.nestingRoot; + _.forEach(g.edges(), function(e) { + var edge = g.edge(e); + if (edge.nestingEdge) { + g.removeEdge(e); + } + }); + } + + + /***/ }), + + /***/ "./node_modules/dagre/lib/normalize.js": + /*!*********************************************!*\ !*** ./node_modules/dagre/lib/normalize.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var util = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/util.js"); -module.exports = { - run: run, - undo: undo -}; + module.exports = { + run: run, + undo: undo + }; -/* + /* * Breaks any long edges in the graph into short segments that span 1 layer * each. This operation is undoable with the denormalize function. * @@ -1248,111 +1248,111 @@ module.exports = { * 3. The graph is augmented with a "dummyChains" attribute which contains * the first dummy in each chain of dummy nodes produced. */ -function run(g) { - g.graph().dummyChains = []; - _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); }); -} - -function normalizeEdge(g, e) { - var v = e.v; - var vRank = g.node(v).rank; - var w = e.w; - var wRank = g.node(w).rank; - var name = e.name; - var edgeLabel = g.edge(e); - var labelRank = edgeLabel.labelRank; - - if (wRank === vRank + 1) return; - - g.removeEdge(e); - - var dummy, attrs, i; - for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) { - edgeLabel.points = []; - attrs = { - width: 0, height: 0, - edgeLabel: edgeLabel, edgeObj: e, - rank: vRank - }; - dummy = util.addDummyNode(g, "edge", attrs, "_d"); - if (vRank === labelRank) { - attrs.width = edgeLabel.width; - attrs.height = edgeLabel.height; - attrs.dummy = "edge-label"; - attrs.labelpos = edgeLabel.labelpos; - } - g.setEdge(v, dummy, { weight: edgeLabel.weight }, name); - if (i === 0) { - g.graph().dummyChains.push(dummy); - } - v = dummy; - } + function run(g) { + g.graph().dummyChains = []; + _.forEach(g.edges(), function(edge) { normalizeEdge(g, edge); }); + } - g.setEdge(v, w, { weight: edgeLabel.weight }, name); -} - -function undo(g) { - _.forEach(g.graph().dummyChains, function(v) { - var node = g.node(v); - var origLabel = node.edgeLabel; - var w; - g.setEdge(node.edgeObj, origLabel); - while (node.dummy) { - w = g.successors(v)[0]; - g.removeNode(v); - origLabel.points.push({ x: node.x, y: node.y }); - if (node.dummy === "edge-label") { - origLabel.x = node.x; - origLabel.y = node.y; - origLabel.width = node.width; - origLabel.height = node.height; - } - v = w; - node = g.node(v); - } - }); -} + function normalizeEdge(g, e) { + var v = e.v; + var vRank = g.node(v).rank; + var w = e.w; + var wRank = g.node(w).rank; + var name = e.name; + var edgeLabel = g.edge(e); + var labelRank = edgeLabel.labelRank; + + if (wRank === vRank + 1) return; + + g.removeEdge(e); + + var dummy, attrs, i; + for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) { + edgeLabel.points = []; + attrs = { + width: 0, height: 0, + edgeLabel: edgeLabel, edgeObj: e, + rank: vRank + }; + dummy = util.addDummyNode(g, "edge", attrs, "_d"); + if (vRank === labelRank) { + attrs.width = edgeLabel.width; + attrs.height = edgeLabel.height; + attrs.dummy = "edge-label"; + attrs.labelpos = edgeLabel.labelpos; + } + g.setEdge(v, dummy, { weight: edgeLabel.weight }, name); + if (i === 0) { + g.graph().dummyChains.push(dummy); + } + v = dummy; + } + + g.setEdge(v, w, { weight: edgeLabel.weight }, name); + } + + function undo(g) { + _.forEach(g.graph().dummyChains, function(v) { + var node = g.node(v); + var origLabel = node.edgeLabel; + var w; + g.setEdge(node.edgeObj, origLabel); + while (node.dummy) { + w = g.successors(v)[0]; + g.removeNode(v); + origLabel.points.push({ x: node.x, y: node.y }); + if (node.dummy === "edge-label") { + origLabel.x = node.x; + origLabel.y = node.y; + origLabel.width = node.width; + origLabel.height = node.height; + } + v = w; + node = g.node(v); + } + }); + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/add-subgraph-constraints.js": -/*!******************************************************************!*\ + /***/ "./node_modules/dagre/lib/order/add-subgraph-constraints.js": + /*!******************************************************************!*\ !*** ./node_modules/dagre/lib/order/add-subgraph-constraints.js ***! \******************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); - -module.exports = addSubgraphConstraints; - -function addSubgraphConstraints(g, cg, vs) { - var prev = {}, - rootPrev; - - _.forEach(vs, function(v) { - var child = g.parent(v), - parent, - prevChild; - while (child) { - parent = g.parent(child); - if (parent) { - prevChild = prev[parent]; - prev[parent] = child; - } else { - prevChild = rootPrev; - rootPrev = child; - } - if (prevChild && prevChild !== child) { - cg.setEdge(prevChild, child); - return; - } - child = parent; - } - }); - - /* + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + + module.exports = addSubgraphConstraints; + + function addSubgraphConstraints(g, cg, vs) { + var prev = {}, + rootPrev; + + _.forEach(vs, function(v) { + var child = g.parent(v), + parent, + prevChild; + while (child) { + parent = g.parent(child); + if (parent) { + prevChild = prev[parent]; + prev[parent] = child; + } else { + prevChild = rootPrev; + rootPrev = child; + } + if (prevChild && prevChild !== child) { + cg.setEdge(prevChild, child); + return; + } + child = parent; + } + }); + + /* function dfs(v) { var children = v ? g.children(v) : g.children(); if (children.length) { @@ -1375,63 +1375,63 @@ function addSubgraphConstraints(g, cg, vs) { } dfs(undefined); */ -} + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/barycenter.js": -/*!****************************************************!*\ + /***/ "./node_modules/dagre/lib/order/barycenter.js": + /*!****************************************************!*\ !*** ./node_modules/dagre/lib/order/barycenter.js ***! \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); - -module.exports = barycenter; - -function barycenter(g, movable) { - return _.map(movable, function(v) { - var inV = g.inEdges(v); - if (!inV.length) { - return { v: v }; - } else { - var result = _.reduce(inV, function(acc, e) { - var edge = g.edge(e), - nodeU = g.node(e.v); - return { - sum: acc.sum + (edge.weight * nodeU.order), - weight: acc.weight + edge.weight - }; - }, { sum: 0, weight: 0 }); - - return { - v: v, - barycenter: result.sum / result.weight, - weight: result.weight - }; - } - }); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + + module.exports = barycenter; + + function barycenter(g, movable) { + return _.map(movable, function(v) { + var inV = g.inEdges(v); + if (!inV.length) { + return { v: v }; + } else { + var result = _.reduce(inV, function(acc, e) { + var edge = g.edge(e), + nodeU = g.node(e.v); + return { + sum: acc.sum + (edge.weight * nodeU.order), + weight: acc.weight + edge.weight + }; + }, { sum: 0, weight: 0 }); + + return { + v: v, + barycenter: result.sum / result.weight, + weight: result.weight + }; + } + }); + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/build-layer-graph.js": -/*!***********************************************************!*\ + /***/ "./node_modules/dagre/lib/order/build-layer-graph.js": + /*!***********************************************************!*\ !*** ./node_modules/dagre/lib/order/build-layer-graph.js ***! \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; -module.exports = buildLayerGraph; + module.exports = buildLayerGraph; -/* + /* * Constructs a graph that can be used to sort a layer of nodes. The graph will * contain all base and subgraph nodes from the request layer in their original * hierarchy and any edges that are incident on these nodes and are of the type @@ -1461,63 +1461,63 @@ module.exports = buildLayerGraph; * 5. The weights for copied edges are aggregated as need, since the output * graph is not a multi-graph. */ -function buildLayerGraph(g, rank, relationship) { - var root = createRootNode(g), - result = new Graph({ compound: true }).setGraph({ root: root }) - .setDefaultNodeLabel(function(v) { return g.node(v); }); - - _.forEach(g.nodes(), function(v) { - var node = g.node(v), - parent = g.parent(v); - - if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) { - result.setNode(v); - result.setParent(v, parent || root); - - // This assumes we have only short edges! - _.forEach(g[relationship](v), function(e) { - var u = e.v === v ? e.w : e.v, - edge = result.edge(u, v), - weight = !_.isUndefined(edge) ? edge.weight : 0; - result.setEdge(u, v, { weight: g.edge(e).weight + weight }); - }); - - if (_.has(node, "minRank")) { - result.setNode(v, { - borderLeft: node.borderLeft[rank], - borderRight: node.borderRight[rank] - }); - } - } - }); - - return result; -} + function buildLayerGraph(g, rank, relationship) { + var root = createRootNode(g), + result = new Graph({ compound: true }).setGraph({ root: root }) + .setDefaultNodeLabel(function(v) { return g.node(v); }); + + _.forEach(g.nodes(), function(v) { + var node = g.node(v), + parent = g.parent(v); + + if (node.rank === rank || node.minRank <= rank && rank <= node.maxRank) { + result.setNode(v); + result.setParent(v, parent || root); + + // This assumes we have only short edges! + _.forEach(g[relationship](v), function(e) { + var u = e.v === v ? e.w : e.v, + edge = result.edge(u, v), + weight = !_.isUndefined(edge) ? edge.weight : 0; + result.setEdge(u, v, { weight: g.edge(e).weight + weight }); + }); + + if (_.has(node, "minRank")) { + result.setNode(v, { + borderLeft: node.borderLeft[rank], + borderRight: node.borderRight[rank] + }); + } + } + }); + + return result; + } -function createRootNode(g) { - var v; - while (g.hasNode((v = _.uniqueId("_root")))); - return v; -} + function createRootNode(g) { + var v; + while (g.hasNode((v = _.uniqueId("_root")))); + return v; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/cross-count.js": -/*!*****************************************************!*\ + /***/ "./node_modules/dagre/lib/order/cross-count.js": + /*!*****************************************************!*\ !*** ./node_modules/dagre/lib/order/cross-count.js ***! \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -module.exports = crossCount; + module.exports = crossCount; -/* + /* * A function that takes a layering (an array of layers, each with an array of * ordererd nodes) and a graph and returns a weighted crossing count. * @@ -1533,77 +1533,77 @@ module.exports = crossCount; * * This algorithm is derived from Barth, et al., "Bilayer Cross Counting." */ -function crossCount(g, layering) { - var cc = 0; - for (var i = 1; i < layering.length; ++i) { - cc += twoLayerCrossCount(g, layering[i-1], layering[i]); - } - return cc; -} - -function twoLayerCrossCount(g, northLayer, southLayer) { - // Sort all of the edges between the north and south layers by their position - // in the north layer and then the south. Map these edges to the position of - // their head in the south layer. - var southPos = _.zipObject(southLayer, - _.map(southLayer, function (v, i) { return i; })); - var southEntries = _.flatten(_.map(northLayer, function(v) { - return _.sortBy(_.map(g.outEdges(v), function(e) { - return { pos: southPos[e.w], weight: g.edge(e).weight }; - }), "pos"); - }), true); - - // Build the accumulator tree - var firstIndex = 1; - while (firstIndex < southLayer.length) firstIndex <<= 1; - var treeSize = 2 * firstIndex - 1; - firstIndex -= 1; - var tree = _.map(new Array(treeSize), function() { return 0; }); - - // Calculate the weighted crossings - var cc = 0; - _.forEach(southEntries.forEach(function(entry) { - var index = entry.pos + firstIndex; - tree[index] += entry.weight; - var weightSum = 0; - while (index > 0) { - if (index % 2) { - weightSum += tree[index + 1]; - } - index = (index - 1) >> 1; - tree[index] += entry.weight; - } - cc += entry.weight * weightSum; - })); + function crossCount(g, layering) { + var cc = 0; + for (var i = 1; i < layering.length; ++i) { + cc += twoLayerCrossCount(g, layering[i-1], layering[i]); + } + return cc; + } - return cc; -} + function twoLayerCrossCount(g, northLayer, southLayer) { + // Sort all of the edges between the north and south layers by their position + // in the north layer and then the south. Map these edges to the position of + // their head in the south layer. + var southPos = _.zipObject(southLayer, + _.map(southLayer, function (v, i) { return i; })); + var southEntries = _.flatten(_.map(northLayer, function(v) { + return _.sortBy(_.map(g.outEdges(v), function(e) { + return { pos: southPos[e.w], weight: g.edge(e).weight }; + }), "pos"); + }), true); + + // Build the accumulator tree + var firstIndex = 1; + while (firstIndex < southLayer.length) firstIndex <<= 1; + var treeSize = 2 * firstIndex - 1; + firstIndex -= 1; + var tree = _.map(new Array(treeSize), function() { return 0; }); + + // Calculate the weighted crossings + var cc = 0; + _.forEach(southEntries.forEach(function(entry) { + var index = entry.pos + firstIndex; + tree[index] += entry.weight; + var weightSum = 0; + while (index > 0) { + if (index % 2) { + weightSum += tree[index + 1]; + } + index = (index - 1) >> 1; + tree[index] += entry.weight; + } + cc += entry.weight * weightSum; + })); + + return cc; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/index.js": -/*!***********************************************!*\ + /***/ "./node_modules/dagre/lib/order/index.js": + /*!***********************************************!*\ !*** ./node_modules/dagre/lib/order/index.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var initOrder = __webpack_require__(/*! ./init-order */ "./node_modules/dagre/lib/order/init-order.js"); -var crossCount = __webpack_require__(/*! ./cross-count */ "./node_modules/dagre/lib/order/cross-count.js"); -var sortSubgraph = __webpack_require__(/*! ./sort-subgraph */ "./node_modules/dagre/lib/order/sort-subgraph.js"); -var buildLayerGraph = __webpack_require__(/*! ./build-layer-graph */ "./node_modules/dagre/lib/order/build-layer-graph.js"); -var addSubgraphConstraints = __webpack_require__(/*! ./add-subgraph-constraints */ "./node_modules/dagre/lib/order/add-subgraph-constraints.js"); -var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; -var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var initOrder = __webpack_require__(/*! ./init-order */ "./node_modules/dagre/lib/order/init-order.js"); + var crossCount = __webpack_require__(/*! ./cross-count */ "./node_modules/dagre/lib/order/cross-count.js"); + var sortSubgraph = __webpack_require__(/*! ./sort-subgraph */ "./node_modules/dagre/lib/order/sort-subgraph.js"); + var buildLayerGraph = __webpack_require__(/*! ./build-layer-graph */ "./node_modules/dagre/lib/order/build-layer-graph.js"); + var addSubgraphConstraints = __webpack_require__(/*! ./add-subgraph-constraints */ "./node_modules/dagre/lib/order/add-subgraph-constraints.js"); + var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); -module.exports = order; + module.exports = order; -/* + /* * Applies heuristics to minimize edge crossings in the graph and sets the best * order solution as an order attribute on each node. * @@ -1618,76 +1618,76 @@ module.exports = order; * 1. Graph nodes will have an "order" attribute based on the results of the * algorithm. */ -function order(g) { - var maxRank = util.maxRank(g), - downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), "inEdges"), - upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), "outEdges"); - - var layering = initOrder(g); - assignOrder(g, layering); - - var bestCC = Number.POSITIVE_INFINITY, - best; - - for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) { - sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2); - - layering = util.buildLayerMatrix(g); - var cc = crossCount(g, layering); - if (cc < bestCC) { - lastBest = 0; - best = _.cloneDeep(layering); - bestCC = cc; - } - } + function order(g) { + var maxRank = util.maxRank(g), + downLayerGraphs = buildLayerGraphs(g, _.range(1, maxRank + 1), "inEdges"), + upLayerGraphs = buildLayerGraphs(g, _.range(maxRank - 1, -1, -1), "outEdges"); + + var layering = initOrder(g); + assignOrder(g, layering); + + var bestCC = Number.POSITIVE_INFINITY, + best; + + for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) { + sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2); + + layering = util.buildLayerMatrix(g); + var cc = crossCount(g, layering); + if (cc < bestCC) { + lastBest = 0; + best = _.cloneDeep(layering); + bestCC = cc; + } + } + + assignOrder(g, best); + } + + function buildLayerGraphs(g, ranks, relationship) { + return _.map(ranks, function(rank) { + return buildLayerGraph(g, rank, relationship); + }); + } + + function sweepLayerGraphs(layerGraphs, biasRight) { + var cg = new Graph(); + _.forEach(layerGraphs, function(lg) { + var root = lg.graph().root; + var sorted = sortSubgraph(lg, root, cg, biasRight); + _.forEach(sorted.vs, function(v, i) { + lg.node(v).order = i; + }); + addSubgraphConstraints(lg, cg, sorted.vs); + }); + } - assignOrder(g, best); -} - -function buildLayerGraphs(g, ranks, relationship) { - return _.map(ranks, function(rank) { - return buildLayerGraph(g, rank, relationship); - }); -} - -function sweepLayerGraphs(layerGraphs, biasRight) { - var cg = new Graph(); - _.forEach(layerGraphs, function(lg) { - var root = lg.graph().root; - var sorted = sortSubgraph(lg, root, cg, biasRight); - _.forEach(sorted.vs, function(v, i) { - lg.node(v).order = i; - }); - addSubgraphConstraints(lg, cg, sorted.vs); - }); -} - -function assignOrder(g, layering) { - _.forEach(layering, function(layer) { - _.forEach(layer, function(v, i) { - g.node(v).order = i; - }); - }); -} - - -/***/ }), - -/***/ "./node_modules/dagre/lib/order/init-order.js": -/*!****************************************************!*\ + function assignOrder(g, layering) { + _.forEach(layering, function(layer) { + _.forEach(layer, function(v, i) { + g.node(v).order = i; + }); + }); + } + + + /***/ }), + + /***/ "./node_modules/dagre/lib/order/init-order.js": + /*!****************************************************!*\ !*** ./node_modules/dagre/lib/order/init-order.js ***! \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -module.exports = initOrder; + module.exports = initOrder; -/* + /* * Assigns an initial order value for each node by performing a DFS search * starting from nodes in the first rank. Nodes are assigned an order in their * rank as they are first visited. @@ -1698,46 +1698,46 @@ module.exports = initOrder; * Returns a layering matrix with an array per layer and each layer sorted by * the order of its nodes. */ -function initOrder(g) { - var visited = {}; - var simpleNodes = _.filter(g.nodes(), function(v) { - return !g.children(v).length; - }); - var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; })); - var layers = _.map(_.range(maxRank + 1), function() { return []; }); - - function dfs(v) { - if (_.has(visited, v)) return; - visited[v] = true; - var node = g.node(v); - layers[node.rank].push(v); - _.forEach(g.successors(v), dfs); - } - - var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; }); - _.forEach(orderedVs, dfs); - - return layers; -} + function initOrder(g) { + var visited = {}; + var simpleNodes = _.filter(g.nodes(), function(v) { + return !g.children(v).length; + }); + var maxRank = _.max(_.map(simpleNodes, function(v) { return g.node(v).rank; })); + var layers = _.map(_.range(maxRank + 1), function() { return []; }); + + function dfs(v) { + if (_.has(visited, v)) return; + visited[v] = true; + var node = g.node(v); + layers[node.rank].push(v); + _.forEach(g.successors(v), dfs); + } + + var orderedVs = _.sortBy(simpleNodes, function(v) { return g.node(v).rank; }); + _.forEach(orderedVs, dfs); + + return layers; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/resolve-conflicts.js": -/*!***********************************************************!*\ + /***/ "./node_modules/dagre/lib/order/resolve-conflicts.js": + /*!***********************************************************!*\ !*** ./node_modules/dagre/lib/order/resolve-conflicts.js ***! \***********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -module.exports = resolveConflicts; + module.exports = resolveConflicts; -/* + /* * Given a list of entries of the form {v, barycenter, weight} and a * constraint graph this function will resolve any conflicts between the * constraint graph and the barycenters for the entries. If the barycenters for @@ -1762,386 +1762,386 @@ module.exports = resolveConflicts; * graph. The property `i` is the lowest original index of any of the * elements in `vs`. */ -function resolveConflicts(entries, cg) { - var mappedEntries = {}; - _.forEach(entries, function(entry, i) { - var tmp = mappedEntries[entry.v] = { - indegree: 0, - "in": [], - out: [], - vs: [entry.v], - i: i - }; - if (!_.isUndefined(entry.barycenter)) { - tmp.barycenter = entry.barycenter; - tmp.weight = entry.weight; - } - }); - - _.forEach(cg.edges(), function(e) { - var entryV = mappedEntries[e.v]; - var entryW = mappedEntries[e.w]; - if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) { - entryW.indegree++; - entryV.out.push(mappedEntries[e.w]); - } - }); - - var sourceSet = _.filter(mappedEntries, function(entry) { - return !entry.indegree; - }); - - return doResolveConflicts(sourceSet); -} - -function doResolveConflicts(sourceSet) { - var entries = []; - - function handleIn(vEntry) { - return function(uEntry) { - if (uEntry.merged) { - return; - } - if (_.isUndefined(uEntry.barycenter) || - _.isUndefined(vEntry.barycenter) || - uEntry.barycenter >= vEntry.barycenter) { - mergeEntries(vEntry, uEntry); - } - }; - } - - function handleOut(vEntry) { - return function(wEntry) { - wEntry["in"].push(vEntry); - if (--wEntry.indegree === 0) { - sourceSet.push(wEntry); - } - }; - } - - while (sourceSet.length) { - var entry = sourceSet.pop(); - entries.push(entry); - _.forEach(entry["in"].reverse(), handleIn(entry)); - _.forEach(entry.out, handleOut(entry)); - } - - return _.map(_.filter(entries, function(entry) { return !entry.merged; }), - function(entry) { - return _.pick(entry, ["vs", "i", "barycenter", "weight"]); - }); - -} - -function mergeEntries(target, source) { - var sum = 0; - var weight = 0; + function resolveConflicts(entries, cg) { + var mappedEntries = {}; + _.forEach(entries, function(entry, i) { + var tmp = mappedEntries[entry.v] = { + indegree: 0, + "in": [], + out: [], + vs: [entry.v], + i: i + }; + if (!_.isUndefined(entry.barycenter)) { + tmp.barycenter = entry.barycenter; + tmp.weight = entry.weight; + } + }); + + _.forEach(cg.edges(), function(e) { + var entryV = mappedEntries[e.v]; + var entryW = mappedEntries[e.w]; + if (!_.isUndefined(entryV) && !_.isUndefined(entryW)) { + entryW.indegree++; + entryV.out.push(mappedEntries[e.w]); + } + }); + + var sourceSet = _.filter(mappedEntries, function(entry) { + return !entry.indegree; + }); + + return doResolveConflicts(sourceSet); + } - if (target.weight) { - sum += target.barycenter * target.weight; - weight += target.weight; - } + function doResolveConflicts(sourceSet) { + var entries = []; + + function handleIn(vEntry) { + return function(uEntry) { + if (uEntry.merged) { + return; + } + if (_.isUndefined(uEntry.barycenter) || + _.isUndefined(vEntry.barycenter) || + uEntry.barycenter >= vEntry.barycenter) { + mergeEntries(vEntry, uEntry); + } + }; + } + + function handleOut(vEntry) { + return function(wEntry) { + wEntry["in"].push(vEntry); + if (--wEntry.indegree === 0) { + sourceSet.push(wEntry); + } + }; + } + + while (sourceSet.length) { + var entry = sourceSet.pop(); + entries.push(entry); + _.forEach(entry["in"].reverse(), handleIn(entry)); + _.forEach(entry.out, handleOut(entry)); + } + + return _.map(_.filter(entries, function(entry) { return !entry.merged; }), + function(entry) { + return _.pick(entry, ["vs", "i", "barycenter", "weight"]); + }); - if (source.weight) { - sum += source.barycenter * source.weight; - weight += source.weight; - } + } - target.vs = source.vs.concat(target.vs); - target.barycenter = sum / weight; - target.weight = weight; - target.i = Math.min(source.i, target.i); - source.merged = true; -} + function mergeEntries(target, source) { + var sum = 0; + var weight = 0; + + if (target.weight) { + sum += target.barycenter * target.weight; + weight += target.weight; + } + + if (source.weight) { + sum += source.barycenter * source.weight; + weight += source.weight; + } + + target.vs = source.vs.concat(target.vs); + target.barycenter = sum / weight; + target.weight = weight; + target.i = Math.min(source.i, target.i); + source.merged = true; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/sort-subgraph.js": -/*!*******************************************************!*\ + /***/ "./node_modules/dagre/lib/order/sort-subgraph.js": + /*!*******************************************************!*\ !*** ./node_modules/dagre/lib/order/sort-subgraph.js ***! \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var barycenter = __webpack_require__(/*! ./barycenter */ "./node_modules/dagre/lib/order/barycenter.js"); -var resolveConflicts = __webpack_require__(/*! ./resolve-conflicts */ "./node_modules/dagre/lib/order/resolve-conflicts.js"); -var sort = __webpack_require__(/*! ./sort */ "./node_modules/dagre/lib/order/sort.js"); - -module.exports = sortSubgraph; - -function sortSubgraph(g, v, cg, biasRight) { - var movable = g.children(v); - var node = g.node(v); - var bl = node ? node.borderLeft : undefined; - var br = node ? node.borderRight: undefined; - var subgraphs = {}; - - if (bl) { - movable = _.filter(movable, function(w) { - return w !== bl && w !== br; - }); - } + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var barycenter = __webpack_require__(/*! ./barycenter */ "./node_modules/dagre/lib/order/barycenter.js"); + var resolveConflicts = __webpack_require__(/*! ./resolve-conflicts */ "./node_modules/dagre/lib/order/resolve-conflicts.js"); + var sort = __webpack_require__(/*! ./sort */ "./node_modules/dagre/lib/order/sort.js"); + + module.exports = sortSubgraph; + + function sortSubgraph(g, v, cg, biasRight) { + var movable = g.children(v); + var node = g.node(v); + var bl = node ? node.borderLeft : undefined; + var br = node ? node.borderRight: undefined; + var subgraphs = {}; + + if (bl) { + movable = _.filter(movable, function(w) { + return w !== bl && w !== br; + }); + } + + var barycenters = barycenter(g, movable); + _.forEach(barycenters, function(entry) { + if (g.children(entry.v).length) { + var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight); + subgraphs[entry.v] = subgraphResult; + if (_.has(subgraphResult, "barycenter")) { + mergeBarycenters(entry, subgraphResult); + } + } + }); + + var entries = resolveConflicts(barycenters, cg); + expandSubgraphs(entries, subgraphs); + + var result = sort(entries, biasRight); + + if (bl) { + result.vs = _.flatten([bl, result.vs, br], true); + if (g.predecessors(bl).length) { + var blPred = g.node(g.predecessors(bl)[0]), + brPred = g.node(g.predecessors(br)[0]); + if (!_.has(result, "barycenter")) { + result.barycenter = 0; + result.weight = 0; + } + result.barycenter = (result.barycenter * result.weight + + blPred.order + brPred.order) / (result.weight + 2); + result.weight += 2; + } + } + + return result; + } - var barycenters = barycenter(g, movable); - _.forEach(barycenters, function(entry) { - if (g.children(entry.v).length) { - var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight); - subgraphs[entry.v] = subgraphResult; - if (_.has(subgraphResult, "barycenter")) { - mergeBarycenters(entry, subgraphResult); - } - } - }); - - var entries = resolveConflicts(barycenters, cg); - expandSubgraphs(entries, subgraphs); - - var result = sort(entries, biasRight); - - if (bl) { - result.vs = _.flatten([bl, result.vs, br], true); - if (g.predecessors(bl).length) { - var blPred = g.node(g.predecessors(bl)[0]), - brPred = g.node(g.predecessors(br)[0]); - if (!_.has(result, "barycenter")) { - result.barycenter = 0; - result.weight = 0; - } - result.barycenter = (result.barycenter * result.weight + - blPred.order + brPred.order) / (result.weight + 2); - result.weight += 2; - } - } + function expandSubgraphs(entries, subgraphs) { + _.forEach(entries, function(entry) { + entry.vs = _.flatten(entry.vs.map(function(v) { + if (subgraphs[v]) { + return subgraphs[v].vs; + } + return v; + }), true); + }); + } - return result; -} - -function expandSubgraphs(entries, subgraphs) { - _.forEach(entries, function(entry) { - entry.vs = _.flatten(entry.vs.map(function(v) { - if (subgraphs[v]) { - return subgraphs[v].vs; - } - return v; - }), true); - }); -} - -function mergeBarycenters(target, other) { - if (!_.isUndefined(target.barycenter)) { - target.barycenter = (target.barycenter * target.weight + - other.barycenter * other.weight) / + function mergeBarycenters(target, other) { + if (!_.isUndefined(target.barycenter)) { + target.barycenter = (target.barycenter * target.weight + + other.barycenter * other.weight) / (target.weight + other.weight); - target.weight += other.weight; - } else { - target.barycenter = other.barycenter; - target.weight = other.weight; - } -} + target.weight += other.weight; + } else { + target.barycenter = other.barycenter; + target.weight = other.weight; + } + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/order/sort.js": -/*!**********************************************!*\ + /***/ "./node_modules/dagre/lib/order/sort.js": + /*!**********************************************!*\ !*** ./node_modules/dagre/lib/order/sort.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); - -module.exports = sort; - -function sort(entries, biasRight) { - var parts = util.partition(entries, function(entry) { - return _.has(entry, "barycenter"); - }); - var sortable = parts.lhs, - unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }), - vs = [], - sum = 0, - weight = 0, - vsIndex = 0; - - sortable.sort(compareWithBias(!!biasRight)); - - vsIndex = consumeUnsortable(vs, unsortable, vsIndex); - - _.forEach(sortable, function (entry) { - vsIndex += entry.vs.length; - vs.push(entry.vs); - sum += entry.barycenter * entry.weight; - weight += entry.weight; - vsIndex = consumeUnsortable(vs, unsortable, vsIndex); - }); - - var result = { vs: _.flatten(vs, true) }; - if (weight) { - result.barycenter = sum / weight; - result.weight = weight; - } - return result; -} - -function consumeUnsortable(vs, unsortable, index) { - var last; - while (unsortable.length && (last = _.last(unsortable)).i <= index) { - unsortable.pop(); - vs.push(last.vs); - index++; - } - return index; -} - -function compareWithBias(bias) { - return function(entryV, entryW) { - if (entryV.barycenter < entryW.barycenter) { - return -1; - } else if (entryV.barycenter > entryW.barycenter) { - return 1; - } - - return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; - }; -} - - -/***/ }), - -/***/ "./node_modules/dagre/lib/parent-dummy-chains.js": -/*!*******************************************************!*\ - !*** ./node_modules/dagre/lib/parent-dummy-chains.js ***! - \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); - -module.exports = parentDummyChains; - -function parentDummyChains(g) { - var postorderNums = postorder(g); + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); + + module.exports = sort; + + function sort(entries, biasRight) { + var parts = util.partition(entries, function(entry) { + return _.has(entry, "barycenter"); + }); + var sortable = parts.lhs, + unsortable = _.sortBy(parts.rhs, function(entry) { return -entry.i; }), + vs = [], + sum = 0, + weight = 0, + vsIndex = 0; + + sortable.sort(compareWithBias(!!biasRight)); + + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + + _.forEach(sortable, function (entry) { + vsIndex += entry.vs.length; + vs.push(entry.vs); + sum += entry.barycenter * entry.weight; + weight += entry.weight; + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + }); + + var result = { vs: _.flatten(vs, true) }; + if (weight) { + result.barycenter = sum / weight; + result.weight = weight; + } + return result; + } - _.forEach(g.graph().dummyChains, function(v) { - var node = g.node(v); - var edgeObj = node.edgeObj; - var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w); - var path = pathData.path; - var lca = pathData.lca; - var pathIdx = 0; - var pathV = path[pathIdx]; - var ascending = true; + function consumeUnsortable(vs, unsortable, index) { + var last; + while (unsortable.length && (last = _.last(unsortable)).i <= index) { + unsortable.pop(); + vs.push(last.vs); + index++; + } + return index; + } - while (v !== edgeObj.w) { - node = g.node(v); + function compareWithBias(bias) { + return function(entryV, entryW) { + if (entryV.barycenter < entryW.barycenter) { + return -1; + } else if (entryV.barycenter > entryW.barycenter) { + return 1; + } - if (ascending) { - while ((pathV = path[pathIdx]) !== lca && - g.node(pathV).maxRank < node.rank) { - pathIdx++; - } + return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; + }; + } - if (pathV === lca) { - ascending = false; - } - } - if (!ascending) { - while (pathIdx < path.length - 1 && - g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) { - pathIdx++; - } - pathV = path[pathIdx]; - } + /***/ }), - g.setParent(v, pathV); - v = g.successors(v)[0]; - } - }); -} + /***/ "./node_modules/dagre/lib/parent-dummy-chains.js": + /*!*******************************************************!*\ + !*** ./node_modules/dagre/lib/parent-dummy-chains.js ***! + \*******************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + + module.exports = parentDummyChains; + + function parentDummyChains(g) { + var postorderNums = postorder(g); + + _.forEach(g.graph().dummyChains, function(v) { + var node = g.node(v); + var edgeObj = node.edgeObj; + var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w); + var path = pathData.path; + var lca = pathData.lca; + var pathIdx = 0; + var pathV = path[pathIdx]; + var ascending = true; + + while (v !== edgeObj.w) { + node = g.node(v); + + if (ascending) { + while ((pathV = path[pathIdx]) !== lca && + g.node(pathV).maxRank < node.rank) { + pathIdx++; + } + + if (pathV === lca) { + ascending = false; + } + } + + if (!ascending) { + while (pathIdx < path.length - 1 && + g.node(pathV = path[pathIdx + 1]).minRank <= node.rank) { + pathIdx++; + } + pathV = path[pathIdx]; + } + + g.setParent(v, pathV); + v = g.successors(v)[0]; + } + }); + } // Find a path from v to w through the lowest common ancestor (LCA). Return the // full path and the LCA. -function findPath(g, postorderNums, v, w) { - var vPath = []; - var wPath = []; - var low = Math.min(postorderNums[v].low, postorderNums[w].low); - var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim); - var parent; - var lca; - - // Traverse up from v to find the LCA - parent = v; - do { - parent = g.parent(parent); - vPath.push(parent); - } while (parent && - (postorderNums[parent].low > low || lim > postorderNums[parent].lim)); - lca = parent; - - // Traverse from w to LCA - parent = w; - while ((parent = g.parent(parent)) !== lca) { - wPath.push(parent); - } - - return { path: vPath.concat(wPath.reverse()), lca: lca }; -} + function findPath(g, postorderNums, v, w) { + var vPath = []; + var wPath = []; + var low = Math.min(postorderNums[v].low, postorderNums[w].low); + var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim); + var parent; + var lca; + + // Traverse up from v to find the LCA + parent = v; + do { + parent = g.parent(parent); + vPath.push(parent); + } while (parent && + (postorderNums[parent].low > low || lim > postorderNums[parent].lim)); + lca = parent; + + // Traverse from w to LCA + parent = w; + while ((parent = g.parent(parent)) !== lca) { + wPath.push(parent); + } + + return { path: vPath.concat(wPath.reverse()), lca: lca }; + } -function postorder(g) { - var result = {}; - var lim = 0; + function postorder(g) { + var result = {}; + var lim = 0; - function dfs(v) { - var low = lim; - _.forEach(g.children(v), dfs); - result[v] = { low: low, lim: lim++ }; - } - _.forEach(g.children(), dfs); + function dfs(v) { + var low = lim; + _.forEach(g.children(v), dfs); + result[v] = { low: low, lim: lim++ }; + } + _.forEach(g.children(), dfs); - return result; -} + return result; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/position/bk.js": -/*!***********************************************!*\ + /***/ "./node_modules/dagre/lib/position/bk.js": + /*!***********************************************!*\ !*** ./node_modules/dagre/lib/position/bk.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; -var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); -/* + /* * This module provides coordinate assignment based on Brandes and Köpf, "Fast * and Simple Horizontal Coordinate Assignment." */ -module.exports = { - positionX: positionX, - findType1Conflicts: findType1Conflicts, - findType2Conflicts: findType2Conflicts, - addConflict: addConflict, - hasConflict: hasConflict, - verticalAlignment: verticalAlignment, - horizontalCompaction: horizontalCompaction, - alignCoordinates: alignCoordinates, - findSmallestWidthAlignment: findSmallestWidthAlignment, - balance: balance -}; - -/* + module.exports = { + positionX: positionX, + findType1Conflicts: findType1Conflicts, + findType2Conflicts: findType2Conflicts, + addConflict: addConflict, + hasConflict: hasConflict, + verticalAlignment: verticalAlignment, + horizontalCompaction: horizontalCompaction, + alignCoordinates: alignCoordinates, + findSmallestWidthAlignment: findSmallestWidthAlignment, + balance: balance + }; + + /* * Marks all edges in the graph with a type-1 conflict with the "type1Conflict" * property. A type-1 conflict is one where a non-inner segment crosses an * inner segment. An inner segment is an edge with both incident nodes marked @@ -2158,124 +2158,124 @@ module.exports = { * This algorithm (safely) assumes that a dummy node will only be incident on a * single node in the layers being scanned. */ -function findType1Conflicts(g, layering) { - var conflicts = {}; - - function visitLayer(prevLayer, layer) { - var - // last visited node in the previous layer that is incident on an inner - // segment. - k0 = 0, - // Tracks the last node in this layer scanned for crossings with a type-1 - // segment. - scanPos = 0, - prevLayerLength = prevLayer.length, - lastNode = _.last(layer); - - _.forEach(layer, function(v, i) { - var w = findOtherInnerSegmentNode(g, v), - k1 = w ? g.node(w).order : prevLayerLength; - - if (w || v === lastNode) { - _.forEach(layer.slice(scanPos, i +1), function(scanNode) { - _.forEach(g.predecessors(scanNode), function(u) { - var uLabel = g.node(u), - uPos = uLabel.order; - if ((uPos < k0 || k1 < uPos) && - !(uLabel.dummy && g.node(scanNode).dummy)) { - addConflict(conflicts, u, scanNode); - } - }); - }); - scanPos = i + 1; - k0 = k1; - } - }); - - return layer; - } - - _.reduce(layering, visitLayer); - return conflicts; -} - -function findType2Conflicts(g, layering) { - var conflicts = {}; - - function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) { - var v; - _.forEach(_.range(southPos, southEnd), function(i) { - v = south[i]; - if (g.node(v).dummy) { - _.forEach(g.predecessors(v), function(u) { - var uNode = g.node(u); - if (uNode.dummy && - (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) { - addConflict(conflicts, u, v); - } - }); - } - }); - } - - - function visitLayer(north, south) { - var prevNorthPos = -1, - nextNorthPos, - southPos = 0; - - _.forEach(south, function(v, southLookahead) { - if (g.node(v).dummy === "border") { - var predecessors = g.predecessors(v); - if (predecessors.length) { - nextNorthPos = g.node(predecessors[0]).order; - scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos); - southPos = southLookahead; - prevNorthPos = nextNorthPos; - } - } - scan(south, southPos, south.length, nextNorthPos, north.length); - }); - - return south; - } + function findType1Conflicts(g, layering) { + var conflicts = {}; + + function visitLayer(prevLayer, layer) { + var + // last visited node in the previous layer that is incident on an inner + // segment. + k0 = 0, + // Tracks the last node in this layer scanned for crossings with a type-1 + // segment. + scanPos = 0, + prevLayerLength = prevLayer.length, + lastNode = _.last(layer); + + _.forEach(layer, function(v, i) { + var w = findOtherInnerSegmentNode(g, v), + k1 = w ? g.node(w).order : prevLayerLength; + + if (w || v === lastNode) { + _.forEach(layer.slice(scanPos, i +1), function(scanNode) { + _.forEach(g.predecessors(scanNode), function(u) { + var uLabel = g.node(u), + uPos = uLabel.order; + if ((uPos < k0 || k1 < uPos) && + !(uLabel.dummy && g.node(scanNode).dummy)) { + addConflict(conflicts, u, scanNode); + } + }); + }); + scanPos = i + 1; + k0 = k1; + } + }); + + return layer; + } + + _.reduce(layering, visitLayer); + return conflicts; + } - _.reduce(layering, visitLayer); - return conflicts; -} + function findType2Conflicts(g, layering) { + var conflicts = {}; + + function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) { + var v; + _.forEach(_.range(southPos, southEnd), function(i) { + v = south[i]; + if (g.node(v).dummy) { + _.forEach(g.predecessors(v), function(u) { + var uNode = g.node(u); + if (uNode.dummy && + (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) { + addConflict(conflicts, u, v); + } + }); + } + }); + } + + + function visitLayer(north, south) { + var prevNorthPos = -1, + nextNorthPos, + southPos = 0; + + _.forEach(south, function(v, southLookahead) { + if (g.node(v).dummy === "border") { + var predecessors = g.predecessors(v); + if (predecessors.length) { + nextNorthPos = g.node(predecessors[0]).order; + scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos); + southPos = southLookahead; + prevNorthPos = nextNorthPos; + } + } + scan(south, southPos, south.length, nextNorthPos, north.length); + }); + + return south; + } + + _.reduce(layering, visitLayer); + return conflicts; + } -function findOtherInnerSegmentNode(g, v) { - if (g.node(v).dummy) { - return _.find(g.predecessors(v), function(u) { - return g.node(u).dummy; - }); - } -} + function findOtherInnerSegmentNode(g, v) { + if (g.node(v).dummy) { + return _.find(g.predecessors(v), function(u) { + return g.node(u).dummy; + }); + } + } -function addConflict(conflicts, v, w) { - if (v > w) { - var tmp = v; - v = w; - w = tmp; - } + function addConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + + var conflictsV = conflicts[v]; + if (!conflictsV) { + conflicts[v] = conflictsV = {}; + } + conflictsV[w] = true; + } - var conflictsV = conflicts[v]; - if (!conflictsV) { - conflicts[v] = conflictsV = {}; - } - conflictsV[w] = true; -} - -function hasConflict(conflicts, v, w) { - if (v > w) { - var tmp = v; - v = w; - w = tmp; - } - return _.has(conflicts[v], w); -} + function hasConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + return _.has(conflicts[v], w); + } -/* + /* * Try to align nodes into vertical "blocks" where possible. This algorithm * attempts to align a node with one of its median neighbors. If the edge * connecting a neighbor is a type-1 conflict then we ignore that possibility. @@ -2283,322 +2283,322 @@ function hasConflict(conflicts, v, w) { * we're trying to form a block with, we also ignore that possibility - our * blocks would be split in that scenario. */ -function verticalAlignment(g, layering, conflicts, neighborFn) { - var root = {}, - align = {}, - pos = {}; - - // We cache the position here based on the layering because the graph and - // layering may be out of sync. The layering matrix is manipulated to - // generate different extreme alignments. - _.forEach(layering, function(layer) { - _.forEach(layer, function(v, order) { - root[v] = v; - align[v] = v; - pos[v] = order; - }); - }); - - _.forEach(layering, function(layer) { - var prevIdx = -1; - _.forEach(layer, function(v) { - var ws = neighborFn(v); - if (ws.length) { - ws = _.sortBy(ws, function(w) { return pos[w]; }); - var mp = (ws.length - 1) / 2; - for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) { - var w = ws[i]; - if (align[v] === v && - prevIdx < pos[w] && - !hasConflict(conflicts, v, w)) { - align[w] = v; - align[v] = root[v] = root[w]; - prevIdx = pos[w]; - } - } - } - }); - }); - - return { root: root, align: align }; -} - -function horizontalCompaction(g, layering, root, align, reverseSep) { - // This portion of the algorithm differs from BK due to a number of problems. - // Instead of their algorithm we construct a new block graph and do two - // sweeps. The first sweep places blocks with the smallest possible - // coordinates. The second sweep removes unused space by moving blocks to the - // greatest coordinates without violating separation. - var xs = {}, - blockG = buildBlockGraph(g, layering, root, reverseSep), - borderType = reverseSep ? "borderLeft" : "borderRight"; - - function iterate(setXsFunc, nextNodesFunc) { - var stack = blockG.nodes(); - var elem = stack.pop(); - var visited = {}; - while (elem) { - if (visited[elem]) { - setXsFunc(elem); - } else { - visited[elem] = true; - stack.push(elem); - stack = stack.concat(nextNodesFunc(elem)); - } - - elem = stack.pop(); - } - } + function verticalAlignment(g, layering, conflicts, neighborFn) { + var root = {}, + align = {}, + pos = {}; + + // We cache the position here based on the layering because the graph and + // layering may be out of sync. The layering matrix is manipulated to + // generate different extreme alignments. + _.forEach(layering, function(layer) { + _.forEach(layer, function(v, order) { + root[v] = v; + align[v] = v; + pos[v] = order; + }); + }); + + _.forEach(layering, function(layer) { + var prevIdx = -1; + _.forEach(layer, function(v) { + var ws = neighborFn(v); + if (ws.length) { + ws = _.sortBy(ws, function(w) { return pos[w]; }); + var mp = (ws.length - 1) / 2; + for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) { + var w = ws[i]; + if (align[v] === v && + prevIdx < pos[w] && + !hasConflict(conflicts, v, w)) { + align[w] = v; + align[v] = root[v] = root[w]; + prevIdx = pos[w]; + } + } + } + }); + }); + + return { root: root, align: align }; + } - // First pass, assign smallest coordinates - function pass1(elem) { - xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) { - return Math.max(acc, xs[e.v] + blockG.edge(e)); - }, 0); - } + function horizontalCompaction(g, layering, root, align, reverseSep) { + // This portion of the algorithm differs from BK due to a number of problems. + // Instead of their algorithm we construct a new block graph and do two + // sweeps. The first sweep places blocks with the smallest possible + // coordinates. The second sweep removes unused space by moving blocks to the + // greatest coordinates without violating separation. + var xs = {}, + blockG = buildBlockGraph(g, layering, root, reverseSep), + borderType = reverseSep ? "borderLeft" : "borderRight"; + + function iterate(setXsFunc, nextNodesFunc) { + var stack = blockG.nodes(); + var elem = stack.pop(); + var visited = {}; + while (elem) { + if (visited[elem]) { + setXsFunc(elem); + } else { + visited[elem] = true; + stack.push(elem); + stack = stack.concat(nextNodesFunc(elem)); + } + + elem = stack.pop(); + } + } + + // First pass, assign smallest coordinates + function pass1(elem) { + xs[elem] = blockG.inEdges(elem).reduce(function(acc, e) { + return Math.max(acc, xs[e.v] + blockG.edge(e)); + }, 0); + } + + // Second pass, assign greatest coordinates + function pass2(elem) { + var min = blockG.outEdges(elem).reduce(function(acc, e) { + return Math.min(acc, xs[e.w] - blockG.edge(e)); + }, Number.POSITIVE_INFINITY); + + var node = g.node(elem); + if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { + xs[elem] = Math.max(xs[elem], min); + } + } + + iterate(pass1, blockG.predecessors.bind(blockG)); + iterate(pass2, blockG.successors.bind(blockG)); + + // Assign x coordinates to all nodes + _.forEach(align, function(v) { + xs[v] = xs[root[v]]; + }); + + return xs; + } - // Second pass, assign greatest coordinates - function pass2(elem) { - var min = blockG.outEdges(elem).reduce(function(acc, e) { - return Math.min(acc, xs[e.w] - blockG.edge(e)); - }, Number.POSITIVE_INFINITY); - var node = g.node(elem); - if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { - xs[elem] = Math.max(xs[elem], min); - } - } + function buildBlockGraph(g, layering, root, reverseSep) { + var blockGraph = new Graph(), + graphLabel = g.graph(), + sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); + + _.forEach(layering, function(layer) { + var u; + _.forEach(layer, function(v) { + var vRoot = root[v]; + blockGraph.setNode(vRoot); + if (u) { + var uRoot = root[u], + prevMax = blockGraph.edge(uRoot, vRoot); + blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0)); + } + u = v; + }); + }); + + return blockGraph; + } - iterate(pass1, blockG.predecessors.bind(blockG)); - iterate(pass2, blockG.successors.bind(blockG)); - - // Assign x coordinates to all nodes - _.forEach(align, function(v) { - xs[v] = xs[root[v]]; - }); - - return xs; -} - - -function buildBlockGraph(g, layering, root, reverseSep) { - var blockGraph = new Graph(), - graphLabel = g.graph(), - sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); - - _.forEach(layering, function(layer) { - var u; - _.forEach(layer, function(v) { - var vRoot = root[v]; - blockGraph.setNode(vRoot); - if (u) { - var uRoot = root[u], - prevMax = blockGraph.edge(uRoot, vRoot); - blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0)); - } - u = v; - }); - }); - - return blockGraph; -} - -/* + /* * Returns the alignment that has the smallest width of the given alignments. */ -function findSmallestWidthAlignment(g, xss) { - return _.minBy(_.values(xss), function (xs) { - var max = Number.NEGATIVE_INFINITY; - var min = Number.POSITIVE_INFINITY; + function findSmallestWidthAlignment(g, xss) { + return _.minBy(_.values(xss), function (xs) { + var max = Number.NEGATIVE_INFINITY; + var min = Number.POSITIVE_INFINITY; - _.forIn(xs, function (x, v) { - var halfWidth = width(g, v) / 2; + _.forIn(xs, function (x, v) { + var halfWidth = width(g, v) / 2; - max = Math.max(x + halfWidth, max); - min = Math.min(x - halfWidth, min); - }); + max = Math.max(x + halfWidth, max); + min = Math.min(x - halfWidth, min); + }); - return max - min; - }); -} + return max - min; + }); + } -/* + /* * Align the coordinates of each of the layout alignments such that * left-biased alignments have their minimum coordinate at the same point as * the minimum coordinate of the smallest width alignment and right-biased * alignments have their maximum coordinate at the same point as the maximum * coordinate of the smallest width alignment. */ -function alignCoordinates(xss, alignTo) { - var alignToVals = _.values(alignTo), - alignToMin = _.min(alignToVals), - alignToMax = _.max(alignToVals); - - _.forEach(["u", "d"], function(vert) { - _.forEach(["l", "r"], function(horiz) { - var alignment = vert + horiz, - xs = xss[alignment], - delta; - if (xs === alignTo) return; - - var xsVals = _.values(xs); - delta = horiz === "l" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals); - - if (delta) { - xss[alignment] = _.mapValues(xs, function(x) { return x + delta; }); - } - }); - }); -} - -function balance(xss, align) { - return _.mapValues(xss.ul, function(ignore, v) { - if (align) { - return xss[align.toLowerCase()][v]; - } else { - var xs = _.sortBy(_.map(xss, v)); - return (xs[1] + xs[2]) / 2; - } - }); -} - -function positionX(g) { - var layering = util.buildLayerMatrix(g); - var conflicts = _.merge( - findType1Conflicts(g, layering), - findType2Conflicts(g, layering)); - - var xss = {}; - var adjustedLayering; - _.forEach(["u", "d"], function(vert) { - adjustedLayering = vert === "u" ? layering : _.values(layering).reverse(); - _.forEach(["l", "r"], function(horiz) { - if (horiz === "r") { - adjustedLayering = _.map(adjustedLayering, function(inner) { - return _.values(inner).reverse(); - }); - } - - var neighborFn = (vert === "u" ? g.predecessors : g.successors).bind(g); - var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn); - var xs = horizontalCompaction(g, adjustedLayering, - align.root, align.align, horiz === "r"); - if (horiz === "r") { - xs = _.mapValues(xs, function(x) { return -x; }); - } - xss[vert + horiz] = xs; - }); - }); - - var smallestWidth = findSmallestWidthAlignment(g, xss); - alignCoordinates(xss, smallestWidth); - return balance(xss, g.graph().align); -} - -function sep(nodeSep, edgeSep, reverseSep) { - return function(g, v, w) { - var vLabel = g.node(v); - var wLabel = g.node(w); - var sum = 0; - var delta; - - sum += vLabel.width / 2; - if (_.has(vLabel, "labelpos")) { - switch (vLabel.labelpos.toLowerCase()) { - case "l": delta = -vLabel.width / 2; break; - case "r": delta = vLabel.width / 2; break; - } - } - if (delta) { - sum += reverseSep ? delta : -delta; - } - delta = 0; + function alignCoordinates(xss, alignTo) { + var alignToVals = _.values(alignTo), + alignToMin = _.min(alignToVals), + alignToMax = _.max(alignToVals); + + _.forEach(["u", "d"], function(vert) { + _.forEach(["l", "r"], function(horiz) { + var alignment = vert + horiz, + xs = xss[alignment], + delta; + if (xs === alignTo) return; + + var xsVals = _.values(xs); + delta = horiz === "l" ? alignToMin - _.min(xsVals) : alignToMax - _.max(xsVals); + + if (delta) { + xss[alignment] = _.mapValues(xs, function(x) { return x + delta; }); + } + }); + }); + } - sum += (vLabel.dummy ? edgeSep : nodeSep) / 2; - sum += (wLabel.dummy ? edgeSep : nodeSep) / 2; + function balance(xss, align) { + return _.mapValues(xss.ul, function(ignore, v) { + if (align) { + return xss[align.toLowerCase()][v]; + } else { + var xs = _.sortBy(_.map(xss, v)); + return (xs[1] + xs[2]) / 2; + } + }); + } - sum += wLabel.width / 2; - if (_.has(wLabel, "labelpos")) { - switch (wLabel.labelpos.toLowerCase()) { - case "l": delta = wLabel.width / 2; break; - case "r": delta = -wLabel.width / 2; break; - } - } - if (delta) { - sum += reverseSep ? delta : -delta; - } - delta = 0; + function positionX(g) { + var layering = util.buildLayerMatrix(g); + var conflicts = _.merge( + findType1Conflicts(g, layering), + findType2Conflicts(g, layering)); + + var xss = {}; + var adjustedLayering; + _.forEach(["u", "d"], function(vert) { + adjustedLayering = vert === "u" ? layering : _.values(layering).reverse(); + _.forEach(["l", "r"], function(horiz) { + if (horiz === "r") { + adjustedLayering = _.map(adjustedLayering, function(inner) { + return _.values(inner).reverse(); + }); + } + + var neighborFn = (vert === "u" ? g.predecessors : g.successors).bind(g); + var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn); + var xs = horizontalCompaction(g, adjustedLayering, + align.root, align.align, horiz === "r"); + if (horiz === "r") { + xs = _.mapValues(xs, function(x) { return -x; }); + } + xss[vert + horiz] = xs; + }); + }); + + var smallestWidth = findSmallestWidthAlignment(g, xss); + alignCoordinates(xss, smallestWidth); + return balance(xss, g.graph().align); + } - return sum; - }; -} + function sep(nodeSep, edgeSep, reverseSep) { + return function(g, v, w) { + var vLabel = g.node(v); + var wLabel = g.node(w); + var sum = 0; + var delta; + + sum += vLabel.width / 2; + if (_.has(vLabel, "labelpos")) { + switch (vLabel.labelpos.toLowerCase()) { + case "l": delta = -vLabel.width / 2; break; + case "r": delta = vLabel.width / 2; break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + sum += (vLabel.dummy ? edgeSep : nodeSep) / 2; + sum += (wLabel.dummy ? edgeSep : nodeSep) / 2; + + sum += wLabel.width / 2; + if (_.has(wLabel, "labelpos")) { + switch (wLabel.labelpos.toLowerCase()) { + case "l": delta = wLabel.width / 2; break; + case "r": delta = -wLabel.width / 2; break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + return sum; + }; + } -function width(g, v) { - return g.node(v).width; -} + function width(g, v) { + return g.node(v).width; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/position/index.js": -/*!**************************************************!*\ + /***/ "./node_modules/dagre/lib/position/index.js": + /*!**************************************************!*\ !*** ./node_modules/dagre/lib/position/index.js ***! \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); -var positionX = __webpack_require__(/*! ./bk */ "./node_modules/dagre/lib/position/bk.js").positionX; + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var util = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js"); + var positionX = __webpack_require__(/*! ./bk */ "./node_modules/dagre/lib/position/bk.js").positionX; -module.exports = position; + module.exports = position; -function position(g) { - g = util.asNonCompoundGraph(g); + function position(g) { + g = util.asNonCompoundGraph(g); - positionY(g); - _.forEach(positionX(g), function(x, v) { - g.node(v).x = x; - }); -} + positionY(g); + _.forEach(positionX(g), function(x, v) { + g.node(v).x = x; + }); + } -function positionY(g) { - var layering = util.buildLayerMatrix(g); - var rankSep = g.graph().ranksep; - var prevY = 0; - _.forEach(layering, function(layer) { - var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; })); - _.forEach(layer, function(v) { - g.node(v).y = prevY + maxHeight / 2; - }); - prevY += maxHeight + rankSep; - }); -} + function positionY(g) { + var layering = util.buildLayerMatrix(g); + var rankSep = g.graph().ranksep; + var prevY = 0; + _.forEach(layering, function(layer) { + var maxHeight = _.max(_.map(layer, function(v) { return g.node(v).height; })); + _.forEach(layer, function(v) { + g.node(v).y = prevY + maxHeight / 2; + }); + prevY += maxHeight + rankSep; + }); + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/rank/feasible-tree.js": -/*!******************************************************!*\ + /***/ "./node_modules/dagre/lib/rank/feasible-tree.js": + /*!******************************************************!*\ !*** ./node_modules/dagre/lib/rank/feasible-tree.js ***! \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; -var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack; + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var Graph = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack; -module.exports = feasibleTree; + module.exports = feasibleTree; -/* + /* * Constructs a spanning tree with tight edges and adjusted the input node's * ranks to achieve this. A tight edge is one that is has a length that matches * its "minlen" attribute. @@ -2623,84 +2623,84 @@ module.exports = feasibleTree; * Returns a tree (undirected graph) that is constructed using only "tight" * edges. */ -function feasibleTree(g) { - var t = new Graph({ directed: false }); - - // Choose arbitrary node from which to start our tree - var start = g.nodes()[0]; - var size = g.nodeCount(); - t.setNode(start, {}); - - var edge, delta; - while (tightTree(t, g) < size) { - edge = findMinSlackEdge(t, g); - delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge); - shiftRanks(t, g, delta); - } + function feasibleTree(g) { + var t = new Graph({ directed: false }); + + // Choose arbitrary node from which to start our tree + var start = g.nodes()[0]; + var size = g.nodeCount(); + t.setNode(start, {}); + + var edge, delta; + while (tightTree(t, g) < size) { + edge = findMinSlackEdge(t, g); + delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge); + shiftRanks(t, g, delta); + } - return t; -} + return t; + } -/* + /* * Finds a maximal tree of tight edges and returns the number of nodes in the * tree. */ -function tightTree(t, g) { - function dfs(v) { - _.forEach(g.nodeEdges(v), function(e) { - var edgeV = e.v, - w = (v === edgeV) ? e.w : edgeV; - if (!t.hasNode(w) && !slack(g, e)) { - t.setNode(w, {}); - t.setEdge(v, w, {}); - dfs(w); - } - }); - } - - _.forEach(t.nodes(), dfs); - return t.nodeCount(); -} + function tightTree(t, g) { + function dfs(v) { + _.forEach(g.nodeEdges(v), function(e) { + var edgeV = e.v, + w = (v === edgeV) ? e.w : edgeV; + if (!t.hasNode(w) && !slack(g, e)) { + t.setNode(w, {}); + t.setEdge(v, w, {}); + dfs(w); + } + }); + } + + _.forEach(t.nodes(), dfs); + return t.nodeCount(); + } -/* + /* * Finds the edge with the smallest slack that is incident on tree and returns * it. */ -function findMinSlackEdge(t, g) { - return _.minBy(g.edges(), function(e) { - if (t.hasNode(e.v) !== t.hasNode(e.w)) { - return slack(g, e); - } - }); -} + function findMinSlackEdge(t, g) { + return _.minBy(g.edges(), function(e) { + if (t.hasNode(e.v) !== t.hasNode(e.w)) { + return slack(g, e); + } + }); + } -function shiftRanks(t, g, delta) { - _.forEach(t.nodes(), function(v) { - g.node(v).rank += delta; - }); -} + function shiftRanks(t, g, delta) { + _.forEach(t.nodes(), function(v) { + g.node(v).rank += delta; + }); + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/rank/index.js": -/*!**********************************************!*\ + /***/ "./node_modules/dagre/lib/rank/index.js": + /*!**********************************************!*\ !*** ./node_modules/dagre/lib/rank/index.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var rankUtil = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js"); -var longestPath = rankUtil.longestPath; -var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js"); -var networkSimplex = __webpack_require__(/*! ./network-simplex */ "./node_modules/dagre/lib/rank/network-simplex.js"); + var rankUtil = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js"); + var longestPath = rankUtil.longestPath; + var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js"); + var networkSimplex = __webpack_require__(/*! ./network-simplex */ "./node_modules/dagre/lib/rank/network-simplex.js"); -module.exports = rank; + module.exports = rank; -/* + /* * Assigns a rank to each node in the input graph that respects the "minlen" * constraint specified on edges between nodes. * @@ -2719,59 +2719,59 @@ module.exports = rank; * algorithm. Ranks can start at any index (including negative), we'll * fix them up later. */ -function rank(g) { - switch(g.graph().ranker) { - case "network-simplex": networkSimplexRanker(g); break; - case "tight-tree": tightTreeRanker(g); break; - case "longest-path": longestPathRanker(g); break; - default: networkSimplexRanker(g); - } -} + function rank(g) { + switch(g.graph().ranker) { + case "network-simplex": networkSimplexRanker(g); break; + case "tight-tree": tightTreeRanker(g); break; + case "longest-path": longestPathRanker(g); break; + default: networkSimplexRanker(g); + } + } // A fast and simple ranker, but results are far from optimal. -var longestPathRanker = longestPath; + var longestPathRanker = longestPath; -function tightTreeRanker(g) { - longestPath(g); - feasibleTree(g); -} + function tightTreeRanker(g) { + longestPath(g); + feasibleTree(g); + } -function networkSimplexRanker(g) { - networkSimplex(g); -} + function networkSimplexRanker(g) { + networkSimplex(g); + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/rank/network-simplex.js": -/*!********************************************************!*\ + /***/ "./node_modules/dagre/lib/rank/network-simplex.js": + /*!********************************************************!*\ !*** ./node_modules/dagre/lib/rank/network-simplex.js ***! \********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js"); -var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack; -var initRank = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").longestPath; -var preorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.preorder; -var postorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.postorder; -var simplify = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js").simplify; + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var feasibleTree = __webpack_require__(/*! ./feasible-tree */ "./node_modules/dagre/lib/rank/feasible-tree.js"); + var slack = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").slack; + var initRank = __webpack_require__(/*! ./util */ "./node_modules/dagre/lib/rank/util.js").longestPath; + var preorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.preorder; + var postorder = __webpack_require__(/*! ../graphlib */ "./node_modules/dagre/lib/graphlib.js").alg.postorder; + var simplify = __webpack_require__(/*! ../util */ "./node_modules/dagre/lib/util.js").simplify; -module.exports = networkSimplex; + module.exports = networkSimplex; // Expose some internals for testing purposes -networkSimplex.initLowLimValues = initLowLimValues; -networkSimplex.initCutValues = initCutValues; -networkSimplex.calcCutValue = calcCutValue; -networkSimplex.leaveEdge = leaveEdge; -networkSimplex.enterEdge = enterEdge; -networkSimplex.exchangeEdges = exchangeEdges; - -/* + networkSimplex.initLowLimValues = initLowLimValues; + networkSimplex.initCutValues = initCutValues; + networkSimplex.calcCutValue = calcCutValue; + networkSimplex.leaveEdge = leaveEdge; + networkSimplex.enterEdge = enterEdge; + networkSimplex.exchangeEdges = exchangeEdges; + + /* * The network simplex algorithm assigns ranks to each node in the input graph * and iteratively improves the ranking to reduce the length of edges. * @@ -2804,209 +2804,209 @@ networkSimplex.exchangeEdges = exchangeEdges; * for Drawing Directed Graphs." The structure of the file roughly follows the * structure of the overall algorithm. */ -function networkSimplex(g) { - g = simplify(g); - initRank(g); - var t = feasibleTree(g); - initLowLimValues(t); - initCutValues(t, g); - - var e, f; - while ((e = leaveEdge(t))) { - f = enterEdge(t, g, e); - exchangeEdges(t, g, e, f); - } -} + function networkSimplex(g) { + g = simplify(g); + initRank(g); + var t = feasibleTree(g); + initLowLimValues(t); + initCutValues(t, g); + + var e, f; + while ((e = leaveEdge(t))) { + f = enterEdge(t, g, e); + exchangeEdges(t, g, e, f); + } + } -/* + /* * Initializes cut values for all edges in the tree. */ -function initCutValues(t, g) { - var vs = postorder(t, t.nodes()); - vs = vs.slice(0, vs.length - 1); - _.forEach(vs, function(v) { - assignCutValue(t, g, v); - }); -} - -function assignCutValue(t, g, child) { - var childLab = t.node(child); - var parent = childLab.parent; - t.edge(child, parent).cutvalue = calcCutValue(t, g, child); -} - -/* + function initCutValues(t, g) { + var vs = postorder(t, t.nodes()); + vs = vs.slice(0, vs.length - 1); + _.forEach(vs, function(v) { + assignCutValue(t, g, v); + }); + } + + function assignCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + t.edge(child, parent).cutvalue = calcCutValue(t, g, child); + } + + /* * Given the tight tree, its graph, and a child in the graph calculate and * return the cut value for the edge between the child and its parent. */ -function calcCutValue(t, g, child) { - var childLab = t.node(child); - var parent = childLab.parent; - // True if the child is on the tail end of the edge in the directed graph - var childIsTail = true; - // The graph's view of the tree edge we're inspecting - var graphEdge = g.edge(child, parent); - // The accumulated cut value for the edge between this node and its parent - var cutValue = 0; - - if (!graphEdge) { - childIsTail = false; - graphEdge = g.edge(parent, child); - } - - cutValue = graphEdge.weight; - - _.forEach(g.nodeEdges(child), function(e) { - var isOutEdge = e.v === child, - other = isOutEdge ? e.w : e.v; - - if (other !== parent) { - var pointsToHead = isOutEdge === childIsTail, - otherWeight = g.edge(e).weight; - - cutValue += pointsToHead ? otherWeight : -otherWeight; - if (isTreeEdge(t, child, other)) { - var otherCutValue = t.edge(child, other).cutvalue; - cutValue += pointsToHead ? -otherCutValue : otherCutValue; - } - } - }); - - return cutValue; -} - -function initLowLimValues(tree, root) { - if (arguments.length < 2) { - root = tree.nodes()[0]; - } - dfsAssignLowLim(tree, {}, 1, root); -} - -function dfsAssignLowLim(tree, visited, nextLim, v, parent) { - var low = nextLim; - var label = tree.node(v); + function calcCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + // True if the child is on the tail end of the edge in the directed graph + var childIsTail = true; + // The graph's view of the tree edge we're inspecting + var graphEdge = g.edge(child, parent); + // The accumulated cut value for the edge between this node and its parent + var cutValue = 0; + + if (!graphEdge) { + childIsTail = false; + graphEdge = g.edge(parent, child); + } + + cutValue = graphEdge.weight; + + _.forEach(g.nodeEdges(child), function(e) { + var isOutEdge = e.v === child, + other = isOutEdge ? e.w : e.v; + + if (other !== parent) { + var pointsToHead = isOutEdge === childIsTail, + otherWeight = g.edge(e).weight; + + cutValue += pointsToHead ? otherWeight : -otherWeight; + if (isTreeEdge(t, child, other)) { + var otherCutValue = t.edge(child, other).cutvalue; + cutValue += pointsToHead ? -otherCutValue : otherCutValue; + } + } + }); + + return cutValue; + } - visited[v] = true; - _.forEach(tree.neighbors(v), function(w) { - if (!_.has(visited, w)) { - nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v); - } - }); - - label.low = low; - label.lim = nextLim++; - if (parent) { - label.parent = parent; - } else { - // TODO should be able to remove this when we incrementally update low lim - delete label.parent; - } + function initLowLimValues(tree, root) { + if (arguments.length < 2) { + root = tree.nodes()[0]; + } + dfsAssignLowLim(tree, {}, 1, root); + } - return nextLim; -} - -function leaveEdge(tree) { - return _.find(tree.edges(), function(e) { - return tree.edge(e).cutvalue < 0; - }); -} - -function enterEdge(t, g, edge) { - var v = edge.v; - var w = edge.w; - - // For the rest of this function we assume that v is the tail and w is the - // head, so if we don't have this edge in the graph we should flip it to - // match the correct orientation. - if (!g.hasEdge(v, w)) { - v = edge.w; - w = edge.v; - } + function dfsAssignLowLim(tree, visited, nextLim, v, parent) { + var low = nextLim; + var label = tree.node(v); + + visited[v] = true; + _.forEach(tree.neighbors(v), function(w) { + if (!_.has(visited, w)) { + nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v); + } + }); + + label.low = low; + label.lim = nextLim++; + if (parent) { + label.parent = parent; + } else { + // TODO should be able to remove this when we incrementally update low lim + delete label.parent; + } + + return nextLim; + } - var vLabel = t.node(v); - var wLabel = t.node(w); - var tailLabel = vLabel; - var flip = false; + function leaveEdge(tree) { + return _.find(tree.edges(), function(e) { + return tree.edge(e).cutvalue < 0; + }); + } - // If the root is in the tail of the edge then we need to flip the logic that - // checks for the head and tail nodes in the candidates function below. - if (vLabel.lim > wLabel.lim) { - tailLabel = wLabel; - flip = true; - } + function enterEdge(t, g, edge) { + var v = edge.v; + var w = edge.w; + + // For the rest of this function we assume that v is the tail and w is the + // head, so if we don't have this edge in the graph we should flip it to + // match the correct orientation. + if (!g.hasEdge(v, w)) { + v = edge.w; + w = edge.v; + } + + var vLabel = t.node(v); + var wLabel = t.node(w); + var tailLabel = vLabel; + var flip = false; + + // If the root is in the tail of the edge then we need to flip the logic that + // checks for the head and tail nodes in the candidates function below. + if (vLabel.lim > wLabel.lim) { + tailLabel = wLabel; + flip = true; + } + + var candidates = _.filter(g.edges(), function(edge) { + return flip === isDescendant(t, t.node(edge.v), tailLabel) && + flip !== isDescendant(t, t.node(edge.w), tailLabel); + }); + + return _.minBy(candidates, function(edge) { return slack(g, edge); }); + } - var candidates = _.filter(g.edges(), function(edge) { - return flip === isDescendant(t, t.node(edge.v), tailLabel) && - flip !== isDescendant(t, t.node(edge.w), tailLabel); - }); - - return _.minBy(candidates, function(edge) { return slack(g, edge); }); -} - -function exchangeEdges(t, g, e, f) { - var v = e.v; - var w = e.w; - t.removeEdge(v, w); - t.setEdge(f.v, f.w, {}); - initLowLimValues(t); - initCutValues(t, g); - updateRanks(t, g); -} - -function updateRanks(t, g) { - var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; }); - var vs = preorder(t, root); - vs = vs.slice(1); - _.forEach(vs, function(v) { - var parent = t.node(v).parent, - edge = g.edge(v, parent), - flipped = false; - - if (!edge) { - edge = g.edge(parent, v); - flipped = true; - } + function exchangeEdges(t, g, e, f) { + var v = e.v; + var w = e.w; + t.removeEdge(v, w); + t.setEdge(f.v, f.w, {}); + initLowLimValues(t); + initCutValues(t, g); + updateRanks(t, g); + } - g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen); - }); -} + function updateRanks(t, g) { + var root = _.find(t.nodes(), function(v) { return !g.node(v).parent; }); + var vs = preorder(t, root); + vs = vs.slice(1); + _.forEach(vs, function(v) { + var parent = t.node(v).parent, + edge = g.edge(v, parent), + flipped = false; + + if (!edge) { + edge = g.edge(parent, v); + flipped = true; + } + + g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen); + }); + } -/* + /* * Returns true if the edge is in the tree. */ -function isTreeEdge(tree, u, v) { - return tree.hasEdge(u, v); -} + function isTreeEdge(tree, u, v) { + return tree.hasEdge(u, v); + } -/* + /* * Returns true if the specified node is descendant of the root node per the * assigned low and lim attributes in the tree. */ -function isDescendant(tree, vLabel, rootLabel) { - return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim; -} + function isDescendant(tree, vLabel, rootLabel) { + return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/rank/util.js": -/*!*********************************************!*\ + /***/ "./node_modules/dagre/lib/rank/util.js": + /*!*********************************************!*\ !*** ./node_modules/dagre/lib/rank/util.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/dagre/lib/lodash.js"); -module.exports = { - longestPath: longestPath, - slack: slack -}; + module.exports = { + longestPath: longestPath, + slack: slack + }; -/* + /* * Initializes ranks for the input graph using the longest path algorithm. This * algorithm scales well and is fast in practice, it yields rather poor * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom @@ -3027,404 +3027,404 @@ module.exports = { * * 1. Each node will be assign an (unnormalized) "rank" property. */ -function longestPath(g) { - var visited = {}; + function longestPath(g) { + var visited = {}; - function dfs(v) { - var label = g.node(v); - if (_.has(visited, v)) { - return label.rank; - } - visited[v] = true; + function dfs(v) { + var label = g.node(v); + if (_.has(visited, v)) { + return label.rank; + } + visited[v] = true; - var rank = _.min(_.map(g.outEdges(v), function(e) { - return dfs(e.w) - g.edge(e).minlen; - })); + var rank = _.min(_.map(g.outEdges(v), function(e) { + return dfs(e.w) - g.edge(e).minlen; + })); - if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3 - rank === undefined || // return value of _.map([]) for Lodash 4 - rank === null) { // return value of _.map([null]) - rank = 0; - } + if (rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3 + rank === undefined || // return value of _.map([]) for Lodash 4 + rank === null) { // return value of _.map([null]) + rank = 0; + } - return (label.rank = rank); - } + return (label.rank = rank); + } - _.forEach(g.sources(), dfs); -} + _.forEach(g.sources(), dfs); + } -/* + /* * Returns the amount of slack for the given edge. The slack is defined as the * difference between the length of the edge and its minimum length. */ -function slack(g, e) { - return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen; -} + function slack(g, e) { + return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen; + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/util.js": -/*!****************************************!*\ + /***/ "./node_modules/dagre/lib/util.js": + /*!****************************************!*\ !*** ./node_modules/dagre/lib/util.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* eslint "no-console": off */ - - - -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); -var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; - -module.exports = { - addDummyNode: addDummyNode, - simplify: simplify, - asNonCompoundGraph: asNonCompoundGraph, - successorWeights: successorWeights, - predecessorWeights: predecessorWeights, - intersectRect: intersectRect, - buildLayerMatrix: buildLayerMatrix, - normalizeRanks: normalizeRanks, - removeEmptyRanks: removeEmptyRanks, - addBorderNode: addBorderNode, - maxRank: maxRank, - partition: partition, - time: time, - notime: notime -}; - -/* + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + "use strict"; + /* eslint "no-console": off */ + + + + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/dagre/lib/lodash.js"); + var Graph = __webpack_require__(/*! ./graphlib */ "./node_modules/dagre/lib/graphlib.js").Graph; + + module.exports = { + addDummyNode: addDummyNode, + simplify: simplify, + asNonCompoundGraph: asNonCompoundGraph, + successorWeights: successorWeights, + predecessorWeights: predecessorWeights, + intersectRect: intersectRect, + buildLayerMatrix: buildLayerMatrix, + normalizeRanks: normalizeRanks, + removeEmptyRanks: removeEmptyRanks, + addBorderNode: addBorderNode, + maxRank: maxRank, + partition: partition, + time: time, + notime: notime + }; + + /* * Adds a dummy node to the graph and return v. */ -function addDummyNode(g, type, attrs, name) { - var v; - do { - v = _.uniqueId(name); - } while (g.hasNode(v)); - - attrs.dummy = type; - g.setNode(v, attrs); - return v; -} - -/* + function addDummyNode(g, type, attrs, name) { + var v; + do { + v = _.uniqueId(name); + } while (g.hasNode(v)); + + attrs.dummy = type; + g.setNode(v, attrs); + return v; + } + + /* * Returns a new graph with only simple edges. Handles aggregation of data * associated with multi-edges. */ -function simplify(g) { - var simplified = new Graph().setGraph(g.graph()); - _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); }); - _.forEach(g.edges(), function(e) { - var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 }; - var label = g.edge(e); - simplified.setEdge(e.v, e.w, { - weight: simpleLabel.weight + label.weight, - minlen: Math.max(simpleLabel.minlen, label.minlen) - }); - }); - return simplified; -} - -function asNonCompoundGraph(g) { - var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph()); - _.forEach(g.nodes(), function(v) { - if (!g.children(v).length) { - simplified.setNode(v, g.node(v)); - } - }); - _.forEach(g.edges(), function(e) { - simplified.setEdge(e, g.edge(e)); - }); - return simplified; -} - -function successorWeights(g) { - var weightMap = _.map(g.nodes(), function(v) { - var sucs = {}; - _.forEach(g.outEdges(v), function(e) { - sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight; - }); - return sucs; - }); - return _.zipObject(g.nodes(), weightMap); -} - -function predecessorWeights(g) { - var weightMap = _.map(g.nodes(), function(v) { - var preds = {}; - _.forEach(g.inEdges(v), function(e) { - preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight; - }); - return preds; - }); - return _.zipObject(g.nodes(), weightMap); -} - -/* + function simplify(g) { + var simplified = new Graph().setGraph(g.graph()); + _.forEach(g.nodes(), function(v) { simplified.setNode(v, g.node(v)); }); + _.forEach(g.edges(), function(e) { + var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 }; + var label = g.edge(e); + simplified.setEdge(e.v, e.w, { + weight: simpleLabel.weight + label.weight, + minlen: Math.max(simpleLabel.minlen, label.minlen) + }); + }); + return simplified; + } + + function asNonCompoundGraph(g) { + var simplified = new Graph({ multigraph: g.isMultigraph() }).setGraph(g.graph()); + _.forEach(g.nodes(), function(v) { + if (!g.children(v).length) { + simplified.setNode(v, g.node(v)); + } + }); + _.forEach(g.edges(), function(e) { + simplified.setEdge(e, g.edge(e)); + }); + return simplified; + } + + function successorWeights(g) { + var weightMap = _.map(g.nodes(), function(v) { + var sucs = {}; + _.forEach(g.outEdges(v), function(e) { + sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight; + }); + return sucs; + }); + return _.zipObject(g.nodes(), weightMap); + } + + function predecessorWeights(g) { + var weightMap = _.map(g.nodes(), function(v) { + var preds = {}; + _.forEach(g.inEdges(v), function(e) { + preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight; + }); + return preds; + }); + return _.zipObject(g.nodes(), weightMap); + } + + /* * Finds where a line starting at point ({x, y}) would intersect a rectangle * ({x, y, width, height}) if it were pointing at the rectangle's center. */ -function intersectRect(rect, point) { - var x = rect.x; - var y = rect.y; - - // Rectangle intersection algorithm from: - // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes - var dx = point.x - x; - var dy = point.y - y; - var w = rect.width / 2; - var h = rect.height / 2; - - if (!dx && !dy) { - throw new Error("Not possible to find intersection inside of the rectangle"); - } - - var sx, sy; - if (Math.abs(dy) * w > Math.abs(dx) * h) { - // Intersection is top or bottom of rect. - if (dy < 0) { - h = -h; - } - sx = h * dx / dy; - sy = h; - } else { - // Intersection is left or right of rect. - if (dx < 0) { - w = -w; - } - sx = w; - sy = w * dy / dx; - } - - return { x: x + sx, y: y + sy }; -} + function intersectRect(rect, point) { + var x = rect.x; + var y = rect.y; + + // Rectangle intersection algorithm from: + // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes + var dx = point.x - x; + var dy = point.y - y; + var w = rect.width / 2; + var h = rect.height / 2; + + if (!dx && !dy) { + throw new Error("Not possible to find intersection inside of the rectangle"); + } + + var sx, sy; + if (Math.abs(dy) * w > Math.abs(dx) * h) { + // Intersection is top or bottom of rect. + if (dy < 0) { + h = -h; + } + sx = h * dx / dy; + sy = h; + } else { + // Intersection is left or right of rect. + if (dx < 0) { + w = -w; + } + sx = w; + sy = w * dy / dx; + } + + return { x: x + sx, y: y + sy }; + } -/* + /* * Given a DAG with each node assigned "rank" and "order" properties, this * function will produce a matrix with the ids of each node. */ -function buildLayerMatrix(g) { - var layering = _.map(_.range(maxRank(g) + 1), function() { return []; }); - _.forEach(g.nodes(), function(v) { - var node = g.node(v); - var rank = node.rank; - if (!_.isUndefined(rank)) { - layering[rank][node.order] = v; - } - }); - return layering; -} + function buildLayerMatrix(g) { + var layering = _.map(_.range(maxRank(g) + 1), function() { return []; }); + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + var rank = node.rank; + if (!_.isUndefined(rank)) { + layering[rank][node.order] = v; + } + }); + return layering; + } -/* + /* * Adjusts the ranks for all nodes in the graph such that all nodes v have * rank(v) >= 0 and at least one node w has rank(w) = 0. */ -function normalizeRanks(g) { - var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; })); - _.forEach(g.nodes(), function(v) { - var node = g.node(v); - if (_.has(node, "rank")) { - node.rank -= min; - } - }); -} - -function removeEmptyRanks(g) { - // Ranks may not start at 0, so we need to offset them - var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; })); - - var layers = []; - _.forEach(g.nodes(), function(v) { - var rank = g.node(v).rank - offset; - if (!layers[rank]) { - layers[rank] = []; - } - layers[rank].push(v); - }); - - var delta = 0; - var nodeRankFactor = g.graph().nodeRankFactor; - _.forEach(layers, function(vs, i) { - if (_.isUndefined(vs) && i % nodeRankFactor !== 0) { - --delta; - } else if (delta) { - _.forEach(vs, function(v) { g.node(v).rank += delta; }); - } - }); -} - -function addBorderNode(g, prefix, rank, order) { - var node = { - width: 0, - height: 0 - }; - if (arguments.length >= 4) { - node.rank = rank; - node.order = order; - } - return addDummyNode(g, "border", node, prefix); -} - -function maxRank(g) { - return _.max(_.map(g.nodes(), function(v) { - var rank = g.node(v).rank; - if (!_.isUndefined(rank)) { - return rank; - } - })); -} + function normalizeRanks(g) { + var min = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; })); + _.forEach(g.nodes(), function(v) { + var node = g.node(v); + if (_.has(node, "rank")) { + node.rank -= min; + } + }); + } + + function removeEmptyRanks(g) { + // Ranks may not start at 0, so we need to offset them + var offset = _.min(_.map(g.nodes(), function(v) { return g.node(v).rank; })); + + var layers = []; + _.forEach(g.nodes(), function(v) { + var rank = g.node(v).rank - offset; + if (!layers[rank]) { + layers[rank] = []; + } + layers[rank].push(v); + }); + + var delta = 0; + var nodeRankFactor = g.graph().nodeRankFactor; + _.forEach(layers, function(vs, i) { + if (_.isUndefined(vs) && i % nodeRankFactor !== 0) { + --delta; + } else if (delta) { + _.forEach(vs, function(v) { g.node(v).rank += delta; }); + } + }); + } + + function addBorderNode(g, prefix, rank, order) { + var node = { + width: 0, + height: 0 + }; + if (arguments.length >= 4) { + node.rank = rank; + node.order = order; + } + return addDummyNode(g, "border", node, prefix); + } + + function maxRank(g) { + return _.max(_.map(g.nodes(), function(v) { + var rank = g.node(v).rank; + if (!_.isUndefined(rank)) { + return rank; + } + })); + } -/* + /* * Partition a collection into two groups: `lhs` and `rhs`. If the supplied * function returns true for an entry it goes into `lhs`. Otherwise it goes * into `rhs. */ -function partition(collection, fn) { - var result = { lhs: [], rhs: [] }; - _.forEach(collection, function(value) { - if (fn(value)) { - result.lhs.push(value); - } else { - result.rhs.push(value); - } - }); - return result; -} + function partition(collection, fn) { + var result = { lhs: [], rhs: [] }; + _.forEach(collection, function(value) { + if (fn(value)) { + result.lhs.push(value); + } else { + result.rhs.push(value); + } + }); + return result; + } -/* + /* * Returns a new function that wraps `fn` with a timer. The wrapper logs the * time it takes to execute the function. */ -function time(name, fn) { - var start = _.now(); - try { - return fn(); - } finally { - console.log(name + " time: " + (_.now() - start) + "ms"); - } -} + function time(name, fn) { + var start = _.now(); + try { + return fn(); + } finally { + console.log(name + " time: " + (_.now() - start) + "ms"); + } + } -function notime(name, fn) { - return fn(); -} + function notime(name, fn) { + return fn(); + } -/***/ }), + /***/ }), -/***/ "./node_modules/dagre/lib/version.js": -/*!*******************************************!*\ + /***/ "./node_modules/dagre/lib/version.js": + /*!*******************************************!*\ !*** ./node_modules/dagre/lib/version.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports) { -module.exports = "0.8.5"; + module.exports = "0.8.5"; -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/index.js": -/*!****************************************!*\ + /***/ "./node_modules/graphlib/index.js": + /*!****************************************!*\ !*** ./node_modules/graphlib/index.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/** - * Copyright (c) 2014, Chris Pettitt - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * 3. Neither the name of the copyright holder nor the names of its contributors - * may be used to endorse or promote products derived from this software without - * specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -var lib = __webpack_require__(/*! ./lib */ "./node_modules/graphlib/lib/index.js"); - -module.exports = { - Graph: lib.Graph, - json: __webpack_require__(/*! ./lib/json */ "./node_modules/graphlib/lib/json.js"), - alg: __webpack_require__(/*! ./lib/alg */ "./node_modules/graphlib/lib/alg/index.js"), - version: lib.version -}; - - -/***/ }), - -/***/ "./node_modules/graphlib/lib/alg/components.js": -/*!*****************************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + /** + * Copyright (c) 2014, Chris Pettitt + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this + * list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * 3. Neither the name of the copyright holder nor the names of its contributors + * may be used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + + var lib = __webpack_require__(/*! ./lib */ "./node_modules/graphlib/lib/index.js"); + + module.exports = { + Graph: lib.Graph, + json: __webpack_require__(/*! ./lib/json */ "./node_modules/graphlib/lib/json.js"), + alg: __webpack_require__(/*! ./lib/alg */ "./node_modules/graphlib/lib/alg/index.js"), + version: lib.version + }; + + + /***/ }), + + /***/ "./node_modules/graphlib/lib/alg/components.js": + /*!*****************************************************!*\ !*** ./node_modules/graphlib/lib/alg/components.js ***! \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); - -module.exports = components; - -function components(g) { - var visited = {}; - var cmpts = []; - var cmpt; - - function dfs(v) { - if (_.has(visited, v)) return; - visited[v] = true; - cmpt.push(v); - _.each(g.successors(v), dfs); - _.each(g.predecessors(v), dfs); - } - - _.each(g.nodes(), function(v) { - cmpt = []; - dfs(v); - if (cmpt.length) { - cmpts.push(cmpt); - } - }); - - return cmpts; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + + module.exports = components; + + function components(g) { + var visited = {}; + var cmpts = []; + var cmpt; + + function dfs(v) { + if (_.has(visited, v)) return; + visited[v] = true; + cmpt.push(v); + _.each(g.successors(v), dfs); + _.each(g.predecessors(v), dfs); + } + + _.each(g.nodes(), function(v) { + cmpt = []; + dfs(v); + if (cmpt.length) { + cmpts.push(cmpt); + } + }); + + return cmpts; + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/dfs.js": -/*!**********************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/dfs.js": + /*!**********************************************!*\ !*** ./node_modules/graphlib/lib/alg/dfs.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); -module.exports = dfs; + module.exports = dfs; -/* + /* * A helper that preforms a pre- or post-order traversal on the input graph * and returns the nodes in the order they were visited. If the graph is * undirected then this algorithm will navigate using neighbors. If the graph @@ -3432,640 +3432,640 @@ module.exports = dfs; * * Order must be one of "pre" or "post". */ -function dfs(g, vs, order) { - if (!_.isArray(vs)) { - vs = [vs]; - } + function dfs(g, vs, order) { + if (!_.isArray(vs)) { + vs = [vs]; + } - var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g); + var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g); - var acc = []; - var visited = {}; - _.each(vs, function(v) { - if (!g.hasNode(v)) { - throw new Error("Graph does not have node: " + v); - } + var acc = []; + var visited = {}; + _.each(vs, function(v) { + if (!g.hasNode(v)) { + throw new Error("Graph does not have node: " + v); + } - doDfs(g, v, order === "post", visited, navigation, acc); - }); - return acc; -} + doDfs(g, v, order === "post", visited, navigation, acc); + }); + return acc; + } -function doDfs(g, v, postorder, visited, navigation, acc) { - if (!_.has(visited, v)) { - visited[v] = true; + function doDfs(g, v, postorder, visited, navigation, acc) { + if (!_.has(visited, v)) { + visited[v] = true; - if (!postorder) { acc.push(v); } - _.each(navigation(v), function(w) { - doDfs(g, w, postorder, visited, navigation, acc); - }); - if (postorder) { acc.push(v); } - } -} + if (!postorder) { acc.push(v); } + _.each(navigation(v), function(w) { + doDfs(g, w, postorder, visited, navigation, acc); + }); + if (postorder) { acc.push(v); } + } + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/dijkstra-all.js": -/*!*******************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/dijkstra-all.js": + /*!*******************************************************!*\ !*** ./node_modules/graphlib/lib/alg/dijkstra-all.js ***! \*******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var dijkstra = __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js"); -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + var dijkstra = __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); -module.exports = dijkstraAll; + module.exports = dijkstraAll; -function dijkstraAll(g, weightFunc, edgeFunc) { - return _.transform(g.nodes(), function(acc, v) { - acc[v] = dijkstra(g, v, weightFunc, edgeFunc); - }, {}); -} + function dijkstraAll(g, weightFunc, edgeFunc) { + return _.transform(g.nodes(), function(acc, v) { + acc[v] = dijkstra(g, v, weightFunc, edgeFunc); + }, {}); + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/dijkstra.js": -/*!***************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/dijkstra.js": + /*!***************************************************!*\ !*** ./node_modules/graphlib/lib/alg/dijkstra.js ***! \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); -var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js"); - -module.exports = dijkstra; + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var DEFAULT_WEIGHT_FUNC = _.constant(1); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js"); -function dijkstra(g, source, weightFn, edgeFn) { - return runDijkstra(g, String(source), - weightFn || DEFAULT_WEIGHT_FUNC, - edgeFn || function(v) { return g.outEdges(v); }); -} - -function runDijkstra(g, source, weightFn, edgeFn) { - var results = {}; - var pq = new PriorityQueue(); - var v, vEntry; - - var updateNeighbors = function(edge) { - var w = edge.v !== v ? edge.v : edge.w; - var wEntry = results[w]; - var weight = weightFn(edge); - var distance = vEntry.distance + weight; - - if (weight < 0) { - throw new Error("dijkstra does not allow negative edge weights. " + - "Bad edge: " + edge + " Weight: " + weight); - } + module.exports = dijkstra; - if (distance < wEntry.distance) { - wEntry.distance = distance; - wEntry.predecessor = v; - pq.decrease(w, distance); - } - }; - - g.nodes().forEach(function(v) { - var distance = v === source ? 0 : Number.POSITIVE_INFINITY; - results[v] = { distance: distance }; - pq.add(v, distance); - }); - - while (pq.size() > 0) { - v = pq.removeMin(); - vEntry = results[v]; - if (vEntry.distance === Number.POSITIVE_INFINITY) { - break; - } + var DEFAULT_WEIGHT_FUNC = _.constant(1); - edgeFn(v).forEach(updateNeighbors); - } + function dijkstra(g, source, weightFn, edgeFn) { + return runDijkstra(g, String(source), + weightFn || DEFAULT_WEIGHT_FUNC, + edgeFn || function(v) { return g.outEdges(v); }); + } - return results; -} + function runDijkstra(g, source, weightFn, edgeFn) { + var results = {}; + var pq = new PriorityQueue(); + var v, vEntry; + + var updateNeighbors = function(edge) { + var w = edge.v !== v ? edge.v : edge.w; + var wEntry = results[w]; + var weight = weightFn(edge); + var distance = vEntry.distance + weight; + + if (weight < 0) { + throw new Error("dijkstra does not allow negative edge weights. " + + "Bad edge: " + edge + " Weight: " + weight); + } + + if (distance < wEntry.distance) { + wEntry.distance = distance; + wEntry.predecessor = v; + pq.decrease(w, distance); + } + }; + + g.nodes().forEach(function(v) { + var distance = v === source ? 0 : Number.POSITIVE_INFINITY; + results[v] = { distance: distance }; + pq.add(v, distance); + }); + + while (pq.size() > 0) { + v = pq.removeMin(); + vEntry = results[v]; + if (vEntry.distance === Number.POSITIVE_INFINITY) { + break; + } + + edgeFn(v).forEach(updateNeighbors); + } + + return results; + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/find-cycles.js": -/*!******************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/find-cycles.js": + /*!******************************************************!*\ !*** ./node_modules/graphlib/lib/alg/find-cycles.js ***! \******************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); -var tarjan = __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + var tarjan = __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js"); -module.exports = findCycles; + module.exports = findCycles; -function findCycles(g) { - return _.filter(tarjan(g), function(cmpt) { - return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0])); - }); -} + function findCycles(g) { + return _.filter(tarjan(g), function(cmpt) { + return cmpt.length > 1 || (cmpt.length === 1 && g.hasEdge(cmpt[0], cmpt[0])); + }); + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/floyd-warshall.js": -/*!*********************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/floyd-warshall.js": + /*!*********************************************************!*\ !*** ./node_modules/graphlib/lib/alg/floyd-warshall.js ***! \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); - -module.exports = floydWarshall; - -var DEFAULT_WEIGHT_FUNC = _.constant(1); - -function floydWarshall(g, weightFn, edgeFn) { - return runFloydWarshall(g, - weightFn || DEFAULT_WEIGHT_FUNC, - edgeFn || function(v) { return g.outEdges(v); }); -} - -function runFloydWarshall(g, weightFn, edgeFn) { - var results = {}; - var nodes = g.nodes(); - - nodes.forEach(function(v) { - results[v] = {}; - results[v][v] = { distance: 0 }; - nodes.forEach(function(w) { - if (v !== w) { - results[v][w] = { distance: Number.POSITIVE_INFINITY }; - } - }); - edgeFn(v).forEach(function(edge) { - var w = edge.v === v ? edge.w : edge.v; - var d = weightFn(edge); - results[v][w] = { distance: d, predecessor: v }; - }); - }); - - nodes.forEach(function(k) { - var rowK = results[k]; - nodes.forEach(function(i) { - var rowI = results[i]; - nodes.forEach(function(j) { - var ik = rowI[k]; - var kj = rowK[j]; - var ij = rowI[j]; - var altDistance = ik.distance + kj.distance; - if (altDistance < ij.distance) { - ij.distance = altDistance; - ij.predecessor = kj.predecessor; - } - }); - }); - }); + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { - return results; -} + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + module.exports = floydWarshall; -/***/ }), + var DEFAULT_WEIGHT_FUNC = _.constant(1); -/***/ "./node_modules/graphlib/lib/alg/index.js": -/*!************************************************!*\ + function floydWarshall(g, weightFn, edgeFn) { + return runFloydWarshall(g, + weightFn || DEFAULT_WEIGHT_FUNC, + edgeFn || function(v) { return g.outEdges(v); }); + } + + function runFloydWarshall(g, weightFn, edgeFn) { + var results = {}; + var nodes = g.nodes(); + + nodes.forEach(function(v) { + results[v] = {}; + results[v][v] = { distance: 0 }; + nodes.forEach(function(w) { + if (v !== w) { + results[v][w] = { distance: Number.POSITIVE_INFINITY }; + } + }); + edgeFn(v).forEach(function(edge) { + var w = edge.v === v ? edge.w : edge.v; + var d = weightFn(edge); + results[v][w] = { distance: d, predecessor: v }; + }); + }); + + nodes.forEach(function(k) { + var rowK = results[k]; + nodes.forEach(function(i) { + var rowI = results[i]; + nodes.forEach(function(j) { + var ik = rowI[k]; + var kj = rowK[j]; + var ij = rowI[j]; + var altDistance = ik.distance + kj.distance; + if (altDistance < ij.distance) { + ij.distance = altDistance; + ij.predecessor = kj.predecessor; + } + }); + }); + }); + + return results; + } + + + /***/ }), + + /***/ "./node_modules/graphlib/lib/alg/index.js": + /*!************************************************!*\ !*** ./node_modules/graphlib/lib/alg/index.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -module.exports = { - components: __webpack_require__(/*! ./components */ "./node_modules/graphlib/lib/alg/components.js"), - dijkstra: __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js"), - dijkstraAll: __webpack_require__(/*! ./dijkstra-all */ "./node_modules/graphlib/lib/alg/dijkstra-all.js"), - findCycles: __webpack_require__(/*! ./find-cycles */ "./node_modules/graphlib/lib/alg/find-cycles.js"), - floydWarshall: __webpack_require__(/*! ./floyd-warshall */ "./node_modules/graphlib/lib/alg/floyd-warshall.js"), - isAcyclic: __webpack_require__(/*! ./is-acyclic */ "./node_modules/graphlib/lib/alg/is-acyclic.js"), - postorder: __webpack_require__(/*! ./postorder */ "./node_modules/graphlib/lib/alg/postorder.js"), - preorder: __webpack_require__(/*! ./preorder */ "./node_modules/graphlib/lib/alg/preorder.js"), - prim: __webpack_require__(/*! ./prim */ "./node_modules/graphlib/lib/alg/prim.js"), - tarjan: __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js"), - topsort: __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js") -}; - - -/***/ }), - -/***/ "./node_modules/graphlib/lib/alg/is-acyclic.js": -/*!*****************************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + module.exports = { + components: __webpack_require__(/*! ./components */ "./node_modules/graphlib/lib/alg/components.js"), + dijkstra: __webpack_require__(/*! ./dijkstra */ "./node_modules/graphlib/lib/alg/dijkstra.js"), + dijkstraAll: __webpack_require__(/*! ./dijkstra-all */ "./node_modules/graphlib/lib/alg/dijkstra-all.js"), + findCycles: __webpack_require__(/*! ./find-cycles */ "./node_modules/graphlib/lib/alg/find-cycles.js"), + floydWarshall: __webpack_require__(/*! ./floyd-warshall */ "./node_modules/graphlib/lib/alg/floyd-warshall.js"), + isAcyclic: __webpack_require__(/*! ./is-acyclic */ "./node_modules/graphlib/lib/alg/is-acyclic.js"), + postorder: __webpack_require__(/*! ./postorder */ "./node_modules/graphlib/lib/alg/postorder.js"), + preorder: __webpack_require__(/*! ./preorder */ "./node_modules/graphlib/lib/alg/preorder.js"), + prim: __webpack_require__(/*! ./prim */ "./node_modules/graphlib/lib/alg/prim.js"), + tarjan: __webpack_require__(/*! ./tarjan */ "./node_modules/graphlib/lib/alg/tarjan.js"), + topsort: __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js") + }; + + + /***/ }), + + /***/ "./node_modules/graphlib/lib/alg/is-acyclic.js": + /*!*****************************************************!*\ !*** ./node_modules/graphlib/lib/alg/is-acyclic.js ***! \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var topsort = __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js"); - -module.exports = isAcyclic; - -function isAcyclic(g) { - try { - topsort(g); - } catch (e) { - if (e instanceof topsort.CycleException) { - return false; - } - throw e; - } - return true; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var topsort = __webpack_require__(/*! ./topsort */ "./node_modules/graphlib/lib/alg/topsort.js"); + + module.exports = isAcyclic; + + function isAcyclic(g) { + try { + topsort(g); + } catch (e) { + if (e instanceof topsort.CycleException) { + return false; + } + throw e; + } + return true; + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/postorder.js": -/*!****************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/postorder.js": + /*!****************************************************!*\ !*** ./node_modules/graphlib/lib/alg/postorder.js ***! \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js"); + var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js"); -module.exports = postorder; + module.exports = postorder; -function postorder(g, vs) { - return dfs(g, vs, "post"); -} + function postorder(g, vs) { + return dfs(g, vs, "post"); + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/preorder.js": -/*!***************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/preorder.js": + /*!***************************************************!*\ !*** ./node_modules/graphlib/lib/alg/preorder.js ***! \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js"); + var dfs = __webpack_require__(/*! ./dfs */ "./node_modules/graphlib/lib/alg/dfs.js"); -module.exports = preorder; + module.exports = preorder; -function preorder(g, vs) { - return dfs(g, vs, "pre"); -} + function preorder(g, vs) { + return dfs(g, vs, "pre"); + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/prim.js": -/*!***********************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/prim.js": + /*!***********************************************!*\ !*** ./node_modules/graphlib/lib/alg/prim.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); -var Graph = __webpack_require__(/*! ../graph */ "./node_modules/graphlib/lib/graph.js"); -var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js"); - -module.exports = prim; - -function prim(g, weightFunc) { - var result = new Graph(); - var parents = {}; - var pq = new PriorityQueue(); - var v; - - function updateNeighbors(edge) { - var w = edge.v === v ? edge.w : edge.v; - var pri = pq.priority(w); - if (pri !== undefined) { - var edgeWeight = weightFunc(edge); - if (edgeWeight < pri) { - parents[w] = v; - pq.decrease(w, edgeWeight); - } - } - } - - if (g.nodeCount() === 0) { - return result; - } - - _.each(g.nodes(), function(v) { - pq.add(v, Number.POSITIVE_INFINITY); - result.setNode(v); - }); - - // Start from an arbitrary node - pq.decrease(g.nodes()[0], 0); - - var init = false; - while (pq.size() > 0) { - v = pq.removeMin(); - if (_.has(parents, v)) { - result.setEdge(v, parents[v]); - } else if (init) { - throw new Error("Input graph is not connected: " + g); - } else { - init = true; - } - - g.nodeEdges(v).forEach(updateNeighbors); - } - - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + var Graph = __webpack_require__(/*! ../graph */ "./node_modules/graphlib/lib/graph.js"); + var PriorityQueue = __webpack_require__(/*! ../data/priority-queue */ "./node_modules/graphlib/lib/data/priority-queue.js"); + + module.exports = prim; + + function prim(g, weightFunc) { + var result = new Graph(); + var parents = {}; + var pq = new PriorityQueue(); + var v; + + function updateNeighbors(edge) { + var w = edge.v === v ? edge.w : edge.v; + var pri = pq.priority(w); + if (pri !== undefined) { + var edgeWeight = weightFunc(edge); + if (edgeWeight < pri) { + parents[w] = v; + pq.decrease(w, edgeWeight); + } + } + } + + if (g.nodeCount() === 0) { + return result; + } + + _.each(g.nodes(), function(v) { + pq.add(v, Number.POSITIVE_INFINITY); + result.setNode(v); + }); + + // Start from an arbitrary node + pq.decrease(g.nodes()[0], 0); + + var init = false; + while (pq.size() > 0) { + v = pq.removeMin(); + if (_.has(parents, v)) { + result.setEdge(v, parents[v]); + } else if (init) { + throw new Error("Input graph is not connected: " + g); + } else { + init = true; + } + + g.nodeEdges(v).forEach(updateNeighbors); + } + + return result; + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/tarjan.js": -/*!*************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/tarjan.js": + /*!*************************************************!*\ !*** ./node_modules/graphlib/lib/alg/tarjan.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); - -module.exports = tarjan; - -function tarjan(g) { - var index = 0; - var stack = []; - var visited = {}; // node id -> { onStack, lowlink, index } - var results = []; - - function dfs(v) { - var entry = visited[v] = { - onStack: true, - lowlink: index, - index: index++ - }; - stack.push(v); - - g.successors(v).forEach(function(w) { - if (!_.has(visited, w)) { - dfs(w); - entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink); - } else if (visited[w].onStack) { - entry.lowlink = Math.min(entry.lowlink, visited[w].index); - } - }); - - if (entry.lowlink === entry.index) { - var cmpt = []; - var w; - do { - w = stack.pop(); - visited[w].onStack = false; - cmpt.push(w); - } while (v !== w); - results.push(cmpt); - } - } - - g.nodes().forEach(function(v) { - if (!_.has(visited, v)) { - dfs(v); - } - }); - - return results; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + + module.exports = tarjan; + + function tarjan(g) { + var index = 0; + var stack = []; + var visited = {}; // node id -> { onStack, lowlink, index } + var results = []; + + function dfs(v) { + var entry = visited[v] = { + onStack: true, + lowlink: index, + index: index++ + }; + stack.push(v); + + g.successors(v).forEach(function(w) { + if (!_.has(visited, w)) { + dfs(w); + entry.lowlink = Math.min(entry.lowlink, visited[w].lowlink); + } else if (visited[w].onStack) { + entry.lowlink = Math.min(entry.lowlink, visited[w].index); + } + }); + + if (entry.lowlink === entry.index) { + var cmpt = []; + var w; + do { + w = stack.pop(); + visited[w].onStack = false; + cmpt.push(w); + } while (v !== w); + results.push(cmpt); + } + } + + g.nodes().forEach(function(v) { + if (!_.has(visited, v)) { + dfs(v); + } + }); + + return results; + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/alg/topsort.js": -/*!**************************************************!*\ + /***/ "./node_modules/graphlib/lib/alg/topsort.js": + /*!**************************************************!*\ !*** ./node_modules/graphlib/lib/alg/topsort.js ***! \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); -module.exports = topsort; -topsort.CycleException = CycleException; + module.exports = topsort; + topsort.CycleException = CycleException; -function topsort(g) { - var visited = {}; - var stack = {}; - var results = []; + function topsort(g) { + var visited = {}; + var stack = {}; + var results = []; - function visit(node) { - if (_.has(stack, node)) { - throw new CycleException(); - } + function visit(node) { + if (_.has(stack, node)) { + throw new CycleException(); + } - if (!_.has(visited, node)) { - stack[node] = true; - visited[node] = true; - _.each(g.predecessors(node), visit); - delete stack[node]; - results.push(node); - } - } + if (!_.has(visited, node)) { + stack[node] = true; + visited[node] = true; + _.each(g.predecessors(node), visit); + delete stack[node]; + results.push(node); + } + } - _.each(g.sinks(), visit); + _.each(g.sinks(), visit); - if (_.size(visited) !== g.nodeCount()) { - throw new CycleException(); - } + if (_.size(visited) !== g.nodeCount()) { + throw new CycleException(); + } - return results; -} + return results; + } -function CycleException() {} -CycleException.prototype = new Error(); // must be an instance of Error to pass testing + function CycleException() {} + CycleException.prototype = new Error(); // must be an instance of Error to pass testing -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/data/priority-queue.js": -/*!**********************************************************!*\ + /***/ "./node_modules/graphlib/lib/data/priority-queue.js": + /*!**********************************************************!*\ !*** ./node_modules/graphlib/lib/data/priority-queue.js ***! \**********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); - -module.exports = PriorityQueue; - -/** - * A min-priority queue data structure. This algorithm is derived from Cormen, - * et al., "Introduction to Algorithms". The basic idea of a min-priority - * queue is that you can efficiently (in O(1) time) get the smallest key in - * the queue. Adding and removing elements takes O(log n) time. A key can - * have its priority decreased in O(log n) time. - */ -function PriorityQueue() { - this._arr = []; - this._keyIndices = {}; -} - -/** - * Returns the number of elements in the queue. Takes `O(1)` time. - */ -PriorityQueue.prototype.size = function() { - return this._arr.length; -}; - -/** - * Returns the keys that are in the queue. Takes `O(n)` time. - */ -PriorityQueue.prototype.keys = function() { - return this._arr.map(function(x) { return x.key; }); -}; - -/** - * Returns `true` if **key** is in the queue and `false` if not. - */ -PriorityQueue.prototype.has = function(key) { - return _.has(this._keyIndices, key); -}; - -/** - * Returns the priority for **key**. If **key** is not present in the queue - * then this function returns `undefined`. Takes `O(1)` time. - * - * @param {Object} key - */ -PriorityQueue.prototype.priority = function(key) { - var index = this._keyIndices[key]; - if (index !== undefined) { - return this._arr[index].priority; - } -}; - -/** - * Returns the key for the minimum element in this queue. If the queue is - * empty this function throws an Error. Takes `O(1)` time. - */ -PriorityQueue.prototype.min = function() { - if (this.size() === 0) { - throw new Error("Queue underflow"); - } - return this._arr[0].key; -}; - -/** - * Inserts a new key into the priority queue. If the key already exists in - * the queue this function returns `false`; otherwise it will return `true`. - * Takes `O(n)` time. - * - * @param {Object} key the key to add - * @param {Number} priority the initial priority for the key - */ -PriorityQueue.prototype.add = function(key, priority) { - var keyIndices = this._keyIndices; - key = String(key); - if (!_.has(keyIndices, key)) { - var arr = this._arr; - var index = arr.length; - keyIndices[key] = index; - arr.push({key: key, priority: priority}); - this._decrease(index); - return true; - } - return false; -}; - -/** - * Removes and returns the smallest key in the queue. Takes `O(log n)` time. - */ -PriorityQueue.prototype.removeMin = function() { - this._swap(0, this._arr.length - 1); - var min = this._arr.pop(); - delete this._keyIndices[min.key]; - this._heapify(0); - return min.key; -}; - -/** - * Decreases the priority for **key** to **priority**. If the new priority is - * greater than the previous priority, this function will throw an Error. - * - * @param {Object} key the key for which to raise priority - * @param {Number} priority the new priority for the key - */ -PriorityQueue.prototype.decrease = function(key, priority) { - var index = this._keyIndices[key]; - if (priority > this._arr[index].priority) { - throw new Error("New priority is greater than current priority. " + - "Key: " + key + " Old: " + this._arr[index].priority + " New: " + priority); - } - this._arr[index].priority = priority; - this._decrease(index); -}; - -PriorityQueue.prototype._heapify = function(i) { - var arr = this._arr; - var l = 2 * i; - var r = l + 1; - var largest = i; - if (l < arr.length) { - largest = arr[l].priority < arr[largest].priority ? l : largest; - if (r < arr.length) { - largest = arr[r].priority < arr[largest].priority ? r : largest; - } - if (largest !== i) { - this._swap(i, largest); - this._heapify(largest); - } - } -}; - -PriorityQueue.prototype._decrease = function(index) { - var arr = this._arr; - var priority = arr[index].priority; - var parent; - while (index !== 0) { - parent = index >> 1; - if (arr[parent].priority < priority) { - break; - } - this._swap(index, parent); - index = parent; - } -}; - -PriorityQueue.prototype._swap = function(i, j) { - var arr = this._arr; - var keyIndices = this._keyIndices; - var origArrI = arr[i]; - var origArrJ = arr[j]; - arr[i] = origArrJ; - arr[j] = origArrI; - keyIndices[origArrJ.key] = i; - keyIndices[origArrI.key] = j; -}; - - -/***/ }), + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ../lodash */ "./node_modules/graphlib/lib/lodash.js"); + + module.exports = PriorityQueue; + + /** + * A min-priority queue data structure. This algorithm is derived from Cormen, + * et al., "Introduction to Algorithms". The basic idea of a min-priority + * queue is that you can efficiently (in O(1) time) get the smallest key in + * the queue. Adding and removing elements takes O(log n) time. A key can + * have its priority decreased in O(log n) time. + */ + function PriorityQueue() { + this._arr = []; + this._keyIndices = {}; + } -/***/ "./node_modules/graphlib/lib/graph.js": -/*!********************************************!*\ + /** + * Returns the number of elements in the queue. Takes `O(1)` time. + */ + PriorityQueue.prototype.size = function() { + return this._arr.length; + }; + + /** + * Returns the keys that are in the queue. Takes `O(n)` time. + */ + PriorityQueue.prototype.keys = function() { + return this._arr.map(function(x) { return x.key; }); + }; + + /** + * Returns `true` if **key** is in the queue and `false` if not. + */ + PriorityQueue.prototype.has = function(key) { + return _.has(this._keyIndices, key); + }; + + /** + * Returns the priority for **key**. If **key** is not present in the queue + * then this function returns `undefined`. Takes `O(1)` time. + * + * @param {Object} key + */ + PriorityQueue.prototype.priority = function(key) { + var index = this._keyIndices[key]; + if (index !== undefined) { + return this._arr[index].priority; + } + }; + + /** + * Returns the key for the minimum element in this queue. If the queue is + * empty this function throws an Error. Takes `O(1)` time. + */ + PriorityQueue.prototype.min = function() { + if (this.size() === 0) { + throw new Error("Queue underflow"); + } + return this._arr[0].key; + }; + + /** + * Inserts a new key into the priority queue. If the key already exists in + * the queue this function returns `false`; otherwise it will return `true`. + * Takes `O(n)` time. + * + * @param {Object} key the key to add + * @param {Number} priority the initial priority for the key + */ + PriorityQueue.prototype.add = function(key, priority) { + var keyIndices = this._keyIndices; + key = String(key); + if (!_.has(keyIndices, key)) { + var arr = this._arr; + var index = arr.length; + keyIndices[key] = index; + arr.push({key: key, priority: priority}); + this._decrease(index); + return true; + } + return false; + }; + + /** + * Removes and returns the smallest key in the queue. Takes `O(log n)` time. + */ + PriorityQueue.prototype.removeMin = function() { + this._swap(0, this._arr.length - 1); + var min = this._arr.pop(); + delete this._keyIndices[min.key]; + this._heapify(0); + return min.key; + }; + + /** + * Decreases the priority for **key** to **priority**. If the new priority is + * greater than the previous priority, this function will throw an Error. + * + * @param {Object} key the key for which to raise priority + * @param {Number} priority the new priority for the key + */ + PriorityQueue.prototype.decrease = function(key, priority) { + var index = this._keyIndices[key]; + if (priority > this._arr[index].priority) { + throw new Error("New priority is greater than current priority. " + + "Key: " + key + " Old: " + this._arr[index].priority + " New: " + priority); + } + this._arr[index].priority = priority; + this._decrease(index); + }; + + PriorityQueue.prototype._heapify = function(i) { + var arr = this._arr; + var l = 2 * i; + var r = l + 1; + var largest = i; + if (l < arr.length) { + largest = arr[l].priority < arr[largest].priority ? l : largest; + if (r < arr.length) { + largest = arr[r].priority < arr[largest].priority ? r : largest; + } + if (largest !== i) { + this._swap(i, largest); + this._heapify(largest); + } + } + }; + + PriorityQueue.prototype._decrease = function(index) { + var arr = this._arr; + var priority = arr[index].priority; + var parent; + while (index !== 0) { + parent = index >> 1; + if (arr[parent].priority < priority) { + break; + } + this._swap(index, parent); + index = parent; + } + }; + + PriorityQueue.prototype._swap = function(i, j) { + var arr = this._arr; + var keyIndices = this._keyIndices; + var origArrI = arr[i]; + var origArrJ = arr[j]; + arr[i] = origArrJ; + arr[j] = origArrI; + keyIndices[origArrJ.key] = i; + keyIndices[origArrI.key] = j; + }; + + + /***/ }), + + /***/ "./node_modules/graphlib/lib/graph.js": + /*!********************************************!*\ !*** ./node_modules/graphlib/lib/graph.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -"use strict"; + "use strict"; -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js"); + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js"); -module.exports = Graph; + module.exports = Graph; -var DEFAULT_EDGE_NAME = "\x00"; -var GRAPH_NODE = "\x00"; -var EDGE_KEY_DELIM = "\x01"; + var DEFAULT_EDGE_NAME = "\x00"; + var GRAPH_NODE = "\x00"; + var EDGE_KEY_DELIM = "\x01"; // Implementation notes: // @@ -4077,10491 +4077,10491 @@ var EDGE_KEY_DELIM = "\x01"; // edges up and, object properties, which have string keys, are the closest // we're going to get to a performant hashtable in JavaScript. -function Graph(opts) { - this._isDirected = _.has(opts, "directed") ? opts.directed : true; - this._isMultigraph = _.has(opts, "multigraph") ? opts.multigraph : false; - this._isCompound = _.has(opts, "compound") ? opts.compound : false; + function Graph(opts) { + this._isDirected = _.has(opts, "directed") ? opts.directed : true; + this._isMultigraph = _.has(opts, "multigraph") ? opts.multigraph : false; + this._isCompound = _.has(opts, "compound") ? opts.compound : false; - // Label for the graph itself - this._label = undefined; + // Label for the graph itself + this._label = undefined; - // Defaults to be set when creating a new node - this._defaultNodeLabelFn = _.constant(undefined); + // Defaults to be set when creating a new node + this._defaultNodeLabelFn = _.constant(undefined); - // Defaults to be set when creating a new edge - this._defaultEdgeLabelFn = _.constant(undefined); + // Defaults to be set when creating a new edge + this._defaultEdgeLabelFn = _.constant(undefined); - // v -> label - this._nodes = {}; + // v -> label + this._nodes = {}; - if (this._isCompound) { - // v -> parent - this._parent = {}; + if (this._isCompound) { + // v -> parent + this._parent = {}; - // v -> children - this._children = {}; - this._children[GRAPH_NODE] = {}; - } + // v -> children + this._children = {}; + this._children[GRAPH_NODE] = {}; + } - // v -> edgeObj - this._in = {}; + // v -> edgeObj + this._in = {}; - // u -> v -> Number - this._preds = {}; + // u -> v -> Number + this._preds = {}; - // v -> edgeObj - this._out = {}; + // v -> edgeObj + this._out = {}; - // v -> w -> Number - this._sucs = {}; + // v -> w -> Number + this._sucs = {}; - // e -> edgeObj - this._edgeObjs = {}; + // e -> edgeObj + this._edgeObjs = {}; - // e -> label - this._edgeLabels = {}; -} + // e -> label + this._edgeLabels = {}; + } -/* Number of nodes in the graph. Should only be changed by the implementation. */ -Graph.prototype._nodeCount = 0; + /* Number of nodes in the graph. Should only be changed by the implementation. */ + Graph.prototype._nodeCount = 0; + + /* Number of edges in the graph. Should only be changed by the implementation. */ + Graph.prototype._edgeCount = 0; + + + /* === Graph functions ========= */ + + Graph.prototype.isDirected = function() { + return this._isDirected; + }; + + Graph.prototype.isMultigraph = function() { + return this._isMultigraph; + }; + + Graph.prototype.isCompound = function() { + return this._isCompound; + }; + + Graph.prototype.setGraph = function(label) { + this._label = label; + return this; + }; + + Graph.prototype.graph = function() { + return this._label; + }; + + + /* === Node functions ========== */ + + Graph.prototype.setDefaultNodeLabel = function(newDefault) { + if (!_.isFunction(newDefault)) { + newDefault = _.constant(newDefault); + } + this._defaultNodeLabelFn = newDefault; + return this; + }; + + Graph.prototype.nodeCount = function() { + return this._nodeCount; + }; + + Graph.prototype.nodes = function() { + return _.keys(this._nodes); + }; + + Graph.prototype.sources = function() { + var self = this; + return _.filter(this.nodes(), function(v) { + return _.isEmpty(self._in[v]); + }); + }; + + Graph.prototype.sinks = function() { + var self = this; + return _.filter(this.nodes(), function(v) { + return _.isEmpty(self._out[v]); + }); + }; + + Graph.prototype.setNodes = function(vs, value) { + var args = arguments; + var self = this; + _.each(vs, function(v) { + if (args.length > 1) { + self.setNode(v, value); + } else { + self.setNode(v); + } + }); + return this; + }; + + Graph.prototype.setNode = function(v, value) { + if (_.has(this._nodes, v)) { + if (arguments.length > 1) { + this._nodes[v] = value; + } + return this; + } + + this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v); + if (this._isCompound) { + this._parent[v] = GRAPH_NODE; + this._children[v] = {}; + this._children[GRAPH_NODE][v] = true; + } + this._in[v] = {}; + this._preds[v] = {}; + this._out[v] = {}; + this._sucs[v] = {}; + ++this._nodeCount; + return this; + }; + + Graph.prototype.node = function(v) { + return this._nodes[v]; + }; + + Graph.prototype.hasNode = function(v) { + return _.has(this._nodes, v); + }; + + Graph.prototype.removeNode = function(v) { + var self = this; + if (_.has(this._nodes, v)) { + var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); }; + delete this._nodes[v]; + if (this._isCompound) { + this._removeFromParentsChildList(v); + delete this._parent[v]; + _.each(this.children(v), function(child) { + self.setParent(child); + }); + delete this._children[v]; + } + _.each(_.keys(this._in[v]), removeEdge); + delete this._in[v]; + delete this._preds[v]; + _.each(_.keys(this._out[v]), removeEdge); + delete this._out[v]; + delete this._sucs[v]; + --this._nodeCount; + } + return this; + }; + + Graph.prototype.setParent = function(v, parent) { + if (!this._isCompound) { + throw new Error("Cannot set parent in a non-compound graph"); + } + + if (_.isUndefined(parent)) { + parent = GRAPH_NODE; + } else { + // Coerce parent to string + parent += ""; + for (var ancestor = parent; + !_.isUndefined(ancestor); + ancestor = this.parent(ancestor)) { + if (ancestor === v) { + throw new Error("Setting " + parent+ " as parent of " + v + + " would create a cycle"); + } + } + + this.setNode(parent); + } + + this.setNode(v); + this._removeFromParentsChildList(v); + this._parent[v] = parent; + this._children[parent][v] = true; + return this; + }; + + Graph.prototype._removeFromParentsChildList = function(v) { + delete this._children[this._parent[v]][v]; + }; + + Graph.prototype.parent = function(v) { + if (this._isCompound) { + var parent = this._parent[v]; + if (parent !== GRAPH_NODE) { + return parent; + } + } + }; + + Graph.prototype.children = function(v) { + if (_.isUndefined(v)) { + v = GRAPH_NODE; + } + + if (this._isCompound) { + var children = this._children[v]; + if (children) { + return _.keys(children); + } + } else if (v === GRAPH_NODE) { + return this.nodes(); + } else if (this.hasNode(v)) { + return []; + } + }; + + Graph.prototype.predecessors = function(v) { + var predsV = this._preds[v]; + if (predsV) { + return _.keys(predsV); + } + }; + + Graph.prototype.successors = function(v) { + var sucsV = this._sucs[v]; + if (sucsV) { + return _.keys(sucsV); + } + }; + + Graph.prototype.neighbors = function(v) { + var preds = this.predecessors(v); + if (preds) { + return _.union(preds, this.successors(v)); + } + }; + + Graph.prototype.isLeaf = function (v) { + var neighbors; + if (this.isDirected()) { + neighbors = this.successors(v); + } else { + neighbors = this.neighbors(v); + } + return neighbors.length === 0; + }; + + Graph.prototype.filterNodes = function(filter) { + var copy = new this.constructor({ + directed: this._isDirected, + multigraph: this._isMultigraph, + compound: this._isCompound + }); + + copy.setGraph(this.graph()); + + var self = this; + _.each(this._nodes, function(value, v) { + if (filter(v)) { + copy.setNode(v, value); + } + }); + + _.each(this._edgeObjs, function(e) { + if (copy.hasNode(e.v) && copy.hasNode(e.w)) { + copy.setEdge(e, self.edge(e)); + } + }); + + var parents = {}; + function findParent(v) { + var parent = self.parent(v); + if (parent === undefined || copy.hasNode(parent)) { + parents[v] = parent; + return parent; + } else if (parent in parents) { + return parents[parent]; + } else { + return findParent(parent); + } + } + + if (this._isCompound) { + _.each(copy.nodes(), function(v) { + copy.setParent(v, findParent(v)); + }); + } + + return copy; + }; + + /* === Edge functions ========== */ + + Graph.prototype.setDefaultEdgeLabel = function(newDefault) { + if (!_.isFunction(newDefault)) { + newDefault = _.constant(newDefault); + } + this._defaultEdgeLabelFn = newDefault; + return this; + }; + + Graph.prototype.edgeCount = function() { + return this._edgeCount; + }; + + Graph.prototype.edges = function() { + return _.values(this._edgeObjs); + }; + + Graph.prototype.setPath = function(vs, value) { + var self = this; + var args = arguments; + _.reduce(vs, function(v, w) { + if (args.length > 1) { + self.setEdge(v, w, value); + } else { + self.setEdge(v, w); + } + return w; + }); + return this; + }; + + /* + * setEdge(v, w, [value, [name]]) + * setEdge({ v, w, [name] }, [value]) + */ + Graph.prototype.setEdge = function() { + var v, w, name, value; + var valueSpecified = false; + var arg0 = arguments[0]; + + if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) { + v = arg0.v; + w = arg0.w; + name = arg0.name; + if (arguments.length === 2) { + value = arguments[1]; + valueSpecified = true; + } + } else { + v = arg0; + w = arguments[1]; + name = arguments[3]; + if (arguments.length > 2) { + value = arguments[2]; + valueSpecified = true; + } + } + + v = "" + v; + w = "" + w; + if (!_.isUndefined(name)) { + name = "" + name; + } + + var e = edgeArgsToId(this._isDirected, v, w, name); + if (_.has(this._edgeLabels, e)) { + if (valueSpecified) { + this._edgeLabels[e] = value; + } + return this; + } + + if (!_.isUndefined(name) && !this._isMultigraph) { + throw new Error("Cannot set a named edge when isMultigraph = false"); + } + + // It didn't exist, so we need to create it. + // First ensure the nodes exist. + this.setNode(v); + this.setNode(w); + + this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name); + + var edgeObj = edgeArgsToObj(this._isDirected, v, w, name); + // Ensure we add undirected edges in a consistent way. + v = edgeObj.v; + w = edgeObj.w; + + Object.freeze(edgeObj); + this._edgeObjs[e] = edgeObj; + incrementOrInitEntry(this._preds[w], v); + incrementOrInitEntry(this._sucs[v], w); + this._in[w][e] = edgeObj; + this._out[v][e] = edgeObj; + this._edgeCount++; + return this; + }; + + Graph.prototype.edge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + return this._edgeLabels[e]; + }; + + Graph.prototype.hasEdge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + return _.has(this._edgeLabels, e); + }; + + Graph.prototype.removeEdge = function(v, w, name) { + var e = (arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name)); + var edge = this._edgeObjs[e]; + if (edge) { + v = edge.v; + w = edge.w; + delete this._edgeLabels[e]; + delete this._edgeObjs[e]; + decrementOrRemoveEntry(this._preds[w], v); + decrementOrRemoveEntry(this._sucs[v], w); + delete this._in[w][e]; + delete this._out[v][e]; + this._edgeCount--; + } + return this; + }; + + Graph.prototype.inEdges = function(v, u) { + var inV = this._in[v]; + if (inV) { + var edges = _.values(inV); + if (!u) { + return edges; + } + return _.filter(edges, function(edge) { return edge.v === u; }); + } + }; + + Graph.prototype.outEdges = function(v, w) { + var outV = this._out[v]; + if (outV) { + var edges = _.values(outV); + if (!w) { + return edges; + } + return _.filter(edges, function(edge) { return edge.w === w; }); + } + }; + + Graph.prototype.nodeEdges = function(v, w) { + var inEdges = this.inEdges(v, w); + if (inEdges) { + return inEdges.concat(this.outEdges(v, w)); + } + }; + + function incrementOrInitEntry(map, k) { + if (map[k]) { + map[k]++; + } else { + map[k] = 1; + } + } -/* Number of edges in the graph. Should only be changed by the implementation. */ -Graph.prototype._edgeCount = 0; + function decrementOrRemoveEntry(map, k) { + if (!--map[k]) { delete map[k]; } + } + function edgeArgsToId(isDirected, v_, w_, name) { + var v = "" + v_; + var w = "" + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + + (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name); + } -/* === Graph functions ========= */ + function edgeArgsToObj(isDirected, v_, w_, name) { + var v = "" + v_; + var w = "" + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + var edgeObj = { v: v, w: w }; + if (name) { + edgeObj.name = name; + } + return edgeObj; + } -Graph.prototype.isDirected = function() { - return this._isDirected; -}; + function edgeObjToId(isDirected, edgeObj) { + return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name); + } -Graph.prototype.isMultigraph = function() { - return this._isMultigraph; -}; -Graph.prototype.isCompound = function() { - return this._isCompound; -}; + /***/ }), -Graph.prototype.setGraph = function(label) { - this._label = label; - return this; -}; + /***/ "./node_modules/graphlib/lib/index.js": + /*!********************************************!*\ + !*** ./node_modules/graphlib/lib/index.js ***! + \********************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -Graph.prototype.graph = function() { - return this._label; -}; +// Includes only the "core" of graphlib + module.exports = { + Graph: __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js"), + version: __webpack_require__(/*! ./version */ "./node_modules/graphlib/lib/version.js") + }; -/* === Node functions ========== */ + /***/ }), -Graph.prototype.setDefaultNodeLabel = function(newDefault) { - if (!_.isFunction(newDefault)) { - newDefault = _.constant(newDefault); - } - this._defaultNodeLabelFn = newDefault; - return this; -}; - -Graph.prototype.nodeCount = function() { - return this._nodeCount; -}; - -Graph.prototype.nodes = function() { - return _.keys(this._nodes); -}; - -Graph.prototype.sources = function() { - var self = this; - return _.filter(this.nodes(), function(v) { - return _.isEmpty(self._in[v]); - }); -}; - -Graph.prototype.sinks = function() { - var self = this; - return _.filter(this.nodes(), function(v) { - return _.isEmpty(self._out[v]); - }); -}; - -Graph.prototype.setNodes = function(vs, value) { - var args = arguments; - var self = this; - _.each(vs, function(v) { - if (args.length > 1) { - self.setNode(v, value); - } else { - self.setNode(v); - } - }); - return this; -}; - -Graph.prototype.setNode = function(v, value) { - if (_.has(this._nodes, v)) { - if (arguments.length > 1) { - this._nodes[v] = value; - } - return this; - } + /***/ "./node_modules/graphlib/lib/json.js": + /*!*******************************************!*\ + !*** ./node_modules/graphlib/lib/json.js ***! + \*******************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js"); + var Graph = __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js"); + + module.exports = { + write: write, + read: read + }; + + function write(g) { + var json = { + options: { + directed: g.isDirected(), + multigraph: g.isMultigraph(), + compound: g.isCompound() + }, + nodes: writeNodes(g), + edges: writeEdges(g) + }; + if (!_.isUndefined(g.graph())) { + json.value = _.clone(g.graph()); + } + return json; + } - this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v); - if (this._isCompound) { - this._parent[v] = GRAPH_NODE; - this._children[v] = {}; - this._children[GRAPH_NODE][v] = true; - } - this._in[v] = {}; - this._preds[v] = {}; - this._out[v] = {}; - this._sucs[v] = {}; - ++this._nodeCount; - return this; -}; - -Graph.prototype.node = function(v) { - return this._nodes[v]; -}; - -Graph.prototype.hasNode = function(v) { - return _.has(this._nodes, v); -}; - -Graph.prototype.removeNode = function(v) { - var self = this; - if (_.has(this._nodes, v)) { - var removeEdge = function(e) { self.removeEdge(self._edgeObjs[e]); }; - delete this._nodes[v]; - if (this._isCompound) { - this._removeFromParentsChildList(v); - delete this._parent[v]; - _.each(this.children(v), function(child) { - self.setParent(child); - }); - delete this._children[v]; - } - _.each(_.keys(this._in[v]), removeEdge); - delete this._in[v]; - delete this._preds[v]; - _.each(_.keys(this._out[v]), removeEdge); - delete this._out[v]; - delete this._sucs[v]; - --this._nodeCount; - } - return this; -}; + function writeNodes(g) { + return _.map(g.nodes(), function(v) { + var nodeValue = g.node(v); + var parent = g.parent(v); + var node = { v: v }; + if (!_.isUndefined(nodeValue)) { + node.value = nodeValue; + } + if (!_.isUndefined(parent)) { + node.parent = parent; + } + return node; + }); + } -Graph.prototype.setParent = function(v, parent) { - if (!this._isCompound) { - throw new Error("Cannot set parent in a non-compound graph"); - } + function writeEdges(g) { + return _.map(g.edges(), function(e) { + var edgeValue = g.edge(e); + var edge = { v: e.v, w: e.w }; + if (!_.isUndefined(e.name)) { + edge.name = e.name; + } + if (!_.isUndefined(edgeValue)) { + edge.value = edgeValue; + } + return edge; + }); + } - if (_.isUndefined(parent)) { - parent = GRAPH_NODE; - } else { - // Coerce parent to string - parent += ""; - for (var ancestor = parent; - !_.isUndefined(ancestor); - ancestor = this.parent(ancestor)) { - if (ancestor === v) { - throw new Error("Setting " + parent+ " as parent of " + v + - " would create a cycle"); - } - } - - this.setNode(parent); - } - - this.setNode(v); - this._removeFromParentsChildList(v); - this._parent[v] = parent; - this._children[parent][v] = true; - return this; -}; - -Graph.prototype._removeFromParentsChildList = function(v) { - delete this._children[this._parent[v]][v]; -}; - -Graph.prototype.parent = function(v) { - if (this._isCompound) { - var parent = this._parent[v]; - if (parent !== GRAPH_NODE) { - return parent; - } - } -}; - -Graph.prototype.children = function(v) { - if (_.isUndefined(v)) { - v = GRAPH_NODE; - } - - if (this._isCompound) { - var children = this._children[v]; - if (children) { - return _.keys(children); - } - } else if (v === GRAPH_NODE) { - return this.nodes(); - } else if (this.hasNode(v)) { - return []; - } -}; - -Graph.prototype.predecessors = function(v) { - var predsV = this._preds[v]; - if (predsV) { - return _.keys(predsV); - } -}; - -Graph.prototype.successors = function(v) { - var sucsV = this._sucs[v]; - if (sucsV) { - return _.keys(sucsV); - } -}; - -Graph.prototype.neighbors = function(v) { - var preds = this.predecessors(v); - if (preds) { - return _.union(preds, this.successors(v)); - } -}; - -Graph.prototype.isLeaf = function (v) { - var neighbors; - if (this.isDirected()) { - neighbors = this.successors(v); - } else { - neighbors = this.neighbors(v); - } - return neighbors.length === 0; -}; - -Graph.prototype.filterNodes = function(filter) { - var copy = new this.constructor({ - directed: this._isDirected, - multigraph: this._isMultigraph, - compound: this._isCompound - }); - - copy.setGraph(this.graph()); - - var self = this; - _.each(this._nodes, function(value, v) { - if (filter(v)) { - copy.setNode(v, value); - } - }); - - _.each(this._edgeObjs, function(e) { - if (copy.hasNode(e.v) && copy.hasNode(e.w)) { - copy.setEdge(e, self.edge(e)); - } - }); - - var parents = {}; - function findParent(v) { - var parent = self.parent(v); - if (parent === undefined || copy.hasNode(parent)) { - parents[v] = parent; - return parent; - } else if (parent in parents) { - return parents[parent]; - } else { - return findParent(parent); - } - } - - if (this._isCompound) { - _.each(copy.nodes(), function(v) { - copy.setParent(v, findParent(v)); - }); - } - - return copy; -}; - -/* === Edge functions ========== */ - -Graph.prototype.setDefaultEdgeLabel = function(newDefault) { - if (!_.isFunction(newDefault)) { - newDefault = _.constant(newDefault); - } - this._defaultEdgeLabelFn = newDefault; - return this; -}; - -Graph.prototype.edgeCount = function() { - return this._edgeCount; -}; - -Graph.prototype.edges = function() { - return _.values(this._edgeObjs); -}; - -Graph.prototype.setPath = function(vs, value) { - var self = this; - var args = arguments; - _.reduce(vs, function(v, w) { - if (args.length > 1) { - self.setEdge(v, w, value); - } else { - self.setEdge(v, w); - } - return w; - }); - return this; -}; - -/* - * setEdge(v, w, [value, [name]]) - * setEdge({ v, w, [name] }, [value]) - */ -Graph.prototype.setEdge = function() { - var v, w, name, value; - var valueSpecified = false; - var arg0 = arguments[0]; - - if (typeof arg0 === "object" && arg0 !== null && "v" in arg0) { - v = arg0.v; - w = arg0.w; - name = arg0.name; - if (arguments.length === 2) { - value = arguments[1]; - valueSpecified = true; - } - } else { - v = arg0; - w = arguments[1]; - name = arguments[3]; - if (arguments.length > 2) { - value = arguments[2]; - valueSpecified = true; - } - } - - v = "" + v; - w = "" + w; - if (!_.isUndefined(name)) { - name = "" + name; - } - - var e = edgeArgsToId(this._isDirected, v, w, name); - if (_.has(this._edgeLabels, e)) { - if (valueSpecified) { - this._edgeLabels[e] = value; - } - return this; - } - - if (!_.isUndefined(name) && !this._isMultigraph) { - throw new Error("Cannot set a named edge when isMultigraph = false"); - } - - // It didn't exist, so we need to create it. - // First ensure the nodes exist. - this.setNode(v); - this.setNode(w); - - this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name); - - var edgeObj = edgeArgsToObj(this._isDirected, v, w, name); - // Ensure we add undirected edges in a consistent way. - v = edgeObj.v; - w = edgeObj.w; - - Object.freeze(edgeObj); - this._edgeObjs[e] = edgeObj; - incrementOrInitEntry(this._preds[w], v); - incrementOrInitEntry(this._sucs[v], w); - this._in[w][e] = edgeObj; - this._out[v][e] = edgeObj; - this._edgeCount++; - return this; -}; - -Graph.prototype.edge = function(v, w, name) { - var e = (arguments.length === 1 - ? edgeObjToId(this._isDirected, arguments[0]) - : edgeArgsToId(this._isDirected, v, w, name)); - return this._edgeLabels[e]; -}; - -Graph.prototype.hasEdge = function(v, w, name) { - var e = (arguments.length === 1 - ? edgeObjToId(this._isDirected, arguments[0]) - : edgeArgsToId(this._isDirected, v, w, name)); - return _.has(this._edgeLabels, e); -}; - -Graph.prototype.removeEdge = function(v, w, name) { - var e = (arguments.length === 1 - ? edgeObjToId(this._isDirected, arguments[0]) - : edgeArgsToId(this._isDirected, v, w, name)); - var edge = this._edgeObjs[e]; - if (edge) { - v = edge.v; - w = edge.w; - delete this._edgeLabels[e]; - delete this._edgeObjs[e]; - decrementOrRemoveEntry(this._preds[w], v); - decrementOrRemoveEntry(this._sucs[v], w); - delete this._in[w][e]; - delete this._out[v][e]; - this._edgeCount--; - } - return this; -}; - -Graph.prototype.inEdges = function(v, u) { - var inV = this._in[v]; - if (inV) { - var edges = _.values(inV); - if (!u) { - return edges; - } - return _.filter(edges, function(edge) { return edge.v === u; }); - } -}; - -Graph.prototype.outEdges = function(v, w) { - var outV = this._out[v]; - if (outV) { - var edges = _.values(outV); - if (!w) { - return edges; - } - return _.filter(edges, function(edge) { return edge.w === w; }); - } -}; - -Graph.prototype.nodeEdges = function(v, w) { - var inEdges = this.inEdges(v, w); - if (inEdges) { - return inEdges.concat(this.outEdges(v, w)); - } -}; - -function incrementOrInitEntry(map, k) { - if (map[k]) { - map[k]++; - } else { - map[k] = 1; - } -} - -function decrementOrRemoveEntry(map, k) { - if (!--map[k]) { delete map[k]; } -} - -function edgeArgsToId(isDirected, v_, w_, name) { - var v = "" + v_; - var w = "" + w_; - if (!isDirected && v > w) { - var tmp = v; - v = w; - w = tmp; - } - return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + - (_.isUndefined(name) ? DEFAULT_EDGE_NAME : name); -} - -function edgeArgsToObj(isDirected, v_, w_, name) { - var v = "" + v_; - var w = "" + w_; - if (!isDirected && v > w) { - var tmp = v; - v = w; - w = tmp; - } - var edgeObj = { v: v, w: w }; - if (name) { - edgeObj.name = name; - } - return edgeObj; -} - -function edgeObjToId(isDirected, edgeObj) { - return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name); -} - - -/***/ }), - -/***/ "./node_modules/graphlib/lib/index.js": -/*!********************************************!*\ - !*** ./node_modules/graphlib/lib/index.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -// Includes only the "core" of graphlib -module.exports = { - Graph: __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js"), - version: __webpack_require__(/*! ./version */ "./node_modules/graphlib/lib/version.js") -}; + function read(json) { + var g = new Graph(json.options).setGraph(json.value); + _.each(json.nodes, function(entry) { + g.setNode(entry.v, entry.value); + if (entry.parent) { + g.setParent(entry.v, entry.parent); + } + }); + _.each(json.edges, function(entry) { + g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value); + }); + return g; + } -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/json.js": -/*!*******************************************!*\ - !*** ./node_modules/graphlib/lib/json.js ***! - \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var _ = __webpack_require__(/*! ./lodash */ "./node_modules/graphlib/lib/lodash.js"); -var Graph = __webpack_require__(/*! ./graph */ "./node_modules/graphlib/lib/graph.js"); - -module.exports = { - write: write, - read: read -}; - -function write(g) { - var json = { - options: { - directed: g.isDirected(), - multigraph: g.isMultigraph(), - compound: g.isCompound() - }, - nodes: writeNodes(g), - edges: writeEdges(g) - }; - if (!_.isUndefined(g.graph())) { - json.value = _.clone(g.graph()); - } - return json; -} - -function writeNodes(g) { - return _.map(g.nodes(), function(v) { - var nodeValue = g.node(v); - var parent = g.parent(v); - var node = { v: v }; - if (!_.isUndefined(nodeValue)) { - node.value = nodeValue; - } - if (!_.isUndefined(parent)) { - node.parent = parent; - } - return node; - }); -} - -function writeEdges(g) { - return _.map(g.edges(), function(e) { - var edgeValue = g.edge(e); - var edge = { v: e.v, w: e.w }; - if (!_.isUndefined(e.name)) { - edge.name = e.name; - } - if (!_.isUndefined(edgeValue)) { - edge.value = edgeValue; - } - return edge; - }); -} - -function read(json) { - var g = new Graph(json.options).setGraph(json.value); - _.each(json.nodes, function(entry) { - g.setNode(entry.v, entry.value); - if (entry.parent) { - g.setParent(entry.v, entry.parent); - } - }); - _.each(json.edges, function(entry) { - g.setEdge({ v: entry.v, w: entry.w, name: entry.name }, entry.value); - }); - return g; -} - - -/***/ }), - -/***/ "./node_modules/graphlib/lib/lodash.js": -/*!*********************************************!*\ + /***/ "./node_modules/graphlib/lib/lodash.js": + /*!*********************************************!*\ !*** ./node_modules/graphlib/lib/lodash.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* global window */ - -var lodash; - -if (true) { - try { - lodash = { - clone: __webpack_require__(/*! lodash/clone */ "./node_modules/lodash/clone.js"), - constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"), - each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"), - filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"), - has: __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"), - isArray: __webpack_require__(/*! lodash/isArray */ "./node_modules/lodash/isArray.js"), - isEmpty: __webpack_require__(/*! lodash/isEmpty */ "./node_modules/lodash/isEmpty.js"), - isFunction: __webpack_require__(/*! lodash/isFunction */ "./node_modules/lodash/isFunction.js"), - isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"), - keys: __webpack_require__(/*! lodash/keys */ "./node_modules/lodash/keys.js"), - map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"), - reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"), - size: __webpack_require__(/*! lodash/size */ "./node_modules/lodash/size.js"), - transform: __webpack_require__(/*! lodash/transform */ "./node_modules/lodash/transform.js"), - union: __webpack_require__(/*! lodash/union */ "./node_modules/lodash/union.js"), - values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js") - }; - } catch (e) { - // continue regardless of error - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + /* global window */ + + var lodash; + + if (true) { + try { + lodash = { + clone: __webpack_require__(/*! lodash/clone */ "./node_modules/lodash/clone.js"), + constant: __webpack_require__(/*! lodash/constant */ "./node_modules/lodash/constant.js"), + each: __webpack_require__(/*! lodash/each */ "./node_modules/lodash/each.js"), + filter: __webpack_require__(/*! lodash/filter */ "./node_modules/lodash/filter.js"), + has: __webpack_require__(/*! lodash/has */ "./node_modules/lodash/has.js"), + isArray: __webpack_require__(/*! lodash/isArray */ "./node_modules/lodash/isArray.js"), + isEmpty: __webpack_require__(/*! lodash/isEmpty */ "./node_modules/lodash/isEmpty.js"), + isFunction: __webpack_require__(/*! lodash/isFunction */ "./node_modules/lodash/isFunction.js"), + isUndefined: __webpack_require__(/*! lodash/isUndefined */ "./node_modules/lodash/isUndefined.js"), + keys: __webpack_require__(/*! lodash/keys */ "./node_modules/lodash/keys.js"), + map: __webpack_require__(/*! lodash/map */ "./node_modules/lodash/map.js"), + reduce: __webpack_require__(/*! lodash/reduce */ "./node_modules/lodash/reduce.js"), + size: __webpack_require__(/*! lodash/size */ "./node_modules/lodash/size.js"), + transform: __webpack_require__(/*! lodash/transform */ "./node_modules/lodash/transform.js"), + union: __webpack_require__(/*! lodash/union */ "./node_modules/lodash/union.js"), + values: __webpack_require__(/*! lodash/values */ "./node_modules/lodash/values.js") + }; + } catch (e) { + // continue regardless of error + } + } -if (!lodash) { - lodash = window._; -} + if (!lodash) { + lodash = window._; + } -module.exports = lodash; + module.exports = lodash; -/***/ }), + /***/ }), -/***/ "./node_modules/graphlib/lib/version.js": -/*!**********************************************!*\ + /***/ "./node_modules/graphlib/lib/version.js": + /*!**********************************************!*\ !*** ./node_modules/graphlib/lib/version.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports) { -module.exports = '2.1.8'; + module.exports = '2.1.8'; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_DataView.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_DataView.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_DataView.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/* Built-in method references that are verified to be native. */ -var DataView = getNative(root, 'DataView'); + /* Built-in method references that are verified to be native. */ + var DataView = getNative(root, 'DataView'); -module.exports = DataView; + module.exports = DataView; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_Hash.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/_Hash.js": + /*!**************************************!*\ !*** ./node_modules/lodash/_Hash.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"), - hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"), - hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"), - hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"), - hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js"); - -/** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var hashClear = __webpack_require__(/*! ./_hashClear */ "./node_modules/lodash/_hashClear.js"), + hashDelete = __webpack_require__(/*! ./_hashDelete */ "./node_modules/lodash/_hashDelete.js"), + hashGet = __webpack_require__(/*! ./_hashGet */ "./node_modules/lodash/_hashGet.js"), + hashHas = __webpack_require__(/*! ./_hashHas */ "./node_modules/lodash/_hashHas.js"), + hashSet = __webpack_require__(/*! ./_hashSet */ "./node_modules/lodash/_hashSet.js"); + + /** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Hash(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } // Add methods to `Hash`. -Hash.prototype.clear = hashClear; -Hash.prototype['delete'] = hashDelete; -Hash.prototype.get = hashGet; -Hash.prototype.has = hashHas; -Hash.prototype.set = hashSet; + Hash.prototype.clear = hashClear; + Hash.prototype['delete'] = hashDelete; + Hash.prototype.get = hashGet; + Hash.prototype.has = hashHas; + Hash.prototype.set = hashSet; -module.exports = Hash; + module.exports = Hash; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_ListCache.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_ListCache.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_ListCache.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"), - listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"), - listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"), - listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"), - listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js"); - -/** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var listCacheClear = __webpack_require__(/*! ./_listCacheClear */ "./node_modules/lodash/_listCacheClear.js"), + listCacheDelete = __webpack_require__(/*! ./_listCacheDelete */ "./node_modules/lodash/_listCacheDelete.js"), + listCacheGet = __webpack_require__(/*! ./_listCacheGet */ "./node_modules/lodash/_listCacheGet.js"), + listCacheHas = __webpack_require__(/*! ./_listCacheHas */ "./node_modules/lodash/_listCacheHas.js"), + listCacheSet = __webpack_require__(/*! ./_listCacheSet */ "./node_modules/lodash/_listCacheSet.js"); + + /** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function ListCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } // Add methods to `ListCache`. -ListCache.prototype.clear = listCacheClear; -ListCache.prototype['delete'] = listCacheDelete; -ListCache.prototype.get = listCacheGet; -ListCache.prototype.has = listCacheHas; -ListCache.prototype.set = listCacheSet; + ListCache.prototype.clear = listCacheClear; + ListCache.prototype['delete'] = listCacheDelete; + ListCache.prototype.get = listCacheGet; + ListCache.prototype.has = listCacheHas; + ListCache.prototype.set = listCacheSet; -module.exports = ListCache; + module.exports = ListCache; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_Map.js": -/*!*************************************!*\ + /***/ "./node_modules/lodash/_Map.js": + /*!*************************************!*\ !*** ./node_modules/lodash/_Map.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/* Built-in method references that are verified to be native. */ -var Map = getNative(root, 'Map'); + /* Built-in method references that are verified to be native. */ + var Map = getNative(root, 'Map'); -module.exports = Map; + module.exports = Map; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_MapCache.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_MapCache.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_MapCache.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"), - mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"), - mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"), - mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"), - mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js"); - -/** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var mapCacheClear = __webpack_require__(/*! ./_mapCacheClear */ "./node_modules/lodash/_mapCacheClear.js"), + mapCacheDelete = __webpack_require__(/*! ./_mapCacheDelete */ "./node_modules/lodash/_mapCacheDelete.js"), + mapCacheGet = __webpack_require__(/*! ./_mapCacheGet */ "./node_modules/lodash/_mapCacheGet.js"), + mapCacheHas = __webpack_require__(/*! ./_mapCacheHas */ "./node_modules/lodash/_mapCacheHas.js"), + mapCacheSet = __webpack_require__(/*! ./_mapCacheSet */ "./node_modules/lodash/_mapCacheSet.js"); + + /** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function MapCache(entries) { + var index = -1, + length = entries == null ? 0 : entries.length; + + this.clear(); + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } + } // Add methods to `MapCache`. -MapCache.prototype.clear = mapCacheClear; -MapCache.prototype['delete'] = mapCacheDelete; -MapCache.prototype.get = mapCacheGet; -MapCache.prototype.has = mapCacheHas; -MapCache.prototype.set = mapCacheSet; + MapCache.prototype.clear = mapCacheClear; + MapCache.prototype['delete'] = mapCacheDelete; + MapCache.prototype.get = mapCacheGet; + MapCache.prototype.has = mapCacheHas; + MapCache.prototype.set = mapCacheSet; -module.exports = MapCache; + module.exports = MapCache; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_Promise.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_Promise.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_Promise.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/* Built-in method references that are verified to be native. */ -var Promise = getNative(root, 'Promise'); + /* Built-in method references that are verified to be native. */ + var Promise = getNative(root, 'Promise'); -module.exports = Promise; + module.exports = Promise; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_Set.js": -/*!*************************************!*\ + /***/ "./node_modules/lodash/_Set.js": + /*!*************************************!*\ !*** ./node_modules/lodash/_Set.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/* Built-in method references that are verified to be native. */ -var Set = getNative(root, 'Set'); + /* Built-in method references that are verified to be native. */ + var Set = getNative(root, 'Set'); -module.exports = Set; + module.exports = Set; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_SetCache.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_SetCache.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_SetCache.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"), - setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/lodash/_setCacheAdd.js"), - setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/lodash/_setCacheHas.js"); - -/** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ -function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"), + setCacheAdd = __webpack_require__(/*! ./_setCacheAdd */ "./node_modules/lodash/_setCacheAdd.js"), + setCacheHas = __webpack_require__(/*! ./_setCacheHas */ "./node_modules/lodash/_setCacheHas.js"); + + /** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new MapCache; + while (++index < length) { + this.add(values[index]); + } + } // Add methods to `SetCache`. -SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; -SetCache.prototype.has = setCacheHas; + SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; + SetCache.prototype.has = setCacheHas; -module.exports = SetCache; + module.exports = SetCache; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_Stack.js": -/*!***************************************!*\ + /***/ "./node_modules/lodash/_Stack.js": + /*!***************************************!*\ !*** ./node_modules/lodash/_Stack.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), - stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"), - stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"), - stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"), - stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"), - stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js"); - -/** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ -function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), + stackClear = __webpack_require__(/*! ./_stackClear */ "./node_modules/lodash/_stackClear.js"), + stackDelete = __webpack_require__(/*! ./_stackDelete */ "./node_modules/lodash/_stackDelete.js"), + stackGet = __webpack_require__(/*! ./_stackGet */ "./node_modules/lodash/_stackGet.js"), + stackHas = __webpack_require__(/*! ./_stackHas */ "./node_modules/lodash/_stackHas.js"), + stackSet = __webpack_require__(/*! ./_stackSet */ "./node_modules/lodash/_stackSet.js"); + + /** + * Creates a stack cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + function Stack(entries) { + var data = this.__data__ = new ListCache(entries); + this.size = data.size; + } // Add methods to `Stack`. -Stack.prototype.clear = stackClear; -Stack.prototype['delete'] = stackDelete; -Stack.prototype.get = stackGet; -Stack.prototype.has = stackHas; -Stack.prototype.set = stackSet; + Stack.prototype.clear = stackClear; + Stack.prototype['delete'] = stackDelete; + Stack.prototype.get = stackGet; + Stack.prototype.has = stackHas; + Stack.prototype.set = stackSet; -module.exports = Stack; + module.exports = Stack; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_Symbol.js": -/*!****************************************!*\ + /***/ "./node_modules/lodash/_Symbol.js": + /*!****************************************!*\ !*** ./node_modules/lodash/_Symbol.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/** Built-in value references. */ -var Symbol = root.Symbol; + /** Built-in value references. */ + var Symbol = root.Symbol; -module.exports = Symbol; + module.exports = Symbol; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_Uint8Array.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_Uint8Array.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_Uint8Array.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/** Built-in value references. */ -var Uint8Array = root.Uint8Array; + /** Built-in value references. */ + var Uint8Array = root.Uint8Array; -module.exports = Uint8Array; + module.exports = Uint8Array; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_WeakMap.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_WeakMap.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_WeakMap.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), - root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"), + root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/* Built-in method references that are verified to be native. */ -var WeakMap = getNative(root, 'WeakMap'); + /* Built-in method references that are verified to be native. */ + var WeakMap = getNative(root, 'WeakMap'); -module.exports = WeakMap; + module.exports = WeakMap; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_apply.js": -/*!***************************************!*\ + /***/ "./node_modules/lodash/_apply.js": + /*!***************************************!*\ !*** ./node_modules/lodash/_apply.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ -function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A faster alternative to `Function#apply`, this function invokes `func` + * with the `this` binding of `thisArg` and the arguments of `args`. + * + * @private + * @param {Function} func The function to invoke. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} args The arguments to invoke `func` with. + * @returns {*} Returns the result of `func`. + */ + function apply(func, thisArg, args) { + switch (args.length) { + case 0: return func.call(thisArg); + case 1: return func.call(thisArg, args[0]); + case 2: return func.call(thisArg, args[0], args[1]); + case 3: return func.call(thisArg, args[0], args[1], args[2]); + } + return func.apply(thisArg, args); + } -module.exports = apply; + module.exports = apply; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayEach.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_arrayEach.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_arrayEach.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ -function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } -module.exports = arrayEach; + module.exports = arrayEach; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayFilter.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_arrayFilter.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_arrayFilter.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } -module.exports = arrayFilter; + module.exports = arrayFilter; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayIncludes.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_arrayIncludes.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_arrayIncludes.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/lodash/_baseIndexOf.js"); - -/** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIndexOf = __webpack_require__(/*! ./_baseIndexOf */ "./node_modules/lodash/_baseIndexOf.js"); + + /** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && baseIndexOf(array, value, 0) > -1; + } -module.exports = arrayIncludes; + module.exports = arrayIncludes; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayIncludesWith.js": -/*!***************************************************!*\ + /***/ "./node_modules/lodash/_arrayIncludesWith.js": + /*!***************************************************!*\ !*** ./node_modules/lodash/_arrayIncludesWith.js ***! \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ -function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ + function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; + } -module.exports = arrayIncludesWith; + module.exports = arrayIncludesWith; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayLikeKeys.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_arrayLikeKeys.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_arrayLikeKeys.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/lodash/_baseTimes.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ -function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseTimes = __webpack_require__(/*! ./_baseTimes */ "./node_modules/lodash/_baseTimes.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Creates an array of the enumerable property names of the array-like `value`. + * + * @private + * @param {*} value The value to query. + * @param {boolean} inherited Specify returning inherited property names. + * @returns {Array} Returns the array of property names. + */ + function arrayLikeKeys(value, inherited) { + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; + + for (var key in value) { + if ((inherited || hasOwnProperty.call(value, key)) && + !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + (isBuff && (key == 'offset' || key == 'parent')) || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || + // Skip index properties. + isIndex(key, length) + ))) { + result.push(key); + } + } + return result; + } -module.exports = arrayLikeKeys; + module.exports = arrayLikeKeys; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayMap.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_arrayMap.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_arrayMap.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } -module.exports = arrayMap; + module.exports = arrayMap; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayPush.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_arrayPush.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_arrayPush.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ -function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } -module.exports = arrayPush; + module.exports = arrayPush; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arrayReduce.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_arrayReduce.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_arrayReduce.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ -function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } -module.exports = arrayReduce; + module.exports = arrayReduce; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_arraySome.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_arraySome.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_arraySome.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ -function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } -module.exports = arraySome; + module.exports = arraySome; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_asciiSize.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_asciiSize.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_asciiSize.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"); + var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"); -/** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -var asciiSize = baseProperty('length'); + /** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + var asciiSize = baseProperty('length'); -module.exports = asciiSize; + module.exports = asciiSize; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_assignMergeValue.js": -/*!**************************************************!*\ + /***/ "./node_modules/lodash/_assignMergeValue.js": + /*!**************************************************!*\ !*** ./node_modules/lodash/_assignMergeValue.js ***! \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), - eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); - -/** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); + + /** + * This function is like `assignValue` except that it doesn't assign + * `undefined` values. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignMergeValue(object, key, value) { + if ((value !== undefined && !eq(object[key], value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } -module.exports = assignMergeValue; + module.exports = assignMergeValue; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_assignValue.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_assignValue.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_assignValue.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), - eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Assigns `value` to `key` of `object` if the existing value is not equivalent + * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function assignValue(object, key, value) { + var objValue = object[key]; + if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || + (value === undefined && !(key in object))) { + baseAssignValue(object, key, value); + } + } -module.exports = assignValue; + module.exports = assignValue; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_assocIndexOf.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_assocIndexOf.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_assocIndexOf.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); - -/** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"); + + /** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function assocIndexOf(array, key) { + var length = array.length; + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + return -1; + } -module.exports = assocIndexOf; + module.exports = assocIndexOf; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseAssign.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseAssign.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseAssign.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); - -/** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + + /** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssign(object, source) { + return object && copyObject(source, keys(source), object); + } -module.exports = baseAssign; + module.exports = baseAssign; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseAssignIn.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_baseAssignIn.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_baseAssignIn.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), - keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); - -/** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + + /** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ + function baseAssignIn(object, source) { + return object && copyObject(source, keysIn(source), object); + } -module.exports = baseAssignIn; + module.exports = baseAssignIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseAssignValue.js": -/*!*************************************************!*\ + /***/ "./node_modules/lodash/_baseAssignValue.js": + /*!*************************************************!*\ !*** ./node_modules/lodash/_baseAssignValue.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"); - -/** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ -function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"); + + /** + * The base implementation of `assignValue` and `assignMergeValue` without + * value checks. + * + * @private + * @param {Object} object The object to modify. + * @param {string} key The key of the property to assign. + * @param {*} value The value to assign. + */ + function baseAssignValue(object, key, value) { + if (key == '__proto__' && defineProperty) { + defineProperty(object, key, { + 'configurable': true, + 'enumerable': true, + 'value': value, + 'writable': true + }); + } else { + object[key] = value; + } + } -module.exports = baseAssignValue; + module.exports = baseAssignValue; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseClone.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseClone.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseClone.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), - arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), - assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), - baseAssign = __webpack_require__(/*! ./_baseAssign */ "./node_modules/lodash/_baseAssign.js"), - baseAssignIn = __webpack_require__(/*! ./_baseAssignIn */ "./node_modules/lodash/_baseAssignIn.js"), - cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"), - copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"), - copySymbols = __webpack_require__(/*! ./_copySymbols */ "./node_modules/lodash/_copySymbols.js"), - copySymbolsIn = __webpack_require__(/*! ./_copySymbolsIn */ "./node_modules/lodash/_copySymbolsIn.js"), - getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"), - getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ "./node_modules/lodash/_getAllKeysIn.js"), - getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), - initCloneArray = __webpack_require__(/*! ./_initCloneArray */ "./node_modules/lodash/_initCloneArray.js"), - initCloneByTag = __webpack_require__(/*! ./_initCloneByTag */ "./node_modules/lodash/_initCloneByTag.js"), - initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), - isMap = __webpack_require__(/*! ./isMap */ "./node_modules/lodash/isMap.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - isSet = __webpack_require__(/*! ./isSet */ "./node_modules/lodash/isSet.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"), - keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values supported by `_.clone`. */ -var cloneableTags = {}; -cloneableTags[argsTag] = cloneableTags[arrayTag] = -cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = -cloneableTags[boolTag] = cloneableTags[dateTag] = -cloneableTags[float32Tag] = cloneableTags[float64Tag] = -cloneableTags[int8Tag] = cloneableTags[int16Tag] = -cloneableTags[int32Tag] = cloneableTags[mapTag] = -cloneableTags[numberTag] = cloneableTags[objectTag] = -cloneableTags[regexpTag] = cloneableTags[setTag] = -cloneableTags[stringTag] = cloneableTags[symbolTag] = -cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = -cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; -cloneableTags[errorTag] = cloneableTags[funcTag] = -cloneableTags[weakMapTag] = false; - -/** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ -function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - } else if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), + assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + baseAssign = __webpack_require__(/*! ./_baseAssign */ "./node_modules/lodash/_baseAssign.js"), + baseAssignIn = __webpack_require__(/*! ./_baseAssignIn */ "./node_modules/lodash/_baseAssignIn.js"), + cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"), + copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"), + copySymbols = __webpack_require__(/*! ./_copySymbols */ "./node_modules/lodash/_copySymbols.js"), + copySymbolsIn = __webpack_require__(/*! ./_copySymbolsIn */ "./node_modules/lodash/_copySymbolsIn.js"), + getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"), + getAllKeysIn = __webpack_require__(/*! ./_getAllKeysIn */ "./node_modules/lodash/_getAllKeysIn.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + initCloneArray = __webpack_require__(/*! ./_initCloneArray */ "./node_modules/lodash/_initCloneArray.js"), + initCloneByTag = __webpack_require__(/*! ./_initCloneByTag */ "./node_modules/lodash/_initCloneByTag.js"), + initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isMap = __webpack_require__(/*! ./isMap */ "./node_modules/lodash/isMap.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isSet = __webpack_require__(/*! ./isSet */ "./node_modules/lodash/isSet.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = + cloneableTags[boolTag] = cloneableTags[dateTag] = + cloneableTags[float32Tag] = cloneableTags[float64Tag] = + cloneableTags[int8Tag] = cloneableTags[int16Tag] = + cloneableTags[int32Tag] = cloneableTags[mapTag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[setTag] = + cloneableTags[stringTag] = cloneableTags[symbolTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[weakMapTag] = false; + + /** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return copyArray(value, result); + } + } else { + var tag = getTag(value), + isFunc = tag == funcTag || tag == genTag; + + if (isBuffer(value)) { + return cloneBuffer(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : initCloneObject(value); + if (!isDeep) { + return isFlat + ? copySymbolsIn(value, baseAssignIn(result, value)) + : copySymbols(value, baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new Stack); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? getAllKeysIn : getAllKeys) + : (isFlat ? keysIn : keys); + + var props = isArr ? undefined : keysFunc(value); + arrayEach(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; + } -module.exports = baseClone; + module.exports = baseClone; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseCreate.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseCreate.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseCreate.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); - -/** Built-in value references. */ -var objectCreate = Object.create; - -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ -var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; -}()); - -module.exports = baseCreate; - - -/***/ }), - -/***/ "./node_modules/lodash/_baseEach.js": -/*!******************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + + /** Built-in value references. */ + var objectCreate = Object.create; + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} proto The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function object() {} + return function(proto) { + if (!isObject(proto)) { + return {}; + } + if (objectCreate) { + return objectCreate(proto); + } + object.prototype = proto; + var result = new object; + object.prototype = undefined; + return result; + }; + }()); + + module.exports = baseCreate; + + + /***/ }), + + /***/ "./node_modules/lodash/_baseEach.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_baseEach.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), - createBaseEach = __webpack_require__(/*! ./_createBaseEach */ "./node_modules/lodash/_createBaseEach.js"); + var baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), + createBaseEach = __webpack_require__(/*! ./_createBaseEach */ "./node_modules/lodash/_createBaseEach.js"); -/** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ -var baseEach = createBaseEach(baseForOwn); + /** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ + var baseEach = createBaseEach(baseForOwn); -module.exports = baseEach; + module.exports = baseEach; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseExtremum.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_baseExtremum.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_baseExtremum.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); - -/** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ -function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + + /** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ + function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !isSymbol(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; + } -module.exports = baseExtremum; + module.exports = baseExtremum; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseFilter.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseFilter.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseFilter.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"); - -/** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ -function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"); + + /** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } -module.exports = baseFilter; + module.exports = baseFilter; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseFindIndex.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_baseFindIndex.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_baseFindIndex.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } -/** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -module.exports = baseFindIndex; + module.exports = baseFindIndex; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseFlatten.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_baseFlatten.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_baseFlatten.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), - isFlattenable = __webpack_require__(/*! ./_isFlattenable */ "./node_modules/lodash/_isFlattenable.js"); - -/** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ -function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), + isFlattenable = __webpack_require__(/*! ./_isFlattenable */ "./node_modules/lodash/_isFlattenable.js"); + + /** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + arrayPush(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; + } -module.exports = baseFlatten; + module.exports = baseFlatten; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseFor.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_baseFor.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_baseFor.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ "./node_modules/lodash/_createBaseFor.js"); + var createBaseFor = __webpack_require__(/*! ./_createBaseFor */ "./node_modules/lodash/_createBaseFor.js"); -/** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ -var baseFor = createBaseFor(); + /** + * The base implementation of `baseForOwn` which iterates over `object` + * properties returned by `keysFunc` and invokes `iteratee` for each property. + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + var baseFor = createBaseFor(); -module.exports = baseFor; + module.exports = baseFor; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseForOwn.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseForOwn.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseForOwn.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); - -/** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ -function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + + /** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return object && baseFor(object, iteratee, keys); + } -module.exports = baseForOwn; + module.exports = baseForOwn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseGet.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_baseGet.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_baseGet.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); - -/** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ -function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + + /** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + function baseGet(object, path) { + path = castPath(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + return (index && index == length) ? object : undefined; + } -module.exports = baseGet; + module.exports = baseGet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseGetAllKeys.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_baseGetAllKeys.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_baseGetAllKeys.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); - -/** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ -function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + + /** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } -module.exports = baseGetAllKeys; + module.exports = baseGetAllKeys; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseGetTag.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseGetTag.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseGetTag.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), - getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"), - objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js"); - -/** `Object#toString` result references. */ -var nullTag = '[object Null]', - undefinedTag = '[object Undefined]'; - -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - -/** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + getRawTag = __webpack_require__(/*! ./_getRawTag */ "./node_modules/lodash/_getRawTag.js"), + objectToString = __webpack_require__(/*! ./_objectToString */ "./node_modules/lodash/_objectToString.js"); + + /** `Object#toString` result references. */ + var nullTag = '[object Null]', + undefinedTag = '[object Undefined]'; + + /** Built-in value references. */ + var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + function baseGetTag(value) { + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return (symToStringTag && symToStringTag in Object(value)) + ? getRawTag(value) + : objectToString(value); + } -module.exports = baseGetTag; + module.exports = baseGetTag; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseGt.js": -/*!****************************************!*\ + /***/ "./node_modules/lodash/_baseGt.js": + /*!****************************************!*\ !*** ./node_modules/lodash/_baseGt.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ -function baseGt(value, other) { - return value > other; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ + function baseGt(value, other) { + return value > other; + } -module.exports = baseGt; + module.exports = baseGt; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseHas.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_baseHas.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_baseHas.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHas(object, key) { + return object != null && hasOwnProperty.call(object, key); + } -module.exports = baseHas; + module.exports = baseHas; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseHasIn.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseHasIn.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseHasIn.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ -function baseHasIn(object, key) { - return object != null && key in Object(object); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ + function baseHasIn(object, key) { + return object != null && key in Object(object); + } -module.exports = baseHasIn; + module.exports = baseHasIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIndexOf.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_baseIndexOf.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIndexOf.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"), - baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/lodash/_baseIsNaN.js"), - strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/lodash/_strictIndexOf.js"); - -/** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"), + baseIsNaN = __webpack_require__(/*! ./_baseIsNaN */ "./node_modules/lodash/_baseIsNaN.js"), + strictIndexOf = __webpack_require__(/*! ./_strictIndexOf */ "./node_modules/lodash/_strictIndexOf.js"); + + /** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + return value === value + ? strictIndexOf(array, value, fromIndex) + : baseFindIndex(array, baseIsNaN, fromIndex); + } -module.exports = baseIndexOf; + module.exports = baseIndexOf; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsArguments.js": -/*!*************************************************!*\ + /***/ "./node_modules/lodash/_baseIsArguments.js": + /*!*************************************************!*\ !*** ./node_modules/lodash/_baseIsArguments.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]'; - -/** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ -function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]'; + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; + } -module.exports = baseIsArguments; + module.exports = baseIsArguments; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsEqual.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_baseIsEqual.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIsEqual.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/lodash/_baseIsEqualDeep.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ -function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsEqualDeep = __webpack_require__(/*! ./_baseIsEqualDeep */ "./node_modules/lodash/_baseIsEqualDeep.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); + } -module.exports = baseIsEqual; + module.exports = baseIsEqual; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsEqualDeep.js": -/*!*************************************************!*\ + /***/ "./node_modules/lodash/_baseIsEqualDeep.js": + /*!*************************************************!*\ !*** ./node_modules/lodash/_baseIsEqualDeep.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), - equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/lodash/_equalByTag.js"), - equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/lodash/_equalObjects.js"), - getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), + equalByTag = __webpack_require__(/*! ./_equalByTag */ "./node_modules/lodash/_equalByTag.js"), + equalObjects = __webpack_require__(/*! ./_equalObjects */ "./node_modules/lodash/_equalObjects.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new Stack); + return (objIsArr || isTypedArray(object)) + ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new Stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new Stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); + } -module.exports = baseIsEqualDeep; + module.exports = baseIsEqualDeep; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsMap.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseIsMap.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseIsMap.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]'; - -/** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ -function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** `Object#toString` result references. */ + var mapTag = '[object Map]'; + + /** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ + function baseIsMap(value) { + return isObjectLike(value) && getTag(value) == mapTag; + } -module.exports = baseIsMap; + module.exports = baseIsMap; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsMatch.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_baseIsMatch.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_baseIsMatch.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), - baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ -function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"); + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new Stack; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; + } -module.exports = baseIsMatch; + module.exports = baseIsMatch; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsNaN.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseIsNaN.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseIsNaN.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ -function baseIsNaN(value) { - return value !== value; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ + function baseIsNaN(value) { + return value !== value; + } -module.exports = baseIsNaN; + module.exports = baseIsNaN; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsNative.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_baseIsNative.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_baseIsNative.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), - isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/lodash/_isMasked.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; - -/** Used to detect host constructors (Safari). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ -function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isMasked = __webpack_require__(/*! ./_isMasked */ "./node_modules/lodash/_isMasked.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); + + /** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; + + /** Used to detect host constructors (Safari). */ + var reIsHostCtor = /^\[object .+?Constructor\]$/; + + /** Used for built-in method references. */ + var funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to detect if a method is native. */ + var reIsNative = RegExp('^' + + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') + .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + function baseIsNative(value) { + if (!isObject(value) || isMasked(value)) { + return false; + } + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); + } -module.exports = baseIsNative; + module.exports = baseIsNative; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsSet.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseIsSet.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseIsSet.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** `Object#toString` result references. */ -var setTag = '[object Set]'; - -/** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ -function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** `Object#toString` result references. */ + var setTag = '[object Set]'; + + /** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ + function baseIsSet(value) { + return isObjectLike(value) && getTag(value) == setTag; + } -module.exports = baseIsSet; + module.exports = baseIsSet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIsTypedArray.js": -/*!**************************************************!*\ + /***/ "./node_modules/lodash/_baseIsTypedArray.js": + /*!**************************************************!*\ !*** ./node_modules/lodash/_baseIsTypedArray.js ***! \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** Used to identify `toStringTag` values of typed arrays. */ -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = -typedArrayTags[errorTag] = typedArrayTags[funcTag] = -typedArrayTags[mapTag] = typedArrayTags[numberTag] = -typedArrayTags[objectTag] = typedArrayTags[regexpTag] = -typedArrayTags[setTag] = typedArrayTags[stringTag] = -typedArrayTags[weakMapTag] = false; - -/** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ -function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = + typedArrayTags[errorTag] = typedArrayTags[funcTag] = + typedArrayTags[mapTag] = typedArrayTags[numberTag] = + typedArrayTags[objectTag] = typedArrayTags[regexpTag] = + typedArrayTags[setTag] = typedArrayTags[stringTag] = + typedArrayTags[weakMapTag] = false; + + /** + * The base implementation of `_.isTypedArray` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + */ + function baseIsTypedArray(value) { + return isObjectLike(value) && + isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; + } -module.exports = baseIsTypedArray; + module.exports = baseIsTypedArray; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseIteratee.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_baseIteratee.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_baseIteratee.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/lodash/_baseMatches.js"), - baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/lodash/_baseMatchesProperty.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - property = __webpack_require__(/*! ./property */ "./node_modules/lodash/property.js"); - -/** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ -function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseMatches = __webpack_require__(/*! ./_baseMatches */ "./node_modules/lodash/_baseMatches.js"), + baseMatchesProperty = __webpack_require__(/*! ./_baseMatchesProperty */ "./node_modules/lodash/_baseMatchesProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + property = __webpack_require__(/*! ./property */ "./node_modules/lodash/property.js"); + + /** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ + function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity; + } + if (typeof value == 'object') { + return isArray(value) + ? baseMatchesProperty(value[0], value[1]) + : baseMatches(value); + } + return property(value); + } -module.exports = baseIteratee; + module.exports = baseIteratee; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseKeys.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_baseKeys.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_baseKeys.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), - nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), + nativeKeys = __webpack_require__(/*! ./_nativeKeys */ "./node_modules/lodash/_nativeKeys.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeys(object) { + if (!isPrototype(object)) { + return nativeKeys(object); + } + var result = []; + for (var key in Object(object)) { + if (hasOwnProperty.call(object, key) && key != 'constructor') { + result.push(key); + } + } + return result; + } -module.exports = baseKeys; + module.exports = baseKeys; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseKeysIn.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseKeysIn.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseKeysIn.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), - nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), + nativeKeysIn = __webpack_require__(/*! ./_nativeKeysIn */ "./node_modules/lodash/_nativeKeysIn.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function baseKeysIn(object) { + if (!isObject(object)) { + return nativeKeysIn(object); + } + var isProto = isPrototype(object), + result = []; + + for (var key in object) { + if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } -module.exports = baseKeysIn; + module.exports = baseKeysIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseLt.js": -/*!****************************************!*\ + /***/ "./node_modules/lodash/_baseLt.js": + /*!****************************************!*\ !*** ./node_modules/lodash/_baseLt.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ -function baseLt(value, other) { - return value < other; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ + function baseLt(value, other) { + return value < other; + } -module.exports = baseLt; + module.exports = baseLt; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseMap.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_baseMap.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_baseMap.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); - -/** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ -function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + + /** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var index = -1, + result = isArrayLike(collection) ? Array(collection.length) : []; + + baseEach(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; + } -module.exports = baseMap; + module.exports = baseMap; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseMatches.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_baseMatches.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_baseMatches.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/lodash/_baseIsMatch.js"), - getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/lodash/_getMatchData.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"); - -/** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsMatch = __webpack_require__(/*! ./_baseIsMatch */ "./node_modules/lodash/_baseIsMatch.js"), + getMatchData = __webpack_require__(/*! ./_getMatchData */ "./node_modules/lodash/_getMatchData.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"); + + /** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatches(source) { + var matchData = getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || baseIsMatch(object, source, matchData); + }; + } -module.exports = baseMatches; + module.exports = baseMatches; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseMatchesProperty.js": -/*!*****************************************************!*\ + /***/ "./node_modules/lodash/_baseMatchesProperty.js": + /*!*****************************************************!*\ !*** ./node_modules/lodash/_baseMatchesProperty.js ***! \*****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"), - get = __webpack_require__(/*! ./get */ "./node_modules/lodash/get.js"), - hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), - isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), - matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsEqual = __webpack_require__(/*! ./_baseIsEqual */ "./node_modules/lodash/_baseIsEqual.js"), + get = __webpack_require__(/*! ./get */ "./node_modules/lodash/get.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), + isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), + matchesStrictComparable = __webpack_require__(/*! ./_matchesStrictComparable */ "./node_modules/lodash/_matchesStrictComparable.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function baseMatchesProperty(path, srcValue) { + if (isKey(path) && isStrictComparable(srcValue)) { + return matchesStrictComparable(toKey(path), srcValue); + } + return function(object) { + var objValue = get(object, path); + return (objValue === undefined && objValue === srcValue) + ? hasIn(object, path) + : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); + }; + } -module.exports = baseMatchesProperty; + module.exports = baseMatchesProperty; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseMerge.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseMerge.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseMerge.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), - assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), - baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), - baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ "./node_modules/lodash/_baseMergeDeep.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"), - safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"); - -/** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - stack || (stack = new Stack); - if (isObject(srcValue)) { - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Stack = __webpack_require__(/*! ./_Stack */ "./node_modules/lodash/_Stack.js"), + assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), + baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), + baseMergeDeep = __webpack_require__(/*! ./_baseMergeDeep */ "./node_modules/lodash/_baseMergeDeep.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"), + safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"); + + /** + * The base implementation of `_.merge` without support for multiple sources. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {number} srcIndex The index of `source`. + * @param {Function} [customizer] The function to customize merged values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMerge(object, source, srcIndex, customizer, stack) { + if (object === source) { + return; + } + baseFor(source, function(srcValue, key) { + stack || (stack = new Stack); + if (isObject(srcValue)) { + baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); + } + else { + var newValue = customizer + ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) + : undefined; + + if (newValue === undefined) { + newValue = srcValue; + } + assignMergeValue(object, key, newValue); + } + }, keysIn); + } -module.exports = baseMerge; + module.exports = baseMerge; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseMergeDeep.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_baseMergeDeep.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_baseMergeDeep.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), - cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"), - cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"), - copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"), - initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), - isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - isPlainObject = __webpack_require__(/*! ./isPlainObject */ "./node_modules/lodash/isPlainObject.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"), - safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"), - toPlainObject = __webpack_require__(/*! ./toPlainObject */ "./node_modules/lodash/toPlainObject.js"); - -/** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ -function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || isFunction(objValue)) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assignMergeValue = __webpack_require__(/*! ./_assignMergeValue */ "./node_modules/lodash/_assignMergeValue.js"), + cloneBuffer = __webpack_require__(/*! ./_cloneBuffer */ "./node_modules/lodash/_cloneBuffer.js"), + cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"), + copyArray = __webpack_require__(/*! ./_copyArray */ "./node_modules/lodash/_copyArray.js"), + initCloneObject = __webpack_require__(/*! ./_initCloneObject */ "./node_modules/lodash/_initCloneObject.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isPlainObject = __webpack_require__(/*! ./isPlainObject */ "./node_modules/lodash/isPlainObject.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"), + safeGet = __webpack_require__(/*! ./_safeGet */ "./node_modules/lodash/_safeGet.js"), + toPlainObject = __webpack_require__(/*! ./toPlainObject */ "./node_modules/lodash/toPlainObject.js"); + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {number} srcIndex The index of `source`. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize assigned values. + * @param {Object} [stack] Tracks traversed source values and their merged + * counterparts. + */ + function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { + var objValue = safeGet(object, key), + srcValue = safeGet(source, key), + stacked = stack.get(srcValue); + + if (stacked) { + assignMergeValue(object, key, stacked); + return; + } + var newValue = customizer + ? customizer(objValue, srcValue, (key + ''), object, source, stack) + : undefined; + + var isCommon = newValue === undefined; + + if (isCommon) { + var isArr = isArray(srcValue), + isBuff = !isArr && isBuffer(srcValue), + isTyped = !isArr && !isBuff && isTypedArray(srcValue); + + newValue = srcValue; + if (isArr || isBuff || isTyped) { + if (isArray(objValue)) { + newValue = objValue; + } + else if (isArrayLikeObject(objValue)) { + newValue = copyArray(objValue); + } + else if (isBuff) { + isCommon = false; + newValue = cloneBuffer(srcValue, true); + } + else if (isTyped) { + isCommon = false; + newValue = cloneTypedArray(srcValue, true); + } + else { + newValue = []; + } + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + newValue = objValue; + if (isArguments(objValue)) { + newValue = toPlainObject(objValue); + } + else if (!isObject(objValue) || isFunction(objValue)) { + newValue = initCloneObject(srcValue); + } + } + else { + isCommon = false; + } + } + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + stack.set(srcValue, newValue); + mergeFunc(newValue, srcValue, srcIndex, customizer, stack); + stack['delete'](srcValue); + } + assignMergeValue(object, key, newValue); + } -module.exports = baseMergeDeep; + module.exports = baseMergeDeep; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseOrderBy.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_baseOrderBy.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_baseOrderBy.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), - baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"), - baseSortBy = __webpack_require__(/*! ./_baseSortBy */ "./node_modules/lodash/_baseSortBy.js"), - baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), - compareMultiple = __webpack_require__(/*! ./_compareMultiple */ "./node_modules/lodash/_compareMultiple.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); - -/** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ -function baseOrderBy(collection, iteratees, orders) { - if (iteratees.length) { - iteratees = arrayMap(iteratees, function(iteratee) { - if (isArray(iteratee)) { - return function(value) { - return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); - } - } - return iteratee; - }); - } else { - iteratees = [identity]; - } - - var index = -1; - iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), + baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"), + baseSortBy = __webpack_require__(/*! ./_baseSortBy */ "./node_modules/lodash/_baseSortBy.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + compareMultiple = __webpack_require__(/*! ./_compareMultiple */ "./node_modules/lodash/_compareMultiple.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + + /** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ + function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = arrayMap(iteratees, function(iteratee) { + if (isArray(iteratee)) { + return function(value) { + return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity]; + } + + var index = -1; + iteratees = arrayMap(iteratees, baseUnary(baseIteratee)); + + var result = baseMap(collection, function(value, key, collection) { + var criteria = arrayMap(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } -module.exports = baseOrderBy; + module.exports = baseOrderBy; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_basePick.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_basePick.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_basePick.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var basePickBy = __webpack_require__(/*! ./_basePickBy */ "./node_modules/lodash/_basePickBy.js"), - hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"); - -/** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ -function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var basePickBy = __webpack_require__(/*! ./_basePickBy */ "./node_modules/lodash/_basePickBy.js"), + hasIn = __webpack_require__(/*! ./hasIn */ "./node_modules/lodash/hasIn.js"); + + /** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ + function basePick(object, paths) { + return basePickBy(object, paths, function(value, path) { + return hasIn(object, path); + }); + } -module.exports = basePick; + module.exports = basePick; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_basePickBy.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_basePickBy.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_basePickBy.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), - baseSet = __webpack_require__(/*! ./_baseSet */ "./node_modules/lodash/_baseSet.js"), - castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"); - -/** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ -function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"), + baseSet = __webpack_require__(/*! ./_baseSet */ "./node_modules/lodash/_baseSet.js"), + castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"); + + /** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ + function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = baseGet(object, path); + + if (predicate(value, path)) { + baseSet(result, castPath(path, object), value); + } + } + return result; + } -module.exports = basePickBy; + module.exports = basePickBy; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseProperty.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_baseProperty.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_baseProperty.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } -module.exports = baseProperty; + module.exports = baseProperty; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_basePropertyDeep.js": -/*!**************************************************!*\ + /***/ "./node_modules/lodash/_basePropertyDeep.js": + /*!**************************************************!*\ !*** ./node_modules/lodash/_basePropertyDeep.js ***! \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); - -/** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ -function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); + + /** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ + function basePropertyDeep(path) { + return function(object) { + return baseGet(object, path); + }; + } -module.exports = basePropertyDeep; + module.exports = basePropertyDeep; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseRange.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseRange.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseRange.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeCeil = Math.ceil, - nativeMax = Math.max; - -/** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ -function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeCeil = Math.ceil, + nativeMax = Math.max; + + /** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ + function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; + } -module.exports = baseRange; + module.exports = baseRange; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseReduce.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseReduce.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseReduce.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ -function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } -module.exports = baseReduce; + module.exports = baseReduce; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseRest.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_baseRest.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_baseRest.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), - overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), - setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); - -/** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ -function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"), + overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), + setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); + + /** + * The base implementation of `_.rest` which doesn't validate or coerce arguments. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @returns {Function} Returns the new function. + */ + function baseRest(func, start) { + return setToString(overRest(func, start, identity), func + ''); + } -module.exports = baseRest; + module.exports = baseRest; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseSet.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_baseSet.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_baseSet.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), - castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + + /** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ + function baseSet(object, path, value, customizer) { + if (!isObject(object)) { + return object; + } + path = castPath(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = toKey(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = isObject(objValue) + ? objValue + : (isIndex(path[index + 1]) ? [] : {}); + } + } + assignValue(nested, key, newValue); + nested = nested[key]; + } + return object; + } -/** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ -function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); + module.exports = baseSet; - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; + /***/ }), - if (key === '__proto__' || key === 'constructor' || key === 'prototype') { - return object; - } + /***/ "./node_modules/lodash/_baseSetToString.js": + /*!*************************************************!*\ + !*** ./node_modules/lodash/_baseSetToString.js ***! + \*************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var constant = __webpack_require__(/*! ./constant */ "./node_modules/lodash/constant.js"), + defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + + /** + * The base implementation of `setToString` without support for hot loop shorting. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var baseSetToString = !defineProperty ? identity : function(func, string) { + return defineProperty(func, 'toString', { + 'configurable': true, + 'enumerable': false, + 'value': constant(string), + 'writable': true + }); + }; + + module.exports = baseSetToString; + + + /***/ }), + + /***/ "./node_modules/lodash/_baseSortBy.js": + /*!********************************************!*\ + !*** ./node_modules/lodash/_baseSortBy.js ***! + \********************************************/ + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; -} + module.exports = baseSortBy; -module.exports = baseSet; + /***/ }), -/***/ }), + /***/ "./node_modules/lodash/_baseTimes.js": + /*!*******************************************!*\ + !*** ./node_modules/lodash/_baseTimes.js ***! + \*******************************************/ + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.times` without support for iteratee shorthands + * or max array length checks. + * + * @private + * @param {number} n The number of times to invoke `iteratee`. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the array of results. + */ + function baseTimes(n, iteratee) { + var index = -1, + result = Array(n); + + while (++index < n) { + result[index] = iteratee(index); + } + return result; + } -/***/ "./node_modules/lodash/_baseSetToString.js": -/*!*************************************************!*\ - !*** ./node_modules/lodash/_baseSetToString.js ***! - \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + module.exports = baseTimes; -var constant = __webpack_require__(/*! ./constant */ "./node_modules/lodash/constant.js"), - defineProperty = __webpack_require__(/*! ./_defineProperty */ "./node_modules/lodash/_defineProperty.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); -/** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); -}; + /***/ }), -module.exports = baseSetToString; - - -/***/ }), - -/***/ "./node_modules/lodash/_baseSortBy.js": -/*!********************************************!*\ - !*** ./node_modules/lodash/_baseSortBy.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ -function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; -} - -module.exports = baseSortBy; - - -/***/ }), - -/***/ "./node_modules/lodash/_baseTimes.js": -/*!*******************************************!*\ - !*** ./node_modules/lodash/_baseTimes.js ***! - \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ -function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; -} - -module.exports = baseTimes; - - -/***/ }), - -/***/ "./node_modules/lodash/_baseToString.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_baseToString.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_baseToString.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), - arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - -/** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ -function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0; + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + + /** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if (isArray(value)) { + // Recursively convert values (susceptible to call stack limits). + return arrayMap(value, baseToString) + ''; + } + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } -module.exports = baseToString; + module.exports = baseToString; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseUnary.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_baseUnary.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_baseUnary.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ -function baseUnary(func) { - return function(value) { - return func(value); - }; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * The base implementation of `_.unary` without support for storing metadata. + * + * @private + * @param {Function} func The function to cap arguments for. + * @returns {Function} Returns the new capped function. + */ + function baseUnary(func) { + return function(value) { + return func(value); + }; + } -module.exports = baseUnary; + module.exports = baseUnary; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseUniq.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_baseUniq.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_baseUniq.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), - arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/lodash/_arrayIncludes.js"), - arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/lodash/_arrayIncludesWith.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"), - createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/lodash/_createSet.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ -function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), + arrayIncludes = __webpack_require__(/*! ./_arrayIncludes */ "./node_modules/lodash/_arrayIncludes.js"), + arrayIncludesWith = __webpack_require__(/*! ./_arrayIncludesWith */ "./node_modules/lodash/_arrayIncludesWith.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"), + createSet = __webpack_require__(/*! ./_createSet */ "./node_modules/lodash/_createSet.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ + function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : createSet(array); + if (set) { + return setToArray(set); + } + isCommon = false; + includes = cacheHas; + seen = new SetCache; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } -module.exports = baseUniq; + module.exports = baseUniq; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseValues.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_baseValues.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_baseValues.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"); - -/** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ -function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"); + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + return arrayMap(props, function(key) { + return object[key]; + }); + } -module.exports = baseValues; + module.exports = baseValues; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_baseZipObject.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_baseZipObject.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_baseZipObject.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ -function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ + function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; + } -module.exports = baseZipObject; + module.exports = baseZipObject; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_cacheHas.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_cacheHas.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_cacheHas.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function cacheHas(cache, key) { - return cache.has(key); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } -module.exports = cacheHas; + module.exports = cacheHas; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_castFunction.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_castFunction.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_castFunction.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); - -/** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ -function castFunction(value) { - return typeof value == 'function' ? value : identity; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + + /** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ + function castFunction(value) { + return typeof value == 'function' ? value : identity; + } -module.exports = castFunction; + module.exports = castFunction; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_castPath.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_castPath.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_castPath.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), - stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"), - toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); - -/** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ -function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), + stringToPath = __webpack_require__(/*! ./_stringToPath */ "./node_modules/lodash/_stringToPath.js"), + toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); + + /** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ + function castPath(value, object) { + if (isArray(value)) { + return value; + } + return isKey(value, object) ? [value] : stringToPath(toString(value)); + } -module.exports = castPath; + module.exports = castPath; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_cloneArrayBuffer.js": -/*!**************************************************!*\ + /***/ "./node_modules/lodash/_cloneArrayBuffer.js": + /*!**************************************************!*\ !*** ./node_modules/lodash/_cloneArrayBuffer.js ***! \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"); - -/** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ -function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"); + + /** + * Creates a clone of `arrayBuffer`. + * + * @private + * @param {ArrayBuffer} arrayBuffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function cloneArrayBuffer(arrayBuffer) { + var result = new arrayBuffer.constructor(arrayBuffer.byteLength); + new Uint8Array(result).set(new Uint8Array(arrayBuffer)); + return result; + } -module.exports = cloneArrayBuffer; + module.exports = cloneArrayBuffer; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_cloneBuffer.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_cloneBuffer.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_cloneBuffer.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + /* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; + /** Detect free variable `exports`. */ + var freeExports = true && exports && !exports.nodeType && exports; -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; + /** Built-in value references. */ + var Buffer = moduleExports ? root.Buffer : undefined, + allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined; -/** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ -function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); + /** + * Creates a clone of `buffer`. + * + * @private + * @param {Buffer} buffer The buffer to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Buffer} Returns the cloned buffer. + */ + function cloneBuffer(buffer, isDeep) { + if (isDeep) { + return buffer.slice(); + } + var length = buffer.length, + result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - buffer.copy(result); - return result; -} + buffer.copy(result); + return result; + } -module.exports = cloneBuffer; + module.exports = cloneBuffer; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_cloneDataView.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_cloneDataView.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_cloneDataView.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"); - -/** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ -function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"); + + /** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ + function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); + } -module.exports = cloneDataView; + module.exports = cloneDataView; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_cloneRegExp.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_cloneRegExp.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_cloneRegExp.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used to match `RegExp` flags from their coerced string values. */ -var reFlags = /\w*$/; - -/** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ -function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ + function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; + } -module.exports = cloneRegExp; + module.exports = cloneRegExp; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_cloneSymbol.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_cloneSymbol.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_cloneSymbol.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - -/** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ -function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + + /** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ + function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; + } -module.exports = cloneSymbol; + module.exports = cloneSymbol; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_cloneTypedArray.js": -/*!*************************************************!*\ + /***/ "./node_modules/lodash/_cloneTypedArray.js": + /*!*************************************************!*\ !*** ./node_modules/lodash/_cloneTypedArray.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"); - -/** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ -function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"); + + /** + * Creates a clone of `typedArray`. + * + * @private + * @param {Object} typedArray The typed array to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned typed array. + */ + function cloneTypedArray(typedArray, isDeep) { + var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; + return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); + } -module.exports = cloneTypedArray; + module.exports = cloneTypedArray; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_compareAscending.js": -/*!**************************************************!*\ + /***/ "./node_modules/lodash/_compareAscending.js": + /*!**************************************************!*\ !*** ./node_modules/lodash/_compareAscending.js ***! \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); - -/** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ -function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + + /** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ + function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = isSymbol(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = isSymbol(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; + } -module.exports = compareAscending; + module.exports = compareAscending; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_compareMultiple.js": -/*!*************************************************!*\ + /***/ "./node_modules/lodash/_compareMultiple.js": + /*!*************************************************!*\ !*** ./node_modules/lodash/_compareMultiple.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var compareAscending = __webpack_require__(/*! ./_compareAscending */ "./node_modules/lodash/_compareAscending.js"); - -/** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ -function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var compareAscending = __webpack_require__(/*! ./_compareAscending */ "./node_modules/lodash/_compareAscending.js"); + + /** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } -module.exports = compareMultiple; + module.exports = compareMultiple; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_copyArray.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_copyArray.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_copyArray.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ -function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function copyArray(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } -module.exports = copyArray; + module.exports = copyArray; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_copyObject.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_copyObject.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_copyObject.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), - baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"); - -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ -function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"); + + /** + * Copies properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Array} props The property identifiers to copy. + * @param {Object} [object={}] The object to copy properties to. + * @param {Function} [customizer] The function to customize copied values. + * @returns {Object} Returns `object`. + */ + function copyObject(source, props, object, customizer) { + var isNew = !object; + object || (object = {}); + + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + + var newValue = customizer + ? customizer(object[key], source[key], key, object, source) + : undefined; + + if (newValue === undefined) { + newValue = source[key]; + } + if (isNew) { + baseAssignValue(object, key, newValue); + } else { + assignValue(object, key, newValue); + } + } + return object; + } -module.exports = copyObject; + module.exports = copyObject; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_copySymbols.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_copySymbols.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_copySymbols.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), - getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"); - -/** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"); + + /** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbols(source, object) { + return copyObject(source, getSymbols(source), object); + } -module.exports = copySymbols; + module.exports = copySymbols; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_copySymbolsIn.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_copySymbolsIn.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_copySymbolsIn.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), - getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"); - -/** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ -function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"); + + /** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ + function copySymbolsIn(source, object) { + return copyObject(source, getSymbolsIn(source), object); + } -module.exports = copySymbolsIn; + module.exports = copySymbolsIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_coreJsData.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_coreJsData.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_coreJsData.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); -/** Used to detect overreaching core-js shims. */ -var coreJsData = root['__core-js_shared__']; + /** Used to detect overreaching core-js shims. */ + var coreJsData = root['__core-js_shared__']; -module.exports = coreJsData; + module.exports = coreJsData; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_createAssigner.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_createAssigner.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_createAssigner.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), - isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); - -/** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ -function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); + + /** + * Creates a function like `_.assign`. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return baseRest(function(object, sources) { + var index = -1, + length = sources.length, + customizer = length > 1 ? sources[length - 1] : undefined, + guard = length > 2 ? sources[2] : undefined; + + customizer = (assigner.length > 3 && typeof customizer == 'function') + ? (length--, customizer) + : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + customizer = length < 3 ? undefined : customizer; + length = 1; + } + object = Object(object); + while (++index < length) { + var source = sources[index]; + if (source) { + assigner(object, source, index, customizer); + } + } + return object; + }); + } -module.exports = createAssigner; + module.exports = createAssigner; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_createBaseEach.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_createBaseEach.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_createBaseEach.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); - -/** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + + /** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!isArrayLike(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; + } -module.exports = createBaseEach; + module.exports = createBaseEach; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_createBaseFor.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_createBaseFor.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_createBaseFor.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ -function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Creates a base function for methods like `_.forIn` and `_.forOwn`. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ + function createBaseFor(fromRight) { + return function(object, iteratee, keysFunc) { + var index = -1, + iterable = Object(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[fromRight ? length : ++index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + }; + } -module.exports = createBaseFor; + module.exports = createBaseFor; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_createFind.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_createFind.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_createFind.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); - -/** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ -function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = baseIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + + /** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ + function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!isArrayLike(collection)) { + var iteratee = baseIteratee(predicate, 3); + collection = keys(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; + } -module.exports = createFind; + module.exports = createFind; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_createRange.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_createRange.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_createRange.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseRange = __webpack_require__(/*! ./_baseRange */ "./node_modules/lodash/_baseRange.js"), - isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"), - toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js"); - -/** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ -function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseRange = __webpack_require__(/*! ./_baseRange */ "./node_modules/lodash/_baseRange.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"), + toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js"); + + /** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ + function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = toFinite(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = toFinite(end); + } + step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); + return baseRange(start, end, step, fromRight); + }; + } -module.exports = createRange; + module.exports = createRange; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_createSet.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_createSet.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_createSet.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), - noop = __webpack_require__(/*! ./noop */ "./node_modules/lodash/noop.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); + var Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), + noop = __webpack_require__(/*! ./noop */ "./node_modules/lodash/noop.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0; -/** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ -var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); -}; + /** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ + var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { + return new Set(values); + }; -module.exports = createSet; + module.exports = createSet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_defineProperty.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_defineProperty.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_defineProperty.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); + var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); -var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} -}()); + var defineProperty = (function() { + try { + var func = getNative(Object, 'defineProperty'); + func({}, '', {}); + return func; + } catch (e) {} + }()); -module.exports = defineProperty; + module.exports = defineProperty; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_equalArrays.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_equalArrays.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_equalArrays.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), - arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/lodash/_arraySome.js"), - cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ -function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Check that cyclic values are equal. - var arrStacked = stack.get(array); - var othStacked = stack.get(other); - if (arrStacked && othStacked) { - return arrStacked == other && othStacked == array; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var SetCache = __webpack_require__(/*! ./_SetCache */ "./node_modules/lodash/_SetCache.js"), + arraySome = __webpack_require__(/*! ./_arraySome */ "./node_modules/lodash/_arraySome.js"), + cacheHas = __webpack_require__(/*! ./_cacheHas */ "./node_modules/lodash/_cacheHas.js"); + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!arraySome(other, function(othValue, othIndex) { + if (!cacheHas(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; + } -module.exports = equalArrays; + module.exports = equalArrays; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_equalByTag.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_equalByTag.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_equalByTag.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), - Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"), - eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), - equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), - mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/lodash/_mapToArray.js"), - setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]'; - -/** Used to convert symbols to primitives and strings. */ -var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; - -/** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + Uint8Array = __webpack_require__(/*! ./_Uint8Array */ "./node_modules/lodash/_Uint8Array.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), + equalArrays = __webpack_require__(/*! ./_equalArrays */ "./node_modules/lodash/_equalArrays.js"), + mapToArray = __webpack_require__(/*! ./_mapToArray */ "./node_modules/lodash/_mapToArray.js"), + setToArray = __webpack_require__(/*! ./_setToArray */ "./node_modules/lodash/_setToArray.js"); + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + + /** `Object#toString` result references. */ + var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + + /** Used to convert symbols to primitives and strings. */ + var symbolProto = Symbol ? Symbol.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new Uint8Array(object), new Uint8Array(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return eq(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = mapToArray; + + case setTag: + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; + convert || (convert = setToArray); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; + } -module.exports = equalByTag; + module.exports = equalByTag; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_equalObjects.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_equalObjects.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_equalObjects.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"); - -/** Used to compose bitmasks for value comparisons. */ -var COMPARE_PARTIAL_FLAG = 1; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ -function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Check that cyclic values are equal. - var objStacked = stack.get(object); - var othStacked = stack.get(other); - if (objStacked && othStacked) { - return objStacked == other && othStacked == object; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var getAllKeys = __webpack_require__(/*! ./_getAllKeys */ "./node_modules/lodash/_getAllKeys.js"); + + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1; + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), + objLength = objProps.length, + othProps = getAllKeys(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; + } -module.exports = equalObjects; + module.exports = equalObjects; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_flatRest.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_flatRest.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_flatRest.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var flatten = __webpack_require__(/*! ./flatten */ "./node_modules/lodash/flatten.js"), - overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), - setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); - -/** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ -function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var flatten = __webpack_require__(/*! ./flatten */ "./node_modules/lodash/flatten.js"), + overRest = __webpack_require__(/*! ./_overRest */ "./node_modules/lodash/_overRest.js"), + setToString = __webpack_require__(/*! ./_setToString */ "./node_modules/lodash/_setToString.js"); + + /** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ + function flatRest(func) { + return setToString(overRest(func, undefined, flatten), func + ''); + } -module.exports = flatRest; + module.exports = flatRest; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_freeGlobal.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_freeGlobal.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_freeGlobal.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ -var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; + /* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ + var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; -module.exports = freeGlobal; + module.exports = freeGlobal; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getAllKeys.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_getAllKeys.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_getAllKeys.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"), - getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); - -/** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } -module.exports = getAllKeys; + module.exports = getAllKeys; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getAllKeysIn.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_getAllKeysIn.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_getAllKeysIn.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"), - getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"), - keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); - -/** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ -function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetAllKeys = __webpack_require__(/*! ./_baseGetAllKeys */ "./node_modules/lodash/_baseGetAllKeys.js"), + getSymbolsIn = __webpack_require__(/*! ./_getSymbolsIn */ "./node_modules/lodash/_getSymbolsIn.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + + /** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeysIn(object) { + return baseGetAllKeys(object, keysIn, getSymbolsIn); + } -module.exports = getAllKeysIn; + module.exports = getAllKeysIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getMapData.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_getMapData.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_getMapData.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/lodash/_isKeyable.js"); - -/** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ -function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isKeyable = __webpack_require__(/*! ./_isKeyable */ "./node_modules/lodash/_isKeyable.js"); + + /** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) + ? data[typeof key == 'string' ? 'string' : 'hash'] + : data.map; + } -module.exports = getMapData; + module.exports = getMapData; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getMatchData.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_getMatchData.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_getMatchData.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); - -/** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ -function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isStrictComparable = __webpack_require__(/*! ./_isStrictComparable */ "./node_modules/lodash/_isStrictComparable.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + + /** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ + function getMatchData(object) { + var result = keys(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, isStrictComparable(value)]; + } + return result; + } -module.exports = getMatchData; + module.exports = getMatchData; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getNative.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_getNative.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_getNative.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"), - getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js"); - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsNative = __webpack_require__(/*! ./_baseIsNative */ "./node_modules/lodash/_baseIsNative.js"), + getValue = __webpack_require__(/*! ./_getValue */ "./node_modules/lodash/_getValue.js"); + + /** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; + } -module.exports = getNative; + module.exports = getNative; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getPrototype.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_getPrototype.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_getPrototype.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); + var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); -/** Built-in value references. */ -var getPrototype = overArg(Object.getPrototypeOf, Object); + /** Built-in value references. */ + var getPrototype = overArg(Object.getPrototypeOf, Object); -module.exports = getPrototype; + module.exports = getPrototype; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getRawTag.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_getRawTag.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_getRawTag.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** Built-in value references. */ + var symToStringTag = Symbol ? Symbol.toStringTag : undefined; + + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"); + module.exports = getRawTag; -/** Used for built-in method references. */ -var objectProto = Object.prototype; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; + /***/ }), -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** Built-in value references. */ -var symToStringTag = Symbol ? Symbol.toStringTag : undefined; - -/** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ -function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; -} - -module.exports = getRawTag; - - -/***/ }), - -/***/ "./node_modules/lodash/_getSymbols.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_getSymbols.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_getSymbols.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"), - stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js"); + var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js"); -/** Used for built-in method references. */ -var objectProto = Object.prototype; + /** Used for built-in method references. */ + var objectProto = Object.prototype; -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; + /** Built-in value references. */ + var propertyIsEnumerable = objectProto.propertyIsEnumerable; -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeGetSymbols = Object.getOwnPropertySymbols; -/** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); -}; + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; -module.exports = getSymbols; + module.exports = getSymbols; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getSymbolsIn.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_getSymbolsIn.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_getSymbolsIn.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), - getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), - getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"), - stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js"); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeGetSymbols = Object.getOwnPropertySymbols; - -/** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ -var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; -}; - -module.exports = getSymbolsIn; - - -/***/ }), - -/***/ "./node_modules/lodash/_getTag.js": -/*!****************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayPush = __webpack_require__(/*! ./_arrayPush */ "./node_modules/lodash/_arrayPush.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + getSymbols = __webpack_require__(/*! ./_getSymbols */ "./node_modules/lodash/_getSymbols.js"), + stubArray = __webpack_require__(/*! ./stubArray */ "./node_modules/lodash/stubArray.js"); + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeGetSymbols = Object.getOwnPropertySymbols; + + /** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { + var result = []; + while (object) { + arrayPush(result, getSymbols(object)); + object = getPrototype(object); + } + return result; + }; + + module.exports = getSymbolsIn; + + + /***/ }), + + /***/ "./node_modules/lodash/_getTag.js": + /*!****************************************!*\ !*** ./node_modules/lodash/_getTag.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/lodash/_DataView.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), - Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/lodash/_Promise.js"), - Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), - WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/lodash/_WeakMap.js"), - baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), - toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - setTag = '[object Set]', - weakMapTag = '[object WeakMap]'; - -var dataViewTag = '[object DataView]'; - -/** Used to detect maps, sets, and weakmaps. */ -var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - -/** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ -var getTag = baseGetTag; + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var DataView = __webpack_require__(/*! ./_DataView */ "./node_modules/lodash/_DataView.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), + Promise = __webpack_require__(/*! ./_Promise */ "./node_modules/lodash/_Promise.js"), + Set = __webpack_require__(/*! ./_Set */ "./node_modules/lodash/_Set.js"), + WeakMap = __webpack_require__(/*! ./_WeakMap */ "./node_modules/lodash/_WeakMap.js"), + baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + toSource = __webpack_require__(/*! ./_toSource */ "./node_modules/lodash/_toSource.js"); + + /** `Object#toString` result references. */ + var mapTag = '[object Map]', + objectTag = '[object Object]', + promiseTag = '[object Promise]', + setTag = '[object Set]', + weakMapTag = '[object WeakMap]'; + + var dataViewTag = '[object DataView]'; + + /** Used to detect maps, sets, and weakmaps. */ + var dataViewCtorString = toSource(DataView), + mapCtorString = toSource(Map), + promiseCtorString = toSource(Promise), + setCtorString = toSource(Set), + weakMapCtorString = toSource(WeakMap); + + /** + * Gets the `toStringTag` of `value`. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the `toStringTag`. + */ + var getTag = baseGetTag; // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. -if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; -} + if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || + (Map && getTag(new Map) != mapTag) || + (Promise && getTag(Promise.resolve()) != promiseTag) || + (Set && getTag(new Set) != setTag) || + (WeakMap && getTag(new WeakMap) != weakMapTag)) { + getTag = function(value) { + var result = baseGetTag(value), + Ctor = result == objectTag ? value.constructor : undefined, + ctorString = Ctor ? toSource(Ctor) : ''; + + if (ctorString) { + switch (ctorString) { + case dataViewCtorString: return dataViewTag; + case mapCtorString: return mapTag; + case promiseCtorString: return promiseTag; + case setCtorString: return setTag; + case weakMapCtorString: return weakMapTag; + } + } + return result; + }; + } -module.exports = getTag; + module.exports = getTag; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_getValue.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_getValue.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_getValue.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function getValue(object, key) { - return object == null ? undefined : object[key]; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function getValue(object, key) { + return object == null ? undefined : object[key]; + } -module.exports = getValue; + module.exports = getValue; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_hasPath.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_hasPath.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_hasPath.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); - -/** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ -function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var castPath = __webpack_require__(/*! ./_castPath */ "./node_modules/lodash/_castPath.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + + /** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ + function hasPath(object, path, hasFunc) { + path = castPath(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = toKey(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && isLength(length) && isIndex(key, length) && + (isArray(object) || isArguments(object)); + } -module.exports = hasPath; + module.exports = hasPath; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_hasUnicode.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_hasUnicode.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_hasUnicode.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsZWJ = '\\u200d'; - -/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ -var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - -/** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ -function hasUnicode(string) { - return reHasUnicode.test(string); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + + /** Used to compose unicode capture groups. */ + var rsZWJ = '\\u200d'; + + /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ + var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + + /** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ + function hasUnicode(string) { + return reHasUnicode.test(string); + } -module.exports = hasUnicode; + module.exports = hasUnicode; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_hashClear.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_hashClear.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_hashClear.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); - -/** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ -function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + + /** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; + } -module.exports = hashClear; + module.exports = hashClear; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_hashDelete.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_hashDelete.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_hashDelete.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function hashDelete(key) { + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; + } -module.exports = hashDelete; + module.exports = hashDelete; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_hashGet.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_hashGet.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_hashGet.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function hashGet(key) { + var data = this.__data__; + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + return hasOwnProperty.call(data, key) ? data[key] : undefined; + } -module.exports = hashGet; + module.exports = hashGet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_hashHas.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_hashHas.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_hashHas.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function hashHas(key) { + var data = this.__data__; + return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); + } -module.exports = hashHas; + module.exports = hashHas; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_hashSet.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_hashSet.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_hashSet.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ -function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var nativeCreate = __webpack_require__(/*! ./_nativeCreate */ "./node_modules/lodash/_nativeCreate.js"); + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + function hashSet(key, value) { + var data = this.__data__; + this.size += this.has(key) ? 0 : 1; + data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; + return this; + } -module.exports = hashSet; + module.exports = hashSet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_initCloneArray.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_initCloneArray.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_initCloneArray.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ -function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } -module.exports = initCloneArray; + module.exports = initCloneArray; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_initCloneByTag.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_initCloneByTag.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_initCloneByTag.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"), - cloneDataView = __webpack_require__(/*! ./_cloneDataView */ "./node_modules/lodash/_cloneDataView.js"), - cloneRegExp = __webpack_require__(/*! ./_cloneRegExp */ "./node_modules/lodash/_cloneRegExp.js"), - cloneSymbol = __webpack_require__(/*! ./_cloneSymbol */ "./node_modules/lodash/_cloneSymbol.js"), - cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"); - -/** `Object#toString` result references. */ -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - mapTag = '[object Map]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]'; - -var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - -/** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var cloneArrayBuffer = __webpack_require__(/*! ./_cloneArrayBuffer */ "./node_modules/lodash/_cloneArrayBuffer.js"), + cloneDataView = __webpack_require__(/*! ./_cloneDataView */ "./node_modules/lodash/_cloneDataView.js"), + cloneRegExp = __webpack_require__(/*! ./_cloneRegExp */ "./node_modules/lodash/_cloneRegExp.js"), + cloneSymbol = __webpack_require__(/*! ./_cloneSymbol */ "./node_modules/lodash/_cloneSymbol.js"), + cloneTypedArray = __webpack_require__(/*! ./_cloneTypedArray */ "./node_modules/lodash/_cloneTypedArray.js"); + + /** `Object#toString` result references. */ + var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + + var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return cloneArrayBuffer(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return cloneTypedArray(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return cloneSymbol(object); + } + } -module.exports = initCloneByTag; + module.exports = initCloneByTag; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_initCloneObject.js": -/*!*************************************************!*\ + /***/ "./node_modules/lodash/_initCloneObject.js": + /*!*************************************************!*\ !*** ./node_modules/lodash/_initCloneObject.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"), - getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), - isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"); - -/** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ -function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"); + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + return (typeof object.constructor == 'function' && !isPrototype(object)) + ? baseCreate(getPrototype(object)) + : {}; + } -module.exports = initCloneObject; + module.exports = initCloneObject; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isFlattenable.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_isFlattenable.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_isFlattenable.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); - -/** Built-in value references. */ -var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; - -/** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ -function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Symbol = __webpack_require__(/*! ./_Symbol */ "./node_modules/lodash/_Symbol.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + + /** Built-in value references. */ + var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; + + /** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ + function isFlattenable(value) { + return isArray(value) || isArguments(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); + } -module.exports = isFlattenable; + module.exports = isFlattenable; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isIndex.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_isIndex.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_isIndex.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** Used to detect unsigned integer values. */ -var reIsUint = /^(?:0|[1-9]\d*)$/; - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991; + + /** Used to detect unsigned integer values. */ + var reIsUint = /^(?:0|[1-9]\d*)$/; + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + var type = typeof value; + length = length == null ? MAX_SAFE_INTEGER : length; + + return !!length && + (type == 'number' || + (type != 'symbol' && reIsUint.test(value))) && + (value > -1 && value % 1 == 0 && value < length); + } -module.exports = isIndex; + module.exports = isIndex; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isIterateeCall.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_isIterateeCall.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_isIterateeCall.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), - isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); - -/** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isIndex = __webpack_require__(/*! ./_isIndex */ "./node_modules/lodash/_isIndex.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + + /** + * Checks if the given arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, + * else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number' + ? (isArrayLike(object) && isIndex(index, object.length)) + : (type == 'string' && index in object) + ) { + return eq(object[index], value); + } + return false; + } -module.exports = isIterateeCall; + module.exports = isIterateeCall; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isKey.js": -/*!***************************************!*\ + /***/ "./node_modules/lodash/_isKey.js": + /*!***************************************!*\ !*** ./node_modules/lodash/_isKey.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); - -/** Used to match property names within property paths. */ -var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/; - -/** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ -function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + + /** Used to match property names within property paths. */ + var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + + /** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + function isKey(value, object) { + if (isArray(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || isSymbol(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); + } -module.exports = isKey; + module.exports = isKey; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isKeyable.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/_isKeyable.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/_isKeyable.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ -function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + function isKeyable(value) { + var type = typeof value; + return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') + ? (value !== '__proto__') + : (value === null); + } -module.exports = isKeyable; + module.exports = isKeyable; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isMasked.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_isMasked.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_isMasked.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/lodash/_coreJsData.js"); - -/** Used to detect methods masquerading as native. */ -var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; -}()); - -/** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ -function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var coreJsData = __webpack_require__(/*! ./_coreJsData */ "./node_modules/lodash/_coreJsData.js"); + + /** Used to detect methods masquerading as native. */ + var maskSrcKey = (function() { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? ('Symbol(src)_1.' + uid) : ''; + }()); + + /** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + function isMasked(func) { + return !!maskSrcKey && (maskSrcKey in func); + } -module.exports = isMasked; + module.exports = isMasked; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isPrototype.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_isPrototype.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_isPrototype.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ -function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** + * Checks if `value` is likely a prototype object. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. + */ + function isPrototype(value) { + var Ctor = value && value.constructor, + proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; + + return value === proto; + } -module.exports = isPrototype; + module.exports = isPrototype; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_isStrictComparable.js": -/*!****************************************************!*\ + /***/ "./node_modules/lodash/_isStrictComparable.js": + /*!****************************************************!*\ !*** ./node_modules/lodash/_isStrictComparable.js ***! \****************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); - -/** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ -function isStrictComparable(value) { - return value === value && !isObject(value); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && !isObject(value); + } -module.exports = isStrictComparable; + module.exports = isStrictComparable; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_listCacheClear.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_listCacheClear.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_listCacheClear.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ -function listCacheClear() { - this.__data__ = []; - this.size = 0; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + function listCacheClear() { + this.__data__ = []; + this.size = 0; + } -module.exports = listCacheClear; + module.exports = listCacheClear; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_listCacheDelete.js": -/*!*************************************************!*\ + /***/ "./node_modules/lodash/_listCacheDelete.js": + /*!*************************************************!*\ !*** ./node_modules/lodash/_listCacheDelete.js ***! \*************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); - -/** Used for built-in method references. */ -var arrayProto = Array.prototype; - -/** Built-in value references. */ -var splice = arrayProto.splice; - -/** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + + /** Used for built-in method references. */ + var arrayProto = Array.prototype; + + /** Built-in value references. */ + var splice = arrayProto.splice; + + /** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + var lastIndex = data.length - 1; + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + --this.size; + return true; + } -module.exports = listCacheDelete; + module.exports = listCacheDelete; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_listCacheGet.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_listCacheGet.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheGet.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); - -/** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + + /** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + return index < 0 ? undefined : data[index][1]; + } -module.exports = listCacheGet; + module.exports = listCacheGet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_listCacheHas.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_listCacheHas.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheHas.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); - -/** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + + /** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; + } -module.exports = listCacheHas; + module.exports = listCacheHas; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_listCacheSet.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_listCacheSet.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_listCacheSet.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); - -/** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ -function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assocIndexOf = __webpack_require__(/*! ./_assocIndexOf */ "./node_modules/lodash/_assocIndexOf.js"); + + /** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + ++this.size; + data.push([key, value]); + } else { + data[index][1] = value; + } + return this; + } -module.exports = listCacheSet; + module.exports = listCacheSet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_mapCacheClear.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_mapCacheClear.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_mapCacheClear.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/lodash/_Hash.js"), - ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"); - -/** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ -function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var Hash = __webpack_require__(/*! ./_Hash */ "./node_modules/lodash/_Hash.js"), + ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"); + + /** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + function mapCacheClear() { + this.size = 0; + this.__data__ = { + 'hash': new Hash, + 'map': new (Map || ListCache), + 'string': new Hash + }; + } -module.exports = mapCacheClear; + module.exports = mapCacheClear; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_mapCacheDelete.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_mapCacheDelete.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_mapCacheDelete.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); - -/** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + + /** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function mapCacheDelete(key) { + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; + } -module.exports = mapCacheDelete; + module.exports = mapCacheDelete; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_mapCacheGet.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_mapCacheGet.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheGet.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); - -/** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function mapCacheGet(key) { - return getMapData(this, key).get(key); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + + /** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function mapCacheGet(key) { + return getMapData(this, key).get(key); + } -module.exports = mapCacheGet; + module.exports = mapCacheGet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_mapCacheHas.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_mapCacheHas.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheHas.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); - -/** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function mapCacheHas(key) { - return getMapData(this, key).has(key); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + + /** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapCacheHas(key) { + return getMapData(this, key).has(key); + } -module.exports = mapCacheHas; + module.exports = mapCacheHas; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_mapCacheSet.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_mapCacheSet.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_mapCacheSet.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); - -/** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ -function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var getMapData = __webpack_require__(/*! ./_getMapData */ "./node_modules/lodash/_getMapData.js"); + + /** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + function mapCacheSet(key, value) { + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; + return this; + } -module.exports = mapCacheSet; + module.exports = mapCacheSet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_mapToArray.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_mapToArray.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_mapToArray.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ -function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ + function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; + } -module.exports = mapToArray; + module.exports = mapToArray; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_matchesStrictComparable.js": -/*!*********************************************************!*\ + /***/ "./node_modules/lodash/_matchesStrictComparable.js": + /*!*********************************************************!*\ !*** ./node_modules/lodash/_matchesStrictComparable.js ***! \*********************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ -function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ + function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; + } -module.exports = matchesStrictComparable; + module.exports = matchesStrictComparable; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_memoizeCapped.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_memoizeCapped.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_memoizeCapped.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js"); - -/** Used as the maximum memoize cache size. */ -var MAX_MEMOIZE_SIZE = 500; - -/** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ -function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var memoize = __webpack_require__(/*! ./memoize */ "./node_modules/lodash/memoize.js"); + + /** Used as the maximum memoize cache size. */ + var MAX_MEMOIZE_SIZE = 500; + + /** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ + function memoizeCapped(func) { + var result = memoize(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; + } -module.exports = memoizeCapped; + module.exports = memoizeCapped; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_nativeCreate.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_nativeCreate.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_nativeCreate.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); + var getNative = __webpack_require__(/*! ./_getNative */ "./node_modules/lodash/_getNative.js"); -/* Built-in method references that are verified to be native. */ -var nativeCreate = getNative(Object, 'create'); + /* Built-in method references that are verified to be native. */ + var nativeCreate = getNative(Object, 'create'); -module.exports = nativeCreate; + module.exports = nativeCreate; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_nativeKeys.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_nativeKeys.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_nativeKeys.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); + var overArg = __webpack_require__(/*! ./_overArg */ "./node_modules/lodash/_overArg.js"); -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeKeys = overArg(Object.keys, Object); + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeKeys = overArg(Object.keys, Object); -module.exports = nativeKeys; + module.exports = nativeKeys; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_nativeKeysIn.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_nativeKeysIn.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_nativeKeysIn.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * This function is like + * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * except that it includes inherited enumerable properties. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + */ + function nativeKeysIn(object) { + var result = []; + if (object != null) { + for (var key in Object(object)) { + result.push(key); + } + } + return result; + } -module.exports = nativeKeysIn; + module.exports = nativeKeysIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_nodeUtil.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_nodeUtil.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_nodeUtil.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); + /* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; + /** Detect free variable `exports`. */ + var freeExports = true && exports && !exports.nodeType && exports; -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; -/** Detect free variable `process` from Node.js. */ -var freeProcess = moduleExports && freeGlobal.process; + /** Detect free variable `process` from Node.js. */ + var freeProcess = moduleExports && freeGlobal.process; -/** Used to access faster Node.js helpers. */ -var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; + /** Used to access faster Node.js helpers. */ + var nodeUtil = (function() { + try { + // Use `util.types` for Node.js 10+. + var types = freeModule && freeModule.require && freeModule.require('util').types; - if (types) { - return types; - } + if (types) { + return types; + } - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} -}()); + // Legacy `process.binding('util')` for Node.js < 10. + return freeProcess && freeProcess.binding && freeProcess.binding('util'); + } catch (e) {} + }()); -module.exports = nodeUtil; + module.exports = nodeUtil; -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_objectToString.js": -/*!************************************************!*\ + /***/ "./node_modules/lodash/_objectToString.js": + /*!************************************************!*\ !*** ./node_modules/lodash/_objectToString.js ***! \************************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var nativeObjectToString = objectProto.toString; - -/** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ -function objectToString(value) { - return nativeObjectToString.call(value); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + var nativeObjectToString = objectProto.toString; + + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } -module.exports = objectToString; + module.exports = objectToString; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_overArg.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_overArg.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_overArg.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ -function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Creates a unary function that invokes `func` with its argument transformed. + * + * @private + * @param {Function} func The function to wrap. + * @param {Function} transform The argument transform. + * @returns {Function} Returns the new function. + */ + function overArg(func, transform) { + return function(arg) { + return func(transform(arg)); + }; + } -module.exports = overArg; + module.exports = overArg; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_overRest.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_overRest.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_overRest.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var apply = __webpack_require__(/*! ./_apply */ "./node_modules/lodash/_apply.js"); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ -function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var apply = __webpack_require__(/*! ./_apply */ "./node_modules/lodash/_apply.js"); + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeMax = Math.max; + + /** + * A specialized version of `baseRest` which transforms the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @param {number} [start=func.length-1] The start position of the rest parameter. + * @param {Function} transform The rest array transform. + * @returns {Function} Returns the new function. + */ + function overRest(func, start, transform) { + start = nativeMax(start === undefined ? (func.length - 1) : start, 0); + return function() { + var args = arguments, + index = -1, + length = nativeMax(args.length - start, 0), + array = Array(length); + + while (++index < length) { + array[index] = args[start + index]; + } + index = -1; + var otherArgs = Array(start + 1); + while (++index < start) { + otherArgs[index] = args[index]; + } + otherArgs[start] = transform(array); + return apply(func, this, otherArgs); + }; + } -module.exports = overRest; + module.exports = overRest; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_root.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/_root.js": + /*!**************************************!*\ !*** ./node_modules/lodash/_root.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); + var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "./node_modules/lodash/_freeGlobal.js"); -/** Detect free variable `self`. */ -var freeSelf = typeof self == 'object' && self && self.Object === Object && self; + /** Detect free variable `self`. */ + var freeSelf = typeof self == 'object' && self && self.Object === Object && self; -/** Used as a reference to the global object. */ -var root = freeGlobal || freeSelf || Function('return this')(); + /** Used as a reference to the global object. */ + var root = freeGlobal || freeSelf || Function('return this')(); -module.exports = root; + module.exports = root; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_safeGet.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/_safeGet.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/_safeGet.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Gets the value at `key`, unless `key` is "__proto__" or "constructor". + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + function safeGet(object, key) { + if (key === 'constructor' && typeof object[key] === 'function') { + return; + } + + if (key == '__proto__') { + return; + } + + return object[key]; + } -/** - * Gets the value at `key`, unless `key` is "__proto__" or "constructor". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ -function safeGet(object, key) { - if (key === 'constructor' && typeof object[key] === 'function') { - return; - } - - if (key == '__proto__') { - return; - } - - return object[key]; -} - -module.exports = safeGet; + module.exports = safeGet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_setCacheAdd.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_setCacheAdd.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_setCacheAdd.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used to stand-in for `undefined` hash values. */ -var HASH_UNDEFINED = '__lodash_hash_undefined__'; - -/** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ -function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used to stand-in for `undefined` hash values. */ + var HASH_UNDEFINED = '__lodash_hash_undefined__'; + + /** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ + function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; + } -module.exports = setCacheAdd; + module.exports = setCacheAdd; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_setCacheHas.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_setCacheHas.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_setCacheHas.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ -function setCacheHas(value) { - return this.__data__.has(value); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ + function setCacheHas(value) { + return this.__data__.has(value); + } -module.exports = setCacheHas; + module.exports = setCacheHas; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_setToArray.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_setToArray.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_setToArray.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ -function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ + function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; + } -module.exports = setToArray; + module.exports = setToArray; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_setToString.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_setToString.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_setToString.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var baseSetToString = __webpack_require__(/*! ./_baseSetToString */ "./node_modules/lodash/_baseSetToString.js"), - shortOut = __webpack_require__(/*! ./_shortOut */ "./node_modules/lodash/_shortOut.js"); + var baseSetToString = __webpack_require__(/*! ./_baseSetToString */ "./node_modules/lodash/_baseSetToString.js"), + shortOut = __webpack_require__(/*! ./_shortOut */ "./node_modules/lodash/_shortOut.js"); -/** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ -var setToString = shortOut(baseSetToString); + /** + * Sets the `toString` method of `func` to return `string`. + * + * @private + * @param {Function} func The function to modify. + * @param {Function} string The `toString` result. + * @returns {Function} Returns `func`. + */ + var setToString = shortOut(baseSetToString); -module.exports = setToString; + module.exports = setToString; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_shortOut.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_shortOut.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_shortOut.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used to detect hot functions by number of calls within a span of milliseconds. */ -var HOT_COUNT = 800, - HOT_SPAN = 16; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeNow = Date.now; - -/** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ -function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used to detect hot functions by number of calls within a span of milliseconds. */ + var HOT_COUNT = 800, + HOT_SPAN = 16; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeNow = Date.now; + + /** + * Creates a function that'll short out and invoke `identity` instead + * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` + * milliseconds. + * + * @private + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new shortable function. + */ + function shortOut(func) { + var count = 0, + lastCalled = 0; + + return function() { + var stamp = nativeNow(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return arguments[0]; + } + } else { + count = 0; + } + return func.apply(undefined, arguments); + }; + } -module.exports = shortOut; + module.exports = shortOut; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_stackClear.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_stackClear.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_stackClear.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"); - -/** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ -function stackClear() { - this.__data__ = new ListCache; - this.size = 0; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"); + + /** + * Removes all key-value entries from the stack. + * + * @private + * @name clear + * @memberOf Stack + */ + function stackClear() { + this.__data__ = new ListCache; + this.size = 0; + } -module.exports = stackClear; + module.exports = stackClear; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_stackDelete.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_stackDelete.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_stackDelete.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ -function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Removes `key` and its value from the stack. + * + * @private + * @name delete + * @memberOf Stack + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + function stackDelete(key) { + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; + } -module.exports = stackDelete; + module.exports = stackDelete; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_stackGet.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_stackGet.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_stackGet.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ -function stackGet(key) { - return this.__data__.get(key); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Gets the stack value for `key`. + * + * @private + * @name get + * @memberOf Stack + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + function stackGet(key) { + return this.__data__.get(key); + } -module.exports = stackGet; + module.exports = stackGet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_stackHas.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_stackHas.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_stackHas.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ -function stackHas(key) { - return this.__data__.has(key); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if a stack value for `key` exists. + * + * @private + * @name has + * @memberOf Stack + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function stackHas(key) { + return this.__data__.has(key); + } -module.exports = stackHas; + module.exports = stackHas; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_stackSet.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_stackSet.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_stackSet.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), - Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), - MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); - -/** Used as the size to enable large array optimizations. */ -var LARGE_ARRAY_SIZE = 200; - -/** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ -function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var ListCache = __webpack_require__(/*! ./_ListCache */ "./node_modules/lodash/_ListCache.js"), + Map = __webpack_require__(/*! ./_Map */ "./node_modules/lodash/_Map.js"), + MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); + + /** Used as the size to enable large array optimizations. */ + var LARGE_ARRAY_SIZE = 200; + + /** + * Sets the stack `key` to `value`. + * + * @private + * @name set + * @memberOf Stack + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the stack cache instance. + */ + function stackSet(key, value) { + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; + if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { + pairs.push([key, value]); + this.size = ++data.size; + return this; + } + data = this.__data__ = new MapCache(pairs); + } + data.set(key, value); + this.size = data.size; + return this; + } -module.exports = stackSet; + module.exports = stackSet; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_strictIndexOf.js": -/*!***********************************************!*\ + /***/ "./node_modules/lodash/_strictIndexOf.js": + /*!***********************************************!*\ !*** ./node_modules/lodash/_strictIndexOf.js ***! \***********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ -function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } -module.exports = strictIndexOf; + module.exports = strictIndexOf; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_stringSize.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/_stringSize.js": + /*!********************************************!*\ !*** ./node_modules/lodash/_stringSize.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var asciiSize = __webpack_require__(/*! ./_asciiSize */ "./node_modules/lodash/_asciiSize.js"), - hasUnicode = __webpack_require__(/*! ./_hasUnicode */ "./node_modules/lodash/_hasUnicode.js"), - unicodeSize = __webpack_require__(/*! ./_unicodeSize */ "./node_modules/lodash/_unicodeSize.js"); - -/** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ -function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var asciiSize = __webpack_require__(/*! ./_asciiSize */ "./node_modules/lodash/_asciiSize.js"), + hasUnicode = __webpack_require__(/*! ./_hasUnicode */ "./node_modules/lodash/_hasUnicode.js"), + unicodeSize = __webpack_require__(/*! ./_unicodeSize */ "./node_modules/lodash/_unicodeSize.js"); + + /** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ + function stringSize(string) { + return hasUnicode(string) + ? unicodeSize(string) + : asciiSize(string); + } -module.exports = stringSize; + module.exports = stringSize; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_stringToPath.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/_stringToPath.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/_stringToPath.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/lodash/_memoizeCapped.js"); - -/** Used to match property names within property paths. */ -var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - -/** Used to match backslashes in property paths. */ -var reEscapeChar = /\\(\\)?/g; - -/** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ -var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; -}); - -module.exports = stringToPath; - - -/***/ }), - -/***/ "./node_modules/lodash/_toKey.js": -/*!***************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var memoizeCapped = __webpack_require__(/*! ./_memoizeCapped */ "./node_modules/lodash/_memoizeCapped.js"); + + /** Used to match property names within property paths. */ + var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + + /** Used to match backslashes in property paths. */ + var reEscapeChar = /\\(\\)?/g; + + /** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + var stringToPath = memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; + }); + + module.exports = stringToPath; + + + /***/ }), + + /***/ "./node_modules/lodash/_toKey.js": + /*!***************************************!*\ !*** ./node_modules/lodash/_toKey.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0; - -/** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ -function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0; + + /** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; + } -module.exports = toKey; + module.exports = toKey; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_toSource.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/_toSource.js": + /*!******************************************!*\ !*** ./node_modules/lodash/_toSource.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used for built-in method references. */ -var funcProto = Function.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ -function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used for built-in method references. */ + var funcProto = Function.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to convert. + * @returns {string} Returns the source code. + */ + function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + try { + return (func + ''); + } catch (e) {} + } + return ''; + } -module.exports = toSource; + module.exports = toSource; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/_unicodeSize.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/_unicodeSize.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/_unicodeSize.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used to compose unicode character classes. */ -var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsVarRange = '\\ufe0e\\ufe0f'; - -/** Used to compose unicode capture groups. */ -var rsAstral = '[' + rsAstralRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsZWJ = '\\u200d'; - -/** Used to compose unicode regexes. */ -var reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - -/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ -var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - -/** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ -function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used to compose unicode character classes. */ + var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + + /** Used to compose unicode capture groups. */ + var rsAstral = '[' + rsAstralRange + ']', + rsCombo = '[' + rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + rsZWJ = '\\u200d'; + + /** Used to compose unicode regexes. */ + var reOptMod = rsModifier + '?', + rsOptVar = '[' + rsVarRange + ']?', + rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + + /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ + var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + + /** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ + function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; + } -module.exports = unicodeSize; + module.exports = unicodeSize; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/clone.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/clone.js": + /*!**************************************!*\ !*** ./node_modules/lodash/clone.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js"); - -/** Used to compose bitmasks for cloning. */ -var CLONE_SYMBOLS_FLAG = 4; - -/** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ -function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js"); + + /** Used to compose bitmasks for cloning. */ + var CLONE_SYMBOLS_FLAG = 4; + + /** + * Creates a shallow clone of `value`. + * + * **Note:** This method is loosely based on the + * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) + * and supports cloning arrays, array buffers, booleans, date objects, maps, + * numbers, `Object` objects, regexes, sets, strings, symbols, and typed + * arrays. The own enumerable properties of `arguments` objects are cloned + * as plain objects. An empty object is returned for uncloneable values such + * as error objects, functions, DOM nodes, and WeakMaps. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to clone. + * @returns {*} Returns the cloned value. + * @see _.cloneDeep + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var shallow = _.clone(objects); + * console.log(shallow[0] === objects[0]); + * // => true + */ + function clone(value) { + return baseClone(value, CLONE_SYMBOLS_FLAG); + } -module.exports = clone; + module.exports = clone; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/cloneDeep.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/cloneDeep.js": + /*!******************************************!*\ !*** ./node_modules/lodash/cloneDeep.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js"); - -/** Used to compose bitmasks for cloning. */ -var CLONE_DEEP_FLAG = 1, - CLONE_SYMBOLS_FLAG = 4; - -/** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ -function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseClone = __webpack_require__(/*! ./_baseClone */ "./node_modules/lodash/_baseClone.js"); + + /** Used to compose bitmasks for cloning. */ + var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + + /** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ + function cloneDeep(value) { + return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); + } -module.exports = cloneDeep; + module.exports = cloneDeep; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/constant.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/constant.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/constant.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Creates a function that returns `value`. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {*} value The value to return from the new function. - * @returns {Function} Returns the new constant function. - * @example - * - * var objects = _.times(2, _.constant({ 'a': 1 })); - * - * console.log(objects); - * // => [{ 'a': 1 }, { 'a': 1 }] - * - * console.log(objects[0] === objects[1]); - * // => true - */ -function constant(value) { - return function() { - return value; - }; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Creates a function that returns `value`. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {*} value The value to return from the new function. + * @returns {Function} Returns the new constant function. + * @example + * + * var objects = _.times(2, _.constant({ 'a': 1 })); + * + * console.log(objects); + * // => [{ 'a': 1 }, { 'a': 1 }] + * + * console.log(objects[0] === objects[1]); + * // => true + */ + function constant(value) { + return function() { + return value; + }; + } -module.exports = constant; + module.exports = constant; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/defaults.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/defaults.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/defaults.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), - eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), - isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"), - keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ -var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; -}); - -module.exports = defaults; - - -/***/ }), - -/***/ "./node_modules/lodash/each.js": -/*!*************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + eq = __webpack_require__(/*! ./eq */ "./node_modules/lodash/eq.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ + var defaults = baseRest(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && isIterateeCall(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = keysIn(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; + }); + + module.exports = defaults; + + + /***/ }), + + /***/ "./node_modules/lodash/each.js": + /*!*************************************!*\ !*** ./node_modules/lodash/each.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -module.exports = __webpack_require__(/*! ./forEach */ "./node_modules/lodash/forEach.js"); + module.exports = __webpack_require__(/*! ./forEach */ "./node_modules/lodash/forEach.js"); -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/eq.js": -/*!***********************************!*\ + /***/ "./node_modules/lodash/eq.js": + /*!***********************************!*\ !*** ./node_modules/lodash/eq.js ***! \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ -function eq(value, other) { - return value === other || (value !== value && other !== other); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + function eq(value, other) { + return value === other || (value !== value && other !== other); + } -module.exports = eq; + module.exports = eq; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/filter.js": -/*!***************************************!*\ + /***/ "./node_modules/lodash/filter.js": + /*!***************************************!*\ !*** ./node_modules/lodash/filter.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"), - baseFilter = __webpack_require__(/*! ./_baseFilter */ "./node_modules/lodash/_baseFilter.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); - -/** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - * - * // Combining several predicates using `_.overEvery` or `_.overSome`. - * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); - * // => objects for ['fred', 'barney'] - */ -function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, baseIteratee(predicate, 3)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayFilter = __webpack_require__(/*! ./_arrayFilter */ "./node_modules/lodash/_arrayFilter.js"), + baseFilter = __webpack_require__(/*! ./_baseFilter */ "./node_modules/lodash/_baseFilter.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ + function filter(collection, predicate) { + var func = isArray(collection) ? arrayFilter : baseFilter; + return func(collection, baseIteratee(predicate, 3)); + } -module.exports = filter; + module.exports = filter; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/find.js": -/*!*************************************!*\ + /***/ "./node_modules/lodash/find.js": + /*!*************************************!*\ !*** ./node_modules/lodash/find.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var createFind = __webpack_require__(/*! ./_createFind */ "./node_modules/lodash/_createFind.js"), - findIndex = __webpack_require__(/*! ./findIndex */ "./node_modules/lodash/findIndex.js"); - -/** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ -var find = createFind(findIndex); - -module.exports = find; - - -/***/ }), - -/***/ "./node_modules/lodash/findIndex.js": -/*!******************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var createFind = __webpack_require__(/*! ./_createFind */ "./node_modules/lodash/_createFind.js"), + findIndex = __webpack_require__(/*! ./findIndex */ "./node_modules/lodash/findIndex.js"); + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ + var find = createFind(findIndex); + + module.exports = find; + + + /***/ }), + + /***/ "./node_modules/lodash/findIndex.js": + /*!******************************************!*\ !*** ./node_modules/lodash/findIndex.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - toInteger = __webpack_require__(/*! ./toInteger */ "./node_modules/lodash/toInteger.js"); - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ -function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, baseIteratee(predicate, 3), index); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseFindIndex = __webpack_require__(/*! ./_baseFindIndex */ "./node_modules/lodash/_baseFindIndex.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + toInteger = __webpack_require__(/*! ./toInteger */ "./node_modules/lodash/toInteger.js"); + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeMax = Math.max; + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return baseFindIndex(array, baseIteratee(predicate, 3), index); + } -module.exports = findIndex; + module.exports = findIndex; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/flatten.js": -/*!****************************************!*\ + /***/ "./node_modules/lodash/flatten.js": + /*!****************************************!*\ !*** ./node_modules/lodash/flatten.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"); - -/** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ -function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"); + + /** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ + function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? baseFlatten(array, 1) : []; + } -module.exports = flatten; + module.exports = flatten; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/forEach.js": -/*!****************************************!*\ + /***/ "./node_modules/lodash/forEach.js": + /*!****************************************!*\ !*** ./node_modules/lodash/forEach.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), - baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), - castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); - -/** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ -function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, castFunction(iteratee)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), + baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), + castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + + /** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ + function forEach(collection, iteratee) { + var func = isArray(collection) ? arrayEach : baseEach; + return func(collection, castFunction(iteratee)); + } -module.exports = forEach; + module.exports = forEach; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/forIn.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/forIn.js": + /*!**************************************!*\ !*** ./node_modules/lodash/forIn.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), - castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"), - keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); - -/** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ -function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, castFunction(iteratee), keysIn); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseFor = __webpack_require__(/*! ./_baseFor */ "./node_modules/lodash/_baseFor.js"), + castFunction = __webpack_require__(/*! ./_castFunction */ "./node_modules/lodash/_castFunction.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + + /** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ + function forIn(object, iteratee) { + return object == null + ? object + : baseFor(object, castFunction(iteratee), keysIn); + } -module.exports = forIn; + module.exports = forIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/get.js": -/*!************************************!*\ + /***/ "./node_modules/lodash/get.js": + /*!************************************!*\ !*** ./node_modules/lodash/get.js ***! \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); - -/** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ -function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGet = __webpack_require__(/*! ./_baseGet */ "./node_modules/lodash/_baseGet.js"); + + /** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + function get(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; + } -module.exports = get; + module.exports = get; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/has.js": -/*!************************************!*\ + /***/ "./node_modules/lodash/has.js": + /*!************************************!*\ !*** ./node_modules/lodash/has.js ***! \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseHas = __webpack_require__(/*! ./_baseHas */ "./node_modules/lodash/_baseHas.js"), - hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js"); - -/** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ -function has(object, path) { - return object != null && hasPath(object, path, baseHas); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseHas = __webpack_require__(/*! ./_baseHas */ "./node_modules/lodash/_baseHas.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js"); + + /** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ + function has(object, path) { + return object != null && hasPath(object, path, baseHas); + } -module.exports = has; + module.exports = has; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/hasIn.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/hasIn.js": + /*!**************************************!*\ !*** ./node_modules/lodash/hasIn.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/lodash/_baseHasIn.js"), - hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js"); - -/** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ -function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseHasIn = __webpack_require__(/*! ./_baseHasIn */ "./node_modules/lodash/_baseHasIn.js"), + hasPath = __webpack_require__(/*! ./_hasPath */ "./node_modules/lodash/_hasPath.js"); + + /** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ + function hasIn(object, path) { + return object != null && hasPath(object, path, baseHasIn); + } -module.exports = hasIn; + module.exports = hasIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/identity.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/identity.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/identity.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * This method returns the first argument it receives. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {*} value Any value. - * @returns {*} Returns `value`. - * @example - * - * var object = { 'a': 1 }; - * - * console.log(_.identity(object) === object); - * // => true - */ -function identity(value) { - return value; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * This method returns the first argument it receives. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {*} value Any value. + * @returns {*} Returns `value`. + * @example + * + * var object = { 'a': 1 }; + * + * console.log(_.identity(object) === object); + * // => true + */ + function identity(value) { + return value; + } -module.exports = identity; + module.exports = identity; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isArguments.js": -/*!********************************************!*\ + /***/ "./node_modules/lodash/isArguments.js": + /*!********************************************!*\ !*** ./node_modules/lodash/isArguments.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/lodash/_baseIsArguments.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsArguments = __webpack_require__(/*! ./_baseIsArguments */ "./node_modules/lodash/_baseIsArguments.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Built-in value references. */ + var propertyIsEnumerable = objectProto.propertyIsEnumerable; + + /** + * Checks if `value` is likely an `arguments` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + * else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && + !propertyIsEnumerable.call(value, 'callee'); + }; + + module.exports = isArguments; + + + /***/ }), + + /***/ "./node_modules/lodash/isArray.js": + /*!****************************************!*\ + !*** ./node_modules/lodash/isArray.js ***! + \****************************************/ + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + var isArray = Array.isArray; + + module.exports = isArray; + + + /***/ }), + + /***/ "./node_modules/lodash/isArrayLike.js": + /*!********************************************!*\ + !*** ./node_modules/lodash/isArrayLike.js ***! + \********************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"); + + /** + * Checks if `value` is array-like. A value is considered array-like if it's + * not a function and has a `value.length` that's an integer greater than or + * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is array-like, else `false`. + * @example + * + * _.isArrayLike([1, 2, 3]); + * // => true + * + * _.isArrayLike(document.body.children); + * // => true + * + * _.isArrayLike('abc'); + * // => true + * + * _.isArrayLike(_.noop); + * // => false + */ + function isArrayLike(value) { + return value != null && isLength(value.length) && !isFunction(value); + } -/** Used for built-in method references. */ -var objectProto = Object.prototype; + module.exports = isArrayLike; -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; + /***/ }), -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); -}; + /***/ "./node_modules/lodash/isArrayLikeObject.js": + /*!**************************************************!*\ + !*** ./node_modules/lodash/isArrayLikeObject.js ***! + \**************************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** + * This method is like `_.isArrayLike` except that it also checks if `value` + * is an object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array-like object, + * else `false`. + * @example + * + * _.isArrayLikeObject([1, 2, 3]); + * // => true + * + * _.isArrayLikeObject(document.body.children); + * // => true + * + * _.isArrayLikeObject('abc'); + * // => false + * + * _.isArrayLikeObject(_.noop); + * // => false + */ + function isArrayLikeObject(value) { + return isObjectLike(value) && isArrayLike(value); + } -module.exports = isArguments; + module.exports = isArrayLikeObject; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isArray.js": -/*!****************************************!*\ - !*** ./node_modules/lodash/isArray.js ***! + /***/ "./node_modules/lodash/isBuffer.js": + /*!*****************************************!*\ + !*** ./node_modules/lodash/isBuffer.js ***! + \*****************************************/ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + /* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"), + stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js"); + + /** Detect free variable `exports`. */ + var freeExports = true && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports; + + /** Built-in value references. */ + var Buffer = moduleExports ? root.Buffer : undefined; + + /* Built-in method references for those with the same name as other `lodash` methods. */ + var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; + + /** + * Checks if `value` is a buffer. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. + * @example + * + * _.isBuffer(new Buffer(2)); + * // => true + * + * _.isBuffer(new Uint8Array(2)); + * // => false + */ + var isBuffer = nativeIsBuffer || stubFalse; + + module.exports = isBuffer; + + /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) + + /***/ }), + + /***/ "./node_modules/lodash/isEmpty.js": + /*!****************************************!*\ + !*** ./node_modules/lodash/isEmpty.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + + /** `Object#toString` result references. */ + var mapTag = '[object Map]', + setTag = '[object Set]'; + + /** Used for built-in method references. */ + var objectProto = Object.prototype; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** + * Checks if `value` is an empty object, collection, map, or set. + * + * Objects are considered empty if they have no own enumerable string keyed + * properties. + * + * Array-like values such as `arguments` objects, arrays, buffers, strings, or + * jQuery-like collections are considered empty if they have a `length` of `0`. + * Similarly, maps and sets are considered empty if they have a `size` of `0`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + if (isArrayLike(value) && + (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || + isBuffer(value) || isTypedArray(value) || isArguments(value))) { + return !value.length; + } + var tag = getTag(value); + if (tag == mapTag || tag == setTag) { + return !value.size; + } + if (isPrototype(value)) { + return !baseKeys(value).length; + } + for (var key in value) { + if (hasOwnProperty.call(value, key)) { + return false; + } + } + return true; + } -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ -var isArray = Array.isArray; - -module.exports = isArray; - - -/***/ }), - -/***/ "./node_modules/lodash/isArrayLike.js": -/*!********************************************!*\ - !*** ./node_modules/lodash/isArrayLike.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), - isLength = __webpack_require__(/*! ./isLength */ "./node_modules/lodash/isLength.js"); - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} - -module.exports = isArrayLike; - - -/***/ }), - -/***/ "./node_modules/lodash/isArrayLikeObject.js": -/*!**************************************************!*\ - !*** ./node_modules/lodash/isArrayLikeObject.js ***! - \**************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -module.exports = isArrayLikeObject; - - -/***/ }), - -/***/ "./node_modules/lodash/isBuffer.js": -/*!*****************************************!*\ - !*** ./node_modules/lodash/isBuffer.js ***! - \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"), - stubFalse = __webpack_require__(/*! ./stubFalse */ "./node_modules/lodash/stubFalse.js"); - -/** Detect free variable `exports`. */ -var freeExports = true && exports && !exports.nodeType && exports; - -/** Detect free variable `module`. */ -var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - -/** Detect the popular CommonJS extension `module.exports`. */ -var moduleExports = freeModule && freeModule.exports === freeExports; - -/** Built-in value references. */ -var Buffer = moduleExports ? root.Buffer : undefined; - -/* Built-in method references for those with the same name as other `lodash` methods. */ -var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; - -/** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ -var isBuffer = nativeIsBuffer || stubFalse; - -module.exports = isBuffer; - -/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module))) - -/***/ }), - -/***/ "./node_modules/lodash/isEmpty.js": -/*!****************************************!*\ - !*** ./node_modules/lodash/isEmpty.js ***! - \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), - getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), - isArguments = __webpack_require__(/*! ./isArguments */ "./node_modules/lodash/isArguments.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), - isPrototype = __webpack_require__(/*! ./_isPrototype */ "./node_modules/lodash/_isPrototype.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - setTag = '[object Set]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ -function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; -} + module.exports = isEmpty; -module.exports = isEmpty; + /***/ }), -/***/ }), - -/***/ "./node_modules/lodash/isFunction.js": -/*!*******************************************!*\ + /***/ "./node_modules/lodash/isFunction.js": + /*!*******************************************!*\ !*** ./node_modules/lodash/isFunction.js ***! \*******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); - -/** `Object#toString` result references. */ -var asyncTag = '[object AsyncFunction]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - proxyTag = '[object Proxy]'; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"); + + /** `Object#toString` result references. */ + var asyncTag = '[object AsyncFunction]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + proxyTag = '[object Proxy]'; + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + function isFunction(value) { + if (!isObject(value)) { + return false; + } + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; + } -module.exports = isFunction; + module.exports = isFunction; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isLength.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/isLength.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/isLength.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** Used as references for various `Number` constants. */ + var MAX_SAFE_INTEGER = 9007199254740991; + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This method is loosely based on + * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + * @example + * + * _.isLength(3); + * // => true + * + * _.isLength(Number.MIN_VALUE); + * // => false + * + * _.isLength(Infinity); + * // => false + * + * _.isLength('3'); + * // => false + */ + function isLength(value) { + return typeof value == 'number' && + value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } -module.exports = isLength; + module.exports = isLength; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isMap.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/isMap.js": + /*!**************************************!*\ !*** ./node_modules/lodash/isMap.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsMap = __webpack_require__(/*! ./_baseIsMap */ "./node_modules/lodash/_baseIsMap.js"), - baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), - nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); - -/* Node.js helper references. */ -var nodeIsMap = nodeUtil && nodeUtil.isMap; - -/** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ -var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - -module.exports = isMap; - - -/***/ }), - -/***/ "./node_modules/lodash/isObject.js": -/*!*****************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsMap = __webpack_require__(/*! ./_baseIsMap */ "./node_modules/lodash/_baseIsMap.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); + + /* Node.js helper references. */ + var nodeIsMap = nodeUtil && nodeUtil.isMap; + + /** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ + var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; + + module.exports = isMap; + + + /***/ }), + + /***/ "./node_modules/lodash/isObject.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/isObject.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + function isObject(value) { + var type = typeof value; + return value != null && (type == 'object' || type == 'function'); + } -module.exports = isObject; + module.exports = isObject; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isObjectLike.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/isObjectLike.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/isObjectLike.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return value != null && typeof value == 'object'; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + function isObjectLike(value) { + return value != null && typeof value == 'object'; + } -module.exports = isObjectLike; + module.exports = isObjectLike; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isPlainObject.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/isPlainObject.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/isPlainObject.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), - getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** `Object#toString` result references. */ -var objectTag = '[object Object]'; - -/** Used for built-in method references. */ -var funcProto = Function.prototype, - objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var funcToString = funcProto.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** Used to infer the `Object` constructor. */ -var objectCtorString = funcToString.call(Object); - -/** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ -function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** `Object#toString` result references. */ + var objectTag = '[object Object]'; + + /** Used for built-in method references. */ + var funcProto = Function.prototype, + objectProto = Object.prototype; + + /** Used to resolve the decompiled source of functions. */ + var funcToString = funcProto.toString; + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to infer the `Object` constructor. */ + var objectCtorString = funcToString.call(Object); + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * @static + * @memberOf _ + * @since 0.8.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + function isPlainObject(value) { + if (!isObjectLike(value) || baseGetTag(value) != objectTag) { + return false; + } + var proto = getPrototype(value); + if (proto === null) { + return true; + } + var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; + return typeof Ctor == 'function' && Ctor instanceof Ctor && + funcToString.call(Ctor) == objectCtorString; + } -module.exports = isPlainObject; + module.exports = isPlainObject; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isSet.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/isSet.js": + /*!**************************************!*\ !*** ./node_modules/lodash/isSet.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsSet = __webpack_require__(/*! ./_baseIsSet */ "./node_modules/lodash/_baseIsSet.js"), - baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), - nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); - -/* Node.js helper references. */ -var nodeIsSet = nodeUtil && nodeUtil.isSet; - -/** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ -var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - -module.exports = isSet; - - -/***/ }), - -/***/ "./node_modules/lodash/isString.js": -/*!*****************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsSet = __webpack_require__(/*! ./_baseIsSet */ "./node_modules/lodash/_baseIsSet.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); + + /* Node.js helper references. */ + var nodeIsSet = nodeUtil && nodeUtil.isSet; + + /** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ + var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; + + module.exports = isSet; + + + /***/ }), + + /***/ "./node_modules/lodash/isString.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/isString.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** `Object#toString` result references. */ -var stringTag = '[object String]'; - -/** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ -function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** `Object#toString` result references. */ + var stringTag = '[object String]'; + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || + (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); + } -module.exports = isString; + module.exports = isString; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isSymbol.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/isSymbol.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/isSymbol.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), - isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); - -/** `Object#toString` result references. */ -var symbolTag = '[object Symbol]'; - -/** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ -function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "./node_modules/lodash/_baseGetTag.js"), + isObjectLike = __webpack_require__(/*! ./isObjectLike */ "./node_modules/lodash/isObjectLike.js"); + + /** `Object#toString` result references. */ + var symbolTag = '[object Symbol]'; + + /** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + function isSymbol(value) { + return typeof value == 'symbol' || + (isObjectLike(value) && baseGetTag(value) == symbolTag); + } -module.exports = isSymbol; + module.exports = isSymbol; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/isTypedArray.js": -/*!*********************************************!*\ + /***/ "./node_modules/lodash/isTypedArray.js": + /*!*********************************************!*\ !*** ./node_modules/lodash/isTypedArray.js ***! \*********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"), - baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), - nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); - -/* Node.js helper references. */ -var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - -/** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ -var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - -module.exports = isTypedArray; - - -/***/ }), - -/***/ "./node_modules/lodash/isUndefined.js": -/*!********************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseIsTypedArray = __webpack_require__(/*! ./_baseIsTypedArray */ "./node_modules/lodash/_baseIsTypedArray.js"), + baseUnary = __webpack_require__(/*! ./_baseUnary */ "./node_modules/lodash/_baseUnary.js"), + nodeUtil = __webpack_require__(/*! ./_nodeUtil */ "./node_modules/lodash/_nodeUtil.js"); + + /* Node.js helper references. */ + var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; + + module.exports = isTypedArray; + + + /***/ }), + + /***/ "./node_modules/lodash/isUndefined.js": + /*!********************************************!*\ !*** ./node_modules/lodash/isUndefined.js ***! \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ -function isUndefined(value) { - return value === undefined; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return value === undefined; + } -module.exports = isUndefined; + module.exports = isUndefined; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/keys.js": -/*!*************************************!*\ + /***/ "./node_modules/lodash/keys.js": + /*!*************************************!*\ !*** ./node_modules/lodash/keys.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), - baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), + baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + function keys(object) { + return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); + } -module.exports = keys; + module.exports = keys; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/keysIn.js": -/*!***************************************!*\ + /***/ "./node_modules/lodash/keysIn.js": + /*!***************************************!*\ !*** ./node_modules/lodash/keysIn.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), - baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ "./node_modules/lodash/_baseKeysIn.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); - -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayLikeKeys = __webpack_require__(/*! ./_arrayLikeKeys */ "./node_modules/lodash/_arrayLikeKeys.js"), + baseKeysIn = __webpack_require__(/*! ./_baseKeysIn */ "./node_modules/lodash/_baseKeysIn.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"); + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); + } -module.exports = keysIn; + module.exports = keysIn; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/last.js": -/*!*************************************!*\ + /***/ "./node_modules/lodash/last.js": + /*!*************************************!*\ !*** ./node_modules/lodash/last.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ -function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; + } -module.exports = last; + module.exports = last; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/map.js": -/*!************************************!*\ + /***/ "./node_modules/lodash/map.js": + /*!************************************!*\ !*** ./node_modules/lodash/map.js ***! \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); - -/** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ -function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, baseIteratee(iteratee, 3)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayMap = __webpack_require__(/*! ./_arrayMap */ "./node_modules/lodash/_arrayMap.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseMap = __webpack_require__(/*! ./_baseMap */ "./node_modules/lodash/_baseMap.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + + /** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee) { + var func = isArray(collection) ? arrayMap : baseMap; + return func(collection, baseIteratee(iteratee, 3)); + } -module.exports = map; + module.exports = map; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/mapValues.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/mapValues.js": + /*!******************************************!*\ !*** ./node_modules/lodash/mapValues.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), - baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"); - -/** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ -function mapValues(object, iteratee) { - var result = {}; - iteratee = baseIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseAssignValue = __webpack_require__(/*! ./_baseAssignValue */ "./node_modules/lodash/_baseAssignValue.js"), + baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"); + + /** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee) { + var result = {}; + iteratee = baseIteratee(iteratee, 3); + + baseForOwn(object, function(value, key, object) { + baseAssignValue(result, key, iteratee(value, key, object)); + }); + return result; + } -module.exports = mapValues; + module.exports = mapValues; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/max.js": -/*!************************************!*\ + /***/ "./node_modules/lodash/max.js": + /*!************************************!*\ !*** ./node_modules/lodash/max.js ***! \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), - baseGt = __webpack_require__(/*! ./_baseGt */ "./node_modules/lodash/_baseGt.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); - -/** - * Computes the maximum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the maximum value. - * @example - * - * _.max([4, 2, 8, 6]); - * // => 8 - * - * _.max([]); - * // => undefined - */ -function max(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseGt) - : undefined; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), + baseGt = __webpack_require__(/*! ./_baseGt */ "./node_modules/lodash/_baseGt.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + + /** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ + function max(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseGt) + : undefined; + } -module.exports = max; + module.exports = max; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/memoize.js": -/*!****************************************!*\ + /***/ "./node_modules/lodash/memoize.js": + /*!****************************************!*\ !*** ./node_modules/lodash/memoize.js ***! \****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); - -/** Error message constants. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var MapCache = __webpack_require__(/*! ./_MapCache */ "./node_modules/lodash/_MapCache.js"); + + /** Error message constants. */ + var FUNC_ERROR_TEXT = 'Expected a function'; + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `clear`, `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + memoized.cache = cache.set(key, result) || cache; + return result; + }; + memoized.cache = new (memoize.Cache || MapCache); + return memoized; + } // Expose `MapCache`. -memoize.Cache = MapCache; + memoize.Cache = MapCache; -module.exports = memoize; + module.exports = memoize; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/merge.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/merge.js": + /*!**************************************!*\ !*** ./node_modules/lodash/merge.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseMerge = __webpack_require__(/*! ./_baseMerge */ "./node_modules/lodash/_baseMerge.js"), - createAssigner = __webpack_require__(/*! ./_createAssigner */ "./node_modules/lodash/_createAssigner.js"); - -/** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ -var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); -}); - -module.exports = merge; - - -/***/ }), - -/***/ "./node_modules/lodash/min.js": -/*!************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseMerge = __webpack_require__(/*! ./_baseMerge */ "./node_modules/lodash/_baseMerge.js"), + createAssigner = __webpack_require__(/*! ./_createAssigner */ "./node_modules/lodash/_createAssigner.js"); + + /** + * This method is like `_.assign` except that it recursively merges own and + * inherited enumerable string keyed properties of source objects into the + * destination object. Source properties that resolve to `undefined` are + * skipped if a destination value exists. Array and plain object properties + * are merged recursively. Other objects and value types are overridden by + * assignment. Source objects are applied from left to right. Subsequent + * sources overwrite property assignments of previous sources. + * + * **Note:** This method mutates `object`. + * + * @static + * @memberOf _ + * @since 0.5.0 + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * var object = { + * 'a': [{ 'b': 2 }, { 'd': 4 }] + * }; + * + * var other = { + * 'a': [{ 'c': 3 }, { 'e': 5 }] + * }; + * + * _.merge(object, other); + * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } + */ + var merge = createAssigner(function(object, source, srcIndex) { + baseMerge(object, source, srcIndex); + }); + + module.exports = merge; + + + /***/ }), + + /***/ "./node_modules/lodash/min.js": + /*!************************************!*\ !*** ./node_modules/lodash/min.js ***! \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), - baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js"), - identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); - -/** - * Computes the minimum value of `array`. If `array` is empty or falsey, - * `undefined` is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Math - * @param {Array} array The array to iterate over. - * @returns {*} Returns the minimum value. - * @example - * - * _.min([4, 2, 8, 6]); - * // => 2 - * - * _.min([]); - * // => undefined - */ -function min(array) { - return (array && array.length) - ? baseExtremum(array, identity, baseLt) - : undefined; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), + baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js"), + identity = __webpack_require__(/*! ./identity */ "./node_modules/lodash/identity.js"); + + /** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ + function min(array) { + return (array && array.length) + ? baseExtremum(array, identity, baseLt) + : undefined; + } -module.exports = min; + module.exports = min; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/minBy.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/minBy.js": + /*!**************************************!*\ !*** ./node_modules/lodash/minBy.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js"); - -/** - * This method is like `_.min` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * the value is ranked. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Math - * @param {Array} array The array to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {*} Returns the minimum value. - * @example - * - * var objects = [{ 'n': 1 }, { 'n': 2 }]; - * - * _.minBy(objects, function(o) { return o.n; }); - * // => { 'n': 1 } - * - * // The `_.property` iteratee shorthand. - * _.minBy(objects, 'n'); - * // => { 'n': 1 } - */ -function minBy(array, iteratee) { - return (array && array.length) - ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt) - : undefined; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseExtremum = __webpack_require__(/*! ./_baseExtremum */ "./node_modules/lodash/_baseExtremum.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseLt = __webpack_require__(/*! ./_baseLt */ "./node_modules/lodash/_baseLt.js"); + + /** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ + function minBy(array, iteratee) { + return (array && array.length) + ? baseExtremum(array, baseIteratee(iteratee, 2), baseLt) + : undefined; + } -module.exports = minBy; + module.exports = minBy; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/noop.js": -/*!*************************************!*\ + /***/ "./node_modules/lodash/noop.js": + /*!*************************************!*\ !*** ./node_modules/lodash/noop.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * This method returns `undefined`. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Util - * @example - * - * _.times(2, _.noop); - * // => [undefined, undefined] - */ -function noop() { - // No operation performed. -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ + function noop() { + // No operation performed. + } -module.exports = noop; + module.exports = noop; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/now.js": -/*!************************************!*\ + /***/ "./node_modules/lodash/now.js": + /*!************************************!*\ !*** ./node_modules/lodash/now.js ***! \************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); - -/** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ -var now = function() { - return root.Date.now(); -}; - -module.exports = now; - - -/***/ }), - -/***/ "./node_modules/lodash/pick.js": -/*!*************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var root = __webpack_require__(/*! ./_root */ "./node_modules/lodash/_root.js"); + + /** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ + var now = function() { + return root.Date.now(); + }; + + module.exports = now; + + + /***/ }), + + /***/ "./node_modules/lodash/pick.js": + /*!*************************************!*\ !*** ./node_modules/lodash/pick.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var basePick = __webpack_require__(/*! ./_basePick */ "./node_modules/lodash/_basePick.js"), - flatRest = __webpack_require__(/*! ./_flatRest */ "./node_modules/lodash/_flatRest.js"); - -/** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ -var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); -}); - -module.exports = pick; - - -/***/ }), - -/***/ "./node_modules/lodash/property.js": -/*!*****************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var basePick = __webpack_require__(/*! ./_basePick */ "./node_modules/lodash/_basePick.js"), + flatRest = __webpack_require__(/*! ./_flatRest */ "./node_modules/lodash/_flatRest.js"); + + /** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ + var pick = flatRest(function(object, paths) { + return object == null ? {} : basePick(object, paths); + }); + + module.exports = pick; + + + /***/ }), + + /***/ "./node_modules/lodash/property.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/property.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"), - basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/lodash/_basePropertyDeep.js"), - isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), - toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); - -/** - * Creates a function that returns the value at `path` of a given object. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Util - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - * @example - * - * var objects = [ - * { 'a': { 'b': 2 } }, - * { 'a': { 'b': 1 } } - * ]; - * - * _.map(objects, _.property('a.b')); - * // => [2, 1] - * - * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); - * // => [1, 2] - */ -function property(path) { - return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseProperty = __webpack_require__(/*! ./_baseProperty */ "./node_modules/lodash/_baseProperty.js"), + basePropertyDeep = __webpack_require__(/*! ./_basePropertyDeep */ "./node_modules/lodash/_basePropertyDeep.js"), + isKey = __webpack_require__(/*! ./_isKey */ "./node_modules/lodash/_isKey.js"), + toKey = __webpack_require__(/*! ./_toKey */ "./node_modules/lodash/_toKey.js"); + + /** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ + function property(path) { + return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); + } -module.exports = property; + module.exports = property; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/range.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/range.js": + /*!**************************************!*\ !*** ./node_modules/lodash/range.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var createRange = __webpack_require__(/*! ./_createRange */ "./node_modules/lodash/_createRange.js"); - -/** - * Creates an array of numbers (positive and/or negative) progressing from - * `start` up to, but not including, `end`. A step of `-1` is used if a negative - * `start` is specified without an `end` or `step`. If `end` is not specified, - * it's set to `start` with `start` then set to `0`. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @param {number} [step=1] The value to increment or decrement by. - * @returns {Array} Returns the range of numbers. - * @see _.inRange, _.rangeRight - * @example - * - * _.range(4); - * // => [0, 1, 2, 3] - * - * _.range(-4); - * // => [0, -1, -2, -3] - * - * _.range(1, 5); - * // => [1, 2, 3, 4] - * - * _.range(0, 20, 5); - * // => [0, 5, 10, 15] - * - * _.range(0, -4, -1); - * // => [0, -1, -2, -3] - * - * _.range(1, 4, 0); - * // => [1, 1, 1] - * - * _.range(0); - * // => [] - */ -var range = createRange(); - -module.exports = range; - - -/***/ }), - -/***/ "./node_modules/lodash/reduce.js": -/*!***************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var createRange = __webpack_require__(/*! ./_createRange */ "./node_modules/lodash/_createRange.js"); + + /** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ + var range = createRange(); + + module.exports = range; + + + /***/ }), + + /***/ "./node_modules/lodash/reduce.js": + /*!***************************************!*\ !*** ./node_modules/lodash/reduce.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayReduce = __webpack_require__(/*! ./_arrayReduce */ "./node_modules/lodash/_arrayReduce.js"), - baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - baseReduce = __webpack_require__(/*! ./_baseReduce */ "./node_modules/lodash/_baseReduce.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); - -/** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ -function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayReduce = __webpack_require__(/*! ./_arrayReduce */ "./node_modules/lodash/_arrayReduce.js"), + baseEach = __webpack_require__(/*! ./_baseEach */ "./node_modules/lodash/_baseEach.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + baseReduce = __webpack_require__(/*! ./_baseReduce */ "./node_modules/lodash/_baseReduce.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"); + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator) { + var func = isArray(collection) ? arrayReduce : baseReduce, + initAccum = arguments.length < 3; + + return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); + } -module.exports = reduce; + module.exports = reduce; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/size.js": -/*!*************************************!*\ + /***/ "./node_modules/lodash/size.js": + /*!*************************************!*\ !*** ./node_modules/lodash/size.js ***! \*************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), - getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), - isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), - isString = __webpack_require__(/*! ./isString */ "./node_modules/lodash/isString.js"), - stringSize = __webpack_require__(/*! ./_stringSize */ "./node_modules/lodash/_stringSize.js"); - -/** `Object#toString` result references. */ -var mapTag = '[object Map]', - setTag = '[object Set]'; - -/** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ -function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseKeys = __webpack_require__(/*! ./_baseKeys */ "./node_modules/lodash/_baseKeys.js"), + getTag = __webpack_require__(/*! ./_getTag */ "./node_modules/lodash/_getTag.js"), + isArrayLike = __webpack_require__(/*! ./isArrayLike */ "./node_modules/lodash/isArrayLike.js"), + isString = __webpack_require__(/*! ./isString */ "./node_modules/lodash/isString.js"), + stringSize = __webpack_require__(/*! ./_stringSize */ "./node_modules/lodash/_stringSize.js"); + + /** `Object#toString` result references. */ + var mapTag = '[object Map]', + setTag = '[object Set]'; + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + if (collection == null) { + return 0; + } + if (isArrayLike(collection)) { + return isString(collection) ? stringSize(collection) : collection.length; + } + var tag = getTag(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return baseKeys(collection).length; + } -module.exports = size; + module.exports = size; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/sortBy.js": -/*!***************************************!*\ + /***/ "./node_modules/lodash/sortBy.js": + /*!***************************************!*\ !*** ./node_modules/lodash/sortBy.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"), - baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ "./node_modules/lodash/_baseOrderBy.js"), - baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), - isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); - -/** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] - */ -var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); -}); - -module.exports = sortBy; - - -/***/ }), - -/***/ "./node_modules/lodash/stubArray.js": -/*!******************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"), + baseOrderBy = __webpack_require__(/*! ./_baseOrderBy */ "./node_modules/lodash/_baseOrderBy.js"), + baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + isIterateeCall = __webpack_require__(/*! ./_isIterateeCall */ "./node_modules/lodash/_isIterateeCall.js"); + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ + var sortBy = baseRest(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return baseOrderBy(collection, baseFlatten(iteratees, 1), []); + }); + + module.exports = sortBy; + + + /***/ }), + + /***/ "./node_modules/lodash/stubArray.js": + /*!******************************************!*\ !*** ./node_modules/lodash/stubArray.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * This method returns a new empty array. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {Array} Returns the new empty array. - * @example - * - * var arrays = _.times(2, _.stubArray); - * - * console.log(arrays); - * // => [[], []] - * - * console.log(arrays[0] === arrays[1]); - * // => false - */ -function stubArray() { - return []; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } -module.exports = stubArray; + module.exports = stubArray; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/stubFalse.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/stubFalse.js": + /*!******************************************!*\ !*** ./node_modules/lodash/stubFalse.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -/** - * This method returns `false`. - * - * @static - * @memberOf _ - * @since 4.13.0 - * @category Util - * @returns {boolean} Returns `false`. - * @example - * - * _.times(2, _.stubFalse); - * // => [false, false] - */ -function stubFalse() { - return false; -} + /*! no static exports found */ + /***/ (function(module, exports) { + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } -module.exports = stubFalse; + module.exports = stubFalse; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/toFinite.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/toFinite.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/toFinite.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toNumber = __webpack_require__(/*! ./toNumber */ "./node_modules/lodash/toNumber.js"); - -/** Used as references for various `Number` constants. */ -var INFINITY = 1 / 0, - MAX_INTEGER = 1.7976931348623157e+308; - -/** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ -function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var toNumber = __webpack_require__(/*! ./toNumber */ "./node_modules/lodash/toNumber.js"); + + /** Used as references for various `Number` constants. */ + var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308; + + /** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ + function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; + } -module.exports = toFinite; + module.exports = toFinite; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/toInteger.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/toInteger.js": + /*!******************************************!*\ !*** ./node_modules/lodash/toInteger.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js"); - -/** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ -function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var toFinite = __webpack_require__(/*! ./toFinite */ "./node_modules/lodash/toFinite.js"); + + /** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ + function toInteger(value) { + var result = toFinite(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; + } -module.exports = toInteger; + module.exports = toInteger; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/toNumber.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/toNumber.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/toNumber.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); - -/** Used as references for various `Number` constants. */ -var NAN = 0 / 0; - -/** Used to match leading and trailing whitespace. */ -var reTrim = /^\s+|\s+$/g; - -/** Used to detect bad signed hexadecimal string values. */ -var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - -/** Used to detect binary string values. */ -var reIsBinary = /^0b[01]+$/i; - -/** Used to detect octal string values. */ -var reIsOctal = /^0o[0-7]+$/i; - -/** Built-in method references without a dependency on `root`. */ -var freeParseInt = parseInt; - -/** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ -function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isSymbol = __webpack_require__(/*! ./isSymbol */ "./node_modules/lodash/isSymbol.js"); + + /** Used as references for various `Number` constants. */ + var NAN = 0 / 0; + + /** Used to match leading and trailing whitespace. */ + var reTrim = /^\s+|\s+$/g; + + /** Used to detect bad signed hexadecimal string values. */ + var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + + /** Used to detect binary string values. */ + var reIsBinary = /^0b[01]+$/i; + + /** Used to detect octal string values. */ + var reIsOctal = /^0o[0-7]+$/i; + + /** Built-in method references without a dependency on `root`. */ + var freeParseInt = parseInt; + + /** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ + function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if (isSymbol(value)) { + return NAN; + } + if (isObject(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = isObject(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = value.replace(reTrim, ''); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); + } -module.exports = toNumber; + module.exports = toNumber; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/toPlainObject.js": -/*!**********************************************!*\ + /***/ "./node_modules/lodash/toPlainObject.js": + /*!**********************************************!*\ !*** ./node_modules/lodash/toPlainObject.js ***! \**********************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), - keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); - -/** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ -function toPlainObject(value) { - return copyObject(value, keysIn(value)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var copyObject = __webpack_require__(/*! ./_copyObject */ "./node_modules/lodash/_copyObject.js"), + keysIn = __webpack_require__(/*! ./keysIn */ "./node_modules/lodash/keysIn.js"); + + /** + * Converts `value` to a plain object flattening inherited enumerable string + * keyed properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @since 3.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return copyObject(value, keysIn(value)); + } -module.exports = toPlainObject; + module.exports = toPlainObject; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/toString.js": -/*!*****************************************!*\ + /***/ "./node_modules/lodash/toString.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/toString.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/lodash/_baseToString.js"); - -/** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ -function toString(value) { - return value == null ? '' : baseToString(value); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseToString = __webpack_require__(/*! ./_baseToString */ "./node_modules/lodash/_baseToString.js"); + + /** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + function toString(value) { + return value == null ? '' : baseToString(value); + } -module.exports = toString; + module.exports = toString; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/transform.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/transform.js": + /*!******************************************!*\ !*** ./node_modules/lodash/transform.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), - baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"), - baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), - baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), - getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), - isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), - isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), - isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), - isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), - isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); - -/** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ -function transform(object, iteratee, accumulator) { - var isArr = isArray(object), - isArrLike = isArr || isBuffer(object) || isTypedArray(object); - - iteratee = baseIteratee(iteratee, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor : []; - } - else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var arrayEach = __webpack_require__(/*! ./_arrayEach */ "./node_modules/lodash/_arrayEach.js"), + baseCreate = __webpack_require__(/*! ./_baseCreate */ "./node_modules/lodash/_baseCreate.js"), + baseForOwn = __webpack_require__(/*! ./_baseForOwn */ "./node_modules/lodash/_baseForOwn.js"), + baseIteratee = __webpack_require__(/*! ./_baseIteratee */ "./node_modules/lodash/_baseIteratee.js"), + getPrototype = __webpack_require__(/*! ./_getPrototype */ "./node_modules/lodash/_getPrototype.js"), + isArray = __webpack_require__(/*! ./isArray */ "./node_modules/lodash/isArray.js"), + isBuffer = __webpack_require__(/*! ./isBuffer */ "./node_modules/lodash/isBuffer.js"), + isFunction = __webpack_require__(/*! ./isFunction */ "./node_modules/lodash/isFunction.js"), + isObject = __webpack_require__(/*! ./isObject */ "./node_modules/lodash/isObject.js"), + isTypedArray = __webpack_require__(/*! ./isTypedArray */ "./node_modules/lodash/isTypedArray.js"); + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own + * enumerable string keyed properties thru `iteratee`, with each invocation + * potentially mutating the `accumulator` object. If `accumulator` is not + * provided, a new object with the same `[[Prototype]]` will be used. The + * iteratee is invoked with four arguments: (accumulator, value, key, object). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 1.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }, []); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function transform(object, iteratee, accumulator) { + var isArr = isArray(object), + isArrLike = isArr || isBuffer(object) || isTypedArray(object); + + iteratee = baseIteratee(iteratee, 4); + if (accumulator == null) { + var Ctor = object && object.constructor; + if (isArrLike) { + accumulator = isArr ? new Ctor : []; + } + else if (isObject(object)) { + accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; + } + else { + accumulator = {}; + } + } + (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } -module.exports = transform; + module.exports = transform; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/union.js": -/*!**************************************!*\ + /***/ "./node_modules/lodash/union.js": + /*!**************************************!*\ !*** ./node_modules/lodash/union.js ***! \**************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"), - baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), - baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/lodash/_baseUniq.js"), - isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"); - -/** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ -var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); -}); - -module.exports = union; - - -/***/ }), - -/***/ "./node_modules/lodash/uniqueId.js": -/*!*****************************************!*\ + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseFlatten = __webpack_require__(/*! ./_baseFlatten */ "./node_modules/lodash/_baseFlatten.js"), + baseRest = __webpack_require__(/*! ./_baseRest */ "./node_modules/lodash/_baseRest.js"), + baseUniq = __webpack_require__(/*! ./_baseUniq */ "./node_modules/lodash/_baseUniq.js"), + isArrayLikeObject = __webpack_require__(/*! ./isArrayLikeObject */ "./node_modules/lodash/isArrayLikeObject.js"); + + /** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ + var union = baseRest(function(arrays) { + return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); + }); + + module.exports = union; + + + /***/ }), + + /***/ "./node_modules/lodash/uniqueId.js": + /*!*****************************************!*\ !*** ./node_modules/lodash/uniqueId.js ***! \*****************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); - -/** Used to generate unique IDs. */ -var idCounter = 0; - -/** - * Generates a unique ID. If `prefix` is given, the ID is appended to it. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Util - * @param {string} [prefix=''] The value to prefix the ID with. - * @returns {string} Returns the unique ID. - * @example - * - * _.uniqueId('contact_'); - * // => 'contact_104' - * - * _.uniqueId(); - * // => '105' - */ -function uniqueId(prefix) { - var id = ++idCounter; - return toString(prefix) + id; -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var toString = __webpack_require__(/*! ./toString */ "./node_modules/lodash/toString.js"); + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ + function uniqueId(prefix) { + var id = ++idCounter; + return toString(prefix) + id; + } -module.exports = uniqueId; + module.exports = uniqueId; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/values.js": -/*!***************************************!*\ + /***/ "./node_modules/lodash/values.js": + /*!***************************************!*\ !*** ./node_modules/lodash/values.js ***! \***************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var baseValues = __webpack_require__(/*! ./_baseValues */ "./node_modules/lodash/_baseValues.js"), - keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); - -/** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ -function values(object) { - return object == null ? [] : baseValues(object, keys(object)); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var baseValues = __webpack_require__(/*! ./_baseValues */ "./node_modules/lodash/_baseValues.js"), + keys = __webpack_require__(/*! ./keys */ "./node_modules/lodash/keys.js"); + + /** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return object == null ? [] : baseValues(object, keys(object)); + } -module.exports = values; + module.exports = values; -/***/ }), + /***/ }), -/***/ "./node_modules/lodash/zipObject.js": -/*!******************************************!*\ + /***/ "./node_modules/lodash/zipObject.js": + /*!******************************************!*\ !*** ./node_modules/lodash/zipObject.js ***! \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), - baseZipObject = __webpack_require__(/*! ./_baseZipObject */ "./node_modules/lodash/_baseZipObject.js"); - -/** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ -function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); -} + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { + + var assignValue = __webpack_require__(/*! ./_assignValue */ "./node_modules/lodash/_assignValue.js"), + baseZipObject = __webpack_require__(/*! ./_baseZipObject */ "./node_modules/lodash/_baseZipObject.js"); + + /** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ + function zipObject(props, values) { + return baseZipObject(props || [], values || [], assignValue); + } -module.exports = zipObject; + module.exports = zipObject; -/***/ }), + /***/ }), -/***/ "./node_modules/webpack/buildin/global.js": -/*!***********************************!*\ + /***/ "./node_modules/webpack/buildin/global.js": + /*!***********************************!*\ !*** (webpack)/buildin/global.js ***! \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports) { -var g; + var g; // This works in non-strict mode -g = (function() { - return this; -})(); - -try { - // This works if eval is allowed (see CSP) - g = g || new Function("return this")(); -} catch (e) { - // This works if the window reference is available - if (typeof window === "object") g = window; -} + g = (function() { + return this; + })(); + + try { + // This works if eval is allowed (see CSP) + g = g || new Function("return this")(); + } catch (e) { + // This works if the window reference is available + if (typeof window === "object") g = window; + } // g can still be undefined, but nothing to do about it... // We return undefined, instead of nothing here, so it's // easier to handle this case. if(!global) { ...} -module.exports = g; + module.exports = g; -/***/ }), + /***/ }), -/***/ "./node_modules/webpack/buildin/module.js": -/*!***********************************!*\ + /***/ "./node_modules/webpack/buildin/module.js": + /*!***********************************!*\ !*** (webpack)/buildin/module.js ***! \***********************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -module.exports = function(module) { - if (!module.webpackPolyfill) { - module.deprecate = function() {}; - module.paths = []; - // module.parent = undefined by default - if (!module.children) module.children = []; - Object.defineProperty(module, "loaded", { - enumerable: true, - get: function() { - return module.l; - } - }); - Object.defineProperty(module, "id", { - enumerable: true, - get: function() { - return module.i; - } - }); - module.webpackPolyfill = 1; - } - return module; -}; - - -/***/ }), - -/***/ "./src/assign.js": -/*!***********************!*\ + /*! no static exports found */ + /***/ (function(module, exports) { + + module.exports = function(module) { + if (!module.webpackPolyfill) { + module.deprecate = function() {}; + module.paths = []; + // module.parent = undefined by default + if (!module.children) module.children = []; + Object.defineProperty(module, "loaded", { + enumerable: true, + get: function() { + return module.l; + } + }); + Object.defineProperty(module, "id", { + enumerable: true, + get: function() { + return module.i; + } + }); + module.webpackPolyfill = 1; + } + return module; + }; + + + /***/ }), + + /***/ "./src/assign.js": + /*!***********************!*\ !*** ./src/assign.js ***! \***********************/ -/*! no static exports found */ -/***/ (function(module, exports) { + /*! no static exports found */ + /***/ (function(module, exports) { // Simple, internal Object.assign() polyfill for options objects etc. -module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - srcs[_key - 1] = arguments[_key]; - } - - srcs.forEach(function (src) { - Object.keys(src).forEach(function (k) { - return tgt[k] = src[k]; - }); - }); - return tgt; -}; - -/***/ }), - -/***/ "./src/defaults.js": -/*!*************************!*\ + module.exports = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { + for (var _len = arguments.length, srcs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + srcs[_key - 1] = arguments[_key]; + } + + srcs.forEach(function (src) { + Object.keys(src).forEach(function (k) { + return tgt[k] = src[k]; + }); + }); + return tgt; + }; + + /***/ }), + + /***/ "./src/defaults.js": + /*!*************************!*\ !*** ./src/defaults.js ***! \*************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -var defaults = { - // dagre algo options, uses default value on undefined - nodeSep: undefined, - // the separation between adjacent nodes in the same rank - edgeSep: undefined, - // the separation between adjacent edges in the same rank - rankSep: undefined, - // the separation between adjacent nodes in the same rank - rankDir: undefined, - // 'TB' for top to bottom flow, 'LR' for left to right, - ranker: undefined, - // Type of algorithm to assigns a rank to each node in the input graph. - // Possible values: network-simplex, tight-tree or longest-path - minLen: function minLen(edge) { - return 1; - }, - // number of ranks to keep between the source and target of the edge - edgeWeight: function edgeWeight(edge) { - return 1; - }, - // higher weight edges are generally made shorter and straighter than lower weight edges - // general layout options - fit: true, - // whether to fit to viewport - padding: 30, - // fit padding - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - nodeDimensionsIncludeLabels: false, - // whether labels should be included in determining the space used by a node - animate: false, - // whether to transition the node positions - animateFilter: function animateFilter(node, i) { - return true; - }, - // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - transform: function transform(node, pos) { - return pos; - }, - // a function that applies a transform to the final node position - ready: function ready() {}, - // on layoutready - stop: function stop() {} // on layoutstop - -}; -module.exports = defaults; - -/***/ }), - -/***/ "./src/index.js": -/*!**********************!*\ + /*! no static exports found */ + /***/ (function(module, exports) { + + var defaults = { + // dagre algo options, uses default value on undefined + nodeSep: undefined, + // the separation between adjacent nodes in the same rank + edgeSep: undefined, + // the separation between adjacent edges in the same rank + rankSep: undefined, + // the separation between adjacent nodes in the same rank + rankDir: undefined, + // 'TB' for top to bottom flow, 'LR' for left to right, + ranker: undefined, + // Type of algorithm to assigns a rank to each node in the input graph. + // Possible values: network-simplex, tight-tree or longest-path + minLen: function minLen(edge) { + return 1; + }, + // number of ranks to keep between the source and target of the edge + edgeWeight: function edgeWeight(edge) { + return 1; + }, + // higher weight edges are generally made shorter and straighter than lower weight edges + // general layout options + fit: true, + // whether to fit to viewport + padding: 30, + // fit padding + spacingFactor: undefined, + // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up + nodeDimensionsIncludeLabels: false, + // whether labels should be included in determining the space used by a node + animate: false, + // whether to transition the node positions + animateFilter: function animateFilter(node, i) { + return true; + }, + // whether to animate specific nodes when animation is on; non-animated nodes immediately go to their final positions + animationDuration: 500, + // duration of animation in ms if enabled + animationEasing: undefined, + // easing of animation if enabled + boundingBox: undefined, + // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } + transform: function transform(node, pos) { + return pos; + }, + // a function that applies a transform to the final node position + ready: function ready() {}, + // on layoutready + stop: function stop() {} // on layoutstop + + }; + module.exports = defaults; + + /***/ }), + + /***/ "./src/index.js": + /*!**********************!*\ !*** ./src/index.js ***! \**********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -var impl = __webpack_require__(/*! ./layout */ "./src/layout.js"); // registers the extension on a cytoscape lib ref + var impl = __webpack_require__(/*! ./layout */ "./src/layout.js"); // registers the extension on a cytoscape lib ref -var register = function register(cytoscape) { - if (!cytoscape) { - return; - } // can't register if cytoscape unspecified + var register = function register(cytoscape) { + if (!cytoscape) { + return; + } // can't register if cytoscape unspecified - cytoscape('layout', 'dagre', impl); // register with cytoscape.js -}; + cytoscape('layout', 'dagre', impl); // register with cytoscape.js + }; -if (typeof cytoscape !== 'undefined') { - // expose to global cytoscape (i.e. window.cytoscape) - register(cytoscape); -} + if (typeof cytoscape !== 'undefined') { + // expose to global cytoscape (i.e. window.cytoscape) + register(cytoscape); + } -module.exports = register; + module.exports = register; -/***/ }), + /***/ }), -/***/ "./src/layout.js": -/*!***********************!*\ + /***/ "./src/layout.js": + /*!***********************!*\ !*** ./src/layout.js ***! \***********************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { + /*! no static exports found */ + /***/ (function(module, exports, __webpack_require__) { -function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } -var isFunction = function isFunction(o) { - return typeof o === 'function'; -}; + var isFunction = function isFunction(o) { + return typeof o === 'function'; + }; -var defaults = __webpack_require__(/*! ./defaults */ "./src/defaults.js"); + var defaults = __webpack_require__(/*! ./defaults */ "./src/defaults.js"); -var assign = __webpack_require__(/*! ./assign */ "./src/assign.js"); + var assign = __webpack_require__(/*! ./assign */ "./src/assign.js"); -var dagre = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js"); // constructor + var dagre = __webpack_require__(/*! dagre */ "./node_modules/dagre/index.js"); // constructor // options : object containing layout options -function DagreLayout(options) { - this.options = assign({}, defaults, options); -} // runs the layout - - -DagreLayout.prototype.run = function () { - var options = this.options; - var layout = this; - var cy = options.cy; // cy is automatically populated for us in the constructor - - var eles = options.eles; - - var getVal = function getVal(ele, val) { - return isFunction(val) ? val.apply(ele, [ele]) : val; - }; - - var bb = options.boundingBox || { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }; - - if (bb.x2 === undefined) { - bb.x2 = bb.x1 + bb.w; - } - - if (bb.w === undefined) { - bb.w = bb.x2 - bb.x1; - } - - if (bb.y2 === undefined) { - bb.y2 = bb.y1 + bb.h; - } - - if (bb.h === undefined) { - bb.h = bb.y2 - bb.y1; - } - - var g = new dagre.graphlib.Graph({ - multigraph: true, - compound: true - }); - var gObj = {}; - - var setGObj = function setGObj(name, val) { - if (val != null) { - gObj[name] = val; - } - }; - - setGObj('nodesep', options.nodeSep); - setGObj('edgesep', options.edgeSep); - setGObj('ranksep', options.rankSep); - setGObj('rankdir', options.rankDir); - setGObj('ranker', options.ranker); - g.setGraph(gObj); - g.setDefaultEdgeLabel(function () { - return {}; - }); - g.setDefaultNodeLabel(function () { - return {}; - }); // add nodes to dagre - - var nodes = eles.nodes(); - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var nbb = node.layoutDimensions(options); - g.setNode(node.id(), { - width: nbb.w, - height: nbb.h, - name: node.id() - }); // console.log( g.node(node.id()) ); - } // set compound parents - - - for (var _i = 0; _i < nodes.length; _i++) { - var _node = nodes[_i]; - - if (_node.isChild()) { - g.setParent(_node.id(), _node.parent().id()); - } - } // add edges to dagre - - - var edges = eles.edges().stdFilter(function (edge) { - return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes - }); - - for (var _i2 = 0; _i2 < edges.length; _i2++) { - var edge = edges[_i2]; - g.setEdge(edge.source().id(), edge.target().id(), { - minlen: getVal(edge, options.minLen), - weight: getVal(edge, options.edgeWeight), - name: edge.id() - }, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) ); - } - - dagre.layout(g); - var gNodeIds = g.nodes(); - - for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) { - var id = gNodeIds[_i3]; - var n = g.node(id); - cy.getElementById(id).scratch().dagre = n; - } - - var dagreBB; - - if (options.boundingBox) { - dagreBB = { - x1: Infinity, - x2: -Infinity, - y1: Infinity, - y2: -Infinity - }; - nodes.forEach(function (node) { - var dModel = node.scratch().dagre; - dagreBB.x1 = Math.min(dagreBB.x1, dModel.x); - dagreBB.x2 = Math.max(dagreBB.x2, dModel.x); - dagreBB.y1 = Math.min(dagreBB.y1, dModel.y); - dagreBB.y2 = Math.max(dagreBB.y2, dModel.y); - }); - dagreBB.w = dagreBB.x2 - dagreBB.x1; - dagreBB.h = dagreBB.y2 - dagreBB.y1; - } else { - dagreBB = bb; - } - - var constrainPos = function constrainPos(p) { - if (options.boundingBox) { - var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w; - var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h; - return { - x: bb.x1 + xPct * bb.w, - y: bb.y1 + yPct * bb.h - }; - } else { - return p; - } - }; - - nodes.layoutPositions(layout, options, function (ele) { - ele = _typeof(ele) === "object" ? ele : this; - var dModel = ele.scratch().dagre; - return constrainPos({ - x: dModel.x, - y: dModel.y - }); - }); - return this; // chaining -}; - -module.exports = DagreLayout; - -/***/ }) - -/******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWN5Y2xpYy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWRkLWJvcmRlci1zZWdtZW50cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvY29vcmRpbmF0ZS1zeXN0ZW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2RhdGEvbGlzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvZGVidWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2dyYXBobGliLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmVlZHktZmFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9sYXlvdXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2xvZGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvbmVzdGluZy1ncmFwaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvbm9ybWFsaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2JhcnljZW50ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2J1aWxkLWxheWVyLWdyYXBoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9jcm9zcy1jb3VudC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2luaXQtb3JkZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL3Jlc29sdmUtY29uZmxpY3RzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9zb3J0LXN1YmdyYXBoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9zb3J0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wYXJlbnQtZHVtbXktY2hhaW5zLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wb3NpdGlvbi9iay5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcG9zaXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvZmVhc2libGUtdHJlZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9uZXR3b3JrLXNpbXBsZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvdXRpbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvdXRpbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kZnMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS1hbGwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2lzLWFjeWNsaWMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wb3N0b3JkZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wcmVvcmRlci5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3ByaW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90YXJqYW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9ncmFwaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2pzb24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2xvZGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVJlZHVjZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U29tZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FzY2lpU2l6ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnbk1lcmdlVmFsdWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRXh0cmVtdW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmlsdGVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZpbmRJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUhhcy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbmRleE9mLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hTi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWFwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VPcmRlckJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5nZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU29ydEJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuaXEuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVmFsdWVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVppcE9iamVjdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvbXBhcmVBc2NlbmRpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlTXVsdGlwbGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUFzc2lnbmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJhbmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlU2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQnlUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE5hdGl2ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNVbmljb2RlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaENsZWFyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hHZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0ZsYXR0ZW5hYmxlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlclJlc3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmljdEluZGV4T2YuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdTaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVTaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVmYXVsdHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmRJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmxhdHRlbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9ySW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaWRlbnRpdHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VtcHR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNVbmRlZmluZWQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tYXBWYWx1ZXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21heC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVtb2l6ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21pbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWluQnkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JhbmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NpemUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViRmFsc2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcXVlSWQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvemlwT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9zcmMvYXNzaWduLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2RlZmF1bHRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2luZGV4LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2xheW91dC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRndCIsInNyY3MiLCJmb3JFYWNoIiwic3JjIiwia2V5cyIsImsiLCJkZWZhdWx0cyIsIm5vZGVTZXAiLCJ1bmRlZmluZWQiLCJlZGdlU2VwIiwicmFua1NlcCIsInJhbmtEaXIiLCJyYW5rZXIiLCJtaW5MZW4iLCJlZGdlIiwiZWRnZVdlaWdodCIsImZpdCIsInBhZGRpbmciLCJzcGFjaW5nRmFjdG9yIiwibm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzIiwiYW5pbWF0ZSIsImFuaW1hdGVGaWx0ZXIiLCJub2RlIiwiaSIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiYm91bmRpbmdCb3giLCJ0cmFuc2Zvcm0iLCJwb3MiLCJyZWFkeSIsInN0b3AiLCJpbXBsIiwicmVxdWlyZSIsInJlZ2lzdGVyIiwiY3l0b3NjYXBlIiwiaXNGdW5jdGlvbiIsIm8iLCJkYWdyZSIsIkRhZ3JlTGF5b3V0Iiwib3B0aW9ucyIsInByb3RvdHlwZSIsInJ1biIsImxheW91dCIsImN5IiwiZWxlcyIsImdldFZhbCIsImVsZSIsInZhbCIsImFwcGx5IiwiYmIiLCJ4MSIsInkxIiwidyIsIndpZHRoIiwiaCIsImhlaWdodCIsIngyIiwieTIiLCJnIiwiZ3JhcGhsaWIiLCJHcmFwaCIsIm11bHRpZ3JhcGgiLCJjb21wb3VuZCIsImdPYmoiLCJzZXRHT2JqIiwibmFtZSIsInNldEdyYXBoIiwic2V0RGVmYXVsdEVkZ2VMYWJlbCIsInNldERlZmF1bHROb2RlTGFiZWwiLCJub2RlcyIsImxlbmd0aCIsIm5iYiIsImxheW91dERpbWVuc2lvbnMiLCJzZXROb2RlIiwiaWQiLCJpc0NoaWxkIiwic2V0UGFyZW50IiwicGFyZW50IiwiZWRnZXMiLCJzdGRGaWx0ZXIiLCJzb3VyY2UiLCJpc1BhcmVudCIsInRhcmdldCIsInNldEVkZ2UiLCJtaW5sZW4iLCJ3ZWlnaHQiLCJnTm9kZUlkcyIsIm4iLCJnZXRFbGVtZW50QnlJZCIsInNjcmF0Y2giLCJkYWdyZUJCIiwiSW5maW5pdHkiLCJkTW9kZWwiLCJNYXRoIiwibWluIiwieCIsIm1heCIsInkiLCJjb25zdHJhaW5Qb3MiLCJwIiwieFBjdCIsInlQY3QiLCJsYXlvdXRQb3NpdGlvbnMiXSwibWFwcGluZ3MiOiI7O1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxtQkFBTyxDQUFDLDREQUFnQjs7QUFFcEMsVUFBVSxtQkFBTyxDQUFDLHdEQUFjO0FBQ2hDLFNBQVMsbUJBQU8sQ0FBQyxzREFBYTtBQUM5QjtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxvREFBWTtBQUM5QixZQUFZLG1CQUFPLENBQUMsb0RBQVk7QUFDaEMsR0FBRztBQUNILFdBQVcsbUJBQU8sQ0FBQywwREFBZTtBQUNsQzs7Ozs7Ozs7Ozs7OztBQ2hDYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsZ0JBQWdCLG1CQUFPLENBQUMsNERBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUNsRUEsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxnREFBUTs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsWUFBWTtBQUN2QztBQUNBOzs7Ozs7Ozs7Ozs7O0FDckNhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxvREFBVTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQywrQkFBK0IsRUFBRTtBQUNyRSxvQ0FBb0MsK0JBQStCLEVBQUU7QUFDckU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyx3QkFBd0IsRUFBRTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxzQkFBc0IsRUFBRTs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3ZFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3ZEQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLGdEQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsbUNBQW1DLGFBQWE7O0FBRXJFO0FBQ0Esa0JBQWtCLFdBQVc7QUFDN0I7QUFDQSxHQUFHOztBQUVIO0FBQ0EsMEJBQTBCO0FBQzFCLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QztBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pDQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLGtEQUFVO0FBQ2pDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTtBQUNoQyxXQUFXLG1CQUFPLENBQUMsMERBQWE7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUNBQXlDLHdDQUF3QztBQUNqRix5Q0FBeUMsd0NBQXdDO0FBQ2pGO0FBQ0Esc0NBQXNDLE9BQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsd0JBQXdCO0FBQ2pELEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCw0REFBNEQsbUJBQW1CLEVBQUU7QUFDakY7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUgsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNySGE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxzREFBVztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBYTtBQUNyQyxXQUFXLG1CQUFPLENBQUMsc0RBQVE7QUFDM0IscUJBQXFCLG1CQUFPLENBQUMsZ0RBQVE7QUFDckMsd0JBQXdCLG1CQUFPLENBQUMsOEVBQXVCO0FBQ3ZELHVCQUF1QixtQkFBTyxDQUFDLGdEQUFRO0FBQ3ZDLG1CQUFtQixtQkFBTyxDQUFDLGtFQUFpQjtBQUM1Qyx3QkFBd0IsbUJBQU8sQ0FBQyw4RUFBdUI7QUFDdkQsdUJBQXVCLG1CQUFPLENBQUMsMEVBQXFCO0FBQ3BELFlBQVksbUJBQU8sQ0FBQyx3REFBUztBQUM3QixlQUFlLG1CQUFPLENBQUMsOERBQVk7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLGdEQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsNEJBQTRCLEVBQUU7QUFDM0UsMkNBQTJDLDhCQUE4QixFQUFFO0FBQzNFLDJDQUEyQyxrQ0FBa0MsRUFBRTtBQUMvRSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxpREFBaUQsMkJBQTJCLEVBQUU7QUFDOUUsaURBQWlELG9CQUFvQixFQUFFO0FBQ3ZFLGlEQUFpRCxnQkFBZ0IsRUFBRTtBQUNuRSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELGtDQUFrQyxFQUFFO0FBQ3JGLGlEQUFpRCwyQkFBMkIsRUFBRTtBQUM5RSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELHlCQUF5QixFQUFFO0FBQzVFLGlEQUFpRCxtQkFBbUIsRUFBRTtBQUN0RSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELDJCQUEyQixFQUFFO0FBQzlFLGlEQUFpRCxrQkFBa0IsRUFBRTtBQUNyRSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekUsaURBQWlELHNCQUFzQixFQUFFO0FBQ3pFLGlEQUFpRCxVQUFVLEVBQUU7QUFDN0QsaURBQWlELG9CQUFvQixFQUFFO0FBQ3ZFLGlEQUFpRCw0QkFBNEIsRUFBRTtBQUMvRSxpREFBaUQsYUFBYSxFQUFFO0FBQ2hFLGlEQUFpRCxzQkFBc0IsRUFBRTtBQUN6RSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekUsaURBQWlELG1CQUFtQixFQUFFO0FBQ3RFLGlEQUFpRCx5QkFBeUIsRUFBRTtBQUM1RSxpREFBaUQsMEJBQTBCLEVBQUU7QUFDN0UsaURBQWlELG1CQUFtQixFQUFFO0FBQ3RFLGlEQUFpRCx5QkFBeUIsRUFBRTtBQUM1RSxpREFBaUQsa0NBQWtDLEVBQUU7QUFDckYsaURBQWlELGlCQUFpQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG1DQUFtQztBQUN4RDs7QUFFQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9DQUFvQyx3QkFBd0IsRUFBRTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQixnQkFBZ0I7QUFDM0MsMkJBQTJCLGdCQUFnQjtBQUMzQyxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseUJBQXlCO0FBQ3BEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywwQkFBMEI7QUFDbkMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7Ozs7Ozs7QUN2WUE7O0FBRUE7O0FBRUEsSUFBSSxJQUE2QjtBQUNqQztBQUNBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDLGdCQUFnQixtQkFBTyxDQUFDLDBEQUFpQjtBQUN6QyxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBaUI7QUFDekMsWUFBWSxtQkFBTyxDQUFDLGtEQUFhO0FBQ2pDLGNBQWMsbUJBQU8sQ0FBQyxzREFBZTtBQUNyQyxZQUFZLG1CQUFPLENBQUMsa0RBQWE7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHdEQUFnQjtBQUN2QyxlQUFlLG1CQUFPLENBQUMsd0RBQWdCO0FBQ3ZDLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxZQUFZLG1CQUFPLENBQUMsZ0RBQVk7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsZ0VBQW9CO0FBQy9DLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDLFdBQVcsbUJBQU8sQ0FBQyxnREFBWTtBQUMvQixhQUFhLG1CQUFPLENBQUMsb0RBQWM7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLGdEQUFZO0FBQy9CLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsWUFBWSxtQkFBTyxDQUFDLGtEQUFhO0FBQ2pDLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsY0FBYyxtQkFBTyxDQUFDLHNEQUFlO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLDBEQUFpQjtBQUN6QyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNDQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLGdEQUFROztBQUUzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQSwyQ0FBMkM7QUFDM0M7O0FBRUE7O0FBRUE7QUFDQSxvQ0FBb0MsNkJBQTZCLEVBQUU7O0FBRW5FO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiw2QkFBNkI7QUFDdkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSwwQkFBMEIsd0NBQXdDO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLFdBQVcsRUFBRTtBQUNwRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUNuSWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxnREFBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHdCQUF3QixFQUFFO0FBQ2pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQkFBMkI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1QkFBdUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUN6RkEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjs7QUFFQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNEJBQTRCO0FBQ3REO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNwREEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEdBQUcsb0JBQW9COztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUMxQkEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5REFBYTs7QUFFakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUIsWUFBWSxhQUFhO0FBQ2xFLHdDQUF3QyxrQkFBa0IsRUFBRTs7QUFFNUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9DQUFvQztBQUNsRSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3hFYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxVQUFVLEVBQUU7QUFDbkQ7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELFVBQVUsRUFBRTs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7Ozs7OztBQ2xFYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsZ0JBQWdCLG1CQUFPLENBQUMsa0VBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsb0VBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsd0VBQWlCO0FBQzVDLHNCQUFzQixtQkFBTyxDQUFDLGdGQUFxQjtBQUNuRCw2QkFBNkIsbUJBQU8sQ0FBQyw4RkFBNEI7QUFDakUsWUFBWSxtQkFBTyxDQUFDLHlEQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLCtCQUErQixjQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDOUVhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxREFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHNEQUFzRCx1QkFBdUIsRUFBRTtBQUMvRSx1REFBdUQsV0FBVyxFQUFFOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxREFBcUQsdUJBQXVCLEVBQUU7QUFDOUU7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3JDYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7O0FBRTNCOztBQUVBO0FBQ0Esd0NBQXdDLHNCQUFzQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msc0JBQXNCO0FBQ3hELDhCQUE4QixFQUFFO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QywwQkFBMEI7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtEQUFrRCxzQkFBc0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUN6SEEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLGlCQUFpQixtQkFBTyxDQUFDLGtFQUFjO0FBQ3ZDLHVCQUF1QixtQkFBTyxDQUFDLGdGQUFxQjtBQUNwRCxXQUFXLG1CQUFPLENBQUMsc0RBQVE7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUMzRUEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esc0RBQXNELGlCQUFpQixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3hEQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7O0FBRTFCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3JGYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLHlEQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGVBQWUsRUFBRTtBQUN4RDtBQUNBLHdEQUF3RCxTQUFTO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUgsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0RBQXNELGtCQUFrQixFQUFFO0FBQzFFO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsV0FBVyxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDbGFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxREFBVztBQUMzQixXQUFXLG1CQUFPLENBQUMsaURBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMscURBQU07O0FBRTlCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QseUJBQXlCLEVBQUU7QUFDL0U7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7QUM1QmE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5REFBYTtBQUNqQyxZQUFZLG1CQUFPLENBQUMscURBQVE7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0JBQWtCOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDeEZhOztBQUViLGVBQWUsbUJBQU8sQ0FBQyxxREFBUTtBQUMvQjtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLHVFQUFpQjtBQUM1QyxxQkFBcUIsbUJBQU8sQ0FBQywyRUFBbUI7O0FBRWhEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQy9DYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsbUJBQW1CLG1CQUFPLENBQUMsdUVBQWlCO0FBQzVDLFlBQVksbUJBQU8sQ0FBQyxxREFBUTtBQUM1QixlQUFlLG1CQUFPLENBQUMscURBQVE7QUFDL0IsZUFBZSxtQkFBTyxDQUFDLHlEQUFhO0FBQ3BDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFhO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxpREFBUzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsNkNBQTZDLHVCQUF1QixFQUFFO0FBQ3RFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLDBCQUEwQixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUN6T2E7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDOURBOztBQUVhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxvREFBVTtBQUMxQixZQUFZLG1CQUFPLENBQUMsd0RBQVk7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0NBQWtDLEVBQUU7QUFDeEU7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsK0JBQStCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLEtBQUs7QUFDL0MsS0FBSyxvQkFBb0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELFdBQVcsRUFBRTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHVCQUF1QixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLG1EQUFtRCx1QkFBdUIsRUFBRTs7QUFFNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUNBQWlDLHlCQUF5QixFQUFFO0FBQzVEO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDN09BOzs7Ozs7Ozs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtCQUErQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLG1CQUFPLENBQUMsbURBQU87O0FBRXpCO0FBQ0E7QUFDQSxRQUFRLG1CQUFPLENBQUMsdURBQVk7QUFDNUIsT0FBTyxtQkFBTyxDQUFDLDJEQUFXO0FBQzFCO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3JDQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7Ozs7O0FDMUJBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsYUFBYTtBQUNsQztBQUNBO0FBQ0EsS0FBSztBQUNMLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3pDQSxlQUFlLG1CQUFPLENBQUMsK0RBQVk7QUFDbkMsUUFBUSxtQkFBTyxDQUFDLHdEQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7Ozs7Ozs7Ozs7O0FDVEEsUUFBUSxtQkFBTyxDQUFDLHdEQUFXO0FBQzNCLG9CQUFvQixtQkFBTyxDQUFDLGtGQUF3Qjs7QUFFcEQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQixFQUFFO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3JEQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLDJEQUFVOztBQUUvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7OztBQ1RBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQixFQUFFO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pEQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxtRUFBYztBQUNwQyxZQUFZLG1CQUFPLENBQUMsK0RBQVk7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFnQjtBQUN2QyxjQUFjLG1CQUFPLENBQUMscUVBQWU7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWtCO0FBQzNDLGFBQWEsbUJBQU8sQ0FBQyxtRUFBYztBQUNuQyxhQUFhLG1CQUFPLENBQUMsaUVBQWE7QUFDbEMsWUFBWSxtQkFBTyxDQUFDLCtEQUFZO0FBQ2hDLFFBQVEsbUJBQU8sQ0FBQyx1REFBUTtBQUN4QixVQUFVLG1CQUFPLENBQUMsMkRBQVU7QUFDNUIsV0FBVyxtQkFBTyxDQUFDLDZEQUFXO0FBQzlCOzs7Ozs7Ozs7Ozs7QUNaQSxjQUFjLG1CQUFPLENBQUMsNkRBQVc7O0FBRWpDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDZEEsVUFBVSxtQkFBTyxDQUFDLHFEQUFPOztBQUV6Qjs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ05BLFVBQVUsbUJBQU8sQ0FBQyxxREFBTzs7QUFFekI7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNOQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLHNEQUFVO0FBQzlCLG9CQUFvQixtQkFBTyxDQUFDLGtGQUF3Qjs7QUFFcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7O0FDbkRBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQzlDQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QyxnRDs7Ozs7Ozs7Ozs7QUNsQ3ZDLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsY0FBYyxFQUFFO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDZCQUE2QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3ZKYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsdURBQVU7O0FBRTFCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxXQUFXO0FBQy9FO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxvQ0FBb0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLGVBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHFCQUFxQixFQUFFO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMscUJBQXFCLEVBQUU7QUFDbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixlQUFlO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbmhCQTtBQUNBO0FBQ0EsU0FBUyxtQkFBTyxDQUFDLHFEQUFTO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyx5REFBVztBQUM5Qjs7Ozs7Ozs7Ozs7O0FDSkEsUUFBUSxtQkFBTyxDQUFDLHVEQUFVO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyxxREFBUzs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSwyQ0FBMkM7QUFDMUQsR0FBRztBQUNIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pFQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsb0RBQWM7QUFDbkMsZ0JBQWdCLG1CQUFPLENBQUMsMERBQWlCO0FBQ3pDLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsWUFBWSxtQkFBTyxDQUFDLGdEQUFZO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyx3REFBZ0I7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHdEQUFnQjtBQUN2QyxrQkFBa0IsbUJBQU8sQ0FBQyw4REFBbUI7QUFDN0MsbUJBQW1CLG1CQUFPLENBQUMsZ0VBQW9CO0FBQy9DLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHNEQUFlO0FBQ3JDLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxpQkFBaUIsbUJBQU8sQ0FBQyw0REFBa0I7QUFDM0MsYUFBYSxtQkFBTyxDQUFDLG9EQUFjO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxzREFBZTtBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0E7Ozs7Ozs7Ozs7OztBQ0FBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNOQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ05BLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQSxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ0xBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNYQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsU0FBUyxtQkFBTyxDQUFDLHlDQUFNOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNCQSxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hCQSxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsK0NBQVM7QUFDN0IsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQywrQ0FBUztBQUM3QixXQUFXLG1CQUFPLENBQUMsNkNBQVE7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcktBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUM3QkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQ0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNaQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkEsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEZBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDWEEsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzlDQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzREEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLDBCQUEwQixtQkFBTyxDQUFDLDZFQUF3QjtBQUMxRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDOUJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDckJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsOEJBQThCLG1CQUFPLENBQUMscUZBQTRCOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsVUFBVSxtQkFBTyxDQUFDLDJDQUFPO0FBQ3pCLFlBQVksbUJBQU8sQ0FBQywrQ0FBUztBQUM3QixZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIseUJBQXlCLG1CQUFPLENBQUMsMkVBQXVCO0FBQ3hELDhCQUE4QixtQkFBTyxDQUFDLHFGQUE0QjtBQUNsRSxZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0EsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxhQUFhLG1CQUFPLENBQUMsaURBQVU7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pDQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7QUFDcEQsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLHdCQUF3QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNyRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG9CQUFvQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM3QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDM0MsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLG9CQUFvQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3RkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLDZCQUE2QjtBQUN4QyxXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFlBQVk7QUFDWixHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hEQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxZQUFZLG1CQUFPLENBQUMsK0NBQVM7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEJBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDM0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdEJBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsREEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLHdCQUF3QixtQkFBTyxDQUFDLHlFQUFzQjtBQUN0RCxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN2RUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNaQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QixhQUFhLFlBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSx5REFBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBLGtCQUFrQixLQUEwQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ2xDQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeENBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLG1CQUFtQjtBQUM5QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU8sV0FBVztBQUM3QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZDQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPLFdBQVc7QUFDN0IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxXQUFXO0FBQzdCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNMQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrQ0FBK0M7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixXQUFXLG1CQUFPLENBQUMsNkNBQVE7QUFDM0IsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUNWQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuRkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvR0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6RkEsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ0hBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBLHlCQUF5QixtQkFBTyxDQUFDLDJFQUF1QjtBQUN4RCxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3Q0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsVUFBVSxtQkFBTyxDQUFDLDZDQUFRO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ1pBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDekJBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVFQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4QkEsU0FBUyxtQkFBTyxDQUFDLHlDQUFNO0FBQ3ZCLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZEEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ1pBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xDQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQkEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsK0RBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7QUM3QkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZEEsWUFBWSxtQkFBTyxDQUFDLGlEQUFVOztBQUU5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQ0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsVUFBVSxtQkFBTyxDQUFDLDZDQUFRO0FBQzFCLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUMxQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxjQUFjO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsRUFBRTtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25DQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0Esd0NBQXdDLFNBQVM7QUFDakQ7QUFDQTtBQUNBLFdBQVcsU0FBUyxHQUFHLFNBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLEdBQUcsU0FBUyxHQUFHLFNBQVM7QUFDaEQsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQy9EQSxpQkFBaUIsbUJBQU8sQ0FBQyxtREFBVzs7Ozs7Ozs7Ozs7O0FDQXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUE4QztBQUNwRCxNQUFNO0FBQ047QUFDQTtBQUNBLGdDQUFnQyxrQkFBa0IsRUFBRTtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsWUFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25EQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsTUFBTSwrQ0FBK0M7QUFDckQsTUFBTSxnREFBZ0Q7QUFDdEQsTUFBTTtBQUNOO0FBQ0E7QUFDQSw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJCQUEyQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6Q0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLE1BQU0scUNBQXFDO0FBQzNDLE1BQU0scUNBQXFDO0FBQzNDLE1BQU07QUFDTjtBQUNBO0FBQ0EsbUNBQW1DLDJCQUEyQixFQUFFO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0REEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsYUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3hDQSxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RDQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUSxPQUFPLFNBQVMsRUFBRTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0EsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCLE9BQU8sU0FBUztBQUNqQyx5QkFBeUIsZ0JBQWdCLFNBQVMsR0FBRztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbENBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQixTQUFTLEdBQUc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0JBQWtCLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxrQkFBa0IsRUFBRTtBQUNsRTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxpQkFBaUIsbUJBQU8sQ0FBQyx5REFBYztBQUN2QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0Esa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaENBLHlEQUFXLG1CQUFPLENBQUMsK0NBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsdURBQWE7O0FBRXJDO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ3JDQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVFQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdEQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMxQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQ0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpQkFBaUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsTUFBTSxtQkFBbUI7QUFDekIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwREEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwrQkFBK0I7QUFDaEQsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxtQ0FBbUMsY0FBYyxFQUFFO0FBQ25ELFVBQVUsMkJBQTJCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMkJBQTJCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDMUNBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4RUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVMsR0FBRyxTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUyxHQUFHLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsVUFBVSxRQUFRLGlCQUFpQixHQUFHLGlCQUFpQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUN0Q0EsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0EsaUNBQWlDLFlBQVksRUFBRTtBQUMvQyxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxxQkFBcUI7QUFDaEMsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQ3hCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxNQUFNLE9BQU8sU0FBUyxFQUFFO0FBQ3hCLE1BQU0sT0FBTyxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQy9CQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3Q0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsYUFBYSx5QkFBeUI7QUFDdEM7QUFDQTtBQUNBLElBQUksSUFBSTtBQUNSLFVBQVUsOEJBQThCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xEQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9CQUFvQjtBQUMvQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0NBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQSxhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7QUFDQSxpQ0FBaUMsZUFBZSxFQUFFO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pDQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkNBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqRUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsVUFBVTtBQUNWO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGlCQUFpQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3ZDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGdCQUFnQix5QkFBeUI7QUFDekM7QUFDQSxJQUFJLElBQUk7QUFDUixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hFQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyx3QkFBd0IsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUN6QkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdkJBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1Qzs7Ozs7Ozs7Ozs7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDckJBO0FBRUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkMsTUFBTSxDQUFDQyxNQUFQLElBQWlCLElBQWpCLEdBQXdCRCxNQUFNLENBQUNDLE1BQVAsQ0FBY0MsSUFBZCxDQUFvQkYsTUFBcEIsQ0FBeEIsR0FBdUQsVUFBVUcsR0FBVixFQUF3QjtBQUFBLG9DQUFOQyxJQUFNO0FBQU5BLFFBQU07QUFBQTs7QUFDOUZBLE1BQUksQ0FBQ0MsT0FBTCxDQUFjLFVBQUFDLEdBQUcsRUFBSTtBQUNuQk4sVUFBTSxDQUFDTyxJQUFQLENBQWFELEdBQWIsRUFBbUJELE9BQW5CLENBQTRCLFVBQUFHLENBQUM7QUFBQSxhQUFJTCxHQUFHLENBQUNLLENBQUQsQ0FBSCxHQUFTRixHQUFHLENBQUNFLENBQUQsQ0FBaEI7QUFBQSxLQUE3QjtBQUNELEdBRkQ7QUFJQSxTQUFPTCxHQUFQO0FBQ0QsQ0FORCxDOzs7Ozs7Ozs7OztBQ0ZBLElBQUlNLFFBQVEsR0FBRztBQUNiO0FBQ0FDLFNBQU8sRUFBRUMsU0FGSTtBQUVPO0FBQ3BCQyxTQUFPLEVBQUVELFNBSEk7QUFHTztBQUNwQkUsU0FBTyxFQUFFRixTQUpJO0FBSU87QUFDcEJHLFNBQU8sRUFBRUgsU0FMSTtBQUtPO0FBQ3BCSSxRQUFNLEVBQUdKLFNBTkk7QUFNTztBQUNBO0FBQ3BCSyxRQUFNLEVBQUUsZ0JBQVVDLElBQVYsRUFBZ0I7QUFBRSxXQUFPLENBQVA7QUFBVyxHQVJ4QjtBQVEwQjtBQUN2Q0MsWUFBVSxFQUFFLG9CQUFVRCxJQUFWLEVBQWdCO0FBQUUsV0FBTyxDQUFQO0FBQVcsR0FUNUI7QUFTOEI7QUFFM0M7QUFDQUUsS0FBRyxFQUFFLElBWlE7QUFZRjtBQUNYQyxTQUFPLEVBQUUsRUFiSTtBQWFBO0FBQ2JDLGVBQWEsRUFBRVYsU0FkRjtBQWNhO0FBQzFCVyw2QkFBMkIsRUFBRSxLQWZoQjtBQWV1QjtBQUNwQ0MsU0FBTyxFQUFFLEtBaEJJO0FBZ0JHO0FBQ2hCQyxlQUFhLEVBQUUsdUJBQVVDLElBQVYsRUFBZ0JDLENBQWhCLEVBQW1CO0FBQUUsV0FBTyxJQUFQO0FBQWMsR0FqQnJDO0FBaUJ1QztBQUNwREMsbUJBQWlCLEVBQUUsR0FsQk47QUFrQlc7QUFDeEJDLGlCQUFlLEVBQUVqQixTQW5CSjtBQW1CZTtBQUM1QmtCLGFBQVcsRUFBRWxCLFNBcEJBO0FBb0JXO0FBQ3hCbUIsV0FBUyxFQUFFLG1CQUFVTCxJQUFWLEVBQWdCTSxHQUFoQixFQUFxQjtBQUFFLFdBQU9BLEdBQVA7QUFBYSxHQXJCbEM7QUFxQm9DO0FBQ2pEQyxPQUFLLEVBQUUsaUJBQVUsQ0FBRSxDQXRCTjtBQXNCUTtBQUNyQkMsTUFBSSxFQUFFLGdCQUFVLENBQUUsQ0F2QkwsQ0F1Qk07O0FBdkJOLENBQWY7QUEwQkFuQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJVLFFBQWpCLEM7Ozs7Ozs7Ozs7O0FDMUJBLElBQU15QixJQUFJLEdBQUdDLG1CQUFPLENBQUMsaUNBQUQsQ0FBcEIsQyxDQUVBOzs7QUFDQSxJQUFJQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFVQyxTQUFWLEVBQXFCO0FBQ2xDLE1BQUksQ0FBQ0EsU0FBTCxFQUFnQjtBQUFFO0FBQVMsR0FETyxDQUNOOzs7QUFFNUJBLFdBQVMsQ0FBRSxRQUFGLEVBQVksT0FBWixFQUFxQkgsSUFBckIsQ0FBVCxDQUhrQyxDQUdJO0FBQ3ZDLENBSkQ7O0FBTUEsSUFBSSxPQUFPRyxTQUFQLEtBQXFCLFdBQXpCLEVBQXNDO0FBQUU7QUFDdENELFVBQVEsQ0FBRUMsU0FBRixDQUFSO0FBQ0Q7O0FBRUR2QyxNQUFNLENBQUNDLE9BQVAsR0FBaUJxQyxRQUFqQixDOzs7Ozs7Ozs7Ozs7O0FDYkEsSUFBTUUsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBU0MsQ0FBVCxFQUFXO0FBQUUsU0FBTyxPQUFPQSxDQUFQLEtBQWEsVUFBcEI7QUFBaUMsQ0FBakU7O0FBQ0EsSUFBTTlCLFFBQVEsR0FBRzBCLG1CQUFPLENBQUMscUNBQUQsQ0FBeEI7O0FBQ0EsSUFBTWxDLE1BQU0sR0FBR2tDLG1CQUFPLENBQUMsaUNBQUQsQ0FBdEI7O0FBQ0EsSUFBTUssS0FBSyxHQUFHTCxtQkFBTyxDQUFDLDRDQUFELENBQXJCLEMsQ0FFQTtBQUNBOzs7QUFDQSxTQUFTTSxXQUFULENBQXNCQyxPQUF0QixFQUErQjtBQUM3QixPQUFLQSxPQUFMLEdBQWV6QyxNQUFNLENBQUUsRUFBRixFQUFNUSxRQUFOLEVBQWdCaUMsT0FBaEIsQ0FBckI7QUFDRCxDLENBRUQ7OztBQUNBRCxXQUFXLENBQUNFLFNBQVosQ0FBc0JDLEdBQXRCLEdBQTRCLFlBQVU7QUFDcEMsTUFBSUYsT0FBTyxHQUFHLEtBQUtBLE9BQW5CO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQWI7QUFFQSxNQUFJQyxFQUFFLEdBQUdKLE9BQU8sQ0FBQ0ksRUFBakIsQ0FKb0MsQ0FJZjs7QUFDckIsTUFBSUMsSUFBSSxHQUFHTCxPQUFPLENBQUNLLElBQW5COztBQUVBLE1BQUlDLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQVVDLEdBQVYsRUFBZUMsR0FBZixFQUFvQjtBQUMvQixXQUFPWixVQUFVLENBQUNZLEdBQUQsQ0FBVixHQUFrQkEsR0FBRyxDQUFDQyxLQUFKLENBQVdGLEdBQVgsRUFBZ0IsQ0FBRUEsR0FBRixDQUFoQixDQUFsQixHQUE4Q0MsR0FBckQ7QUFDRCxHQUZEOztBQUlBLE1BQUlFLEVBQUUsR0FBR1YsT0FBTyxDQUFDYixXQUFSLElBQXVCO0FBQUV3QixNQUFFLEVBQUUsQ0FBTjtBQUFTQyxNQUFFLEVBQUUsQ0FBYjtBQUFnQkMsS0FBQyxFQUFFVCxFQUFFLENBQUNVLEtBQUgsRUFBbkI7QUFBK0JDLEtBQUMsRUFBRVgsRUFBRSxDQUFDWSxNQUFIO0FBQWxDLEdBQWhDOztBQUNBLE1BQUlOLEVBQUUsQ0FBQ08sRUFBSCxLQUFVaEQsU0FBZCxFQUF5QjtBQUFFeUMsTUFBRSxDQUFDTyxFQUFILEdBQVFQLEVBQUUsQ0FBQ0MsRUFBSCxHQUFRRCxFQUFFLENBQUNHLENBQW5CO0FBQXVCOztBQUNsRCxNQUFJSCxFQUFFLENBQUNHLENBQUgsS0FBUzVDLFNBQWIsRUFBd0I7QUFBRXlDLE1BQUUsQ0FBQ0csQ0FBSCxHQUFPSCxFQUFFLENBQUNPLEVBQUgsR0FBUVAsRUFBRSxDQUFDQyxFQUFsQjtBQUF1Qjs7QUFDakQsTUFBSUQsRUFBRSxDQUFDUSxFQUFILEtBQVVqRCxTQUFkLEVBQXlCO0FBQUV5QyxNQUFFLENBQUNRLEVBQUgsR0FBUVIsRUFBRSxDQUFDRSxFQUFILEdBQVFGLEVBQUUsQ0FBQ0ssQ0FBbkI7QUFBdUI7O0FBQ2xELE1BQUlMLEVBQUUsQ0FBQ0ssQ0FBSCxLQUFTOUMsU0FBYixFQUF3QjtBQUFFeUMsTUFBRSxDQUFDSyxDQUFILEdBQU9MLEVBQUUsQ0FBQ1EsRUFBSCxHQUFRUixFQUFFLENBQUNFLEVBQWxCO0FBQXVCOztBQUVqRCxNQUFJTyxDQUFDLEdBQUcsSUFBSXJCLEtBQUssQ0FBQ3NCLFFBQU4sQ0FBZUMsS0FBbkIsQ0FBeUI7QUFDL0JDLGNBQVUsRUFBRSxJQURtQjtBQUUvQkMsWUFBUSxFQUFFO0FBRnFCLEdBQXpCLENBQVI7QUFLQSxNQUFJQyxJQUFJLEdBQUcsRUFBWDs7QUFDQSxNQUFJQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFVQyxJQUFWLEVBQWdCbEIsR0FBaEIsRUFBcUI7QUFDakMsUUFBSUEsR0FBRyxJQUFJLElBQVgsRUFBaUI7QUFDZmdCLFVBQUksQ0FBRUUsSUFBRixDQUFKLEdBQWVsQixHQUFmO0FBQ0Q7QUFDRixHQUpEOztBQU1BaUIsU0FBTyxDQUFFLFNBQUYsRUFBYXpCLE9BQU8sQ0FBQ2hDLE9BQXJCLENBQVA7QUFDQXlELFNBQU8sQ0FBRSxTQUFGLEVBQWF6QixPQUFPLENBQUM5QixPQUFyQixDQUFQO0FBQ0F1RCxTQUFPLENBQUUsU0FBRixFQUFhekIsT0FBTyxDQUFDN0IsT0FBckIsQ0FBUDtBQUNBc0QsU0FBTyxDQUFFLFNBQUYsRUFBYXpCLE9BQU8sQ0FBQzVCLE9BQXJCLENBQVA7QUFDQXFELFNBQU8sQ0FBRSxRQUFGLEVBQVl6QixPQUFPLENBQUMzQixNQUFwQixDQUFQO0FBRUE4QyxHQUFDLENBQUNRLFFBQUYsQ0FBWUgsSUFBWjtBQUVBTCxHQUFDLENBQUNTLG1CQUFGLENBQXNCLFlBQVc7QUFBRSxXQUFPLEVBQVA7QUFBWSxHQUEvQztBQUNBVCxHQUFDLENBQUNVLG1CQUFGLENBQXNCLFlBQVc7QUFBRSxXQUFPLEVBQVA7QUFBWSxHQUEvQyxFQXRDb0MsQ0F3Q3BDOztBQUNBLE1BQUlDLEtBQUssR0FBR3pCLElBQUksQ0FBQ3lCLEtBQUwsRUFBWjs7QUFDQSxPQUFLLElBQUk5QyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHOEMsS0FBSyxDQUFDQyxNQUExQixFQUFrQy9DLENBQUMsRUFBbkMsRUFBdUM7QUFDckMsUUFBSUQsSUFBSSxHQUFHK0MsS0FBSyxDQUFDOUMsQ0FBRCxDQUFoQjtBQUNBLFFBQUlnRCxHQUFHLEdBQUdqRCxJQUFJLENBQUNrRCxnQkFBTCxDQUF1QmpDLE9BQXZCLENBQVY7QUFFQW1CLEtBQUMsQ0FBQ2UsT0FBRixDQUFXbkQsSUFBSSxDQUFDb0QsRUFBTCxFQUFYLEVBQXNCO0FBQ3BCckIsV0FBSyxFQUFFa0IsR0FBRyxDQUFDbkIsQ0FEUztBQUVwQkcsWUFBTSxFQUFFZ0IsR0FBRyxDQUFDakIsQ0FGUTtBQUdwQlcsVUFBSSxFQUFFM0MsSUFBSSxDQUFDb0QsRUFBTDtBQUhjLEtBQXRCLEVBSnFDLENBVXJDO0FBQ0QsR0FyRG1DLENBdURwQzs7O0FBQ0EsT0FBSyxJQUFJbkQsRUFBQyxHQUFHLENBQWIsRUFBZ0JBLEVBQUMsR0FBRzhDLEtBQUssQ0FBQ0MsTUFBMUIsRUFBa0MvQyxFQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFFBQUlELEtBQUksR0FBRytDLEtBQUssQ0FBQzlDLEVBQUQsQ0FBaEI7O0FBRUEsUUFBSUQsS0FBSSxDQUFDcUQsT0FBTCxFQUFKLEVBQW9CO0FBQ2xCakIsT0FBQyxDQUFDa0IsU0FBRixDQUFhdEQsS0FBSSxDQUFDb0QsRUFBTCxFQUFiLEVBQXdCcEQsS0FBSSxDQUFDdUQsTUFBTCxHQUFjSCxFQUFkLEVBQXhCO0FBQ0Q7QUFDRixHQTlEbUMsQ0FnRXBDOzs7QUFDQSxNQUFJSSxLQUFLLEdBQUdsQyxJQUFJLENBQUNrQyxLQUFMLEdBQWFDLFNBQWIsQ0FBdUIsVUFBVWpFLElBQVYsRUFBZ0I7QUFDakQsV0FBTyxDQUFDQSxJQUFJLENBQUNrRSxNQUFMLEdBQWNDLFFBQWQsRUFBRCxJQUE2QixDQUFDbkUsSUFBSSxDQUFDb0UsTUFBTCxHQUFjRCxRQUFkLEVBQXJDLENBRGlELENBQ2M7QUFDaEUsR0FGVyxDQUFaOztBQUdBLE9BQUssSUFBSTFELEdBQUMsR0FBRyxDQUFiLEVBQWdCQSxHQUFDLEdBQUd1RCxLQUFLLENBQUNSLE1BQTFCLEVBQWtDL0MsR0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJVCxJQUFJLEdBQUdnRSxLQUFLLENBQUN2RCxHQUFELENBQWhCO0FBRUFtQyxLQUFDLENBQUN5QixPQUFGLENBQVdyRSxJQUFJLENBQUNrRSxNQUFMLEdBQWNOLEVBQWQsRUFBWCxFQUErQjVELElBQUksQ0FBQ29FLE1BQUwsR0FBY1IsRUFBZCxFQUEvQixFQUFtRDtBQUNqRFUsWUFBTSxFQUFFdkMsTUFBTSxDQUFFL0IsSUFBRixFQUFReUIsT0FBTyxDQUFDMUIsTUFBaEIsQ0FEbUM7QUFFakR3RSxZQUFNLEVBQUV4QyxNQUFNLENBQUUvQixJQUFGLEVBQVF5QixPQUFPLENBQUN4QixVQUFoQixDQUZtQztBQUdqRGtELFVBQUksRUFBRW5ELElBQUksQ0FBQzRELEVBQUw7QUFIMkMsS0FBbkQsRUFJRzVELElBQUksQ0FBQzRELEVBQUwsRUFKSCxFQUhxQyxDQVNyQztBQUNEOztBQUVEckMsT0FBSyxDQUFDSyxNQUFOLENBQWNnQixDQUFkO0FBRUEsTUFBSTRCLFFBQVEsR0FBRzVCLENBQUMsQ0FBQ1csS0FBRixFQUFmOztBQUNBLE9BQUssSUFBSTlDLEdBQUMsR0FBRyxDQUFiLEVBQWdCQSxHQUFDLEdBQUcrRCxRQUFRLENBQUNoQixNQUE3QixFQUFxQy9DLEdBQUMsRUFBdEMsRUFBMEM7QUFDeEMsUUFBSW1ELEVBQUUsR0FBR1ksUUFBUSxDQUFDL0QsR0FBRCxDQUFqQjtBQUNBLFFBQUlnRSxDQUFDLEdBQUc3QixDQUFDLENBQUNwQyxJQUFGLENBQVFvRCxFQUFSLENBQVI7QUFFQS9CLE1BQUUsQ0FBQzZDLGNBQUgsQ0FBa0JkLEVBQWxCLEVBQXNCZSxPQUF0QixHQUFnQ3BELEtBQWhDLEdBQXdDa0QsQ0FBeEM7QUFDRDs7QUFFRCxNQUFJRyxPQUFKOztBQUVBLE1BQUluRCxPQUFPLENBQUNiLFdBQVosRUFBeUI7QUFDdkJnRSxXQUFPLEdBQUc7QUFBRXhDLFFBQUUsRUFBRXlDLFFBQU47QUFBZ0JuQyxRQUFFLEVBQUUsQ0FBQ21DLFFBQXJCO0FBQStCeEMsUUFBRSxFQUFFd0MsUUFBbkM7QUFBNkNsQyxRQUFFLEVBQUUsQ0FBQ2tDO0FBQWxELEtBQVY7QUFDQXRCLFNBQUssQ0FBQ25FLE9BQU4sQ0FBYyxVQUFVb0IsSUFBVixFQUFnQjtBQUM1QixVQUFJc0UsTUFBTSxHQUFHdEUsSUFBSSxDQUFDbUUsT0FBTCxHQUFlcEQsS0FBNUI7QUFFQXFELGFBQU8sQ0FBQ3hDLEVBQVIsR0FBYTJDLElBQUksQ0FBQ0MsR0FBTCxDQUFVSixPQUFPLENBQUN4QyxFQUFsQixFQUFzQjBDLE1BQU0sQ0FBQ0csQ0FBN0IsQ0FBYjtBQUNBTCxhQUFPLENBQUNsQyxFQUFSLEdBQWFxQyxJQUFJLENBQUNHLEdBQUwsQ0FBVU4sT0FBTyxDQUFDbEMsRUFBbEIsRUFBc0JvQyxNQUFNLENBQUNHLENBQTdCLENBQWI7QUFFQUwsYUFBTyxDQUFDdkMsRUFBUixHQUFhMEMsSUFBSSxDQUFDQyxHQUFMLENBQVVKLE9BQU8sQ0FBQ3ZDLEVBQWxCLEVBQXNCeUMsTUFBTSxDQUFDSyxDQUE3QixDQUFiO0FBQ0FQLGFBQU8sQ0FBQ2pDLEVBQVIsR0FBYW9DLElBQUksQ0FBQ0csR0FBTCxDQUFVTixPQUFPLENBQUNqQyxFQUFsQixFQUFzQm1DLE1BQU0sQ0FBQ0ssQ0FBN0IsQ0FBYjtBQUNELEtBUkQ7QUFVQVAsV0FBTyxDQUFDdEMsQ0FBUixHQUFZc0MsT0FBTyxDQUFDbEMsRUFBUixHQUFha0MsT0FBTyxDQUFDeEMsRUFBakM7QUFDQXdDLFdBQU8sQ0FBQ3BDLENBQVIsR0FBWW9DLE9BQU8sQ0FBQ2pDLEVBQVIsR0FBYWlDLE9BQU8sQ0FBQ3ZDLEVBQWpDO0FBQ0QsR0FkRCxNQWNPO0FBQ0x1QyxXQUFPLEdBQUd6QyxFQUFWO0FBQ0Q7O0FBRUQsTUFBSWlELFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVDLENBQVYsRUFBYTtBQUM5QixRQUFJNUQsT0FBTyxDQUFDYixXQUFaLEVBQXlCO0FBQ3ZCLFVBQUkwRSxJQUFJLEdBQUdWLE9BQU8sQ0FBQ3RDLENBQVIsS0FBYyxDQUFkLEdBQWtCLENBQWxCLEdBQXNCLENBQUMrQyxDQUFDLENBQUNKLENBQUYsR0FBTUwsT0FBTyxDQUFDeEMsRUFBZixJQUFxQndDLE9BQU8sQ0FBQ3RDLENBQTlEO0FBQ0EsVUFBSWlELElBQUksR0FBR1gsT0FBTyxDQUFDcEMsQ0FBUixLQUFjLENBQWQsR0FBa0IsQ0FBbEIsR0FBc0IsQ0FBQzZDLENBQUMsQ0FBQ0YsQ0FBRixHQUFNUCxPQUFPLENBQUN2QyxFQUFmLElBQXFCdUMsT0FBTyxDQUFDcEMsQ0FBOUQ7QUFFQSxhQUFPO0FBQ0x5QyxTQUFDLEVBQUU5QyxFQUFFLENBQUNDLEVBQUgsR0FBUWtELElBQUksR0FBR25ELEVBQUUsQ0FBQ0csQ0FEaEI7QUFFTDZDLFNBQUMsRUFBRWhELEVBQUUsQ0FBQ0UsRUFBSCxHQUFRa0QsSUFBSSxHQUFHcEQsRUFBRSxDQUFDSztBQUZoQixPQUFQO0FBSUQsS0FSRCxNQVFPO0FBQ0wsYUFBTzZDLENBQVA7QUFDRDtBQUNGLEdBWkQ7O0FBY0E5QixPQUFLLENBQUNpQyxlQUFOLENBQXNCNUQsTUFBdEIsRUFBOEJILE9BQTlCLEVBQXVDLFVBQVVPLEdBQVYsRUFBZTtBQUNwREEsT0FBRyxHQUFHLFFBQU9BLEdBQVAsTUFBZSxRQUFmLEdBQTBCQSxHQUExQixHQUFnQyxJQUF0QztBQUNBLFFBQUk4QyxNQUFNLEdBQUc5QyxHQUFHLENBQUMyQyxPQUFKLEdBQWNwRCxLQUEzQjtBQUVBLFdBQU82RCxZQUFZLENBQUM7QUFDbEJILE9BQUMsRUFBRUgsTUFBTSxDQUFDRyxDQURRO0FBRWxCRSxPQUFDLEVBQUVMLE1BQU0sQ0FBQ0s7QUFGUSxLQUFELENBQW5CO0FBSUQsR0FSRDtBQVVBLFNBQU8sSUFBUCxDQXRJb0MsQ0FzSXZCO0FBQ2QsQ0F2SUQ7O0FBeUlBdEcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCMEMsV0FBakIsQyIsImZpbGUiOiJjeXRvc2NhcGUtZGFncmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC5qc1wiKTtcbiIsIi8qXG5Db3B5cmlnaHQgKGMpIDIwMTItMjAxNCBDaHJpcyBQZXR0aXR0XG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cblRIRSBTT0ZUV0FSRS5cbiovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBncmFwaGxpYjogcmVxdWlyZShcIi4vbGliL2dyYXBobGliXCIpLFxuXG4gIGxheW91dDogcmVxdWlyZShcIi4vbGliL2xheW91dFwiKSxcbiAgZGVidWc6IHJlcXVpcmUoXCIuL2xpYi9kZWJ1Z1wiKSxcbiAgdXRpbDoge1xuICAgIHRpbWU6IHJlcXVpcmUoXCIuL2xpYi91dGlsXCIpLnRpbWUsXG4gICAgbm90aW1lOiByZXF1aXJlKFwiLi9saWIvdXRpbFwiKS5ub3RpbWVcbiAgfSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vbGliL3ZlcnNpb25cIilcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgZ3JlZWR5RkFTID0gcmVxdWlyZShcIi4vZ3JlZWR5LWZhc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICB1bmRvOiB1bmRvXG59O1xuXG5mdW5jdGlvbiBydW4oZykge1xuICB2YXIgZmFzID0gKGcuZ3JhcGgoKS5hY3ljbGljZXIgPT09IFwiZ3JlZWR5XCJcbiAgICA/IGdyZWVkeUZBUyhnLCB3ZWlnaHRGbihnKSlcbiAgICA6IGRmc0ZBUyhnKSk7XG4gIF8uZm9yRWFjaChmYXMsIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgIGxhYmVsLmZvcndhcmROYW1lID0gZS5uYW1lO1xuICAgIGxhYmVsLnJldmVyc2VkID0gdHJ1ZTtcbiAgICBnLnNldEVkZ2UoZS53LCBlLnYsIGxhYmVsLCBfLnVuaXF1ZUlkKFwicmV2XCIpKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gd2VpZ2h0Rm4oZykge1xuICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gZy5lZGdlKGUpLndlaWdodDtcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGRmc0ZBUyhnKSB7XG4gIHZhciBmYXMgPSBbXTtcbiAgdmFyIHN0YWNrID0ge307XG4gIHZhciB2aXNpdGVkID0ge307XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgc3RhY2tbdl0gPSB0cnVlO1xuICAgIF8uZm9yRWFjaChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBpZiAoXy5oYXMoc3RhY2ssIGUudykpIHtcbiAgICAgICAgZmFzLnB1c2goZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZnMoZS53KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWxldGUgc3RhY2tbdl07XG4gIH1cblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBkZnMpO1xuICByZXR1cm4gZmFzO1xufVxuXG5mdW5jdGlvbiB1bmRvKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBsYWJlbCA9IGcuZWRnZShlKTtcbiAgICBpZiAobGFiZWwucmV2ZXJzZWQpIHtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcblxuICAgICAgdmFyIGZvcndhcmROYW1lID0gbGFiZWwuZm9yd2FyZE5hbWU7XG4gICAgICBkZWxldGUgbGFiZWwucmV2ZXJzZWQ7XG4gICAgICBkZWxldGUgbGFiZWwuZm9yd2FyZE5hbWU7XG4gICAgICBnLnNldEVkZ2UoZS53LCBlLnYsIGxhYmVsLCBmb3J3YXJkTmFtZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZEJvcmRlclNlZ21lbnRzO1xuXG5mdW5jdGlvbiBhZGRCb3JkZXJTZWdtZW50cyhnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGRmcyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgbm9kZS5ib3JkZXJMZWZ0ID0gW107XG4gICAgICBub2RlLmJvcmRlclJpZ2h0ID0gW107XG4gICAgICBmb3IgKHZhciByYW5rID0gbm9kZS5taW5SYW5rLCBtYXhSYW5rID0gbm9kZS5tYXhSYW5rICsgMTtcbiAgICAgICAgcmFuayA8IG1heFJhbms7XG4gICAgICAgICsrcmFuaykge1xuICAgICAgICBhZGRCb3JkZXJOb2RlKGcsIFwiYm9yZGVyTGVmdFwiLCBcIl9ibFwiLCB2LCBub2RlLCByYW5rKTtcbiAgICAgICAgYWRkQm9yZGVyTm9kZShnLCBcImJvcmRlclJpZ2h0XCIsIFwiX2JyXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGRmcyk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJvcCwgcHJlZml4LCBzZywgc2dOb2RlLCByYW5rKSB7XG4gIHZhciBsYWJlbCA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFuazogcmFuaywgYm9yZGVyVHlwZTogcHJvcCB9O1xuICB2YXIgcHJldiA9IHNnTm9kZVtwcm9wXVtyYW5rIC0gMV07XG4gIHZhciBjdXJyID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJib3JkZXJcIiwgbGFiZWwsIHByZWZpeCk7XG4gIHNnTm9kZVtwcm9wXVtyYW5rXSA9IGN1cnI7XG4gIGcuc2V0UGFyZW50KGN1cnIsIHNnKTtcbiAgaWYgKHByZXYpIHtcbiAgICBnLnNldEVkZ2UocHJldiwgY3VyciwgeyB3ZWlnaHQ6IDEgfSk7XG4gIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkanVzdDogYWRqdXN0LFxuICB1bmRvOiB1bmRvXG59O1xuXG5mdW5jdGlvbiBhZGp1c3QoZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImxyXCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgc3dhcFdpZHRoSGVpZ2h0KGcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImJ0XCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgcmV2ZXJzZVkoZyk7XG4gIH1cblxuICBpZiAocmFua0RpciA9PT0gXCJsclwiIHx8IHJhbmtEaXIgPT09IFwicmxcIikge1xuICAgIHN3YXBYWShnKTtcbiAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3dhcFdpZHRoSGVpZ2h0KGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBzd2FwV2lkdGhIZWlnaHRPbmUoZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHsgc3dhcFdpZHRoSGVpZ2h0T25lKGcuZWRnZShlKSk7IH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHRPbmUoYXR0cnMpIHtcbiAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgYXR0cnMud2lkdGggPSBhdHRycy5oZWlnaHQ7XG4gIGF0dHJzLmhlaWdodCA9IHc7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VZKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXZlcnNlWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCByZXZlcnNlWU9uZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieVwiKSkge1xuICAgICAgcmV2ZXJzZVlPbmUoZWRnZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVlPbmUoYXR0cnMpIHtcbiAgYXR0cnMueSA9IC1hdHRycy55O1xufVxuXG5mdW5jdGlvbiBzd2FwWFkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHN3YXBYWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCBzd2FwWFlPbmUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIHN3YXBYWU9uZShlZGdlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwWFlPbmUoYXR0cnMpIHtcbiAgdmFyIHggPSBhdHRycy54O1xuICBhdHRycy54ID0gYXR0cnMueTtcbiAgYXR0cnMueSA9IHg7XG59XG4iLCIvKlxuICogU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCBpbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gQ29ybWVuLCBldCBhbC4sXG4gKiBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0O1xuXG5mdW5jdGlvbiBMaXN0KCkge1xuICB2YXIgc2VudGluZWwgPSB7fTtcbiAgc2VudGluZWwuX25leHQgPSBzZW50aW5lbC5fcHJldiA9IHNlbnRpbmVsO1xuICB0aGlzLl9zZW50aW5lbCA9IHNlbnRpbmVsO1xufVxuXG5MaXN0LnByb3RvdHlwZS5kZXF1ZXVlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgZW50cnkgPSBzZW50aW5lbC5fcHJldjtcbiAgaWYgKGVudHJ5ICE9PSBzZW50aW5lbCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5MaXN0LnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24oZW50cnkpIHtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIGlmIChlbnRyeS5fcHJldiAmJiBlbnRyeS5fbmV4dCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gIH1cbiAgZW50cnkuX25leHQgPSBzZW50aW5lbC5fbmV4dDtcbiAgc2VudGluZWwuX25leHQuX3ByZXYgPSBlbnRyeTtcbiAgc2VudGluZWwuX25leHQgPSBlbnRyeTtcbiAgZW50cnkuX3ByZXYgPSBzZW50aW5lbDtcbn07XG5cbkxpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJzID0gW107XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgY3VyciA9IHNlbnRpbmVsLl9wcmV2O1xuICB3aGlsZSAoY3VyciAhPT0gc2VudGluZWwpIHtcbiAgICBzdHJzLnB1c2goSlNPTi5zdHJpbmdpZnkoY3VyciwgZmlsdGVyT3V0TGlua3MpKTtcbiAgICBjdXJyID0gY3Vyci5fcHJldjtcbiAgfVxuICByZXR1cm4gXCJbXCIgKyBzdHJzLmpvaW4oXCIsIFwiKSArIFwiXVwiO1xufTtcblxuZnVuY3Rpb24gdW5saW5rKGVudHJ5KSB7XG4gIGVudHJ5Ll9wcmV2Ll9uZXh0ID0gZW50cnkuX25leHQ7XG4gIGVudHJ5Ll9uZXh0Ll9wcmV2ID0gZW50cnkuX3ByZXY7XG4gIGRlbGV0ZSBlbnRyeS5fbmV4dDtcbiAgZGVsZXRlIGVudHJ5Ll9wcmV2O1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJPdXRMaW5rcyhrLCB2KSB7XG4gIGlmIChrICE9PSBcIl9uZXh0XCIgJiYgayAhPT0gXCJfcHJldlwiKSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBkZWJ1Z09yZGVyaW5nOiBkZWJ1Z09yZGVyaW5nXG59O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gZGVidWdPcmRlcmluZyhnKSB7XG4gIHZhciBsYXllck1hdHJpeCA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcblxuICB2YXIgaCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlLCBtdWx0aWdyYXBoOiB0cnVlIH0pLnNldEdyYXBoKHt9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaC5zZXROb2RlKHYsIHsgbGFiZWw6IHYgfSk7XG4gICAgaC5zZXRQYXJlbnQodiwgXCJsYXllclwiICsgZy5ub2RlKHYpLnJhbmspO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaC5zZXRFZGdlKGUudiwgZS53LCB7fSwgZS5uYW1lKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyTWF0cml4LCBmdW5jdGlvbihsYXllciwgaSkge1xuICAgIHZhciBsYXllclYgPSBcImxheWVyXCIgKyBpO1xuICAgIGguc2V0Tm9kZShsYXllclYsIHsgcmFuazogXCJzYW1lXCIgfSk7XG4gICAgXy5yZWR1Y2UobGF5ZXIsIGZ1bmN0aW9uKHUsIHYpIHtcbiAgICAgIGguc2V0RWRnZSh1LCB2LCB7IHN0eWxlOiBcImludmlzXCIgfSk7XG4gICAgICByZXR1cm4gdjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGg7XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBncmFwaGxpYjtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBncmFwaGxpYiA9IHJlcXVpcmUoXCJncmFwaGxpYlwiKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWdyYXBobGliKSB7XG4gIGdyYXBobGliID0gd2luZG93LmdyYXBobGliO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdyYXBobGliO1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciBMaXN0ID0gcmVxdWlyZShcIi4vZGF0YS9saXN0XCIpO1xuXG4vKlxuICogQSBncmVlZHkgaGV1cmlzdGljIGZvciBmaW5kaW5nIGEgZmVlZGJhY2sgYXJjIHNldCBmb3IgYSBncmFwaC4gQSBmZWVkYmFja1xuICogYXJjIHNldCBpcyBhIHNldCBvZiBlZGdlcyB0aGF0IGNhbiBiZSByZW1vdmVkIHRvIG1ha2UgYSBncmFwaCBhY3ljbGljLlxuICogVGhlIGFsZ29yaXRobSBjb21lcyBmcm9tOiBQLiBFYWRlcywgWC4gTGluLCBhbmQgVy4gRi4gU215dGgsIFwiQSBmYXN0IGFuZFxuICogZWZmZWN0aXZlIGhldXJpc3RpYyBmb3IgdGhlIGZlZWRiYWNrIGFyYyBzZXQgcHJvYmxlbS5cIiBUaGlzIGltcGxlbWVudGF0aW9uXG4gKiBhZGp1c3RzIHRoYXQgZnJvbSB0aGUgcGFwZXIgdG8gYWxsb3cgZm9yIHdlaWdodGVkIGVkZ2VzLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGdyZWVkeUZBUztcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZOID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZ3JlZWR5RkFTKGcsIHdlaWdodEZuKSB7XG4gIGlmIChnLm5vZGVDb3VudCgpIDw9IDEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIHN0YXRlID0gYnVpbGRTdGF0ZShnLCB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GTik7XG4gIHZhciByZXN1bHRzID0gZG9HcmVlZHlGQVMoc3RhdGUuZ3JhcGgsIHN0YXRlLmJ1Y2tldHMsIHN0YXRlLnplcm9JZHgpO1xuXG4gIC8vIEV4cGFuZCBtdWx0aS1lZGdlc1xuICByZXR1cm4gXy5mbGF0dGVuKF8ubWFwKHJlc3VsdHMsIGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gZy5vdXRFZGdlcyhlLnYsIGUudyk7XG4gIH0pLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZG9HcmVlZHlGQVMoZywgYnVja2V0cywgemVyb0lkeCkge1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgc291cmNlcyA9IGJ1Y2tldHNbYnVja2V0cy5sZW5ndGggLSAxXTtcbiAgdmFyIHNpbmtzID0gYnVja2V0c1swXTtcblxuICB2YXIgZW50cnk7XG4gIHdoaWxlIChnLm5vZGVDb3VudCgpKSB7XG4gICAgd2hpbGUgKChlbnRyeSA9IHNpbmtzLmRlcXVldWUoKSkpICAgeyByZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KTsgfVxuICAgIHdoaWxlICgoZW50cnkgPSBzb3VyY2VzLmRlcXVldWUoKSkpIHsgcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSk7IH1cbiAgICBpZiAoZy5ub2RlQ291bnQoKSkge1xuICAgICAgZm9yICh2YXIgaSA9IGJ1Y2tldHMubGVuZ3RoIC0gMjsgaSA+IDA7IC0taSkge1xuICAgICAgICBlbnRyeSA9IGJ1Y2tldHNbaV0uZGVxdWV1ZSgpO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQocmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSwgdHJ1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIGNvbGxlY3RQcmVkZWNlc3NvcnMpIHtcbiAgdmFyIHJlc3VsdHMgPSBjb2xsZWN0UHJlZGVjZXNzb3JzID8gW10gOiB1bmRlZmluZWQ7XG5cbiAgXy5mb3JFYWNoKGcuaW5FZGdlcyhlbnRyeS52KSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ZWlnaHQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgdmFyIHVFbnRyeSA9IGcubm9kZShlZGdlLnYpO1xuXG4gICAgaWYgKGNvbGxlY3RQcmVkZWNlc3NvcnMpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh7IHY6IGVkZ2UudiwgdzogZWRnZS53IH0pO1xuICAgIH1cblxuICAgIHVFbnRyeS5vdXQgLT0gd2VpZ2h0O1xuICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCB1RW50cnkpO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5vdXRFZGdlcyhlbnRyeS52KSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ZWlnaHQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgdmFyIHcgPSBlZGdlLnc7XG4gICAgdmFyIHdFbnRyeSA9IGcubm9kZSh3KTtcbiAgICB3RW50cnlbXCJpblwiXSAtPSB3ZWlnaHQ7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIHdFbnRyeSk7XG4gIH0pO1xuXG4gIGcucmVtb3ZlTm9kZShlbnRyeS52KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gYnVpbGRTdGF0ZShnLCB3ZWlnaHRGbikge1xuICB2YXIgZmFzR3JhcGggPSBuZXcgR3JhcGgoKTtcbiAgdmFyIG1heEluID0gMDtcbiAgdmFyIG1heE91dCA9IDA7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGZhc0dyYXBoLnNldE5vZGUodiwgeyB2OiB2LCBcImluXCI6IDAsIG91dDogMCB9KTtcbiAgfSk7XG5cbiAgLy8gQWdncmVnYXRlIHdlaWdodHMgb24gbm9kZXMsIGJ1dCBhbHNvIHN1bSB0aGUgd2VpZ2h0cyBhY3Jvc3MgbXVsdGktZWRnZXNcbiAgLy8gaW50byBhIHNpbmdsZSBlZGdlIGZvciB0aGUgZmFzR3JhcGguXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgcHJldldlaWdodCA9IGZhc0dyYXBoLmVkZ2UoZS52LCBlLncpIHx8IDA7XG4gICAgdmFyIHdlaWdodCA9IHdlaWdodEZuKGUpO1xuICAgIHZhciBlZGdlV2VpZ2h0ID0gcHJldldlaWdodCArIHdlaWdodDtcbiAgICBmYXNHcmFwaC5zZXRFZGdlKGUudiwgZS53LCBlZGdlV2VpZ2h0KTtcbiAgICBtYXhPdXQgPSBNYXRoLm1heChtYXhPdXQsIGZhc0dyYXBoLm5vZGUoZS52KS5vdXQgKz0gd2VpZ2h0KTtcbiAgICBtYXhJbiAgPSBNYXRoLm1heChtYXhJbiwgIGZhc0dyYXBoLm5vZGUoZS53KVtcImluXCJdICArPSB3ZWlnaHQpO1xuICB9KTtcblxuICB2YXIgYnVja2V0cyA9IF8ucmFuZ2UobWF4T3V0ICsgbWF4SW4gKyAzKS5tYXAoZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgTGlzdCgpOyB9KTtcbiAgdmFyIHplcm9JZHggPSBtYXhJbiArIDE7XG5cbiAgXy5mb3JFYWNoKGZhc0dyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgZmFzR3JhcGgubm9kZSh2KSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IGdyYXBoOiBmYXNHcmFwaCwgYnVja2V0czogYnVja2V0cywgemVyb0lkeDogemVyb0lkeCB9O1xufVxuXG5mdW5jdGlvbiBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgZW50cnkpIHtcbiAgaWYgKCFlbnRyeS5vdXQpIHtcbiAgICBidWNrZXRzWzBdLmVucXVldWUoZW50cnkpO1xuICB9IGVsc2UgaWYgKCFlbnRyeVtcImluXCJdKSB7XG4gICAgYnVja2V0c1tidWNrZXRzLmxlbmd0aCAtIDFdLmVucXVldWUoZW50cnkpO1xuICB9IGVsc2Uge1xuICAgIGJ1Y2tldHNbZW50cnkub3V0IC0gZW50cnlbXCJpblwiXSArIHplcm9JZHhdLmVucXVldWUoZW50cnkpO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgYWN5Y2xpYyA9IHJlcXVpcmUoXCIuL2FjeWNsaWNcIik7XG52YXIgbm9ybWFsaXplID0gcmVxdWlyZShcIi4vbm9ybWFsaXplXCIpO1xudmFyIHJhbmsgPSByZXF1aXJlKFwiLi9yYW5rXCIpO1xudmFyIG5vcm1hbGl6ZVJhbmtzID0gcmVxdWlyZShcIi4vdXRpbFwiKS5ub3JtYWxpemVSYW5rcztcbnZhciBwYXJlbnREdW1teUNoYWlucyA9IHJlcXVpcmUoXCIuL3BhcmVudC1kdW1teS1jaGFpbnNcIik7XG52YXIgcmVtb3ZlRW1wdHlSYW5rcyA9IHJlcXVpcmUoXCIuL3V0aWxcIikucmVtb3ZlRW1wdHlSYW5rcztcbnZhciBuZXN0aW5nR3JhcGggPSByZXF1aXJlKFwiLi9uZXN0aW5nLWdyYXBoXCIpO1xudmFyIGFkZEJvcmRlclNlZ21lbnRzID0gcmVxdWlyZShcIi4vYWRkLWJvcmRlci1zZWdtZW50c1wiKTtcbnZhciBjb29yZGluYXRlU3lzdGVtID0gcmVxdWlyZShcIi4vY29vcmRpbmF0ZS1zeXN0ZW1cIik7XG52YXIgb3JkZXIgPSByZXF1aXJlKFwiLi9vcmRlclwiKTtcbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoXCIuL3Bvc2l0aW9uXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0gbGF5b3V0O1xuXG5mdW5jdGlvbiBsYXlvdXQoZywgb3B0cykge1xuICB2YXIgdGltZSA9IG9wdHMgJiYgb3B0cy5kZWJ1Z1RpbWluZyA/IHV0aWwudGltZSA6IHV0aWwubm90aW1lO1xuICB0aW1lKFwibGF5b3V0XCIsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsYXlvdXRHcmFwaCA9IFxuICAgICAgdGltZShcIiAgYnVpbGRMYXlvdXRHcmFwaFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGJ1aWxkTGF5b3V0R3JhcGgoZyk7IH0pO1xuICAgIHRpbWUoXCIgIHJ1bkxheW91dFwiLCAgICAgICAgZnVuY3Rpb24oKSB7IHJ1bkxheW91dChsYXlvdXRHcmFwaCwgdGltZSk7IH0pO1xuICAgIHRpbWUoXCIgIHVwZGF0ZUlucHV0R3JhcGhcIiwgZnVuY3Rpb24oKSB7IHVwZGF0ZUlucHV0R3JhcGgoZywgbGF5b3V0R3JhcGgpOyB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkxheW91dChnLCB0aW1lKSB7XG4gIHRpbWUoXCIgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVsc1wiLCBmdW5jdGlvbigpIHsgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlU2VsZkVkZ2VzXCIsICAgICAgICBmdW5jdGlvbigpIHsgcmVtb3ZlU2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhY3ljbGljXCIsICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBhY3ljbGljLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgbmVzdGluZ0dyYXBoLnJ1blwiLCAgICAgICBmdW5jdGlvbigpIHsgbmVzdGluZ0dyYXBoLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmFua1wiLCAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmFuayh1dGlsLmFzTm9uQ29tcG91bmRHcmFwaChnKSk7IH0pO1xuICB0aW1lKFwiICAgIGluamVjdEVkZ2VMYWJlbFByb3hpZXNcIiwgZnVuY3Rpb24oKSB7IGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZUVtcHR5UmFua3NcIiwgICAgICAgZnVuY3Rpb24oKSB7IHJlbW92ZUVtcHR5UmFua3MoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwXCIsICAgZnVuY3Rpb24oKSB7IG5lc3RpbmdHcmFwaC5jbGVhbnVwKGcpOyB9KTtcbiAgdGltZShcIiAgICBub3JtYWxpemVSYW5rc1wiLCAgICAgICAgIGZ1bmN0aW9uKCkgeyBub3JtYWxpemVSYW5rcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYXNzaWduUmFua01pbk1heFwiLCAgICAgICBmdW5jdGlvbigpIHsgYXNzaWduUmFua01pbk1heChnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllc1wiLCBmdW5jdGlvbigpIHsgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplLnJ1blwiLCAgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcGFyZW50RHVtbXlDaGFpbnNcIiwgICAgICBmdW5jdGlvbigpIHsgcGFyZW50RHVtbXlDaGFpbnMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFkZEJvcmRlclNlZ21lbnRzXCIsICAgICAgZnVuY3Rpb24oKSB7IGFkZEJvcmRlclNlZ21lbnRzKGcpOyB9KTtcbiAgdGltZShcIiAgICBvcmRlclwiLCAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBvcmRlcihnKTsgfSk7XG4gIHRpbWUoXCIgICAgaW5zZXJ0U2VsZkVkZ2VzXCIsICAgICAgICBmdW5jdGlvbigpIHsgaW5zZXJ0U2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhZGp1c3RDb29yZGluYXRlU3lzdGVtXCIsIGZ1bmN0aW9uKCkgeyBjb29yZGluYXRlU3lzdGVtLmFkanVzdChnKTsgfSk7XG4gIHRpbWUoXCIgICAgcG9zaXRpb25cIiwgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcG9zaXRpb24oZyk7IH0pO1xuICB0aW1lKFwiICAgIHBvc2l0aW9uU2VsZkVkZ2VzXCIsICAgICAgZnVuY3Rpb24oKSB7IHBvc2l0aW9uU2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVCb3JkZXJOb2Rlc1wiLCAgICAgIGZ1bmN0aW9uKCkgeyByZW1vdmVCb3JkZXJOb2RlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplLnVuZG9cIiwgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplLnVuZG8oZyk7IH0pO1xuICB0aW1lKFwiICAgIGZpeHVwRWRnZUxhYmVsQ29vcmRzXCIsICAgZnVuY3Rpb24oKSB7IGZpeHVwRWRnZUxhYmVsQ29vcmRzKGcpOyB9KTtcbiAgdGltZShcIiAgICB1bmRvQ29vcmRpbmF0ZVN5c3RlbVwiLCAgIGZ1bmN0aW9uKCkgeyBjb29yZGluYXRlU3lzdGVtLnVuZG8oZyk7IH0pO1xuICB0aW1lKFwiICAgIHRyYW5zbGF0ZUdyYXBoXCIsICAgICAgICAgZnVuY3Rpb24oKSB7IHRyYW5zbGF0ZUdyYXBoKGcpOyB9KTtcbiAgdGltZShcIiAgICBhc3NpZ25Ob2RlSW50ZXJzZWN0c1wiLCAgIGZ1bmN0aW9uKCkgeyBhc3NpZ25Ob2RlSW50ZXJzZWN0cyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmV2ZXJzZVBvaW50c1wiLCAgICAgICAgICBmdW5jdGlvbigpIHsgcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFjeWNsaWMudW5kb1wiLCAgICAgICAgICAgZnVuY3Rpb24oKSB7IGFjeWNsaWMudW5kbyhnKTsgfSk7XG59XG5cbi8qXG4gKiBDb3BpZXMgZmluYWwgbGF5b3V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGxheW91dCBncmFwaCBiYWNrIHRvIHRoZSBpbnB1dFxuICogZ3JhcGguIFRoaXMgcHJvY2VzcyBvbmx5IGNvcGllcyB3aGl0ZWxpc3RlZCBhdHRyaWJ1dGVzIGZyb20gdGhlIGxheW91dCBncmFwaFxuICogdG8gdGhlIGlucHV0IGdyYXBoLCBzbyBpdCBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiB1cGRhdGVJbnB1dEdyYXBoKGlucHV0R3JhcGgsIGxheW91dEdyYXBoKSB7XG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGgubm9kZSh2KTtcbiAgICB2YXIgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5ub2RlKHYpO1xuXG4gICAgaWYgKGlucHV0TGFiZWwpIHtcbiAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuXG4gICAgICBpZiAobGF5b3V0R3JhcGguY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICAgIGlucHV0TGFiZWwud2lkdGggPSBsYXlvdXRMYWJlbC53aWR0aDtcbiAgICAgICAgaW5wdXRMYWJlbC5oZWlnaHQgPSBsYXlvdXRMYWJlbC5oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGlucHV0TGFiZWwgPSBpbnB1dEdyYXBoLmVkZ2UoZSk7XG4gICAgdmFyIGxheW91dExhYmVsID0gbGF5b3V0R3JhcGguZWRnZShlKTtcblxuICAgIGlucHV0TGFiZWwucG9pbnRzID0gbGF5b3V0TGFiZWwucG9pbnRzO1xuICAgIGlmIChfLmhhcyhsYXlvdXRMYWJlbCwgXCJ4XCIpKSB7XG4gICAgICBpbnB1dExhYmVsLnggPSBsYXlvdXRMYWJlbC54O1xuICAgICAgaW5wdXRMYWJlbC55ID0gbGF5b3V0TGFiZWwueTtcbiAgICB9XG4gIH0pO1xuXG4gIGlucHV0R3JhcGguZ3JhcGgoKS53aWR0aCA9IGxheW91dEdyYXBoLmdyYXBoKCkud2lkdGg7XG4gIGlucHV0R3JhcGguZ3JhcGgoKS5oZWlnaHQgPSBsYXlvdXRHcmFwaC5ncmFwaCgpLmhlaWdodDtcbn1cblxudmFyIGdyYXBoTnVtQXR0cnMgPSBbXCJub2Rlc2VwXCIsIFwiZWRnZXNlcFwiLCBcInJhbmtzZXBcIiwgXCJtYXJnaW54XCIsIFwibWFyZ2lueVwiXTtcbnZhciBncmFwaERlZmF1bHRzID0geyByYW5rc2VwOiA1MCwgZWRnZXNlcDogMjAsIG5vZGVzZXA6IDUwLCByYW5rZGlyOiBcInRiXCIgfTtcbnZhciBncmFwaEF0dHJzID0gW1wiYWN5Y2xpY2VyXCIsIFwicmFua2VyXCIsIFwicmFua2RpclwiLCBcImFsaWduXCJdO1xudmFyIG5vZGVOdW1BdHRycyA9IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCJdO1xudmFyIG5vZGVEZWZhdWx0cyA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xudmFyIGVkZ2VOdW1BdHRycyA9IFtcIm1pbmxlblwiLCBcIndlaWdodFwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwibGFiZWxvZmZzZXRcIl07XG52YXIgZWRnZURlZmF1bHRzID0ge1xuICBtaW5sZW46IDEsIHdlaWdodDogMSwgd2lkdGg6IDAsIGhlaWdodDogMCxcbiAgbGFiZWxvZmZzZXQ6IDEwLCBsYWJlbHBvczogXCJyXCJcbn07XG52YXIgZWRnZUF0dHJzID0gW1wibGFiZWxwb3NcIl07XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IGdyYXBoIGZyb20gdGhlIGlucHV0IGdyYXBoLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgbGF5b3V0LlxuICogVGhpcyBwcm9jZXNzIGNvcGllcyBvbmx5IHdoaXRlbGlzdGVkIGF0dHJpYnV0ZXMgZnJvbSB0aGUgaW5wdXQgZ3JhcGggdG8gdGhlXG4gKiBsYXlvdXQgZ3JhcGguIFRodXMgdGhpcyBmdW5jdGlvbiBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiBidWlsZExheW91dEdyYXBoKGlucHV0R3JhcGgpIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoeyBtdWx0aWdyYXBoOiB0cnVlLCBjb21wb3VuZDogdHJ1ZSB9KTtcbiAgdmFyIGdyYXBoID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZ3JhcGgoKSk7XG5cbiAgZy5zZXRHcmFwaChfLm1lcmdlKHt9LFxuICAgIGdyYXBoRGVmYXVsdHMsXG4gICAgc2VsZWN0TnVtYmVyQXR0cnMoZ3JhcGgsIGdyYXBoTnVtQXR0cnMpLFxuICAgIF8ucGljayhncmFwaCwgZ3JhcGhBdHRycykpKTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ub2RlKHYpKTtcbiAgICBnLnNldE5vZGUodiwgXy5kZWZhdWx0cyhzZWxlY3ROdW1iZXJBdHRycyhub2RlLCBub2RlTnVtQXR0cnMpLCBub2RlRGVmYXVsdHMpKTtcbiAgICBnLnNldFBhcmVudCh2LCBpbnB1dEdyYXBoLnBhcmVudCh2KSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLmVkZ2UoZSkpO1xuICAgIGcuc2V0RWRnZShlLCBfLm1lcmdlKHt9LFxuICAgICAgZWRnZURlZmF1bHRzLFxuICAgICAgc2VsZWN0TnVtYmVyQXR0cnMoZWRnZSwgZWRnZU51bUF0dHJzKSxcbiAgICAgIF8ucGljayhlZGdlLCBlZGdlQXR0cnMpKSk7XG4gIH0pO1xuXG4gIHJldHVybiBnO1xufVxuXG4vKlxuICogVGhpcyBpZGVhIGNvbWVzIGZyb20gdGhlIEdhbnNuZXIgcGFwZXI6IHRvIGFjY291bnQgZm9yIGVkZ2UgbGFiZWxzIGluIG91clxuICogbGF5b3V0IHdlIHNwbGl0IGVhY2ggcmFuayBpbiBoYWxmIGJ5IGRvdWJsaW5nIG1pbmxlbiBhbmQgaGFsdmluZyByYW5rc2VwLlxuICogVGhlbiB3ZSBjYW4gcGxhY2UgbGFiZWxzIGF0IHRoZXNlIG1pZC1wb2ludHMgYmV0d2VlbiBub2Rlcy5cbiAqXG4gKiBXZSBhbHNvIGFkZCBzb21lIG1pbmltYWwgcGFkZGluZyB0byB0aGUgd2lkdGggdG8gcHVzaCB0aGUgbGFiZWwgZm9yIHRoZSBlZGdlXG4gKiBhd2F5IGZyb20gdGhlIGVkZ2UgaXRzZWxmIGEgYml0LlxuICovXG5mdW5jdGlvbiBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzKGcpIHtcbiAgdmFyIGdyYXBoID0gZy5ncmFwaCgpO1xuICBncmFwaC5yYW5rc2VwIC89IDI7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBlZGdlLm1pbmxlbiAqPSAyO1xuICAgIGlmIChlZGdlLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkgIT09IFwiY1wiKSB7XG4gICAgICBpZiAoZ3JhcGgucmFua2RpciA9PT0gXCJUQlwiIHx8IGdyYXBoLnJhbmtkaXIgPT09IFwiQlRcIikge1xuICAgICAgICBlZGdlLndpZHRoICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlLmhlaWdodCArPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qXG4gKiBDcmVhdGVzIHRlbXBvcmFyeSBkdW1teSBub2RlcyB0aGF0IGNhcHR1cmUgdGhlIHJhbmsgaW4gd2hpY2ggZWFjaCBlZGdlJ3NcbiAqIGxhYmVsIGlzIGdvaW5nIHRvLCBpZiBpdCBoYXMgb25lIG9mIG5vbi16ZXJvIHdpZHRoIGFuZCBoZWlnaHQuIFdlIGRvIHRoaXNcbiAqIHNvIHRoYXQgd2UgY2FuIHNhZmVseSByZW1vdmUgZW1wdHkgcmFua3Mgd2hpbGUgcHJlc2VydmluZyBiYWxhbmNlIGZvciB0aGVcbiAqIGxhYmVsJ3MgcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2Uud2lkdGggJiYgZWRnZS5oZWlnaHQpIHtcbiAgICAgIHZhciB2ID0gZy5ub2RlKGUudik7XG4gICAgICB2YXIgdyA9IGcubm9kZShlLncpO1xuICAgICAgdmFyIGxhYmVsID0geyByYW5rOiAody5yYW5rIC0gdi5yYW5rKSAvIDIgKyB2LnJhbmssIGU6IGUgfTtcbiAgICAgIHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwiZWRnZS1wcm94eVwiLCBsYWJlbCwgXCJfZXBcIik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduUmFua01pbk1heChnKSB7XG4gIHZhciBtYXhSYW5rID0gMDtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmJvcmRlclRvcCkge1xuICAgICAgbm9kZS5taW5SYW5rID0gZy5ub2RlKG5vZGUuYm9yZGVyVG9wKS5yYW5rO1xuICAgICAgbm9kZS5tYXhSYW5rID0gZy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKS5yYW5rO1xuICAgICAgbWF4UmFuayA9IF8ubWF4KG1heFJhbmssIG5vZGUubWF4UmFuayk7XG4gICAgfVxuICB9KTtcbiAgZy5ncmFwaCgpLm1heFJhbmsgPSBtYXhSYW5rO1xufVxuXG5mdW5jdGlvbiByZW1vdmVFZGdlTGFiZWxQcm94aWVzKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmR1bW15ID09PSBcImVkZ2UtcHJveHlcIikge1xuICAgICAgZy5lZGdlKG5vZGUuZSkubGFiZWxSYW5rID0gbm9kZS5yYW5rO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUdyYXBoKGcpIHtcbiAgdmFyIG1pblggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhYID0gMDtcbiAgdmFyIG1pblkgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhZID0gMDtcbiAgdmFyIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCk7XG4gIHZhciBtYXJnaW5YID0gZ3JhcGhMYWJlbC5tYXJnaW54IHx8IDA7XG4gIHZhciBtYXJnaW5ZID0gZ3JhcGhMYWJlbC5tYXJnaW55IHx8IDA7XG5cbiAgZnVuY3Rpb24gZ2V0RXh0cmVtZXMoYXR0cnMpIHtcbiAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgdmFyIHkgPSBhdHRycy55O1xuICAgIHZhciB3ID0gYXR0cnMud2lkdGg7XG4gICAgdmFyIGggPSBhdHRycy5oZWlnaHQ7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHggLSB3IC8gMik7XG4gICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHggKyB3IC8gMik7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkgLSBoIC8gMik7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkgKyBoIC8gMik7XG4gIH1cblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IGdldEV4dHJlbWVzKGcubm9kZSh2KSk7IH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkge1xuICAgICAgZ2V0RXh0cmVtZXMoZWRnZSk7XG4gICAgfVxuICB9KTtcblxuICBtaW5YIC09IG1hcmdpblg7XG4gIG1pblkgLT0gbWFyZ2luWTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgbm9kZS54IC09IG1pblg7XG4gICAgbm9kZS55IC09IG1pblk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIGZ1bmN0aW9uKHApIHtcbiAgICAgIHAueCAtPSBtaW5YO1xuICAgICAgcC55IC09IG1pblk7XG4gICAgfSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkgeyBlZGdlLnggLT0gbWluWDsgfVxuICAgIGlmIChfLmhhcyhlZGdlLCBcInlcIikpIHsgZWRnZS55IC09IG1pblk7IH1cbiAgfSk7XG5cbiAgZ3JhcGhMYWJlbC53aWR0aCA9IG1heFggLSBtaW5YICsgbWFyZ2luWDtcbiAgZ3JhcGhMYWJlbC5oZWlnaHQgPSBtYXhZIC0gbWluWSArIG1hcmdpblk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbk5vZGVJbnRlcnNlY3RzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIHZhciBub2RlViA9IGcubm9kZShlLnYpO1xuICAgIHZhciBub2RlVyA9IGcubm9kZShlLncpO1xuICAgIHZhciBwMSwgcDI7XG4gICAgaWYgKCFlZGdlLnBvaW50cykge1xuICAgICAgZWRnZS5wb2ludHMgPSBbXTtcbiAgICAgIHAxID0gbm9kZVc7XG4gICAgICBwMiA9IG5vZGVWO1xuICAgIH0gZWxzZSB7XG4gICAgICBwMSA9IGVkZ2UucG9pbnRzWzBdO1xuICAgICAgcDIgPSBlZGdlLnBvaW50c1tlZGdlLnBvaW50cy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgZWRnZS5wb2ludHMudW5zaGlmdCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVYsIHAxKSk7XG4gICAgZWRnZS5wb2ludHMucHVzaCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVcsIHAyKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaXh1cEVkZ2VMYWJlbENvb3JkcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7XG4gICAgICBpZiAoZWRnZS5sYWJlbHBvcyA9PT0gXCJsXCIgfHwgZWRnZS5sYWJlbHBvcyA9PT0gXCJyXCIpIHtcbiAgICAgICAgZWRnZS53aWR0aCAtPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc3dpdGNoIChlZGdlLmxhYmVscG9zKSB7XG4gICAgICBjYXNlIFwibFwiOiBlZGdlLnggLT0gZWRnZS53aWR0aCAvIDIgKyBlZGdlLmxhYmVsb2Zmc2V0OyBicmVhaztcbiAgICAgIGNhc2UgXCJyXCI6IGVkZ2UueCArPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VQb2ludHNGb3JSZXZlcnNlZEVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLnJldmVyc2VkKSB7XG4gICAgICBlZGdlLnBvaW50cy5yZXZlcnNlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQm9yZGVyTm9kZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGcuY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgIHZhciB0ID0gZy5ub2RlKG5vZGUuYm9yZGVyVG9wKTtcbiAgICAgIHZhciBiID0gZy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKTtcbiAgICAgIHZhciBsID0gZy5ub2RlKF8ubGFzdChub2RlLmJvcmRlckxlZnQpKTtcbiAgICAgIHZhciByID0gZy5ub2RlKF8ubGFzdChub2RlLmJvcmRlclJpZ2h0KSk7XG5cbiAgICAgIG5vZGUud2lkdGggPSBNYXRoLmFicyhyLnggLSBsLngpO1xuICAgICAgbm9kZS5oZWlnaHQgPSBNYXRoLmFicyhiLnkgLSB0LnkpO1xuICAgICAgbm9kZS54ID0gbC54ICsgbm9kZS53aWR0aCAvIDI7XG4gICAgICBub2RlLnkgPSB0LnkgKyBub2RlLmhlaWdodCAvIDI7XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGcubm9kZSh2KS5kdW1teSA9PT0gXCJib3JkZXJcIikge1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNlbGZFZGdlcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoZS52ID09PSBlLncpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKGUudik7XG4gICAgICBpZiAoIW5vZGUuc2VsZkVkZ2VzKSB7XG4gICAgICAgIG5vZGUuc2VsZkVkZ2VzID0gW107XG4gICAgICB9XG4gICAgICBub2RlLnNlbGZFZGdlcy5wdXNoKHsgZTogZSwgbGFiZWw6IGcuZWRnZShlKSB9KTtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTZWxmRWRnZXMoZykge1xuICB2YXIgbGF5ZXJzID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICBfLmZvckVhY2gobGF5ZXJzLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBvcmRlclNoaWZ0ID0gMDtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgbm9kZS5vcmRlciA9IGkgKyBvcmRlclNoaWZ0O1xuICAgICAgXy5mb3JFYWNoKG5vZGUuc2VsZkVkZ2VzLCBmdW5jdGlvbihzZWxmRWRnZSkge1xuICAgICAgICB1dGlsLmFkZER1bW15Tm9kZShnLCBcInNlbGZlZGdlXCIsIHtcbiAgICAgICAgICB3aWR0aDogc2VsZkVkZ2UubGFiZWwud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBzZWxmRWRnZS5sYWJlbC5oZWlnaHQsXG4gICAgICAgICAgcmFuazogbm9kZS5yYW5rLFxuICAgICAgICAgIG9yZGVyOiBpICsgKCsrb3JkZXJTaGlmdCksXG4gICAgICAgICAgZTogc2VsZkVkZ2UuZSxcbiAgICAgICAgICBsYWJlbDogc2VsZkVkZ2UubGFiZWxcbiAgICAgICAgfSwgXCJfc2VcIik7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSBub2RlLnNlbGZFZGdlcztcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uU2VsZkVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmR1bW15ID09PSBcInNlbGZlZGdlXCIpIHtcbiAgICAgIHZhciBzZWxmTm9kZSA9IGcubm9kZShub2RlLmUudik7XG4gICAgICB2YXIgeCA9IHNlbGZOb2RlLnggKyBzZWxmTm9kZS53aWR0aCAvIDI7XG4gICAgICB2YXIgeSA9IHNlbGZOb2RlLnk7XG4gICAgICB2YXIgZHggPSBub2RlLnggLSB4O1xuICAgICAgdmFyIGR5ID0gc2VsZk5vZGUuaGVpZ2h0IC8gMjtcbiAgICAgIGcuc2V0RWRnZShub2RlLmUsIG5vZGUubGFiZWwpO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgICAgbm9kZS5sYWJlbC5wb2ludHMgPSBbXG4gICAgICAgIHsgeDogeCArIDIgKiBkeCAvIDMsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyA1ICogZHggLyA2LCB5OiB5IC0gZHkgfSxcbiAgICAgICAgeyB4OiB4ICsgICAgIGR4ICAgICwgeTogeSB9LFxuICAgICAgICB7IHg6IHggKyA1ICogZHggLyA2LCB5OiB5ICsgZHkgfSxcbiAgICAgICAgeyB4OiB4ICsgMiAqIGR4IC8gMywgeTogeSArIGR5IH1cbiAgICAgIF07XG4gICAgICBub2RlLmxhYmVsLnggPSBub2RlLng7XG4gICAgICBub2RlLmxhYmVsLnkgPSBub2RlLnk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0TnVtYmVyQXR0cnMob2JqLCBhdHRycykge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoXy5waWNrKG9iaiwgYXR0cnMpLCBOdW1iZXIpO1xufVxuXG5mdW5jdGlvbiBjYW5vbmljYWxpemUoYXR0cnMpIHtcbiAgdmFyIG5ld0F0dHJzID0ge307XG4gIF8uZm9yRWFjaChhdHRycywgZnVuY3Rpb24odiwgaykge1xuICAgIG5ld0F0dHJzW2sudG9Mb3dlckNhc2UoKV0gPSB2O1xuICB9KTtcbiAgcmV0dXJuIG5ld0F0dHJzO1xufVxuIiwiLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgbG9kYXNoO1xuXG5pZiAodHlwZW9mIHJlcXVpcmUgPT09IFwiZnVuY3Rpb25cIikge1xuICB0cnkge1xuICAgIGxvZGFzaCA9IHtcbiAgICAgIGNsb25lRGVlcDogcmVxdWlyZShcImxvZGFzaC9jbG9uZURlZXBcIiksXG4gICAgICBjb25zdGFudDogcmVxdWlyZShcImxvZGFzaC9jb25zdGFudFwiKSxcbiAgICAgIGRlZmF1bHRzOiByZXF1aXJlKFwibG9kYXNoL2RlZmF1bHRzXCIpLFxuICAgICAgZWFjaDogcmVxdWlyZShcImxvZGFzaC9lYWNoXCIpLFxuICAgICAgZmlsdGVyOiByZXF1aXJlKFwibG9kYXNoL2ZpbHRlclwiKSxcbiAgICAgIGZpbmQ6IHJlcXVpcmUoXCJsb2Rhc2gvZmluZFwiKSxcbiAgICAgIGZsYXR0ZW46IHJlcXVpcmUoXCJsb2Rhc2gvZmxhdHRlblwiKSxcbiAgICAgIGZvckVhY2g6IHJlcXVpcmUoXCJsb2Rhc2gvZm9yRWFjaFwiKSxcbiAgICAgIGZvckluOiByZXF1aXJlKFwibG9kYXNoL2ZvckluXCIpLFxuICAgICAgaGFzOiAgcmVxdWlyZShcImxvZGFzaC9oYXNcIiksXG4gICAgICBpc1VuZGVmaW5lZDogcmVxdWlyZShcImxvZGFzaC9pc1VuZGVmaW5lZFwiKSxcbiAgICAgIGxhc3Q6IHJlcXVpcmUoXCJsb2Rhc2gvbGFzdFwiKSxcbiAgICAgIG1hcDogcmVxdWlyZShcImxvZGFzaC9tYXBcIiksXG4gICAgICBtYXBWYWx1ZXM6IHJlcXVpcmUoXCJsb2Rhc2gvbWFwVmFsdWVzXCIpLFxuICAgICAgbWF4OiByZXF1aXJlKFwibG9kYXNoL21heFwiKSxcbiAgICAgIG1lcmdlOiByZXF1aXJlKFwibG9kYXNoL21lcmdlXCIpLFxuICAgICAgbWluOiByZXF1aXJlKFwibG9kYXNoL21pblwiKSxcbiAgICAgIG1pbkJ5OiByZXF1aXJlKFwibG9kYXNoL21pbkJ5XCIpLFxuICAgICAgbm93OiByZXF1aXJlKFwibG9kYXNoL25vd1wiKSxcbiAgICAgIHBpY2s6IHJlcXVpcmUoXCJsb2Rhc2gvcGlja1wiKSxcbiAgICAgIHJhbmdlOiByZXF1aXJlKFwibG9kYXNoL3JhbmdlXCIpLFxuICAgICAgcmVkdWNlOiByZXF1aXJlKFwibG9kYXNoL3JlZHVjZVwiKSxcbiAgICAgIHNvcnRCeTogcmVxdWlyZShcImxvZGFzaC9zb3J0QnlcIiksXG4gICAgICB1bmlxdWVJZDogcmVxdWlyZShcImxvZGFzaC91bmlxdWVJZFwiKSxcbiAgICAgIHZhbHVlczogcmVxdWlyZShcImxvZGFzaC92YWx1ZXNcIiksXG4gICAgICB6aXBPYmplY3Q6IHJlcXVpcmUoXCJsb2Rhc2gvemlwT2JqZWN0XCIpLFxuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gIH1cbn1cblxuaWYgKCFsb2Rhc2gpIHtcbiAgbG9kYXNoID0gd2luZG93Ll87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbG9kYXNoO1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgY2xlYW51cDogY2xlYW51cFxufTtcblxuLypcbiAqIEEgbmVzdGluZyBncmFwaCBjcmVhdGVzIGR1bW15IG5vZGVzIGZvciB0aGUgdG9wcyBhbmQgYm90dG9tcyBvZiBzdWJncmFwaHMsXG4gKiBhZGRzIGFwcHJvcHJpYXRlIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBjbHVzdGVyIG5vZGVzIGFyZSBwbGFjZWQgYmV0d2VlblxuICogdGhlc2UgYm91bmRyaWVzLCBhbmQgZW5zdXJlcyB0aGF0IHRoZSBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKlxuICogSW4gYWRkaXRpb24gd2UgZW5zdXJlLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG1pbmxlbiBwcm9wZXJ0eSwgdGhhdCBub2Rlc1xuICogYW5kIHN1YmdyYXBoIGJvcmRlciBub2RlcyB0byBub3QgZW5kIHVwIG9uIHRoZSBzYW1lIHJhbmsuXG4gKlxuICogUHJlY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gTm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBhIG1pbmxlbiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0Y29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKiAgICAyLiBEdW1teSBub2RlcyBhcmUgYWRkZWQgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocy5cbiAqICAgIDMuIFRoZSBtaW5sZW4gYXR0cmlidXRlIGZvciBub2RlcyBpcyBhZGp1c3RlZCB0byBlbnN1cmUgbm9kZXMgZG8gbm90XG4gKiAgICAgICBnZXQgcGxhY2VkIG9uIHRoZSBzYW1lIHJhbmsgYXMgc3ViZ3JhcGggYm9yZGVyIG5vZGVzLlxuICpcbiAqIFRoZSBuZXN0aW5nIGdyYXBoIGlkZWEgY29tZXMgZnJvbSBTYW5kZXIsIFwiTGF5b3V0IG9mIENvbXBvdW5kIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqL1xuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIHJvb3QgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcInJvb3RcIiwge30sIFwiX3Jvb3RcIik7XG4gIHZhciBkZXB0aHMgPSB0cmVlRGVwdGhzKGcpO1xuICB2YXIgaGVpZ2h0ID0gXy5tYXgoXy52YWx1ZXMoZGVwdGhzKSkgLSAxOyAvLyBOb3RlOiBkZXB0aHMgaXMgYW4gT2JqZWN0IG5vdCBhbiBhcnJheVxuICB2YXIgbm9kZVNlcCA9IDIgKiBoZWlnaHQgKyAxO1xuXG4gIGcuZ3JhcGgoKS5uZXN0aW5nUm9vdCA9IHJvb3Q7XG5cbiAgLy8gTXVsdGlwbHkgbWlubGVuIGJ5IG5vZGVTZXAgdG8gYWxpZ24gbm9kZXMgb24gbm9uLWJvcmRlciByYW5rcy5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBnLmVkZ2UoZSkubWlubGVuICo9IG5vZGVTZXA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSBhIHdlaWdodCB0aGF0IGlzIHN1ZmZpY2llbnQgdG8ga2VlcCBzdWJncmFwaHMgdmVydGljYWxseSBjb21wYWN0XG4gIHZhciB3ZWlnaHQgPSBzdW1XZWlnaHRzKGcpICsgMTtcblxuICAvLyBDcmVhdGUgYm9yZGVyIG5vZGVzIGFuZCBsaW5rIHRoZW0gdXBcbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuICB9KTtcblxuICAvLyBTYXZlIHRoZSBtdWx0aXBsaWVyIGZvciBub2RlIGxheWVycyBmb3IgbGF0ZXIgcmVtb3ZhbCBvZiBlbXB0eSBib3JkZXJcbiAgLy8gbGF5ZXJzLlxuICBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3IgPSBub2RlU2VwO1xufVxuXG5mdW5jdGlvbiBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgdikge1xuICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmICh2ICE9PSByb290KSB7XG4gICAgICBnLnNldEVkZ2Uocm9vdCwgdiwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogbm9kZVNlcCB9KTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvcCA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9idFwiKTtcbiAgdmFyIGJvdHRvbSA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9iYlwiKTtcbiAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuXG4gIGcuc2V0UGFyZW50KHRvcCwgdik7XG4gIGxhYmVsLmJvcmRlclRvcCA9IHRvcDtcbiAgZy5zZXRQYXJlbnQoYm90dG9tLCB2KTtcbiAgbGFiZWwuYm9yZGVyQm90dG9tID0gYm90dG9tO1xuXG4gIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuXG4gICAgdmFyIGNoaWxkTm9kZSA9IGcubm9kZShjaGlsZCk7XG4gICAgdmFyIGNoaWxkVG9wID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IGNoaWxkTm9kZS5ib3JkZXJUb3AgOiBjaGlsZDtcbiAgICB2YXIgY2hpbGRCb3R0b20gPSBjaGlsZE5vZGUuYm9yZGVyQm90dG9tID8gY2hpbGROb2RlLmJvcmRlckJvdHRvbSA6IGNoaWxkO1xuICAgIHZhciB0aGlzV2VpZ2h0ID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IHdlaWdodCA6IDIgKiB3ZWlnaHQ7XG4gICAgdmFyIG1pbmxlbiA9IGNoaWxkVG9wICE9PSBjaGlsZEJvdHRvbSA/IDEgOiBoZWlnaHQgLSBkZXB0aHNbdl0gKyAxO1xuXG4gICAgZy5zZXRFZGdlKHRvcCwgY2hpbGRUb3AsIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICB9KTtcblxuICAgIGcuc2V0RWRnZShjaGlsZEJvdHRvbSwgYm90dG9tLCB7XG4gICAgICB3ZWlnaHQ6IHRoaXNXZWlnaHQsXG4gICAgICBtaW5sZW46IG1pbmxlbixcbiAgICAgIG5lc3RpbmdFZGdlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICghZy5wYXJlbnQodikpIHtcbiAgICBnLnNldEVkZ2Uocm9vdCwgdG9wLCB7IHdlaWdodDogMCwgbWlubGVuOiBoZWlnaHQgKyBkZXB0aHNbdl0gfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJlZURlcHRocyhnKSB7XG4gIHZhciBkZXB0aHMgPSB7fTtcbiAgZnVuY3Rpb24gZGZzKHYsIGRlcHRoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIGRmcyhjaGlsZCwgZGVwdGggKyAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBkZXB0aHNbdl0gPSBkZXB0aDtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbih2KSB7IGRmcyh2LCAxKTsgfSk7XG4gIHJldHVybiBkZXB0aHM7XG59XG5cbmZ1bmN0aW9uIHN1bVdlaWdodHMoZykge1xuICByZXR1cm4gXy5yZWR1Y2UoZy5lZGdlcygpLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICByZXR1cm4gYWNjICsgZy5lZGdlKGUpLndlaWdodDtcbiAgfSwgMCk7XG59XG5cbmZ1bmN0aW9uIGNsZWFudXAoZykge1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgZy5yZW1vdmVOb2RlKGdyYXBoTGFiZWwubmVzdGluZ1Jvb3QpO1xuICBkZWxldGUgZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdDtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLm5lc3RpbmdFZGdlKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICB1bmRvOiB1bmRvXG59O1xuXG4vKlxuICogQnJlYWtzIGFueSBsb25nIGVkZ2VzIGluIHRoZSBncmFwaCBpbnRvIHNob3J0IHNlZ21lbnRzIHRoYXQgc3BhbiAxIGxheWVyXG4gKiBlYWNoLiBUaGlzIG9wZXJhdGlvbiBpcyB1bmRvYWJsZSB3aXRoIHRoZSBkZW5vcm1hbGl6ZSBmdW5jdGlvbi5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgaW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBFYWNoIG5vZGUgaW4gdGhlIGdyYXBoIGhhcyBhIFwicmFua1wiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uOlxuICpcbiAqICAgIDEuIEFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggaGF2ZSBhIGxlbmd0aCBvZiAxLlxuICogICAgMi4gRHVtbXkgbm9kZXMgYXJlIGFkZGVkIHdoZXJlIGVkZ2VzIGhhdmUgYmVlbiBzcGxpdCBpbnRvIHNlZ21lbnRzLlxuICogICAgMy4gVGhlIGdyYXBoIGlzIGF1Z21lbnRlZCB3aXRoIGEgXCJkdW1teUNoYWluc1wiIGF0dHJpYnV0ZSB3aGljaCBjb250YWluc1xuICogICAgICAgdGhlIGZpcnN0IGR1bW15IGluIGVhY2ggY2hhaW4gb2YgZHVtbXkgbm9kZXMgcHJvZHVjZWQuXG4gKi9cbmZ1bmN0aW9uIHJ1bihnKSB7XG4gIGcuZ3JhcGgoKS5kdW1teUNoYWlucyA9IFtdO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlZGdlKSB7IG5vcm1hbGl6ZUVkZ2UoZywgZWRnZSk7IH0pO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVFZGdlKGcsIGUpIHtcbiAgdmFyIHYgPSBlLnY7XG4gIHZhciB2UmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICB2YXIgdyA9IGUudztcbiAgdmFyIHdSYW5rID0gZy5ub2RlKHcpLnJhbms7XG4gIHZhciBuYW1lID0gZS5uYW1lO1xuICB2YXIgZWRnZUxhYmVsID0gZy5lZGdlKGUpO1xuICB2YXIgbGFiZWxSYW5rID0gZWRnZUxhYmVsLmxhYmVsUmFuaztcblxuICBpZiAod1JhbmsgPT09IHZSYW5rICsgMSkgcmV0dXJuO1xuXG4gIGcucmVtb3ZlRWRnZShlKTtcblxuICB2YXIgZHVtbXksIGF0dHJzLCBpO1xuICBmb3IgKGkgPSAwLCArK3ZSYW5rOyB2UmFuayA8IHdSYW5rOyArK2ksICsrdlJhbmspIHtcbiAgICBlZGdlTGFiZWwucG9pbnRzID0gW107XG4gICAgYXR0cnMgPSB7XG4gICAgICB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsIGVkZ2VPYmo6IGUsXG4gICAgICByYW5rOiB2UmFua1xuICAgIH07XG4gICAgZHVtbXkgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImVkZ2VcIiwgYXR0cnMsIFwiX2RcIik7XG4gICAgaWYgKHZSYW5rID09PSBsYWJlbFJhbmspIHtcbiAgICAgIGF0dHJzLndpZHRoID0gZWRnZUxhYmVsLndpZHRoO1xuICAgICAgYXR0cnMuaGVpZ2h0ID0gZWRnZUxhYmVsLmhlaWdodDtcbiAgICAgIGF0dHJzLmR1bW15ID0gXCJlZGdlLWxhYmVsXCI7XG4gICAgICBhdHRycy5sYWJlbHBvcyA9IGVkZ2VMYWJlbC5sYWJlbHBvcztcbiAgICB9XG4gICAgZy5zZXRFZGdlKHYsIGR1bW15LCB7IHdlaWdodDogZWRnZUxhYmVsLndlaWdodCB9LCBuYW1lKTtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgZy5ncmFwaCgpLmR1bW15Q2hhaW5zLnB1c2goZHVtbXkpO1xuICAgIH1cbiAgICB2ID0gZHVtbXk7XG4gIH1cblxuICBnLnNldEVkZ2UodiwgdywgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICBfLmZvckVhY2goZy5ncmFwaCgpLmR1bW15Q2hhaW5zLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIG9yaWdMYWJlbCA9IG5vZGUuZWRnZUxhYmVsO1xuICAgIHZhciB3O1xuICAgIGcuc2V0RWRnZShub2RlLmVkZ2VPYmosIG9yaWdMYWJlbCk7XG4gICAgd2hpbGUgKG5vZGUuZHVtbXkpIHtcbiAgICAgIHcgPSBnLnN1Y2Nlc3NvcnModilbMF07XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBvcmlnTGFiZWwucG9pbnRzLnB1c2goeyB4OiBub2RlLngsIHk6IG5vZGUueSB9KTtcbiAgICAgIGlmIChub2RlLmR1bW15ID09PSBcImVkZ2UtbGFiZWxcIikge1xuICAgICAgICBvcmlnTGFiZWwueCA9IG5vZGUueDtcbiAgICAgICAgb3JpZ0xhYmVsLnkgPSBub2RlLnk7XG4gICAgICAgIG9yaWdMYWJlbC53aWR0aCA9IG5vZGUud2lkdGg7XG4gICAgICAgIG9yaWdMYWJlbC5oZWlnaHQgPSBub2RlLmhlaWdodDtcbiAgICAgIH1cbiAgICAgIHYgPSB3O1xuICAgICAgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZFN1YmdyYXBoQ29uc3RyYWludHM7XG5cbmZ1bmN0aW9uIGFkZFN1YmdyYXBoQ29uc3RyYWludHMoZywgY2csIHZzKSB7XG4gIHZhciBwcmV2ID0ge30sXG4gICAgcm9vdFByZXY7XG5cbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIGNoaWxkID0gZy5wYXJlbnQodiksXG4gICAgICBwYXJlbnQsXG4gICAgICBwcmV2Q2hpbGQ7XG4gICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICBwYXJlbnQgPSBnLnBhcmVudChjaGlsZCk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHByZXZDaGlsZCA9IHByZXZbcGFyZW50XTtcbiAgICAgICAgcHJldltwYXJlbnRdID0gY2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2Q2hpbGQgPSByb290UHJldjtcbiAgICAgICAgcm9vdFByZXYgPSBjaGlsZDtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2Q2hpbGQgJiYgcHJldkNoaWxkICE9PSBjaGlsZCkge1xuICAgICAgICBjZy5zZXRFZGdlKHByZXZDaGlsZCwgY2hpbGQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGlsZCA9IHBhcmVudDtcbiAgICB9XG4gIH0pO1xuXG4gIC8qXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdiA/IGcuY2hpbGRyZW4odikgOiBnLmNoaWxkcmVuKCk7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdmFyIG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICBzdWJncmFwaHMgPSBbXTtcbiAgICAgIF8uZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgdmFyIGNoaWxkTWluID0gZGZzKGNoaWxkKTtcbiAgICAgICAgaWYgKGcuY2hpbGRyZW4oY2hpbGQpLmxlbmd0aCkge1xuICAgICAgICAgIHN1YmdyYXBocy5wdXNoKHsgdjogY2hpbGQsIG9yZGVyOiBjaGlsZE1pbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBtaW4gPSBNYXRoLm1pbihtaW4sIGNoaWxkTWluKTtcbiAgICAgIH0pO1xuICAgICAgXy5yZWR1Y2UoXy5zb3J0Qnkoc3ViZ3JhcGhzLCBcIm9yZGVyXCIpLCBmdW5jdGlvbihwcmV2LCBjdXJyKSB7XG4gICAgICAgIGNnLnNldEVkZ2UocHJldi52LCBjdXJyLnYpO1xuICAgICAgICByZXR1cm4gY3VycjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgcmV0dXJuIGcubm9kZSh2KS5vcmRlcjtcbiAgfVxuICBkZnModW5kZWZpbmVkKTtcbiAgKi9cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXJ5Y2VudGVyO1xuXG5mdW5jdGlvbiBiYXJ5Y2VudGVyKGcsIG1vdmFibGUpIHtcbiAgcmV0dXJuIF8ubWFwKG1vdmFibGUsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5WID0gZy5pbkVkZ2VzKHYpO1xuICAgIGlmICghaW5WLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgdjogdiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzdWx0ID0gXy5yZWR1Y2UoaW5WLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSksXG4gICAgICAgICAgbm9kZVUgPSBnLm5vZGUoZS52KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdW06IGFjYy5zdW0gKyAoZWRnZS53ZWlnaHQgKiBub2RlVS5vcmRlciksXG4gICAgICAgICAgd2VpZ2h0OiBhY2Mud2VpZ2h0ICsgZWRnZS53ZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH0sIHsgc3VtOiAwLCB3ZWlnaHQ6IDAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHY6IHYsXG4gICAgICAgIGJhcnljZW50ZXI6IHJlc3VsdC5zdW0gLyByZXN1bHQud2VpZ2h0LFxuICAgICAgICB3ZWlnaHQ6IHJlc3VsdC53ZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1aWxkTGF5ZXJHcmFwaDtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBncmFwaCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNvcnQgYSBsYXllciBvZiBub2Rlcy4gVGhlIGdyYXBoIHdpbGxcbiAqIGNvbnRhaW4gYWxsIGJhc2UgYW5kIHN1YmdyYXBoIG5vZGVzIGZyb20gdGhlIHJlcXVlc3QgbGF5ZXIgaW4gdGhlaXIgb3JpZ2luYWxcbiAqIGhpZXJhcmNoeSBhbmQgYW55IGVkZ2VzIHRoYXQgYXJlIGluY2lkZW50IG9uIHRoZXNlIG5vZGVzIGFuZCBhcmUgb2YgdGhlIHR5cGVcbiAqIHJlcXVlc3RlZCBieSB0aGUgXCJyZWxhdGlvbnNoaXBcIiBwYXJhbWV0ZXIuXG4gKlxuICogTm9kZXMgZnJvbSB0aGUgcmVxdWVzdGVkIHJhbmsgdGhhdCBkbyBub3QgaGF2ZSBwYXJlbnRzIGFyZSBhc3NpZ25lZCBhIHJvb3RcbiAqIG5vZGUgaW4gdGhlIG91dHB1dCBncmFwaCwgd2hpY2ggaXMgc2V0IGluIHRoZSByb290IGdyYXBoIGF0dHJpYnV0ZS4gVGhpc1xuICogbWFrZXMgaXQgZWFzeSB0byB3YWxrIHRoZSBoaWVyYXJjaHkgb2YgbW92YWJsZSBub2RlcyBkdXJpbmcgb3JkZXJpbmcuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUdcbiAqICAgIDIuIEJhc2Ugbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhdmUgYSByYW5rIGF0dHJpYnV0ZVxuICogICAgMy4gU3ViZ3JhcGggbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBtaW5SYW5rIGFuZCBtYXhSYW5rIGF0dHJpYnV0ZXNcbiAqICAgIDQuIEVkZ2VzIGhhdmUgYW4gYXNzaWduZWQgd2VpZ2h0XG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIE91dHB1dCBncmFwaCBoYXMgYWxsIG5vZGVzIGluIHRoZSBtb3ZhYmxlIHJhbmsgd2l0aCBwcmVzZXJ2ZWRcbiAqICAgICAgIGhpZXJhcmNoeS5cbiAqICAgIDIuIFJvb3Qgbm9kZXMgaW4gdGhlIG1vdmFibGUgbGF5ZXIgYXJlIG1hZGUgY2hpbGRyZW4gb2YgdGhlIG5vZGVcbiAqICAgICAgIGluZGljYXRlZCBieSB0aGUgcm9vdCBhdHRyaWJ1dGUgb2YgdGhlIGdyYXBoLlxuICogICAgMy4gTm9uLW1vdmFibGUgbm9kZXMgaW5jaWRlbnQgb24gbW92YWJsZSBub2Rlcywgc2VsZWN0ZWQgYnkgdGhlXG4gKiAgICAgICByZWxhdGlvbnNoaXAgcGFyYW1ldGVyLCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdyYXBoICh3aXRob3V0IGhpZXJhcmNoeSkuXG4gKiAgICA0LiBFZGdlcyBpbmNpZGVudCBvbiBtb3ZhYmxlIG5vZGVzLCBzZWxlY3RlZCBieSB0aGUgcmVsYXRpb25zaGlwXG4gKiAgICAgICBwYXJhbWV0ZXIsIGFyZSBhZGRlZCB0byB0aGUgb3V0cHV0IGdyYXBoLlxuICogICAgNS4gVGhlIHdlaWdodHMgZm9yIGNvcGllZCBlZGdlcyBhcmUgYWdncmVnYXRlZCBhcyBuZWVkLCBzaW5jZSB0aGUgb3V0cHV0XG4gKiAgICAgICBncmFwaCBpcyBub3QgYSBtdWx0aS1ncmFwaC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCkge1xuICB2YXIgcm9vdCA9IGNyZWF0ZVJvb3ROb2RlKGcpLFxuICAgIHJlc3VsdCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlIH0pLnNldEdyYXBoKHsgcm9vdDogcm9vdCB9KVxuICAgICAgLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpOyB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodiksXG4gICAgICBwYXJlbnQgPSBnLnBhcmVudCh2KTtcblxuICAgIGlmIChub2RlLnJhbmsgPT09IHJhbmsgfHwgbm9kZS5taW5SYW5rIDw9IHJhbmsgJiYgcmFuayA8PSBub2RlLm1heFJhbmspIHtcbiAgICAgIHJlc3VsdC5zZXROb2RlKHYpO1xuICAgICAgcmVzdWx0LnNldFBhcmVudCh2LCBwYXJlbnQgfHwgcm9vdCk7XG5cbiAgICAgIC8vIFRoaXMgYXNzdW1lcyB3ZSBoYXZlIG9ubHkgc2hvcnQgZWRnZXMhXG4gICAgICBfLmZvckVhY2goZ1tyZWxhdGlvbnNoaXBdKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciB1ID0gZS52ID09PSB2ID8gZS53IDogZS52LFxuICAgICAgICAgIGVkZ2UgPSByZXN1bHQuZWRnZSh1LCB2KSxcbiAgICAgICAgICB3ZWlnaHQgPSAhXy5pc1VuZGVmaW5lZChlZGdlKSA/IGVkZ2Uud2VpZ2h0IDogMDtcbiAgICAgICAgcmVzdWx0LnNldEVkZ2UodSwgdiwgeyB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgKyB3ZWlnaHQgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgICByZXN1bHQuc2V0Tm9kZSh2LCB7XG4gICAgICAgICAgYm9yZGVyTGVmdDogbm9kZS5ib3JkZXJMZWZ0W3JhbmtdLFxuICAgICAgICAgIGJvcmRlclJpZ2h0OiBub2RlLmJvcmRlclJpZ2h0W3JhbmtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm9vdE5vZGUoZykge1xuICB2YXIgdjtcbiAgd2hpbGUgKGcuaGFzTm9kZSgodiA9IF8udW5pcXVlSWQoXCJfcm9vdFwiKSkpKTtcbiAgcmV0dXJuIHY7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyb3NzQ291bnQ7XG5cbi8qXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsYXllcmluZyAoYW4gYXJyYXkgb2YgbGF5ZXJzLCBlYWNoIHdpdGggYW4gYXJyYXkgb2ZcbiAqIG9yZGVyZXJkIG5vZGVzKSBhbmQgYSBncmFwaCBhbmQgcmV0dXJucyBhIHdlaWdodGVkIGNyb3NzaW5nIGNvdW50LlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIG11c3QgYmUgc2ltcGxlIChub3QgYSBtdWx0aWdyYXBoKSwgZGlyZWN0ZWQsIGFuZCBpbmNsdWRlXG4gKiAgICAgICBvbmx5IHNpbXBsZSBlZGdlcy5cbiAqICAgIDIuIEVkZ2VzIGluIHRoZSBpbnB1dCBncmFwaCBtdXN0IGhhdmUgYXNzaWduZWQgd2VpZ2h0cy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGdyYXBoIGFuZCBsYXllcmluZyBtYXRyaXggYXJlIGxlZnQgdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBCYXJ0aCwgZXQgYWwuLCBcIkJpbGF5ZXIgQ3Jvc3MgQ291bnRpbmcuXCJcbiAqL1xuZnVuY3Rpb24gY3Jvc3NDb3VudChnLCBsYXllcmluZykge1xuICB2YXIgY2MgPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxheWVyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgY2MgKz0gdHdvTGF5ZXJDcm9zc0NvdW50KGcsIGxheWVyaW5nW2ktMV0sIGxheWVyaW5nW2ldKTtcbiAgfVxuICByZXR1cm4gY2M7XG59XG5cbmZ1bmN0aW9uIHR3b0xheWVyQ3Jvc3NDb3VudChnLCBub3J0aExheWVyLCBzb3V0aExheWVyKSB7XG4gIC8vIFNvcnQgYWxsIG9mIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBub3J0aCBhbmQgc291dGggbGF5ZXJzIGJ5IHRoZWlyIHBvc2l0aW9uXG4gIC8vIGluIHRoZSBub3J0aCBsYXllciBhbmQgdGhlbiB0aGUgc291dGguIE1hcCB0aGVzZSBlZGdlcyB0byB0aGUgcG9zaXRpb24gb2ZcbiAgLy8gdGhlaXIgaGVhZCBpbiB0aGUgc291dGggbGF5ZXIuXG4gIHZhciBzb3V0aFBvcyA9IF8uemlwT2JqZWN0KHNvdXRoTGF5ZXIsXG4gICAgXy5tYXAoc291dGhMYXllciwgZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIGk7IH0pKTtcbiAgdmFyIHNvdXRoRW50cmllcyA9IF8uZmxhdHRlbihfLm1hcChub3J0aExheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uc29ydEJ5KF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB7IHBvczogc291dGhQb3NbZS53XSwgd2VpZ2h0OiBnLmVkZ2UoZSkud2VpZ2h0IH07XG4gICAgfSksIFwicG9zXCIpO1xuICB9KSwgdHJ1ZSk7XG5cbiAgLy8gQnVpbGQgdGhlIGFjY3VtdWxhdG9yIHRyZWVcbiAgdmFyIGZpcnN0SW5kZXggPSAxO1xuICB3aGlsZSAoZmlyc3RJbmRleCA8IHNvdXRoTGF5ZXIubGVuZ3RoKSBmaXJzdEluZGV4IDw8PSAxO1xuICB2YXIgdHJlZVNpemUgPSAyICogZmlyc3RJbmRleCAtIDE7XG4gIGZpcnN0SW5kZXggLT0gMTtcbiAgdmFyIHRyZWUgPSBfLm1hcChuZXcgQXJyYXkodHJlZVNpemUpLCBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgd2VpZ2h0ZWQgY3Jvc3NpbmdzXG4gIHZhciBjYyA9IDA7XG4gIF8uZm9yRWFjaChzb3V0aEVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkge1xuICAgIHZhciBpbmRleCA9IGVudHJ5LnBvcyArIGZpcnN0SW5kZXg7XG4gICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgIHZhciB3ZWlnaHRTdW0gPSAwO1xuICAgIHdoaWxlIChpbmRleCA+IDApIHtcbiAgICAgIGlmIChpbmRleCAlIDIpIHtcbiAgICAgICAgd2VpZ2h0U3VtICs9IHRyZWVbaW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICAgIGluZGV4ID0gKGluZGV4IC0gMSkgPj4gMTtcbiAgICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gICAgY2MgKz0gZW50cnkud2VpZ2h0ICogd2VpZ2h0U3VtO1xuICB9KSk7XG5cbiAgcmV0dXJuIGNjO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBpbml0T3JkZXIgPSByZXF1aXJlKFwiLi9pbml0LW9yZGVyXCIpO1xudmFyIGNyb3NzQ291bnQgPSByZXF1aXJlKFwiLi9jcm9zcy1jb3VudFwiKTtcbnZhciBzb3J0U3ViZ3JhcGggPSByZXF1aXJlKFwiLi9zb3J0LXN1YmdyYXBoXCIpO1xudmFyIGJ1aWxkTGF5ZXJHcmFwaCA9IHJlcXVpcmUoXCIuL2J1aWxkLWxheWVyLWdyYXBoXCIpO1xudmFyIGFkZFN1YmdyYXBoQ29uc3RyYWludHMgPSByZXF1aXJlKFwiLi9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHNcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9yZGVyO1xuXG4vKlxuICogQXBwbGllcyBoZXVyaXN0aWNzIHRvIG1pbmltaXplIGVkZ2UgY3Jvc3NpbmdzIGluIHRoZSBncmFwaCBhbmQgc2V0cyB0aGUgYmVzdFxuICogb3JkZXIgc29sdXRpb24gYXMgYW4gb3JkZXIgYXR0cmlidXRlIG9uIGVhY2ggbm9kZS5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIERBR1xuICogICAgMi4gR3JhcGggbm9kZXMgbXVzdCBiZSBvYmplY3RzIHdpdGggYSBcInJhbmtcIiBhdHRyaWJ1dGVcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSB0aGUgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGFuIFwib3JkZXJcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIG9yZGVyKGcpIHtcbiAgdmFyIG1heFJhbmsgPSB1dGlsLm1heFJhbmsoZyksXG4gICAgZG93bkxheWVyR3JhcGhzID0gYnVpbGRMYXllckdyYXBocyhnLCBfLnJhbmdlKDEsIG1heFJhbmsgKyAxKSwgXCJpbkVkZ2VzXCIpLFxuICAgIHVwTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UobWF4UmFuayAtIDEsIC0xLCAtMSksIFwib3V0RWRnZXNcIik7XG5cbiAgdmFyIGxheWVyaW5nID0gaW5pdE9yZGVyKGcpO1xuICBhc3NpZ25PcmRlcihnLCBsYXllcmluZyk7XG5cbiAgdmFyIGJlc3RDQyA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBiZXN0O1xuXG4gIGZvciAodmFyIGkgPSAwLCBsYXN0QmVzdCA9IDA7IGxhc3RCZXN0IDwgNDsgKytpLCArK2xhc3RCZXN0KSB7XG4gICAgc3dlZXBMYXllckdyYXBocyhpICUgMiA/IGRvd25MYXllckdyYXBocyA6IHVwTGF5ZXJHcmFwaHMsIGkgJSA0ID49IDIpO1xuXG4gICAgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gICAgdmFyIGNjID0gY3Jvc3NDb3VudChnLCBsYXllcmluZyk7XG4gICAgaWYgKGNjIDwgYmVzdENDKSB7XG4gICAgICBsYXN0QmVzdCA9IDA7XG4gICAgICBiZXN0ID0gXy5jbG9uZURlZXAobGF5ZXJpbmcpO1xuICAgICAgYmVzdENDID0gY2M7XG4gICAgfVxuICB9XG5cbiAgYXNzaWduT3JkZXIoZywgYmVzdCk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJHcmFwaHMoZywgcmFua3MsIHJlbGF0aW9uc2hpcCkge1xuICByZXR1cm4gXy5tYXAocmFua3MsIGZ1bmN0aW9uKHJhbmspIHtcbiAgICByZXR1cm4gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2VlcExheWVyR3JhcGhzKGxheWVyR3JhcGhzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIGNnID0gbmV3IEdyYXBoKCk7XG4gIF8uZm9yRWFjaChsYXllckdyYXBocywgZnVuY3Rpb24obGcpIHtcbiAgICB2YXIgcm9vdCA9IGxnLmdyYXBoKCkucm9vdDtcbiAgICB2YXIgc29ydGVkID0gc29ydFN1YmdyYXBoKGxnLCByb290LCBjZywgYmlhc1JpZ2h0KTtcbiAgICBfLmZvckVhY2goc29ydGVkLnZzLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICBsZy5ub2RlKHYpLm9yZGVyID0gaTtcbiAgICB9KTtcbiAgICBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGxnLCBjZywgc29ydGVkLnZzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKSB7XG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIGcubm9kZSh2KS5vcmRlciA9IGk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbml0T3JkZXI7XG5cbi8qXG4gKiBBc3NpZ25zIGFuIGluaXRpYWwgb3JkZXIgdmFsdWUgZm9yIGVhY2ggbm9kZSBieSBwZXJmb3JtaW5nIGEgREZTIHNlYXJjaFxuICogc3RhcnRpbmcgZnJvbSBub2RlcyBpbiB0aGUgZmlyc3QgcmFuay4gTm9kZXMgYXJlIGFzc2lnbmVkIGFuIG9yZGVyIGluIHRoZWlyXG4gKiByYW5rIGFzIHRoZXkgYXJlIGZpcnN0IHZpc2l0ZWQuXG4gKlxuICogVGhpcyBhcHByb2FjaCBjb21lcyBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZFxuICogR3JhcGhzLlwiXG4gKlxuICogUmV0dXJucyBhIGxheWVyaW5nIG1hdHJpeCB3aXRoIGFuIGFycmF5IHBlciBsYXllciBhbmQgZWFjaCBsYXllciBzb3J0ZWQgYnlcbiAqIHRoZSBvcmRlciBvZiBpdHMgbm9kZXMuXG4gKi9cbmZ1bmN0aW9uIGluaXRPcmRlcihnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBzaW1wbGVOb2RlcyA9IF8uZmlsdGVyKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiAhZy5jaGlsZHJlbih2KS5sZW5ndGg7XG4gIH0pO1xuICB2YXIgbWF4UmFuayA9IF8ubWF4KF8ubWFwKHNpbXBsZU5vZGVzLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuICB2YXIgbGF5ZXJzID0gXy5tYXAoXy5yYW5nZShtYXhSYW5rICsgMSksIGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0pO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSByZXR1cm47XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgbGF5ZXJzW25vZGUucmFua10ucHVzaCh2KTtcbiAgICBfLmZvckVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICB9XG5cbiAgdmFyIG9yZGVyZWRWcyA9IF8uc29ydEJ5KHNpbXBsZU5vZGVzLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSk7XG4gIF8uZm9yRWFjaChvcmRlcmVkVnMsIGRmcyk7XG5cbiAgcmV0dXJuIGxheWVycztcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVzb2x2ZUNvbmZsaWN0cztcblxuLypcbiAqIEdpdmVuIGEgbGlzdCBvZiBlbnRyaWVzIG9mIHRoZSBmb3JtIHt2LCBiYXJ5Y2VudGVyLCB3ZWlnaHR9IGFuZCBhXG4gKiBjb25zdHJhaW50IGdyYXBoIHRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGVcbiAqIGNvbnN0cmFpbnQgZ3JhcGggYW5kIHRoZSBiYXJ5Y2VudGVycyBmb3IgdGhlIGVudHJpZXMuIElmIHRoZSBiYXJ5Y2VudGVycyBmb3JcbiAqIGFuIGVudHJ5IHdvdWxkIHZpb2xhdGUgYSBjb25zdHJhaW50IGluIHRoZSBjb25zdHJhaW50IGdyYXBoIHRoZW4gd2UgY29hbGVzY2VcbiAqIHRoZSBub2RlcyBpbiB0aGUgY29uZmxpY3QgaW50byBhIG5ldyBub2RlIHRoYXQgcmVzcGVjdHMgdGhlIGNvbnRyYWludCBhbmRcbiAqIGFnZ3JlZ2F0ZXMgYmFyeWNlbnRlciBhbmQgd2VpZ2h0IGluZm9ybWF0aW9uLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIGluIEZvcnN0ZXIsIFwiQSBGYXN0IGFuZFxuICogU2ltcGxlIEh1ZXJpc3RpYyBmb3IgQ29uc3RyYWluZWQgVHdvLUxldmVsIENyb3NzaW5nIFJlZHVjdGlvbixcIiB0aG91Z2h0IGl0XG4gKiBkaWZmZXJzIGluIHNvbWUgc3BlY2lmaWMgZGV0YWlscy5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIGVudHJ5IGhhcyB0aGUgZm9ybSB7diwgYmFyeWNlbnRlciwgd2VpZ2h0fSwgb3IgaWYgdGhlIG5vZGUgaGFzXG4gKiAgICAgICBubyBiYXJ5Y2VudGVyLCB0aGVuIHt2fS5cbiAqXG4gKiBSZXR1cm5zOlxuICpcbiAqICAgIEEgbmV3IGxpc3Qgb2YgZW50cmllcyBvZiB0aGUgZm9ybSB7dnMsIGksIGJhcnljZW50ZXIsIHdlaWdodH0uIFRoZSBsaXN0XG4gKiAgICBgdnNgIG1heSBlaXRoZXIgYmUgYSBzaW5nbGV0b24gb3IgaXQgbWF5IGJlIGFuIGFnZ3JlZ2F0aW9uIG9mIG5vZGVzXG4gKiAgICBvcmRlcmVkIHN1Y2ggdGhhdCB0aGV5IGRvIG5vdCB2aW9sYXRlIGNvbnN0cmFpbnRzIGZyb20gdGhlIGNvbnN0cmFpbnRcbiAqICAgIGdyYXBoLiBUaGUgcHJvcGVydHkgYGlgIGlzIHRoZSBsb3dlc3Qgb3JpZ2luYWwgaW5kZXggb2YgYW55IG9mIHRoZVxuICogICAgZWxlbWVudHMgaW4gYHZzYC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNvbmZsaWN0cyhlbnRyaWVzLCBjZykge1xuICB2YXIgbWFwcGVkRW50cmllcyA9IHt9O1xuICBfLmZvckVhY2goZW50cmllcywgZnVuY3Rpb24oZW50cnksIGkpIHtcbiAgICB2YXIgdG1wID0gbWFwcGVkRW50cmllc1tlbnRyeS52XSA9IHtcbiAgICAgIGluZGVncmVlOiAwLFxuICAgICAgXCJpblwiOiBbXSxcbiAgICAgIG91dDogW10sXG4gICAgICB2czogW2VudHJ5LnZdLFxuICAgICAgaTogaVxuICAgIH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVudHJ5LmJhcnljZW50ZXIpKSB7XG4gICAgICB0bXAuYmFyeWNlbnRlciA9IGVudHJ5LmJhcnljZW50ZXI7XG4gICAgICB0bXAud2VpZ2h0ID0gZW50cnkud2VpZ2h0O1xuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGNnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZW50cnlWID0gbWFwcGVkRW50cmllc1tlLnZdO1xuICAgIHZhciBlbnRyeVcgPSBtYXBwZWRFbnRyaWVzW2Uud107XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVudHJ5VikgJiYgIV8uaXNVbmRlZmluZWQoZW50cnlXKSkge1xuICAgICAgZW50cnlXLmluZGVncmVlKys7XG4gICAgICBlbnRyeVYub3V0LnB1c2gobWFwcGVkRW50cmllc1tlLnddKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBzb3VyY2VTZXQgPSBfLmZpbHRlcihtYXBwZWRFbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIHJldHVybiAhZW50cnkuaW5kZWdyZWU7XG4gIH0pO1xuXG4gIHJldHVybiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KTtcbn1cblxuZnVuY3Rpb24gZG9SZXNvbHZlQ29uZmxpY3RzKHNvdXJjZVNldCkge1xuICB2YXIgZW50cmllcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZUluKHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbih1RW50cnkpIHtcbiAgICAgIGlmICh1RW50cnkubWVyZ2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHVFbnRyeS5iYXJ5Y2VudGVyKSB8fFxuICAgICAgICAgIF8uaXNVbmRlZmluZWQodkVudHJ5LmJhcnljZW50ZXIpIHx8XG4gICAgICAgICAgdUVudHJ5LmJhcnljZW50ZXIgPj0gdkVudHJ5LmJhcnljZW50ZXIpIHtcbiAgICAgICAgbWVyZ2VFbnRyaWVzKHZFbnRyeSwgdUVudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlT3V0KHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbih3RW50cnkpIHtcbiAgICAgIHdFbnRyeVtcImluXCJdLnB1c2godkVudHJ5KTtcbiAgICAgIGlmICgtLXdFbnRyeS5pbmRlZ3JlZSA9PT0gMCkge1xuICAgICAgICBzb3VyY2VTZXQucHVzaCh3RW50cnkpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB3aGlsZSAoc291cmNlU2V0Lmxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IHNvdXJjZVNldC5wb3AoKTtcbiAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIF8uZm9yRWFjaChlbnRyeVtcImluXCJdLnJldmVyc2UoKSwgaGFuZGxlSW4oZW50cnkpKTtcbiAgICBfLmZvckVhY2goZW50cnkub3V0LCBoYW5kbGVPdXQoZW50cnkpKTtcbiAgfVxuXG4gIHJldHVybiBfLm1hcChfLmZpbHRlcihlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gIWVudHJ5Lm1lcmdlZDsgfSksXG4gICAgZnVuY3Rpb24oZW50cnkpIHtcbiAgICAgIHJldHVybiBfLnBpY2soZW50cnksIFtcInZzXCIsIFwiaVwiLCBcImJhcnljZW50ZXJcIiwgXCJ3ZWlnaHRcIl0pO1xuICAgIH0pO1xuXG59XG5cbmZ1bmN0aW9uIG1lcmdlRW50cmllcyh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIgc3VtID0gMDtcbiAgdmFyIHdlaWdodCA9IDA7XG5cbiAgaWYgKHRhcmdldC53ZWlnaHQpIHtcbiAgICBzdW0gKz0gdGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0O1xuICAgIHdlaWdodCArPSB0YXJnZXQud2VpZ2h0O1xuICB9XG5cbiAgaWYgKHNvdXJjZS53ZWlnaHQpIHtcbiAgICBzdW0gKz0gc291cmNlLmJhcnljZW50ZXIgKiBzb3VyY2Uud2VpZ2h0O1xuICAgIHdlaWdodCArPSBzb3VyY2Uud2VpZ2h0O1xuICB9XG5cbiAgdGFyZ2V0LnZzID0gc291cmNlLnZzLmNvbmNhdCh0YXJnZXQudnMpO1xuICB0YXJnZXQuYmFyeWNlbnRlciA9IHN1bSAvIHdlaWdodDtcbiAgdGFyZ2V0LndlaWdodCA9IHdlaWdodDtcbiAgdGFyZ2V0LmkgPSBNYXRoLm1pbihzb3VyY2UuaSwgdGFyZ2V0LmkpO1xuICBzb3VyY2UubWVyZ2VkID0gdHJ1ZTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBiYXJ5Y2VudGVyID0gcmVxdWlyZShcIi4vYmFyeWNlbnRlclwiKTtcbnZhciByZXNvbHZlQ29uZmxpY3RzID0gcmVxdWlyZShcIi4vcmVzb2x2ZS1jb25mbGljdHNcIik7XG52YXIgc29ydCA9IHJlcXVpcmUoXCIuL3NvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydFN1YmdyYXBoO1xuXG5mdW5jdGlvbiBzb3J0U3ViZ3JhcGgoZywgdiwgY2csIGJpYXNSaWdodCkge1xuICB2YXIgbW92YWJsZSA9IGcuY2hpbGRyZW4odik7XG4gIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICB2YXIgYmwgPSBub2RlID8gbm9kZS5ib3JkZXJMZWZ0IDogdW5kZWZpbmVkO1xuICB2YXIgYnIgPSBub2RlID8gbm9kZS5ib3JkZXJSaWdodDogdW5kZWZpbmVkO1xuICB2YXIgc3ViZ3JhcGhzID0ge307XG5cbiAgaWYgKGJsKSB7XG4gICAgbW92YWJsZSA9IF8uZmlsdGVyKG1vdmFibGUsIGZ1bmN0aW9uKHcpIHtcbiAgICAgIHJldHVybiB3ICE9PSBibCAmJiB3ICE9PSBicjtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBiYXJ5Y2VudGVycyA9IGJhcnljZW50ZXIoZywgbW92YWJsZSk7XG4gIF8uZm9yRWFjaChiYXJ5Y2VudGVycywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBpZiAoZy5jaGlsZHJlbihlbnRyeS52KS5sZW5ndGgpIHtcbiAgICAgIHZhciBzdWJncmFwaFJlc3VsdCA9IHNvcnRTdWJncmFwaChnLCBlbnRyeS52LCBjZywgYmlhc1JpZ2h0KTtcbiAgICAgIHN1YmdyYXBoc1tlbnRyeS52XSA9IHN1YmdyYXBoUmVzdWx0O1xuICAgICAgaWYgKF8uaGFzKHN1YmdyYXBoUmVzdWx0LCBcImJhcnljZW50ZXJcIikpIHtcbiAgICAgICAgbWVyZ2VCYXJ5Y2VudGVycyhlbnRyeSwgc3ViZ3JhcGhSZXN1bHQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGVudHJpZXMgPSByZXNvbHZlQ29uZmxpY3RzKGJhcnljZW50ZXJzLCBjZyk7XG4gIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpO1xuXG4gIHZhciByZXN1bHQgPSBzb3J0KGVudHJpZXMsIGJpYXNSaWdodCk7XG5cbiAgaWYgKGJsKSB7XG4gICAgcmVzdWx0LnZzID0gXy5mbGF0dGVuKFtibCwgcmVzdWx0LnZzLCBicl0sIHRydWUpO1xuICAgIGlmIChnLnByZWRlY2Vzc29ycyhibCkubGVuZ3RoKSB7XG4gICAgICB2YXIgYmxQcmVkID0gZy5ub2RlKGcucHJlZGVjZXNzb3JzKGJsKVswXSksXG4gICAgICAgIGJyUHJlZCA9IGcubm9kZShnLnByZWRlY2Vzc29ycyhicilbMF0pO1xuICAgICAgaWYgKCFfLmhhcyhyZXN1bHQsIFwiYmFyeWNlbnRlclwiKSkge1xuICAgICAgICByZXN1bHQuYmFyeWNlbnRlciA9IDA7XG4gICAgICAgIHJlc3VsdC53ZWlnaHQgPSAwO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSAocmVzdWx0LmJhcnljZW50ZXIgKiByZXN1bHQud2VpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsUHJlZC5vcmRlciArIGJyUHJlZC5vcmRlcikgLyAocmVzdWx0LndlaWdodCArIDIpO1xuICAgICAgcmVzdWx0LndlaWdodCArPSAyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpIHtcbiAgXy5mb3JFYWNoKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZW50cnkudnMgPSBfLmZsYXR0ZW4oZW50cnkudnMubWFwKGZ1bmN0aW9uKHYpIHtcbiAgICAgIGlmIChzdWJncmFwaHNbdl0pIHtcbiAgICAgICAgcmV0dXJuIHN1YmdyYXBoc1t2XS52cztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pLCB0cnVlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1lcmdlQmFyeWNlbnRlcnModGFyZ2V0LCBvdGhlcikge1xuICBpZiAoIV8uaXNVbmRlZmluZWQodGFyZ2V0LmJhcnljZW50ZXIpKSB7XG4gICAgdGFyZ2V0LmJhcnljZW50ZXIgPSAodGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5iYXJ5Y2VudGVyICogb3RoZXIud2VpZ2h0KSAvXG4gICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LndlaWdodCArIG90aGVyLndlaWdodCk7XG4gICAgdGFyZ2V0LndlaWdodCArPSBvdGhlci53ZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0LmJhcnljZW50ZXIgPSBvdGhlci5iYXJ5Y2VudGVyO1xuICAgIHRhcmdldC53ZWlnaHQgPSBvdGhlci53ZWlnaHQ7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydDtcblxuZnVuY3Rpb24gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIHBhcnRzID0gdXRpbC5wYXJ0aXRpb24oZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICByZXR1cm4gXy5oYXMoZW50cnksIFwiYmFyeWNlbnRlclwiKTtcbiAgfSk7XG4gIHZhciBzb3J0YWJsZSA9IHBhcnRzLmxocyxcbiAgICB1bnNvcnRhYmxlID0gXy5zb3J0QnkocGFydHMucmhzLCBmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gLWVudHJ5Lmk7IH0pLFxuICAgIHZzID0gW10sXG4gICAgc3VtID0gMCxcbiAgICB3ZWlnaHQgPSAwLFxuICAgIHZzSW5kZXggPSAwO1xuXG4gIHNvcnRhYmxlLnNvcnQoY29tcGFyZVdpdGhCaWFzKCEhYmlhc1JpZ2h0KSk7XG5cbiAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcblxuICBfLmZvckVhY2goc29ydGFibGUsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHZzSW5kZXggKz0gZW50cnkudnMubGVuZ3RoO1xuICAgIHZzLnB1c2goZW50cnkudnMpO1xuICAgIHN1bSArPSBlbnRyeS5iYXJ5Y2VudGVyICogZW50cnkud2VpZ2h0O1xuICAgIHdlaWdodCArPSBlbnRyeS53ZWlnaHQ7XG4gICAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcbiAgfSk7XG5cbiAgdmFyIHJlc3VsdCA9IHsgdnM6IF8uZmxhdHRlbih2cywgdHJ1ZSkgfTtcbiAgaWYgKHdlaWdodCkge1xuICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICAgIHJlc3VsdC53ZWlnaHQgPSB3ZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29uc3VtZVVuc29ydGFibGUodnMsIHVuc29ydGFibGUsIGluZGV4KSB7XG4gIHZhciBsYXN0O1xuICB3aGlsZSAodW5zb3J0YWJsZS5sZW5ndGggJiYgKGxhc3QgPSBfLmxhc3QodW5zb3J0YWJsZSkpLmkgPD0gaW5kZXgpIHtcbiAgICB1bnNvcnRhYmxlLnBvcCgpO1xuICAgIHZzLnB1c2gobGFzdC52cyk7XG4gICAgaW5kZXgrKztcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVXaXRoQmlhcyhiaWFzKSB7XG4gIHJldHVybiBmdW5jdGlvbihlbnRyeVYsIGVudHJ5Vykge1xuICAgIGlmIChlbnRyeVYuYmFyeWNlbnRlciA8IGVudHJ5Vy5iYXJ5Y2VudGVyKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlIGlmIChlbnRyeVYuYmFyeWNlbnRlciA+IGVudHJ5Vy5iYXJ5Y2VudGVyKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWJpYXMgPyBlbnRyeVYuaSAtIGVudHJ5Vy5pIDogZW50cnlXLmkgLSBlbnRyeVYuaTtcbiAgfTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudER1bW15Q2hhaW5zO1xuXG5mdW5jdGlvbiBwYXJlbnREdW1teUNoYWlucyhnKSB7XG4gIHZhciBwb3N0b3JkZXJOdW1zID0gcG9zdG9yZGVyKGcpO1xuXG4gIF8uZm9yRWFjaChnLmdyYXBoKCkuZHVtbXlDaGFpbnMsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgZWRnZU9iaiA9IG5vZGUuZWRnZU9iajtcbiAgICB2YXIgcGF0aERhdGEgPSBmaW5kUGF0aChnLCBwb3N0b3JkZXJOdW1zLCBlZGdlT2JqLnYsIGVkZ2VPYmoudyk7XG4gICAgdmFyIHBhdGggPSBwYXRoRGF0YS5wYXRoO1xuICAgIHZhciBsY2EgPSBwYXRoRGF0YS5sY2E7XG4gICAgdmFyIHBhdGhJZHggPSAwO1xuICAgIHZhciBwYXRoViA9IHBhdGhbcGF0aElkeF07XG4gICAgdmFyIGFzY2VuZGluZyA9IHRydWU7XG5cbiAgICB3aGlsZSAodiAhPT0gZWRnZU9iai53KSB7XG4gICAgICBub2RlID0gZy5ub2RlKHYpO1xuXG4gICAgICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlICgocGF0aFYgPSBwYXRoW3BhdGhJZHhdKSAhPT0gbGNhICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYpLm1heFJhbmsgPCBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aFYgPT09IGxjYSkge1xuICAgICAgICAgIGFzY2VuZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlIChwYXRoSWR4IDwgcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYgPSBwYXRoW3BhdGhJZHggKyAxXSkubWluUmFuayA8PSBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cbiAgICAgICAgcGF0aFYgPSBwYXRoW3BhdGhJZHhdO1xuICAgICAgfVxuXG4gICAgICBnLnNldFBhcmVudCh2LCBwYXRoVik7XG4gICAgICB2ID0gZy5zdWNjZXNzb3JzKHYpWzBdO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEZpbmQgYSBwYXRoIGZyb20gdiB0byB3IHRocm91Z2ggdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3IgKExDQSkuIFJldHVybiB0aGVcbi8vIGZ1bGwgcGF0aCBhbmQgdGhlIExDQS5cbmZ1bmN0aW9uIGZpbmRQYXRoKGcsIHBvc3RvcmRlck51bXMsIHYsIHcpIHtcbiAgdmFyIHZQYXRoID0gW107XG4gIHZhciB3UGF0aCA9IFtdO1xuICB2YXIgbG93ID0gTWF0aC5taW4ocG9zdG9yZGVyTnVtc1t2XS5sb3csIHBvc3RvcmRlck51bXNbd10ubG93KTtcbiAgdmFyIGxpbSA9IE1hdGgubWF4KHBvc3RvcmRlck51bXNbdl0ubGltLCBwb3N0b3JkZXJOdW1zW3ddLmxpbSk7XG4gIHZhciBwYXJlbnQ7XG4gIHZhciBsY2E7XG5cbiAgLy8gVHJhdmVyc2UgdXAgZnJvbSB2IHRvIGZpbmQgdGhlIExDQVxuICBwYXJlbnQgPSB2O1xuICBkbyB7XG4gICAgcGFyZW50ID0gZy5wYXJlbnQocGFyZW50KTtcbiAgICB2UGF0aC5wdXNoKHBhcmVudCk7XG4gIH0gd2hpbGUgKHBhcmVudCAmJlxuICAgICAgICAgICAocG9zdG9yZGVyTnVtc1twYXJlbnRdLmxvdyA+IGxvdyB8fCBsaW0gPiBwb3N0b3JkZXJOdW1zW3BhcmVudF0ubGltKSk7XG4gIGxjYSA9IHBhcmVudDtcblxuICAvLyBUcmF2ZXJzZSBmcm9tIHcgdG8gTENBXG4gIHBhcmVudCA9IHc7XG4gIHdoaWxlICgocGFyZW50ID0gZy5wYXJlbnQocGFyZW50KSkgIT09IGxjYSkge1xuICAgIHdQYXRoLnB1c2gocGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiB7IHBhdGg6IHZQYXRoLmNvbmNhdCh3UGF0aC5yZXZlcnNlKCkpLCBsY2E6IGxjYSB9O1xufVxuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBsaW0gPSAwO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGxvdyA9IGxpbTtcbiAgICBfLmZvckVhY2goZy5jaGlsZHJlbih2KSwgZGZzKTtcbiAgICByZXN1bHRbdl0gPSB7IGxvdzogbG93LCBsaW06IGxpbSsrIH07XG4gIH1cbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZGZzKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbi8qXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjb29yZGluYXRlIGFzc2lnbm1lbnQgYmFzZWQgb24gQnJhbmRlcyBhbmQgS8O2cGYsIFwiRmFzdFxuICogYW5kIFNpbXBsZSBIb3Jpem9udGFsIENvb3JkaW5hdGUgQXNzaWdubWVudC5cIlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvblg6IHBvc2l0aW9uWCxcbiAgZmluZFR5cGUxQ29uZmxpY3RzOiBmaW5kVHlwZTFDb25mbGljdHMsXG4gIGZpbmRUeXBlMkNvbmZsaWN0czogZmluZFR5cGUyQ29uZmxpY3RzLFxuICBhZGRDb25mbGljdDogYWRkQ29uZmxpY3QsXG4gIGhhc0NvbmZsaWN0OiBoYXNDb25mbGljdCxcbiAgdmVydGljYWxBbGlnbm1lbnQ6IHZlcnRpY2FsQWxpZ25tZW50LFxuICBob3Jpem9udGFsQ29tcGFjdGlvbjogaG9yaXpvbnRhbENvbXBhY3Rpb24sXG4gIGFsaWduQ29vcmRpbmF0ZXM6IGFsaWduQ29vcmRpbmF0ZXMsXG4gIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50OiBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCxcbiAgYmFsYW5jZTogYmFsYW5jZVxufTtcblxuLypcbiAqIE1hcmtzIGFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggd2l0aCBhIHR5cGUtMSBjb25mbGljdCB3aXRoIHRoZSBcInR5cGUxQ29uZmxpY3RcIlxuICogcHJvcGVydHkuIEEgdHlwZS0xIGNvbmZsaWN0IGlzIG9uZSB3aGVyZSBhIG5vbi1pbm5lciBzZWdtZW50IGNyb3NzZXMgYW5cbiAqIGlubmVyIHNlZ21lbnQuIEFuIGlubmVyIHNlZ21lbnQgaXMgYW4gZWRnZSB3aXRoIGJvdGggaW5jaWRlbnQgbm9kZXMgbWFya2VkXG4gKiB3aXRoIHRoZSBcImR1bW15XCIgcHJvcGVydHkuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gc2NhbnMgbGF5ZXIgYnkgbGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGhlIHNlY29uZCwgZm9yIHR5cGUtMVxuICogY29uZmxpY3RzIGJldHdlZW4gdGhlIGN1cnJlbnQgbGF5ZXIgYW5kIHRoZSBwcmV2aW91cyBsYXllci4gRm9yIGVhY2ggbGF5ZXJcbiAqIGl0IHNjYW5zIHRoZSBub2RlcyBmcm9tIGxlZnQgdG8gcmlnaHQgdW50aWwgaXQgcmVhY2hlcyBvbmUgdGhhdCBpcyBpbmNpZGVudFxuICogb24gYW4gaW5uZXIgc2VnbWVudC4gSXQgdGhlbiBzY2FucyBwcmVkZWNlc3NvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgaGF2ZVxuICogZWRnZXMgdGhhdCBjcm9zcyB0aGF0IGlubmVyIHNlZ21lbnQuIEF0IHRoZSBlbmQgYSBmaW5hbCBzY2FuIGlzIGRvbmUgZm9yIGFsbFxuICogbm9kZXMgb24gdGhlIGN1cnJlbnQgcmFuayB0byBzZWUgaWYgdGhleSBjcm9zcyB0aGUgbGFzdCB2aXNpdGVkIGlubmVyXG4gKiBzZWdtZW50LlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIChzYWZlbHkpIGFzc3VtZXMgdGhhdCBhIGR1bW15IG5vZGUgd2lsbCBvbmx5IGJlIGluY2lkZW50IG9uIGFcbiAqIHNpbmdsZSBub2RlIGluIHRoZSBsYXllcnMgYmVpbmcgc2Nhbm5lZC5cbiAqL1xuZnVuY3Rpb24gZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSB7XG4gIHZhciBjb25mbGljdHMgPSB7fTtcblxuICBmdW5jdGlvbiB2aXNpdExheWVyKHByZXZMYXllciwgbGF5ZXIpIHtcbiAgICB2YXJcbiAgICAgIC8vIGxhc3QgdmlzaXRlZCBub2RlIGluIHRoZSBwcmV2aW91cyBsYXllciB0aGF0IGlzIGluY2lkZW50IG9uIGFuIGlubmVyXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgazAgPSAwLFxuICAgICAgLy8gVHJhY2tzIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBsYXllciBzY2FubmVkIGZvciBjcm9zc2luZ3Mgd2l0aCBhIHR5cGUtMVxuICAgICAgLy8gc2VnbWVudC5cbiAgICAgIHNjYW5Qb3MgPSAwLFxuICAgICAgcHJldkxheWVyTGVuZ3RoID0gcHJldkxheWVyLmxlbmd0aCxcbiAgICAgIGxhc3ROb2RlID0gXy5sYXN0KGxheWVyKTtcblxuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIHcgPSBmaW5kT3RoZXJJbm5lclNlZ21lbnROb2RlKGcsIHYpLFxuICAgICAgICBrMSA9IHcgPyBnLm5vZGUodykub3JkZXIgOiBwcmV2TGF5ZXJMZW5ndGg7XG5cbiAgICAgIGlmICh3IHx8IHYgPT09IGxhc3ROb2RlKSB7XG4gICAgICAgIF8uZm9yRWFjaChsYXllci5zbGljZShzY2FuUG9zLCBpICsxKSwgZnVuY3Rpb24oc2Nhbk5vZGUpIHtcbiAgICAgICAgICBfLmZvckVhY2goZy5wcmVkZWNlc3NvcnMoc2Nhbk5vZGUpLCBmdW5jdGlvbih1KSB7XG4gICAgICAgICAgICB2YXIgdUxhYmVsID0gZy5ub2RlKHUpLFxuICAgICAgICAgICAgICB1UG9zID0gdUxhYmVsLm9yZGVyO1xuICAgICAgICAgICAgaWYgKCh1UG9zIDwgazAgfHwgazEgPCB1UG9zKSAmJlxuICAgICAgICAgICAgICAgICEodUxhYmVsLmR1bW15ICYmIGcubm9kZShzY2FuTm9kZSkuZHVtbXkpKSB7XG4gICAgICAgICAgICAgIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdSwgc2Nhbk5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2NhblBvcyA9IGkgKyAxO1xuICAgICAgICBrMCA9IGsxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgXy5yZWR1Y2UobGF5ZXJpbmcsIHZpc2l0TGF5ZXIpO1xuICByZXR1cm4gY29uZmxpY3RzO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZTJDb25mbGljdHMoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aEVuZCwgcHJldk5vcnRoQm9yZGVyLCBuZXh0Tm9ydGhCb3JkZXIpIHtcbiAgICB2YXIgdjtcbiAgICBfLmZvckVhY2goXy5yYW5nZShzb3V0aFBvcywgc291dGhFbmQpLCBmdW5jdGlvbihpKSB7XG4gICAgICB2ID0gc291dGhbaV07XG4gICAgICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgICAgIF8uZm9yRWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgICAgIHZhciB1Tm9kZSA9IGcubm9kZSh1KTtcbiAgICAgICAgICBpZiAodU5vZGUuZHVtbXkgJiZcbiAgICAgICAgICAgICAgKHVOb2RlLm9yZGVyIDwgcHJldk5vcnRoQm9yZGVyIHx8IHVOb2RlLm9yZGVyID4gbmV4dE5vcnRoQm9yZGVyKSkge1xuICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBmdW5jdGlvbiB2aXNpdExheWVyKG5vcnRoLCBzb3V0aCkge1xuICAgIHZhciBwcmV2Tm9ydGhQb3MgPSAtMSxcbiAgICAgIG5leHROb3J0aFBvcyxcbiAgICAgIHNvdXRoUG9zID0gMDtcblxuICAgIF8uZm9yRWFjaChzb3V0aCwgZnVuY3Rpb24odiwgc291dGhMb29rYWhlYWQpIHtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgICAgdmFyIHByZWRlY2Vzc29ycyA9IGcucHJlZGVjZXNzb3JzKHYpO1xuICAgICAgICBpZiAocHJlZGVjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgIG5leHROb3J0aFBvcyA9IGcubm9kZShwcmVkZWNlc3NvcnNbMF0pLm9yZGVyO1xuICAgICAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aExvb2thaGVhZCwgcHJldk5vcnRoUG9zLCBuZXh0Tm9ydGhQb3MpO1xuICAgICAgICAgIHNvdXRoUG9zID0gc291dGhMb29rYWhlYWQ7XG4gICAgICAgICAgcHJldk5vcnRoUG9zID0gbmV4dE5vcnRoUG9zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzY2FuKHNvdXRoLCBzb3V0aFBvcywgc291dGgubGVuZ3RoLCBuZXh0Tm9ydGhQb3MsIG5vcnRoLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc291dGg7XG4gIH1cblxuICBfLnJlZHVjZShsYXllcmluZywgdmlzaXRMYXllcik7XG4gIHJldHVybiBjb25mbGljdHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZywgdikge1xuICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgcmV0dXJuIF8uZmluZChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgcmV0dXJuIGcubm9kZSh1KS5kdW1teTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDb25mbGljdChjb25mbGljdHMsIHYsIHcpIHtcbiAgaWYgKHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuXG4gIHZhciBjb25mbGljdHNWID0gY29uZmxpY3RzW3ZdO1xuICBpZiAoIWNvbmZsaWN0c1YpIHtcbiAgICBjb25mbGljdHNbdl0gPSBjb25mbGljdHNWID0ge307XG4gIH1cbiAgY29uZmxpY3RzVlt3XSA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhhc0NvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiBfLmhhcyhjb25mbGljdHNbdl0sIHcpO1xufVxuXG4vKlxuICogVHJ5IHRvIGFsaWduIG5vZGVzIGludG8gdmVydGljYWwgXCJibG9ja3NcIiB3aGVyZSBwb3NzaWJsZS4gVGhpcyBhbGdvcml0aG1cbiAqIGF0dGVtcHRzIHRvIGFsaWduIGEgbm9kZSB3aXRoIG9uZSBvZiBpdHMgbWVkaWFuIG5laWdoYm9ycy4gSWYgdGhlIGVkZ2VcbiAqIGNvbm5lY3RpbmcgYSBuZWlnaGJvciBpcyBhIHR5cGUtMSBjb25mbGljdCB0aGVuIHdlIGlnbm9yZSB0aGF0IHBvc3NpYmlsaXR5LlxuICogSWYgYSBwcmV2aW91cyBub2RlIGhhcyBhbHJlYWR5IGZvcm1lZCBhIGJsb2NrIHdpdGggYSBub2RlIGFmdGVyIHRoZSBub2RlXG4gKiB3ZSdyZSB0cnlpbmcgdG8gZm9ybSBhIGJsb2NrIHdpdGgsIHdlIGFsc28gaWdub3JlIHRoYXQgcG9zc2liaWxpdHkgLSBvdXJcbiAqIGJsb2NrcyB3b3VsZCBiZSBzcGxpdCBpbiB0aGF0IHNjZW5hcmlvLlxuICovXG5mdW5jdGlvbiB2ZXJ0aWNhbEFsaWdubWVudChnLCBsYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKSB7XG4gIHZhciByb290ID0ge30sXG4gICAgYWxpZ24gPSB7fSxcbiAgICBwb3MgPSB7fTtcblxuICAvLyBXZSBjYWNoZSB0aGUgcG9zaXRpb24gaGVyZSBiYXNlZCBvbiB0aGUgbGF5ZXJpbmcgYmVjYXVzZSB0aGUgZ3JhcGggYW5kXG4gIC8vIGxheWVyaW5nIG1heSBiZSBvdXQgb2Ygc3luYy4gVGhlIGxheWVyaW5nIG1hdHJpeCBpcyBtYW5pcHVsYXRlZCB0b1xuICAvLyBnZW5lcmF0ZSBkaWZmZXJlbnQgZXh0cmVtZSBhbGlnbm1lbnRzLlxuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBvcmRlcikge1xuICAgICAgcm9vdFt2XSA9IHY7XG4gICAgICBhbGlnblt2XSA9IHY7XG4gICAgICBwb3Nbdl0gPSBvcmRlcjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBwcmV2SWR4ID0gLTE7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgICB2YXIgd3MgPSBuZWlnaGJvckZuKHYpO1xuICAgICAgaWYgKHdzLmxlbmd0aCkge1xuICAgICAgICB3cyA9IF8uc29ydEJ5KHdzLCBmdW5jdGlvbih3KSB7IHJldHVybiBwb3Nbd107IH0pO1xuICAgICAgICB2YXIgbXAgPSAod3MubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihtcCksIGlsID0gTWF0aC5jZWlsKG1wKTsgaSA8PSBpbDsgKytpKSB7XG4gICAgICAgICAgdmFyIHcgPSB3c1tpXTtcbiAgICAgICAgICBpZiAoYWxpZ25bdl0gPT09IHYgJiZcbiAgICAgICAgICAgICAgcHJldklkeCA8IHBvc1t3XSAmJlxuICAgICAgICAgICAgICAhaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSkge1xuICAgICAgICAgICAgYWxpZ25bd10gPSB2O1xuICAgICAgICAgICAgYWxpZ25bdl0gPSByb290W3ZdID0gcm9vdFt3XTtcbiAgICAgICAgICAgIHByZXZJZHggPSBwb3Nbd107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHJvb3Q6IHJvb3QsIGFsaWduOiBhbGlnbiB9O1xufVxuXG5mdW5jdGlvbiBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBsYXllcmluZywgcm9vdCwgYWxpZ24sIHJldmVyc2VTZXApIHtcbiAgLy8gVGhpcyBwb3J0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGlmZmVycyBmcm9tIEJLIGR1ZSB0byBhIG51bWJlciBvZiBwcm9ibGVtcy5cbiAgLy8gSW5zdGVhZCBvZiB0aGVpciBhbGdvcml0aG0gd2UgY29uc3RydWN0IGEgbmV3IGJsb2NrIGdyYXBoIGFuZCBkbyB0d29cbiAgLy8gc3dlZXBzLiBUaGUgZmlyc3Qgc3dlZXAgcGxhY2VzIGJsb2NrcyB3aXRoIHRoZSBzbWFsbGVzdCBwb3NzaWJsZVxuICAvLyBjb29yZGluYXRlcy4gVGhlIHNlY29uZCBzd2VlcCByZW1vdmVzIHVudXNlZCBzcGFjZSBieSBtb3ZpbmcgYmxvY2tzIHRvIHRoZVxuICAvLyBncmVhdGVzdCBjb29yZGluYXRlcyB3aXRob3V0IHZpb2xhdGluZyBzZXBhcmF0aW9uLlxuICB2YXIgeHMgPSB7fSxcbiAgICBibG9ja0cgPSBidWlsZEJsb2NrR3JhcGgoZywgbGF5ZXJpbmcsIHJvb3QsIHJldmVyc2VTZXApLFxuICAgIGJvcmRlclR5cGUgPSByZXZlcnNlU2VwID8gXCJib3JkZXJMZWZ0XCIgOiBcImJvcmRlclJpZ2h0XCI7XG5cbiAgZnVuY3Rpb24gaXRlcmF0ZShzZXRYc0Z1bmMsIG5leHROb2Rlc0Z1bmMpIHtcbiAgICB2YXIgc3RhY2sgPSBibG9ja0cubm9kZXMoKTtcbiAgICB2YXIgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2aXNpdGVkID0ge307XG4gICAgd2hpbGUgKGVsZW0pIHtcbiAgICAgIGlmICh2aXNpdGVkW2VsZW1dKSB7XG4gICAgICAgIHNldFhzRnVuYyhlbGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpc2l0ZWRbZWxlbV0gPSB0cnVlO1xuICAgICAgICBzdGFjay5wdXNoKGVsZW0pO1xuICAgICAgICBzdGFjayA9IHN0YWNrLmNvbmNhdChuZXh0Tm9kZXNGdW5jKGVsZW0pKTtcbiAgICAgIH1cblxuICAgICAgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IHBhc3MsIGFzc2lnbiBzbWFsbGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMShlbGVtKSB7XG4gICAgeHNbZWxlbV0gPSBibG9ja0cuaW5FZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoYWNjLCB4c1tlLnZdICsgYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLy8gU2Vjb25kIHBhc3MsIGFzc2lnbiBncmVhdGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMihlbGVtKSB7XG4gICAgdmFyIG1pbiA9IGJsb2NrRy5vdXRFZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5taW4oYWNjLCB4c1tlLnddIC0gYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG5cbiAgICB2YXIgbm9kZSA9IGcubm9kZShlbGVtKTtcbiAgICBpZiAobWluICE9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgJiYgbm9kZS5ib3JkZXJUeXBlICE9PSBib3JkZXJUeXBlKSB7XG4gICAgICB4c1tlbGVtXSA9IE1hdGgubWF4KHhzW2VsZW1dLCBtaW4pO1xuICAgIH1cbiAgfVxuXG4gIGl0ZXJhdGUocGFzczEsIGJsb2NrRy5wcmVkZWNlc3NvcnMuYmluZChibG9ja0cpKTtcbiAgaXRlcmF0ZShwYXNzMiwgYmxvY2tHLnN1Y2Nlc3NvcnMuYmluZChibG9ja0cpKTtcblxuICAvLyBBc3NpZ24geCBjb29yZGluYXRlcyB0byBhbGwgbm9kZXNcbiAgXy5mb3JFYWNoKGFsaWduLCBmdW5jdGlvbih2KSB7XG4gICAgeHNbdl0gPSB4c1tyb290W3ZdXTtcbiAgfSk7XG5cbiAgcmV0dXJuIHhzO1xufVxuXG5cbmZ1bmN0aW9uIGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCkge1xuICB2YXIgYmxvY2tHcmFwaCA9IG5ldyBHcmFwaCgpLFxuICAgIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCksXG4gICAgc2VwRm4gPSBzZXAoZ3JhcGhMYWJlbC5ub2Rlc2VwLCBncmFwaExhYmVsLmVkZ2VzZXAsIHJldmVyc2VTZXApO1xuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgdTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIHZhciB2Um9vdCA9IHJvb3Rbdl07XG4gICAgICBibG9ja0dyYXBoLnNldE5vZGUodlJvb3QpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIHVSb290ID0gcm9vdFt1XSxcbiAgICAgICAgICBwcmV2TWF4ID0gYmxvY2tHcmFwaC5lZGdlKHVSb290LCB2Um9vdCk7XG4gICAgICAgIGJsb2NrR3JhcGguc2V0RWRnZSh1Um9vdCwgdlJvb3QsIE1hdGgubWF4KHNlcEZuKGcsIHYsIHUpLCBwcmV2TWF4IHx8IDApKTtcbiAgICAgIH1cbiAgICAgIHUgPSB2O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gYmxvY2tHcmFwaDtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFsaWdubWVudCB0aGF0IGhhcyB0aGUgc21hbGxlc3Qgd2lkdGggb2YgdGhlIGdpdmVuIGFsaWdubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcykge1xuICByZXR1cm4gXy5taW5CeShfLnZhbHVlcyh4c3MpLCBmdW5jdGlvbiAoeHMpIHtcbiAgICB2YXIgbWF4ID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgIHZhciBtaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cbiAgICBfLmZvckluKHhzLCBmdW5jdGlvbiAoeCwgdikge1xuICAgICAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoKGcsIHYpIC8gMjtcblxuICAgICAgbWF4ID0gTWF0aC5tYXgoeCArIGhhbGZXaWR0aCwgbWF4KTtcbiAgICAgIG1pbiA9IE1hdGgubWluKHggLSBoYWxmV2lkdGgsIG1pbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF4IC0gbWluO1xuICB9KTtcbn1cblxuLypcbiAqIEFsaWduIHRoZSBjb29yZGluYXRlcyBvZiBlYWNoIG9mIHRoZSBsYXlvdXQgYWxpZ25tZW50cyBzdWNoIHRoYXRcbiAqIGxlZnQtYmlhc2VkIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtaW5pbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXNcbiAqIHRoZSBtaW5pbXVtIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudCBhbmQgcmlnaHQtYmlhc2VkXG4gKiBhbGlnbm1lbnRzIGhhdmUgdGhlaXIgbWF4aW11bSBjb29yZGluYXRlIGF0IHRoZSBzYW1lIHBvaW50IGFzIHRoZSBtYXhpbXVtXG4gKiBjb29yZGluYXRlIG9mIHRoZSBzbWFsbGVzdCB3aWR0aCBhbGlnbm1lbnQuXG4gKi9cbmZ1bmN0aW9uIGFsaWduQ29vcmRpbmF0ZXMoeHNzLCBhbGlnblRvKSB7XG4gIHZhciBhbGlnblRvVmFscyA9IF8udmFsdWVzKGFsaWduVG8pLFxuICAgIGFsaWduVG9NaW4gPSBfLm1pbihhbGlnblRvVmFscyksXG4gICAgYWxpZ25Ub01heCA9IF8ubWF4KGFsaWduVG9WYWxzKTtcblxuICBfLmZvckVhY2goW1widVwiLCBcImRcIl0sIGZ1bmN0aW9uKHZlcnQpIHtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICB2YXIgYWxpZ25tZW50ID0gdmVydCArIGhvcml6LFxuICAgICAgICB4cyA9IHhzc1thbGlnbm1lbnRdLFxuICAgICAgICBkZWx0YTtcbiAgICAgIGlmICh4cyA9PT0gYWxpZ25UbykgcmV0dXJuO1xuXG4gICAgICB2YXIgeHNWYWxzID0gXy52YWx1ZXMoeHMpO1xuICAgICAgZGVsdGEgPSBob3JpeiA9PT0gXCJsXCIgPyBhbGlnblRvTWluIC0gXy5taW4oeHNWYWxzKSA6IGFsaWduVG9NYXggLSBfLm1heCh4c1ZhbHMpO1xuXG4gICAgICBpZiAoZGVsdGEpIHtcbiAgICAgICAgeHNzW2FsaWdubWVudF0gPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4geCArIGRlbHRhOyB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGJhbGFuY2UoeHNzLCBhbGlnbikge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoeHNzLnVsLCBmdW5jdGlvbihpZ25vcmUsIHYpIHtcbiAgICBpZiAoYWxpZ24pIHtcbiAgICAgIHJldHVybiB4c3NbYWxpZ24udG9Mb3dlckNhc2UoKV1bdl07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB4cyA9IF8uc29ydEJ5KF8ubWFwKHhzcywgdikpO1xuICAgICAgcmV0dXJuICh4c1sxXSArIHhzWzJdKSAvIDI7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25YKGcpIHtcbiAgdmFyIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICB2YXIgY29uZmxpY3RzID0gXy5tZXJnZShcbiAgICBmaW5kVHlwZTFDb25mbGljdHMoZywgbGF5ZXJpbmcpLFxuICAgIGZpbmRUeXBlMkNvbmZsaWN0cyhnLCBsYXllcmluZykpO1xuXG4gIHZhciB4c3MgPSB7fTtcbiAgdmFyIGFkanVzdGVkTGF5ZXJpbmc7XG4gIF8uZm9yRWFjaChbXCJ1XCIsIFwiZFwiXSwgZnVuY3Rpb24odmVydCkge1xuICAgIGFkanVzdGVkTGF5ZXJpbmcgPSB2ZXJ0ID09PSBcInVcIiA/IGxheWVyaW5nIDogXy52YWx1ZXMobGF5ZXJpbmcpLnJldmVyc2UoKTtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICBpZiAoaG9yaXogPT09IFwiclwiKSB7XG4gICAgICAgIGFkanVzdGVkTGF5ZXJpbmcgPSBfLm1hcChhZGp1c3RlZExheWVyaW5nLCBmdW5jdGlvbihpbm5lcikge1xuICAgICAgICAgIHJldHVybiBfLnZhbHVlcyhpbm5lcikucmV2ZXJzZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yRm4gPSAodmVydCA9PT0gXCJ1XCIgPyBnLnByZWRlY2Vzc29ycyA6IGcuc3VjY2Vzc29ycykuYmluZChnKTtcbiAgICAgIHZhciBhbGlnbiA9IHZlcnRpY2FsQWxpZ25tZW50KGcsIGFkanVzdGVkTGF5ZXJpbmcsIGNvbmZsaWN0cywgbmVpZ2hib3JGbik7XG4gICAgICB2YXIgeHMgPSBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBhZGp1c3RlZExheWVyaW5nLFxuICAgICAgICBhbGlnbi5yb290LCBhbGlnbi5hbGlnbiwgaG9yaXogPT09IFwiclwiKTtcbiAgICAgIGlmIChob3JpeiA9PT0gXCJyXCIpIHtcbiAgICAgICAgeHMgPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4gLXg7IH0pO1xuICAgICAgfVxuICAgICAgeHNzW3ZlcnQgKyBob3Jpel0gPSB4cztcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFyIHNtYWxsZXN0V2lkdGggPSBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudChnLCB4c3MpO1xuICBhbGlnbkNvb3JkaW5hdGVzKHhzcywgc21hbGxlc3RXaWR0aCk7XG4gIHJldHVybiBiYWxhbmNlKHhzcywgZy5ncmFwaCgpLmFsaWduKTtcbn1cblxuZnVuY3Rpb24gc2VwKG5vZGVTZXAsIGVkZ2VTZXAsIHJldmVyc2VTZXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGcsIHYsIHcpIHtcbiAgICB2YXIgdkxhYmVsID0gZy5ub2RlKHYpO1xuICAgIHZhciB3TGFiZWwgPSBnLm5vZGUodyk7XG4gICAgdmFyIHN1bSA9IDA7XG4gICAgdmFyIGRlbHRhO1xuXG4gICAgc3VtICs9IHZMYWJlbC53aWR0aCAvIDI7XG4gICAgaWYgKF8uaGFzKHZMYWJlbCwgXCJsYWJlbHBvc1wiKSkge1xuICAgICAgc3dpdGNoICh2TGFiZWwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBcImxcIjogZGVsdGEgPSAtdkxhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICBjYXNlIFwiclwiOiBkZWx0YSA9IHZMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVsdGEpIHtcbiAgICAgIHN1bSArPSByZXZlcnNlU2VwID8gZGVsdGEgOiAtZGVsdGE7XG4gICAgfVxuICAgIGRlbHRhID0gMDtcblxuICAgIHN1bSArPSAodkxhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcbiAgICBzdW0gKz0gKHdMYWJlbC5kdW1teSA/IGVkZ2VTZXAgOiBub2RlU2VwKSAvIDI7XG5cbiAgICBzdW0gKz0gd0xhYmVsLndpZHRoIC8gMjtcbiAgICBpZiAoXy5oYXMod0xhYmVsLCBcImxhYmVscG9zXCIpKSB7XG4gICAgICBzd2l0Y2ggKHdMYWJlbC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFwibFwiOiBkZWx0YSA9IHdMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZGVsdGEgPSAtd0xhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWx0YSkge1xuICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICB9XG4gICAgZGVsdGEgPSAwO1xuXG4gICAgcmV0dXJuIHN1bTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lkdGgoZywgdikge1xuICByZXR1cm4gZy5ub2RlKHYpLndpZHRoO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG52YXIgcG9zaXRpb25YID0gcmVxdWlyZShcIi4vYmtcIikucG9zaXRpb25YO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvc2l0aW9uO1xuXG5mdW5jdGlvbiBwb3NpdGlvbihnKSB7XG4gIGcgPSB1dGlsLmFzTm9uQ29tcG91bmRHcmFwaChnKTtcblxuICBwb3NpdGlvblkoZyk7XG4gIF8uZm9yRWFjaChwb3NpdGlvblgoZyksIGZ1bmN0aW9uKHgsIHYpIHtcbiAgICBnLm5vZGUodikueCA9IHg7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblkoZykge1xuICB2YXIgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIHZhciByYW5rU2VwID0gZy5ncmFwaCgpLnJhbmtzZXA7XG4gIHZhciBwcmV2WSA9IDA7XG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgbWF4SGVpZ2h0ID0gXy5tYXgoXy5tYXAobGF5ZXIsIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5oZWlnaHQ7IH0pKTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIGcubm9kZSh2KS55ID0gcHJldlkgKyBtYXhIZWlnaHQgLyAyO1xuICAgIH0pO1xuICAgIHByZXZZICs9IG1heEhlaWdodCArIHJhbmtTZXA7XG4gIH0pO1xufVxuXG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xudmFyIHNsYWNrID0gcmVxdWlyZShcIi4vdXRpbFwiKS5zbGFjaztcblxubW9kdWxlLmV4cG9ydHMgPSBmZWFzaWJsZVRyZWU7XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIHRpZ2h0IGVkZ2VzIGFuZCBhZGp1c3RlZCB0aGUgaW5wdXQgbm9kZSdzXG4gKiByYW5rcyB0byBhY2hpZXZlIHRoaXMuIEEgdGlnaHQgZWRnZSBpcyBvbmUgdGhhdCBpcyBoYXMgYSBsZW5ndGggdGhhdCBtYXRjaGVzXG4gKiBpdHMgXCJtaW5sZW5cIiBhdHRyaWJ1dGUuXG4gKlxuICogVGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkFcbiAqIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gR3JhcGggbXVzdCBiZSBjb25uZWN0ZWQuXG4gKiAgICAzLiBHcmFwaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5vZGUuXG4gKiAgICA1LiBHcmFwaCBub2RlcyBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFzc2lnbmVkIGEgXCJyYW5rXCIgcHJvcGVydHkgdGhhdFxuICogICAgICAgcmVzcGVjdHMgdGhlIFwibWlubGVuXCIgcHJvcGVydHkgb2YgaW5jaWRlbnQgZWRnZXMuXG4gKiAgICA2LiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgYSBcIm1pbmxlblwiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAtIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSB0aGVpciByYW5rIGFkanVzdGVkIHRvIGVuc3VyZSB0aGF0IGFsbCBlZGdlcyBhcmVcbiAqICAgICAgdGlnaHQuXG4gKlxuICogUmV0dXJucyBhIHRyZWUgKHVuZGlyZWN0ZWQgZ3JhcGgpIHRoYXQgaXMgY29uc3RydWN0ZWQgdXNpbmcgb25seSBcInRpZ2h0XCJcbiAqIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBmZWFzaWJsZVRyZWUoZykge1xuICB2YXIgdCA9IG5ldyBHcmFwaCh7IGRpcmVjdGVkOiBmYWxzZSB9KTtcblxuICAvLyBDaG9vc2UgYXJiaXRyYXJ5IG5vZGUgZnJvbSB3aGljaCB0byBzdGFydCBvdXIgdHJlZVxuICB2YXIgc3RhcnQgPSBnLm5vZGVzKClbMF07XG4gIHZhciBzaXplID0gZy5ub2RlQ291bnQoKTtcbiAgdC5zZXROb2RlKHN0YXJ0LCB7fSk7XG5cbiAgdmFyIGVkZ2UsIGRlbHRhO1xuICB3aGlsZSAodGlnaHRUcmVlKHQsIGcpIDwgc2l6ZSkge1xuICAgIGVkZ2UgPSBmaW5kTWluU2xhY2tFZGdlKHQsIGcpO1xuICAgIGRlbHRhID0gdC5oYXNOb2RlKGVkZ2UudikgPyBzbGFjayhnLCBlZGdlKSA6IC1zbGFjayhnLCBlZGdlKTtcbiAgICBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKTtcbiAgfVxuXG4gIHJldHVybiB0O1xufVxuXG4vKlxuICogRmluZHMgYSBtYXhpbWFsIHRyZWUgb2YgdGlnaHQgZWRnZXMgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGVcbiAqIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRpZ2h0VHJlZSh0LCBnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgZWRnZVYgPSBlLnYsXG4gICAgICAgIHcgPSAodiA9PT0gZWRnZVYpID8gZS53IDogZWRnZVY7XG4gICAgICBpZiAoIXQuaGFzTm9kZSh3KSAmJiAhc2xhY2soZywgZSkpIHtcbiAgICAgICAgdC5zZXROb2RlKHcsIHt9KTtcbiAgICAgICAgdC5zZXRFZGdlKHYsIHcsIHt9KTtcbiAgICAgICAgZGZzKHcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIHQubm9kZUNvdW50KCk7XG59XG5cbi8qXG4gKiBGaW5kcyB0aGUgZWRnZSB3aXRoIHRoZSBzbWFsbGVzdCBzbGFjayB0aGF0IGlzIGluY2lkZW50IG9uIHRyZWUgYW5kIHJldHVybnNcbiAqIGl0LlxuICovXG5mdW5jdGlvbiBmaW5kTWluU2xhY2tFZGdlKHQsIGcpIHtcbiAgcmV0dXJuIF8ubWluQnkoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKHQuaGFzTm9kZShlLnYpICE9PSB0Lmhhc05vZGUoZS53KSkge1xuICAgICAgcmV0dXJuIHNsYWNrKGcsIGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0UmFua3ModCwgZywgZGVsdGEpIHtcbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGcubm9kZSh2KS5yYW5rICs9IGRlbHRhO1xuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgcmFua1V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIGxvbmdlc3RQYXRoID0gcmFua1V0aWwubG9uZ2VzdFBhdGg7XG52YXIgZmVhc2libGVUcmVlID0gcmVxdWlyZShcIi4vZmVhc2libGUtdHJlZVwiKTtcbnZhciBuZXR3b3JrU2ltcGxleCA9IHJlcXVpcmUoXCIuL25ldHdvcmstc2ltcGxleFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSByYW5rO1xuXG4vKlxuICogQXNzaWducyBhIHJhbmsgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaCB0aGF0IHJlc3BlY3RzIHRoZSBcIm1pbmxlblwiXG4gKiBjb25zdHJhaW50IHNwZWNpZmllZCBvbiBlZGdlcyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFRoaXMgYmFzaWMgc3RydWN0dXJlIGlzIGRlcml2ZWQgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWUgZm9yXG4gKiBEcmF3aW5nIERpcmVjdGVkIEdyYXBocy5cIlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG11c3QgYmUgYSBjb25uZWN0ZWQgREFHXG4gKiAgICAyLiBHcmFwaCBub2RlcyBtdXN0IGJlIG9iamVjdHNcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSBcIndlaWdodFwiIGFuZCBcIm1pbmxlblwiIGF0dHJpYnV0ZXNcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGEgXCJyYW5rXCIgYXR0cmlidXRlIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZVxuICogICAgICAgYWxnb3JpdGhtLiBSYW5rcyBjYW4gc3RhcnQgYXQgYW55IGluZGV4IChpbmNsdWRpbmcgbmVnYXRpdmUpLCB3ZSdsbFxuICogICAgICAgZml4IHRoZW0gdXAgbGF0ZXIuXG4gKi9cbmZ1bmN0aW9uIHJhbmsoZykge1xuICBzd2l0Y2goZy5ncmFwaCgpLnJhbmtlcikge1xuICBjYXNlIFwibmV0d29yay1zaW1wbGV4XCI6IG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpOyBicmVhaztcbiAgY2FzZSBcInRpZ2h0LXRyZWVcIjogdGlnaHRUcmVlUmFua2VyKGcpOyBicmVhaztcbiAgY2FzZSBcImxvbmdlc3QtcGF0aFwiOiBsb25nZXN0UGF0aFJhbmtlcihnKTsgYnJlYWs7XG4gIGRlZmF1bHQ6IG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpO1xuICB9XG59XG5cbi8vIEEgZmFzdCBhbmQgc2ltcGxlIHJhbmtlciwgYnV0IHJlc3VsdHMgYXJlIGZhciBmcm9tIG9wdGltYWwuXG52YXIgbG9uZ2VzdFBhdGhSYW5rZXIgPSBsb25nZXN0UGF0aDtcblxuZnVuY3Rpb24gdGlnaHRUcmVlUmFua2VyKGcpIHtcbiAgbG9uZ2VzdFBhdGgoZyk7XG4gIGZlYXNpYmxlVHJlZShnKTtcbn1cblxuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXhSYW5rZXIoZykge1xuICBuZXR3b3JrU2ltcGxleChnKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgZmVhc2libGVUcmVlID0gcmVxdWlyZShcIi4vZmVhc2libGUtdHJlZVwiKTtcbnZhciBzbGFjayA9IHJlcXVpcmUoXCIuL3V0aWxcIikuc2xhY2s7XG52YXIgaW5pdFJhbmsgPSByZXF1aXJlKFwiLi91dGlsXCIpLmxvbmdlc3RQYXRoO1xudmFyIHByZW9yZGVyID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLmFsZy5wcmVvcmRlcjtcbnZhciBwb3N0b3JkZXIgPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuYWxnLnBvc3RvcmRlcjtcbnZhciBzaW1wbGlmeSA9IHJlcXVpcmUoXCIuLi91dGlsXCIpLnNpbXBsaWZ5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldHdvcmtTaW1wbGV4O1xuXG4vLyBFeHBvc2Ugc29tZSBpbnRlcm5hbHMgZm9yIHRlc3RpbmcgcHVycG9zZXNcbm5ldHdvcmtTaW1wbGV4LmluaXRMb3dMaW1WYWx1ZXMgPSBpbml0TG93TGltVmFsdWVzO1xubmV0d29ya1NpbXBsZXguaW5pdEN1dFZhbHVlcyA9IGluaXRDdXRWYWx1ZXM7XG5uZXR3b3JrU2ltcGxleC5jYWxjQ3V0VmFsdWUgPSBjYWxjQ3V0VmFsdWU7XG5uZXR3b3JrU2ltcGxleC5sZWF2ZUVkZ2UgPSBsZWF2ZUVkZ2U7XG5uZXR3b3JrU2ltcGxleC5lbnRlckVkZ2UgPSBlbnRlckVkZ2U7XG5uZXR3b3JrU2ltcGxleC5leGNoYW5nZUVkZ2VzID0gZXhjaGFuZ2VFZGdlcztcblxuLypcbiAqIFRoZSBuZXR3b3JrIHNpbXBsZXggYWxnb3JpdGhtIGFzc2lnbnMgcmFua3MgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIGl0ZXJhdGl2ZWx5IGltcHJvdmVzIHRoZSByYW5raW5nIHRvIHJlZHVjZSB0aGUgbGVuZ3RoIG9mIGVkZ2VzLlxuICpcbiAqIFByZWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIG11c3QgYmUgYSBEQUcuXG4gKiAgICAyLiBBbGwgbm9kZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBhbiBvYmplY3QgdmFsdWUuXG4gKiAgICAzLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBcIm1pbmxlblwiIGFuZCBcIndlaWdodFwiIGF0dHJpYnV0ZXMuXG4gKlxuICogUG9zdGNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCB3aWxsIGhhdmUgYW4gYXNzaWduZWQgXCJyYW5rXCIgYXR0cmlidXRlIHRoYXQgaGFzXG4gKiAgICAgICBiZWVuIG9wdGltaXplZCBieSB0aGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobS4gUmFua3Mgc3RhcnQgYXQgMC5cbiAqXG4gKlxuICogQSByb3VnaCBza2V0Y2ggb2YgdGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEFzc2lnbiBpbml0aWFsIHJhbmtzIHRvIGVhY2ggbm9kZS4gV2UgdXNlIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLFxuICogICAgICAgd2hpY2ggYXNzaWducyByYW5rcyB0byB0aGUgbG93ZXN0IHBvc2l0aW9uIHBvc3NpYmxlLiBJbiBnZW5lcmFsIHRoaXNcbiAqICAgICAgIGxlYWRzIHRvIHZlcnkgd2lkZSBib3R0b20gcmFua3MgYW5kIHVubmVjZXNzYXJpbHkgbG9uZyBlZGdlcy5cbiAqICAgIDIuIENvbnN0cnVjdCBhIGZlYXNpYmxlIHRpZ2h0IHRyZWUuIEEgdGlnaHQgdHJlZSBpcyBvbmUgc3VjaCB0aGF0IGFsbFxuICogICAgICAgZWRnZXMgaW4gdGhlIHRyZWUgaGF2ZSBubyBzbGFjayAoZGlmZmVyZW5jZSBiZXR3ZWVuIGxlbmd0aCBvZiBlZGdlXG4gKiAgICAgICBhbmQgbWlubGVuIGZvciB0aGUgZWRnZSkuIFRoaXMgYnkgaXRzZWxmIGdyZWF0bHkgaW1wcm92ZXMgdGhlIGFzc2lnbmVkXG4gKiAgICAgICByYW5raW5ncyBieSBzaG9ydGluZyBlZGdlcy5cbiAqICAgIDMuIEl0ZXJhdGl2ZWx5IGZpbmQgZWRnZXMgdGhhdCBoYXZlIG5lZ2F0aXZlIGN1dCB2YWx1ZXMuIEdlbmVyYWxseSBhXG4gKiAgICAgICBuZWdhdGl2ZSBjdXQgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIGVkZ2UgY291bGQgYmUgcmVtb3ZlZCBhbmQgYSBuZXdcbiAqICAgICAgIHRyZWUgZWRnZSBjb3VsZCBiZSBhZGRlZCB0byBwcm9kdWNlIGEgbW9yZSBjb21wYWN0IGdyYXBoLlxuICpcbiAqIE11Y2ggb2YgdGhlIGFsZ29yaXRobXMgaGVyZSBhcmUgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZVxuICogZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZpbGUgcm91Z2hseSBmb2xsb3dzIHRoZVxuICogc3RydWN0dXJlIG9mIHRoZSBvdmVyYWxsIGFsZ29yaXRobS5cbiAqL1xuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXgoZykge1xuICBnID0gc2ltcGxpZnkoZyk7XG4gIGluaXRSYW5rKGcpO1xuICB2YXIgdCA9IGZlYXNpYmxlVHJlZShnKTtcbiAgaW5pdExvd0xpbVZhbHVlcyh0KTtcbiAgaW5pdEN1dFZhbHVlcyh0LCBnKTtcblxuICB2YXIgZSwgZjtcbiAgd2hpbGUgKChlID0gbGVhdmVFZGdlKHQpKSkge1xuICAgIGYgPSBlbnRlckVkZ2UodCwgZywgZSk7XG4gICAgZXhjaGFuZ2VFZGdlcyh0LCBnLCBlLCBmKTtcbiAgfVxufVxuXG4vKlxuICogSW5pdGlhbGl6ZXMgY3V0IHZhbHVlcyBmb3IgYWxsIGVkZ2VzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpbml0Q3V0VmFsdWVzKHQsIGcpIHtcbiAgdmFyIHZzID0gcG9zdG9yZGVyKHQsIHQubm9kZXMoKSk7XG4gIHZzID0gdnMuc2xpY2UoMCwgdnMubGVuZ3RoIC0gMSk7XG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGFzc2lnbkN1dFZhbHVlKHQsIGcsIHYpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduQ3V0VmFsdWUodCwgZywgY2hpbGQpIHtcbiAgdmFyIGNoaWxkTGFiID0gdC5ub2RlKGNoaWxkKTtcbiAgdmFyIHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgdC5lZGdlKGNoaWxkLCBwYXJlbnQpLmN1dHZhbHVlID0gY2FsY0N1dFZhbHVlKHQsIGcsIGNoaWxkKTtcbn1cblxuLypcbiAqIEdpdmVuIHRoZSB0aWdodCB0cmVlLCBpdHMgZ3JhcGgsIGFuZCBhIGNoaWxkIGluIHRoZSBncmFwaCBjYWxjdWxhdGUgYW5kXG4gKiByZXR1cm4gdGhlIGN1dCB2YWx1ZSBmb3IgdGhlIGVkZ2UgYmV0d2VlbiB0aGUgY2hpbGQgYW5kIGl0cyBwYXJlbnQuXG4gKi9cbmZ1bmN0aW9uIGNhbGNDdXRWYWx1ZSh0LCBnLCBjaGlsZCkge1xuICB2YXIgY2hpbGRMYWIgPSB0Lm5vZGUoY2hpbGQpO1xuICB2YXIgcGFyZW50ID0gY2hpbGRMYWIucGFyZW50O1xuICAvLyBUcnVlIGlmIHRoZSBjaGlsZCBpcyBvbiB0aGUgdGFpbCBlbmQgb2YgdGhlIGVkZ2UgaW4gdGhlIGRpcmVjdGVkIGdyYXBoXG4gIHZhciBjaGlsZElzVGFpbCA9IHRydWU7XG4gIC8vIFRoZSBncmFwaCdzIHZpZXcgb2YgdGhlIHRyZWUgZWRnZSB3ZSdyZSBpbnNwZWN0aW5nXG4gIHZhciBncmFwaEVkZ2UgPSBnLmVkZ2UoY2hpbGQsIHBhcmVudCk7XG4gIC8vIFRoZSBhY2N1bXVsYXRlZCBjdXQgdmFsdWUgZm9yIHRoZSBlZGdlIGJldHdlZW4gdGhpcyBub2RlIGFuZCBpdHMgcGFyZW50XG4gIHZhciBjdXRWYWx1ZSA9IDA7XG5cbiAgaWYgKCFncmFwaEVkZ2UpIHtcbiAgICBjaGlsZElzVGFpbCA9IGZhbHNlO1xuICAgIGdyYXBoRWRnZSA9IGcuZWRnZShwYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIGN1dFZhbHVlID0gZ3JhcGhFZGdlLndlaWdodDtcblxuICBfLmZvckVhY2goZy5ub2RlRWRnZXMoY2hpbGQpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGlzT3V0RWRnZSA9IGUudiA9PT0gY2hpbGQsXG4gICAgICBvdGhlciA9IGlzT3V0RWRnZSA/IGUudyA6IGUudjtcblxuICAgIGlmIChvdGhlciAhPT0gcGFyZW50KSB7XG4gICAgICB2YXIgcG9pbnRzVG9IZWFkID0gaXNPdXRFZGdlID09PSBjaGlsZElzVGFpbCxcbiAgICAgICAgb3RoZXJXZWlnaHQgPSBnLmVkZ2UoZSkud2VpZ2h0O1xuXG4gICAgICBjdXRWYWx1ZSArPSBwb2ludHNUb0hlYWQgPyBvdGhlcldlaWdodCA6IC1vdGhlcldlaWdodDtcbiAgICAgIGlmIChpc1RyZWVFZGdlKHQsIGNoaWxkLCBvdGhlcikpIHtcbiAgICAgICAgdmFyIG90aGVyQ3V0VmFsdWUgPSB0LmVkZ2UoY2hpbGQsIG90aGVyKS5jdXR2YWx1ZTtcbiAgICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gLW90aGVyQ3V0VmFsdWUgOiBvdGhlckN1dFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGN1dFZhbHVlO1xufVxuXG5mdW5jdGlvbiBpbml0TG93TGltVmFsdWVzKHRyZWUsIHJvb3QpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgcm9vdCA9IHRyZWUubm9kZXMoKVswXTtcbiAgfVxuICBkZnNBc3NpZ25Mb3dMaW0odHJlZSwge30sIDEsIHJvb3QpO1xufVxuXG5mdW5jdGlvbiBkZnNBc3NpZ25Mb3dMaW0odHJlZSwgdmlzaXRlZCwgbmV4dExpbSwgdiwgcGFyZW50KSB7XG4gIHZhciBsb3cgPSBuZXh0TGltO1xuICB2YXIgbGFiZWwgPSB0cmVlLm5vZGUodik7XG5cbiAgdmlzaXRlZFt2XSA9IHRydWU7XG4gIF8uZm9yRWFjaCh0cmVlLm5laWdoYm9ycyh2KSwgZnVuY3Rpb24odykge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdykpIHtcbiAgICAgIG5leHRMaW0gPSBkZnNBc3NpZ25Mb3dMaW0odHJlZSwgdmlzaXRlZCwgbmV4dExpbSwgdywgdik7XG4gICAgfVxuICB9KTtcblxuICBsYWJlbC5sb3cgPSBsb3c7XG4gIGxhYmVsLmxpbSA9IG5leHRMaW0rKztcbiAgaWYgKHBhcmVudCkge1xuICAgIGxhYmVsLnBhcmVudCA9IHBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIHdoZW4gd2UgaW5jcmVtZW50YWxseSB1cGRhdGUgbG93IGxpbVxuICAgIGRlbGV0ZSBsYWJlbC5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gbmV4dExpbTtcbn1cblxuZnVuY3Rpb24gbGVhdmVFZGdlKHRyZWUpIHtcbiAgcmV0dXJuIF8uZmluZCh0cmVlLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gdHJlZS5lZGdlKGUpLmN1dHZhbHVlIDwgMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVudGVyRWRnZSh0LCBnLCBlZGdlKSB7XG4gIHZhciB2ID0gZWRnZS52O1xuICB2YXIgdyA9IGVkZ2UudztcblxuICAvLyBGb3IgdGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlvbiB3ZSBhc3N1bWUgdGhhdCB2IGlzIHRoZSB0YWlsIGFuZCB3IGlzIHRoZVxuICAvLyBoZWFkLCBzbyBpZiB3ZSBkb24ndCBoYXZlIHRoaXMgZWRnZSBpbiB0aGUgZ3JhcGggd2Ugc2hvdWxkIGZsaXAgaXQgdG9cbiAgLy8gbWF0Y2ggdGhlIGNvcnJlY3Qgb3JpZW50YXRpb24uXG4gIGlmICghZy5oYXNFZGdlKHYsIHcpKSB7XG4gICAgdiA9IGVkZ2UudztcbiAgICB3ID0gZWRnZS52O1xuICB9XG5cbiAgdmFyIHZMYWJlbCA9IHQubm9kZSh2KTtcbiAgdmFyIHdMYWJlbCA9IHQubm9kZSh3KTtcbiAgdmFyIHRhaWxMYWJlbCA9IHZMYWJlbDtcbiAgdmFyIGZsaXAgPSBmYWxzZTtcblxuICAvLyBJZiB0aGUgcm9vdCBpcyBpbiB0aGUgdGFpbCBvZiB0aGUgZWRnZSB0aGVuIHdlIG5lZWQgdG8gZmxpcCB0aGUgbG9naWMgdGhhdFxuICAvLyBjaGVja3MgZm9yIHRoZSBoZWFkIGFuZCB0YWlsIG5vZGVzIGluIHRoZSBjYW5kaWRhdGVzIGZ1bmN0aW9uIGJlbG93LlxuICBpZiAodkxhYmVsLmxpbSA+IHdMYWJlbC5saW0pIHtcbiAgICB0YWlsTGFiZWwgPSB3TGFiZWw7XG4gICAgZmxpcCA9IHRydWU7XG4gIH1cblxuICB2YXIgY2FuZGlkYXRlcyA9IF8uZmlsdGVyKGcuZWRnZXMoKSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHJldHVybiBmbGlwID09PSBpc0Rlc2NlbmRhbnQodCwgdC5ub2RlKGVkZ2UudiksIHRhaWxMYWJlbCkgJiZcbiAgICAgICAgICAgZmxpcCAhPT0gaXNEZXNjZW5kYW50KHQsIHQubm9kZShlZGdlLncpLCB0YWlsTGFiZWwpO1xuICB9KTtcblxuICByZXR1cm4gXy5taW5CeShjYW5kaWRhdGVzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBzbGFjayhnLCBlZGdlKTsgfSk7XG59XG5cbmZ1bmN0aW9uIGV4Y2hhbmdlRWRnZXModCwgZywgZSwgZikge1xuICB2YXIgdiA9IGUudjtcbiAgdmFyIHcgPSBlLnc7XG4gIHQucmVtb3ZlRWRnZSh2LCB3KTtcbiAgdC5zZXRFZGdlKGYudiwgZi53LCB7fSk7XG4gIGluaXRMb3dMaW1WYWx1ZXModCk7XG4gIGluaXRDdXRWYWx1ZXModCwgZyk7XG4gIHVwZGF0ZVJhbmtzKHQsIGcpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVSYW5rcyh0LCBnKSB7XG4gIHZhciByb290ID0gXy5maW5kKHQubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXR1cm4gIWcubm9kZSh2KS5wYXJlbnQ7IH0pO1xuICB2YXIgdnMgPSBwcmVvcmRlcih0LCByb290KTtcbiAgdnMgPSB2cy5zbGljZSgxKTtcbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHBhcmVudCA9IHQubm9kZSh2KS5wYXJlbnQsXG4gICAgICBlZGdlID0gZy5lZGdlKHYsIHBhcmVudCksXG4gICAgICBmbGlwcGVkID0gZmFsc2U7XG5cbiAgICBpZiAoIWVkZ2UpIHtcbiAgICAgIGVkZ2UgPSBnLmVkZ2UocGFyZW50LCB2KTtcbiAgICAgIGZsaXBwZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGcubm9kZSh2KS5yYW5rID0gZy5ub2RlKHBhcmVudCkucmFuayArIChmbGlwcGVkID8gZWRnZS5taW5sZW4gOiAtZWRnZS5taW5sZW4pO1xuICB9KTtcbn1cblxuLypcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWRnZSBpcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaXNUcmVlRWRnZSh0cmVlLCB1LCB2KSB7XG4gIHJldHVybiB0cmVlLmhhc0VkZ2UodSwgdik7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCBub2RlIGlzIGRlc2NlbmRhbnQgb2YgdGhlIHJvb3Qgbm9kZSBwZXIgdGhlXG4gKiBhc3NpZ25lZCBsb3cgYW5kIGxpbSBhdHRyaWJ1dGVzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpc0Rlc2NlbmRhbnQodHJlZSwgdkxhYmVsLCByb290TGFiZWwpIHtcbiAgcmV0dXJuIHJvb3RMYWJlbC5sb3cgPD0gdkxhYmVsLmxpbSAmJiB2TGFiZWwubGltIDw9IHJvb3RMYWJlbC5saW07XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbG9uZ2VzdFBhdGg6IGxvbmdlc3RQYXRoLFxuICBzbGFjazogc2xhY2tcbn07XG5cbi8qXG4gKiBJbml0aWFsaXplcyByYW5rcyBmb3IgdGhlIGlucHV0IGdyYXBoIHVzaW5nIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLiBUaGlzXG4gKiBhbGdvcml0aG0gc2NhbGVzIHdlbGwgYW5kIGlzIGZhc3QgaW4gcHJhY3RpY2UsIGl0IHlpZWxkcyByYXRoZXIgcG9vclxuICogc29sdXRpb25zLiBOb2RlcyBhcmUgcHVzaGVkIHRvIHRoZSBsb3dlc3QgbGF5ZXIgcG9zc2libGUsIGxlYXZpbmcgdGhlIGJvdHRvbVxuICogcmFua3Mgd2lkZSBhbmQgbGVhdmluZyBlZGdlcyBsb25nZXIgdGhhbiBuZWNlc3NhcnkuIEhvd2V2ZXIsIGR1ZSB0byBpdHNcbiAqIHNwZWVkLCB0aGlzIGFsZ29yaXRobSBpcyBnb29kIGZvciBnZXR0aW5nIGFuIGluaXRpYWwgcmFua2luZyB0aGF0IGNhbiBiZSBmZWRcbiAqIGludG8gb3RoZXIgYWxnb3JpdGhtcy5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBkb2VzIG5vdCBub3JtYWxpemUgbGF5ZXJzIGJlY2F1c2UgaXQgd2lsbCBiZSB1c2VkIGJ5IG90aGVyXG4gKiBhbGdvcml0aG1zIGluIG1vc3QgY2FzZXMuIElmIHVzaW5nIHRoaXMgYWxnb3JpdGhtIGRpcmVjdGx5LCBiZSBzdXJlIHRvXG4gKiBydW4gbm9ybWFsaXplIGF0IHRoZSBlbmQuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBJbnB1dCBncmFwaCBub2RlIGxhYmVscyBjYW4gYmUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gRWFjaCBub2RlIHdpbGwgYmUgYXNzaWduIGFuICh1bm5vcm1hbGl6ZWQpIFwicmFua1wiIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBsb25nZXN0UGF0aChnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgbGFiZWwgPSBnLm5vZGUodik7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgICByZXR1cm4gbGFiZWwucmFuaztcbiAgICB9XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICB2YXIgcmFuayA9IF8ubWluKF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiBkZnMoZS53KSAtIGcuZWRnZShlKS5taW5sZW47XG4gICAgfSkpO1xuXG4gICAgaWYgKHJhbmsgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggM1xuICAgICAgICByYW5rID09PSB1bmRlZmluZWQgfHwgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtdKSBmb3IgTG9kYXNoIDRcbiAgICAgICAgcmFuayA9PT0gbnVsbCkgeyAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW251bGxdKVxuICAgICAgcmFuayA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIChsYWJlbC5yYW5rID0gcmFuayk7XG4gIH1cblxuICBfLmZvckVhY2goZy5zb3VyY2VzKCksIGRmcyk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRoZSBhbW91bnQgb2Ygc2xhY2sgZm9yIHRoZSBnaXZlbiBlZGdlLiBUaGUgc2xhY2sgaXMgZGVmaW5lZCBhcyB0aGVcbiAqIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGVuZ3RoIG9mIHRoZSBlZGdlIGFuZCBpdHMgbWluaW11bSBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIHNsYWNrKGcsIGUpIHtcbiAgcmV0dXJuIGcubm9kZShlLncpLnJhbmsgLSBnLm5vZGUoZS52KS5yYW5rIC0gZy5lZGdlKGUpLm1pbmxlbjtcbn1cbiIsIi8qIGVzbGludCBcIm5vLWNvbnNvbGVcIjogb2ZmICovXG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWRkRHVtbXlOb2RlOiBhZGREdW1teU5vZGUsXG4gIHNpbXBsaWZ5OiBzaW1wbGlmeSxcbiAgYXNOb25Db21wb3VuZEdyYXBoOiBhc05vbkNvbXBvdW5kR3JhcGgsXG4gIHN1Y2Nlc3NvcldlaWdodHM6IHN1Y2Nlc3NvcldlaWdodHMsXG4gIHByZWRlY2Vzc29yV2VpZ2h0czogcHJlZGVjZXNzb3JXZWlnaHRzLFxuICBpbnRlcnNlY3RSZWN0OiBpbnRlcnNlY3RSZWN0LFxuICBidWlsZExheWVyTWF0cml4OiBidWlsZExheWVyTWF0cml4LFxuICBub3JtYWxpemVSYW5rczogbm9ybWFsaXplUmFua3MsXG4gIHJlbW92ZUVtcHR5UmFua3M6IHJlbW92ZUVtcHR5UmFua3MsXG4gIGFkZEJvcmRlck5vZGU6IGFkZEJvcmRlck5vZGUsXG4gIG1heFJhbms6IG1heFJhbmssXG4gIHBhcnRpdGlvbjogcGFydGl0aW9uLFxuICB0aW1lOiB0aW1lLFxuICBub3RpbWU6IG5vdGltZVxufTtcblxuLypcbiAqIEFkZHMgYSBkdW1teSBub2RlIHRvIHRoZSBncmFwaCBhbmQgcmV0dXJuIHYuXG4gKi9cbmZ1bmN0aW9uIGFkZER1bW15Tm9kZShnLCB0eXBlLCBhdHRycywgbmFtZSkge1xuICB2YXIgdjtcbiAgZG8ge1xuICAgIHYgPSBfLnVuaXF1ZUlkKG5hbWUpO1xuICB9IHdoaWxlIChnLmhhc05vZGUodikpO1xuXG4gIGF0dHJzLmR1bW15ID0gdHlwZTtcbiAgZy5zZXROb2RlKHYsIGF0dHJzKTtcbiAgcmV0dXJuIHY7XG59XG5cbi8qXG4gKiBSZXR1cm5zIGEgbmV3IGdyYXBoIHdpdGggb25seSBzaW1wbGUgZWRnZXMuIEhhbmRsZXMgYWdncmVnYXRpb24gb2YgZGF0YVxuICogYXNzb2NpYXRlZCB3aXRoIG11bHRpLWVkZ2VzLlxuICovXG5mdW5jdGlvbiBzaW1wbGlmeShnKSB7XG4gIHZhciBzaW1wbGlmaWVkID0gbmV3IEdyYXBoKCkuc2V0R3JhcGgoZy5ncmFwaCgpKTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBzaW1wbGlmaWVkLnNldE5vZGUodiwgZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgc2ltcGxlTGFiZWwgPSBzaW1wbGlmaWVkLmVkZ2UoZS52LCBlLncpIHx8IHsgd2VpZ2h0OiAwLCBtaW5sZW46IDEgfTtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUudiwgZS53LCB7XG4gICAgICB3ZWlnaHQ6IHNpbXBsZUxhYmVsLndlaWdodCArIGxhYmVsLndlaWdodCxcbiAgICAgIG1pbmxlbjogTWF0aC5tYXgoc2ltcGxlTGFiZWwubWlubGVuLCBsYWJlbC5taW5sZW4pXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gc2ltcGxpZmllZDtcbn1cblxuZnVuY3Rpb24gYXNOb25Db21wb3VuZEdyYXBoKGcpIHtcbiAgdmFyIHNpbXBsaWZpZWQgPSBuZXcgR3JhcGgoeyBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpIH0pLnNldEdyYXBoKGcuZ3JhcGgoKSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoIWcuY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICBzaW1wbGlmaWVkLnNldE5vZGUodiwgZy5ub2RlKHYpKTtcbiAgICB9XG4gIH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUsIGcuZWRnZShlKSk7XG4gIH0pO1xuICByZXR1cm4gc2ltcGxpZmllZDtcbn1cblxuZnVuY3Rpb24gc3VjY2Vzc29yV2VpZ2h0cyhnKSB7XG4gIHZhciB3ZWlnaHRNYXAgPSBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgc3VjcyA9IHt9O1xuICAgIF8uZm9yRWFjaChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBzdWNzW2Uud10gPSAoc3Vjc1tlLnddIHx8IDApICsgZy5lZGdlKGUpLndlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gc3VjcztcbiAgfSk7XG4gIHJldHVybiBfLnppcE9iamVjdChnLm5vZGVzKCksIHdlaWdodE1hcCk7XG59XG5cbmZ1bmN0aW9uIHByZWRlY2Vzc29yV2VpZ2h0cyhnKSB7XG4gIHZhciB3ZWlnaHRNYXAgPSBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcHJlZHMgPSB7fTtcbiAgICBfLmZvckVhY2goZy5pbkVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBwcmVkc1tlLnZdID0gKHByZWRzW2Uudl0gfHwgMCkgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH0pO1xuICAgIHJldHVybiBwcmVkcztcbiAgfSk7XG4gIHJldHVybiBfLnppcE9iamVjdChnLm5vZGVzKCksIHdlaWdodE1hcCk7XG59XG5cbi8qXG4gKiBGaW5kcyB3aGVyZSBhIGxpbmUgc3RhcnRpbmcgYXQgcG9pbnQgKHt4LCB5fSkgd291bGQgaW50ZXJzZWN0IGEgcmVjdGFuZ2xlXG4gKiAoe3gsIHksIHdpZHRoLCBoZWlnaHR9KSBpZiBpdCB3ZXJlIHBvaW50aW5nIGF0IHRoZSByZWN0YW5nbGUncyBjZW50ZXIuXG4gKi9cbmZ1bmN0aW9uIGludGVyc2VjdFJlY3QocmVjdCwgcG9pbnQpIHtcbiAgdmFyIHggPSByZWN0Lng7XG4gIHZhciB5ID0gcmVjdC55O1xuXG4gIC8vIFJlY3RhbmdsZSBpbnRlcnNlY3Rpb24gYWxnb3JpdGhtIGZyb206XG4gIC8vIGh0dHA6Ly9tYXRoLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMDgxMTMvZmluZC1lZGdlLWJldHdlZW4tdHdvLWJveGVzXG4gIHZhciBkeCA9IHBvaW50LnggLSB4O1xuICB2YXIgZHkgPSBwb2ludC55IC0geTtcbiAgdmFyIHcgPSByZWN0LndpZHRoIC8gMjtcbiAgdmFyIGggPSByZWN0LmhlaWdodCAvIDI7XG5cbiAgaWYgKCFkeCAmJiAhZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGVcIik7XG4gIH1cblxuICB2YXIgc3gsIHN5O1xuICBpZiAoTWF0aC5hYnMoZHkpICogdyA+IE1hdGguYWJzKGR4KSAqIGgpIHtcbiAgICAvLyBJbnRlcnNlY3Rpb24gaXMgdG9wIG9yIGJvdHRvbSBvZiByZWN0LlxuICAgIGlmIChkeSA8IDApIHtcbiAgICAgIGggPSAtaDtcbiAgICB9XG4gICAgc3ggPSBoICogZHggLyBkeTtcbiAgICBzeSA9IGg7XG4gIH0gZWxzZSB7XG4gICAgLy8gSW50ZXJzZWN0aW9uIGlzIGxlZnQgb3IgcmlnaHQgb2YgcmVjdC5cbiAgICBpZiAoZHggPCAwKSB7XG4gICAgICB3ID0gLXc7XG4gICAgfVxuICAgIHN4ID0gdztcbiAgICBzeSA9IHcgKiBkeSAvIGR4O1xuICB9XG5cbiAgcmV0dXJuIHsgeDogeCArIHN4LCB5OiB5ICsgc3kgfTtcbn1cblxuLypcbiAqIEdpdmVuIGEgREFHIHdpdGggZWFjaCBub2RlIGFzc2lnbmVkIFwicmFua1wiIGFuZCBcIm9yZGVyXCIgcHJvcGVydGllcywgdGhpc1xuICogZnVuY3Rpb24gd2lsbCBwcm9kdWNlIGEgbWF0cml4IHdpdGggdGhlIGlkcyBvZiBlYWNoIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJNYXRyaXgoZykge1xuICB2YXIgbGF5ZXJpbmcgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsoZykgKyAxKSwgZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcmFuayA9IG5vZGUucmFuaztcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmFuaykpIHtcbiAgICAgIGxheWVyaW5nW3JhbmtdW25vZGUub3JkZXJdID0gdjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGF5ZXJpbmc7XG59XG5cbi8qXG4gKiBBZGp1c3RzIHRoZSByYW5rcyBmb3IgYWxsIG5vZGVzIGluIHRoZSBncmFwaCBzdWNoIHRoYXQgYWxsIG5vZGVzIHYgaGF2ZVxuICogcmFuayh2KSA+PSAwIGFuZCBhdCBsZWFzdCBvbmUgbm9kZSB3IGhhcyByYW5rKHcpID0gMC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUmFua3MoZykge1xuICB2YXIgbWluID0gXy5taW4oXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKF8uaGFzKG5vZGUsIFwicmFua1wiKSkge1xuICAgICAgbm9kZS5yYW5rIC09IG1pbjtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVFbXB0eVJhbmtzKGcpIHtcbiAgLy8gUmFua3MgbWF5IG5vdCBzdGFydCBhdCAwLCBzbyB3ZSBuZWVkIHRvIG9mZnNldCB0aGVtXG4gIHZhciBvZmZzZXQgPSBfLm1pbihfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KSk7XG5cbiAgdmFyIGxheWVycyA9IFtdO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHJhbmsgPSBnLm5vZGUodikucmFuayAtIG9mZnNldDtcbiAgICBpZiAoIWxheWVyc1tyYW5rXSkge1xuICAgICAgbGF5ZXJzW3JhbmtdID0gW107XG4gICAgfVxuICAgIGxheWVyc1tyYW5rXS5wdXNoKHYpO1xuICB9KTtcblxuICB2YXIgZGVsdGEgPSAwO1xuICB2YXIgbm9kZVJhbmtGYWN0b3IgPSBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3I7XG4gIF8uZm9yRWFjaChsYXllcnMsIGZ1bmN0aW9uKHZzLCBpKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodnMpICYmIGkgJSBub2RlUmFua0ZhY3RvciAhPT0gMCkge1xuICAgICAgLS1kZWx0YTtcbiAgICB9IGVsc2UgaWYgKGRlbHRhKSB7XG4gICAgICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHsgZy5ub2RlKHYpLnJhbmsgKz0gZGVsdGE7IH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJlZml4LCByYW5rLCBvcmRlcikge1xuICB2YXIgbm9kZSA9IHtcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDBcbiAgfTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkge1xuICAgIG5vZGUucmFuayA9IHJhbms7XG4gICAgbm9kZS5vcmRlciA9IG9yZGVyO1xuICB9XG4gIHJldHVybiBhZGREdW1teU5vZGUoZywgXCJib3JkZXJcIiwgbm9kZSwgcHJlZml4KTtcbn1cblxuZnVuY3Rpb24gbWF4UmFuayhnKSB7XG4gIHJldHVybiBfLm1heChfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChyYW5rKSkge1xuICAgICAgcmV0dXJuIHJhbms7XG4gICAgfVxuICB9KSk7XG59XG5cbi8qXG4gKiBQYXJ0aXRpb24gYSBjb2xsZWN0aW9uIGludG8gdHdvIGdyb3VwczogYGxoc2AgYW5kIGByaHNgLiBJZiB0aGUgc3VwcGxpZWRcbiAqIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBmb3IgYW4gZW50cnkgaXQgZ29lcyBpbnRvIGBsaHNgLiBPdGhlcndpc2UgaXQgZ29lc1xuICogaW50byBgcmhzLlxuICovXG5mdW5jdGlvbiBwYXJ0aXRpb24oY29sbGVjdGlvbiwgZm4pIHtcbiAgdmFyIHJlc3VsdCA9IHsgbGhzOiBbXSwgcmhzOiBbXSB9O1xuICBfLmZvckVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoZm4odmFsdWUpKSB7XG4gICAgICByZXN1bHQubGhzLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucmhzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qXG4gKiBSZXR1cm5zIGEgbmV3IGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZuYCB3aXRoIGEgdGltZXIuIFRoZSB3cmFwcGVyIGxvZ3MgdGhlXG4gKiB0aW1lIGl0IHRha2VzIHRvIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiB0aW1lKG5hbWUsIGZuKSB7XG4gIHZhciBzdGFydCA9IF8ubm93KCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgY29uc29sZS5sb2cobmFtZSArIFwiIHRpbWU6IFwiICsgKF8ubm93KCkgLSBzdGFydCkgKyBcIm1zXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vdGltZShuYW1lLCBmbikge1xuICByZXR1cm4gZm4oKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gXCIwLjguNVwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENocmlzIFBldHRpdHRcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiAqIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXG4gKiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dFxuICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxuICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEVcbiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVJcbiAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksXG4gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG52YXIgbGliID0gcmVxdWlyZShcIi4vbGliXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IGxpYi5HcmFwaCxcbiAganNvbjogcmVxdWlyZShcIi4vbGliL2pzb25cIiksXG4gIGFsZzogcmVxdWlyZShcIi4vbGliL2FsZ1wiKSxcbiAgdmVyc2lvbjogbGliLnZlcnNpb25cbn07XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcG9uZW50cztcblxuZnVuY3Rpb24gY29tcG9uZW50cyhnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBjbXB0cyA9IFtdO1xuICB2YXIgY21wdDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIGNtcHQucHVzaCh2KTtcbiAgICBfLmVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBjbXB0ID0gW107XG4gICAgZGZzKHYpO1xuICAgIGlmIChjbXB0Lmxlbmd0aCkge1xuICAgICAgY21wdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbXB0cztcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZnM7XG5cbi8qXG4gKiBBIGhlbHBlciB0aGF0IHByZWZvcm1zIGEgcHJlLSBvciBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCByZXR1cm5zIHRoZSBub2RlcyBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHZpc2l0ZWQuIElmIHRoZSBncmFwaCBpc1xuICogdW5kaXJlY3RlZCB0aGVuIHRoaXMgYWxnb3JpdGhtIHdpbGwgbmF2aWdhdGUgdXNpbmcgbmVpZ2hib3JzLiBJZiB0aGUgZ3JhcGhcbiAqIGlzIGRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBzdWNjZXNzb3JzLlxuICpcbiAqIE9yZGVyIG11c3QgYmUgb25lIG9mIFwicHJlXCIgb3IgXCJwb3N0XCIuXG4gKi9cbmZ1bmN0aW9uIGRmcyhnLCB2cywgb3JkZXIpIHtcbiAgaWYgKCFfLmlzQXJyYXkodnMpKSB7XG4gICAgdnMgPSBbdnNdO1xuICB9XG5cbiAgdmFyIG5hdmlnYXRpb24gPSAoZy5pc0RpcmVjdGVkKCkgPyBnLnN1Y2Nlc3NvcnMgOiBnLm5laWdoYm9ycykuYmluZChnKTtcblxuICB2YXIgYWNjID0gW107XG4gIHZhciB2aXNpdGVkID0ge307XG4gIF8uZWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGlmICghZy5oYXNOb2RlKHYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6IFwiICsgdik7XG4gICAgfVxuXG4gICAgZG9EZnMoZywgdiwgb3JkZXIgPT09IFwicG9zdFwiLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICB9KTtcbiAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gZG9EZnMoZywgdiwgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpIHtcbiAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuXG4gICAgaWYgKCFwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgICBfLmVhY2gobmF2aWdhdGlvbih2KSwgZnVuY3Rpb24odykge1xuICAgICAgZG9EZnMoZywgdywgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICAgIH0pO1xuICAgIGlmIChwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgfVxufVxuIiwidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIik7XG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIFByaW9yaXR5UXVldWUgPSByZXF1aXJlKFwiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkaWprc3RyYTtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBkaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkRpamtzdHJhKGcsIFN0cmluZyhzb3VyY2UpLFxuICAgIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZVTkMsXG4gICAgZWRnZUZuIHx8IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcub3V0RWRnZXModik7IH0pO1xufVxuXG5mdW5jdGlvbiBydW5EaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgdmFyIHJlc3VsdHMgPSB7fTtcbiAgdmFyIHBxID0gbmV3IFByaW9yaXR5UXVldWUoKTtcbiAgdmFyIHYsIHZFbnRyeTtcblxuICB2YXIgdXBkYXRlTmVpZ2hib3JzID0gZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ICE9PSB2ID8gZWRnZS52IDogZWRnZS53O1xuICAgIHZhciB3RW50cnkgPSByZXN1bHRzW3ddO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlZGdlKTtcbiAgICB2YXIgZGlzdGFuY2UgPSB2RW50cnkuZGlzdGFuY2UgKyB3ZWlnaHQ7XG5cbiAgICBpZiAod2VpZ2h0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgXCJCYWQgZWRnZTogXCIgKyBlZGdlICsgXCIgV2VpZ2h0OiBcIiArIHdlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKGRpc3RhbmNlIDwgd0VudHJ5LmRpc3RhbmNlKSB7XG4gICAgICB3RW50cnkuZGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIHdFbnRyeS5wcmVkZWNlc3NvciA9IHY7XG4gICAgICBwcS5kZWNyZWFzZSh3LCBkaXN0YW5jZSk7XG4gICAgfVxuICB9O1xuXG4gIGcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgZGlzdGFuY2UgPSB2ID09PSBzb3VyY2UgPyAwIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIHJlc3VsdHNbdl0gPSB7IGRpc3RhbmNlOiBkaXN0YW5jZSB9O1xuICAgIHBxLmFkZCh2LCBkaXN0YW5jZSk7XG4gIH0pO1xuXG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIHZFbnRyeSA9IHJlc3VsdHNbdl07XG4gICAgaWYgKHZFbnRyeS5kaXN0YW5jZSA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBlZGdlRm4odikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgdGFyamFuID0gcmVxdWlyZShcIi4vdGFyamFuXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRDeWNsZXM7XG5cbmZ1bmN0aW9uIGZpbmRDeWNsZXMoZykge1xuICByZXR1cm4gXy5maWx0ZXIodGFyamFuKGcpLCBmdW5jdGlvbihjbXB0KSB7XG4gICAgcmV0dXJuIGNtcHQubGVuZ3RoID4gMSB8fCAoY21wdC5sZW5ndGggPT09IDEgJiYgZy5oYXNFZGdlKGNtcHRbMF0sIGNtcHRbMF0pKTtcbiAgfSk7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZmxveWRXYXJzaGFsbDtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGcsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkZsb3lkV2Fyc2hhbGwoZyxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBub2RlcyA9IGcubm9kZXMoKTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICByZXN1bHRzW3ZdID0ge307XG4gICAgcmVzdWx0c1t2XVt2XSA9IHsgZGlzdGFuY2U6IDAgfTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcbiAgICAgIGlmICh2ICE9PSB3KSB7XG4gICAgICAgIHJlc3VsdHNbdl1bd10gPSB7IGRpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlZGdlRm4odikuZm9yRWFjaChmdW5jdGlvbihlZGdlKSB7XG4gICAgICB2YXIgdyA9IGVkZ2UudiA9PT0gdiA/IGVkZ2UudyA6IGVkZ2UudjtcbiAgICAgIHZhciBkID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogZCwgcHJlZGVjZXNzb3I6IHYgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgdmFyIHJvd0sgPSByZXN1bHRzW2tdO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgdmFyIHJvd0kgPSByZXN1bHRzW2ldO1xuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihqKSB7XG4gICAgICAgIHZhciBpayA9IHJvd0lba107XG4gICAgICAgIHZhciBraiA9IHJvd0tbal07XG4gICAgICAgIHZhciBpaiA9IHJvd0lbal07XG4gICAgICAgIHZhciBhbHREaXN0YW5jZSA9IGlrLmRpc3RhbmNlICsga2ouZGlzdGFuY2U7XG4gICAgICAgIGlmIChhbHREaXN0YW5jZSA8IGlqLmRpc3RhbmNlKSB7XG4gICAgICAgICAgaWouZGlzdGFuY2UgPSBhbHREaXN0YW5jZTtcbiAgICAgICAgICBpai5wcmVkZWNlc3NvciA9IGtqLnByZWRlY2Vzc29yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgY29tcG9uZW50czogcmVxdWlyZShcIi4vY29tcG9uZW50c1wiKSxcbiAgZGlqa3N0cmE6IHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpLFxuICBkaWprc3RyYUFsbDogcmVxdWlyZShcIi4vZGlqa3N0cmEtYWxsXCIpLFxuICBmaW5kQ3ljbGVzOiByZXF1aXJlKFwiLi9maW5kLWN5Y2xlc1wiKSxcbiAgZmxveWRXYXJzaGFsbDogcmVxdWlyZShcIi4vZmxveWQtd2Fyc2hhbGxcIiksXG4gIGlzQWN5Y2xpYzogcmVxdWlyZShcIi4vaXMtYWN5Y2xpY1wiKSxcbiAgcG9zdG9yZGVyOiByZXF1aXJlKFwiLi9wb3N0b3JkZXJcIiksXG4gIHByZW9yZGVyOiByZXF1aXJlKFwiLi9wcmVvcmRlclwiKSxcbiAgcHJpbTogcmVxdWlyZShcIi4vcHJpbVwiKSxcbiAgdGFyamFuOiByZXF1aXJlKFwiLi90YXJqYW5cIiksXG4gIHRvcHNvcnQ6IHJlcXVpcmUoXCIuL3RvcHNvcnRcIilcbn07XG4iLCJ2YXIgdG9wc29ydCA9IHJlcXVpcmUoXCIuL3RvcHNvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBY3ljbGljO1xuXG5mdW5jdGlvbiBpc0FjeWNsaWMoZykge1xuICB0cnkge1xuICAgIHRvcHNvcnQoZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHRvcHNvcnQuQ3ljbGVFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiIsInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zdG9yZGVyO1xuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwb3N0XCIpO1xufVxuIiwidmFyIGRmcyA9IHJlcXVpcmUoXCIuL2Rmc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcmVvcmRlcjtcblxuZnVuY3Rpb24gcHJlb3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwcmVcIik7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhcIik7XG52YXIgUHJpb3JpdHlRdWV1ZSA9IHJlcXVpcmUoXCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByaW07XG5cbmZ1bmN0aW9uIHByaW0oZywgd2VpZ2h0RnVuYykge1xuICB2YXIgcmVzdWx0ID0gbmV3IEdyYXBoKCk7XG4gIHZhciBwYXJlbnRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2O1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgdmFyIHByaSA9IHBxLnByaW9yaXR5KHcpO1xuICAgIGlmIChwcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGVkZ2VXZWlnaHQgPSB3ZWlnaHRGdW5jKGVkZ2UpO1xuICAgICAgaWYgKGVkZ2VXZWlnaHQgPCBwcmkpIHtcbiAgICAgICAgcGFyZW50c1t3XSA9IHY7XG4gICAgICAgIHBxLmRlY3JlYXNlKHcsIGVkZ2VXZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChnLm5vZGVDb3VudCgpID09PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBwcS5hZGQodiwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICByZXN1bHQuc2V0Tm9kZSh2KTtcbiAgfSk7XG5cbiAgLy8gU3RhcnQgZnJvbSBhbiBhcmJpdHJhcnkgbm9kZVxuICBwcS5kZWNyZWFzZShnLm5vZGVzKClbMF0sIDApO1xuXG4gIHZhciBpbml0ID0gZmFsc2U7XG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIGlmIChfLmhhcyhwYXJlbnRzLCB2KSkge1xuICAgICAgcmVzdWx0LnNldEVkZ2UodiwgcGFyZW50c1t2XSk7XG4gICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiBcIiArIGcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGVFZGdlcyh2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkID0ge307IC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW107XG4gICAgICB2YXIgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvcHNvcnQ7XG50b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uID0gQ3ljbGVFeGNlcHRpb247XG5cbmZ1bmN0aW9uIHRvcHNvcnQoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc3RhY2sgPSB7fTtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiB2aXNpdChub2RlKSB7XG4gICAgaWYgKF8uaGFzKHN0YWNrLCBub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCBub2RlKSkge1xuICAgICAgc3RhY2tbbm9kZV0gPSB0cnVlO1xuICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7XG4gICAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksIHZpc2l0KTtcbiAgICAgIGRlbGV0ZSBzdGFja1tub2RlXTtcbiAgICAgIHJlc3VsdHMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBfLmVhY2goZy5zaW5rcygpLCB2aXNpdCk7XG5cbiAgaWYgKF8uc2l6ZSh2aXNpdGVkKSAhPT0gZy5ub2RlQ291bnQoKSkge1xuICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIEN5Y2xlRXhjZXB0aW9uKCkge31cbkN5Y2xlRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOyAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEVycm9yIHRvIHBhc3MgdGVzdGluZyIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcmlvcml0eVF1ZXVlO1xuXG4vKipcbiAqIEEgbWluLXByaW9yaXR5IHF1ZXVlIGRhdGEgc3RydWN0dXJlLiBUaGlzIGFsZ29yaXRobSBpcyBkZXJpdmVkIGZyb20gQ29ybWVuLFxuICogZXQgYWwuLCBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuIFRoZSBiYXNpYyBpZGVhIG9mIGEgbWluLXByaW9yaXR5XG4gKiBxdWV1ZSBpcyB0aGF0IHlvdSBjYW4gZWZmaWNpZW50bHkgKGluIE8oMSkgdGltZSkgZ2V0IHRoZSBzbWFsbGVzdCBrZXkgaW5cbiAqIHRoZSBxdWV1ZS4gQWRkaW5nIGFuZCByZW1vdmluZyBlbGVtZW50cyB0YWtlcyBPKGxvZyBuKSB0aW1lLiBBIGtleSBjYW5cbiAqIGhhdmUgaXRzIHByaW9yaXR5IGRlY3JlYXNlZCBpbiBPKGxvZyBuKSB0aW1lLlxuICovXG5mdW5jdGlvbiBQcmlvcml0eVF1ZXVlKCkge1xuICB0aGlzLl9hcnIgPSBbXTtcbiAgdGhpcy5fa2V5SW5kaWNlcyA9IHt9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBrZXlzIHRoYXQgYXJlIGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obilgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2Fyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5rZXk7IH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiAqKmtleSoqIGlzIGluIHRoZSBxdWV1ZSBhbmQgYGZhbHNlYCBpZiBub3QuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGtleSkge1xuICByZXR1cm4gXy5oYXModGhpcy5fa2V5SW5kaWNlcywga2V5KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiouIElmICoqa2V5KiogaXMgbm90IHByZXNlbnQgaW4gdGhlIHF1ZXVlXG4gKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgdW5kZWZpbmVkYC4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wcmlvcml0eSA9IGZ1bmN0aW9uKGtleSkge1xuICB2YXIgaW5kZXggPSB0aGlzLl9rZXlJbmRpY2VzW2tleV07XG4gIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5IGZvciB0aGUgbWluaW11bSBlbGVtZW50IGluIHRoaXMgcXVldWUuIElmIHRoZSBxdWV1ZSBpc1xuICogZW1wdHkgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYW4gRXJyb3IuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuc2l6ZSgpID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUXVldWUgdW5kZXJmbG93XCIpO1xuICB9XG4gIHJldHVybiB0aGlzLl9hcnJbMF0ua2V5O1xufTtcblxuLyoqXG4gKiBJbnNlcnRzIGEgbmV3IGtleSBpbnRvIHRoZSBwcmlvcml0eSBxdWV1ZS4gSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cyBpblxuICogdGhlIHF1ZXVlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgOyBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gYHRydWVgLlxuICogVGFrZXMgYE8obilgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IHRvIGFkZFxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBpbml0aWFsIHByaW9yaXR5IGZvciB0aGUga2V5XG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgaWYgKCFfLmhhcyhrZXlJbmRpY2VzLCBrZXkpKSB7XG4gICAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgICB2YXIgaW5kZXggPSBhcnIubGVuZ3RoO1xuICAgIGtleUluZGljZXNba2V5XSA9IGluZGV4O1xuICAgIGFyci5wdXNoKHtrZXk6IGtleSwgcHJpb3JpdHk6IHByaW9yaXR5fSk7XG4gICAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbmQgcmV0dXJucyB0aGUgc21hbGxlc3Qga2V5IGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obG9nIG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fc3dhcCgwLCB0aGlzLl9hcnIubGVuZ3RoIC0gMSk7XG4gIHZhciBtaW4gPSB0aGlzLl9hcnIucG9wKCk7XG4gIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW21pbi5rZXldO1xuICB0aGlzLl9oZWFwaWZ5KDApO1xuICByZXR1cm4gbWluLmtleTtcbn07XG5cbi8qKlxuICogRGVjcmVhc2VzIHRoZSBwcmlvcml0eSBmb3IgKiprZXkqKiB0byAqKnByaW9yaXR5KiouIElmIHRoZSBuZXcgcHJpb3JpdHkgaXNcbiAqIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgcHJpb3JpdHksIHRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBFcnJvci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgZm9yIHdoaWNoIHRvIHJhaXNlIHByaW9yaXR5XG4gKiBAcGFyYW0ge051bWJlcn0gcHJpb3JpdHkgdGhlIG5ldyBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5kZWNyZWFzZSA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAocHJpb3JpdHkgPiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBcIiArXG4gICAgICAgIFwiS2V5OiBcIiArIGtleSArIFwiIE9sZDogXCIgKyB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ICsgXCIgTmV3OiBcIiArIHByaW9yaXR5KTtcbiAgfVxuICB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9oZWFwaWZ5ID0gZnVuY3Rpb24oaSkge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIgbCA9IDIgKiBpO1xuICB2YXIgciA9IGwgKyAxO1xuICB2YXIgbGFyZ2VzdCA9IGk7XG4gIGlmIChsIDwgYXJyLmxlbmd0aCkge1xuICAgIGxhcmdlc3QgPSBhcnJbbF0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyBsIDogbGFyZ2VzdDtcbiAgICBpZiAociA8IGFyci5sZW5ndGgpIHtcbiAgICAgIGxhcmdlc3QgPSBhcnJbcl0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyByIDogbGFyZ2VzdDtcbiAgICB9XG4gICAgaWYgKGxhcmdlc3QgIT09IGkpIHtcbiAgICAgIHRoaXMuX3N3YXAoaSwgbGFyZ2VzdCk7XG4gICAgICB0aGlzLl9oZWFwaWZ5KGxhcmdlc3QpO1xuICAgIH1cbiAgfVxufTtcblxuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuX2RlY3JlYXNlID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIHByaW9yaXR5ID0gYXJyW2luZGV4XS5wcmlvcml0eTtcbiAgdmFyIHBhcmVudDtcbiAgd2hpbGUgKGluZGV4ICE9PSAwKSB7XG4gICAgcGFyZW50ID0gaW5kZXggPj4gMTtcbiAgICBpZiAoYXJyW3BhcmVudF0ucHJpb3JpdHkgPCBwcmlvcml0eSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3N3YXAoaW5kZXgsIHBhcmVudCk7XG4gICAgaW5kZXggPSBwYXJlbnQ7XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9zd2FwID0gZnVuY3Rpb24oaSwgaikge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIga2V5SW5kaWNlcyA9IHRoaXMuX2tleUluZGljZXM7XG4gIHZhciBvcmlnQXJySSA9IGFycltpXTtcbiAgdmFyIG9yaWdBcnJKID0gYXJyW2pdO1xuICBhcnJbaV0gPSBvcmlnQXJySjtcbiAgYXJyW2pdID0gb3JpZ0Fyckk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckoua2V5XSA9IGk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckkua2V5XSA9IGo7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEdyYXBoO1xuXG52YXIgREVGQVVMVF9FREdFX05BTUUgPSBcIlxceDAwXCI7XG52YXIgR1JBUEhfTk9ERSA9IFwiXFx4MDBcIjtcbnZhciBFREdFX0tFWV9ERUxJTSA9IFwiXFx4MDFcIjtcblxuLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6XG4vL1xuLy8gICogTm9kZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBzdHJpbmcgaWRzIGZvciB0aGUgbm9kZXNcbi8vICAqIEVkZ2UgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gXCJlZGdlT2JqXCIsIGVkZ2Ugb2JqZWN0LCB0aGF0IGlzXG4vLyAgICBjb21wb3NlZCBvZiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWRnZToge3YsIHcsIG5hbWV9LlxuLy8gICogSW50ZXJuYWxseSB3ZSB1c2UgYW4gXCJlZGdlSWRcIiwgYSBzdHJpbmdpZmllZCBmb3JtIG9mIHRoZSBlZGdlT2JqLCB0b1xuLy8gICAgcmVmZXJlbmNlIGVkZ2VzLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGxvb2sgdGhlc2Vcbi8vICAgIGVkZ2VzIHVwIGFuZCwgb2JqZWN0IHByb3BlcnRpZXMsIHdoaWNoIGhhdmUgc3RyaW5nIGtleXMsIGFyZSB0aGUgY2xvc2VzdFxuLy8gICAgd2UncmUgZ29pbmcgdG8gZ2V0IHRvIGEgcGVyZm9ybWFudCBoYXNodGFibGUgaW4gSmF2YVNjcmlwdC5cblxuZnVuY3Rpb24gR3JhcGgob3B0cykge1xuICB0aGlzLl9pc0RpcmVjdGVkID0gXy5oYXMob3B0cywgXCJkaXJlY3RlZFwiKSA/IG9wdHMuZGlyZWN0ZWQgOiB0cnVlO1xuICB0aGlzLl9pc011bHRpZ3JhcGggPSBfLmhhcyhvcHRzLCBcIm11bHRpZ3JhcGhcIikgPyBvcHRzLm11bHRpZ3JhcGggOiBmYWxzZTtcbiAgdGhpcy5faXNDb21wb3VuZCA9IF8uaGFzKG9wdHMsIFwiY29tcG91bmRcIikgPyBvcHRzLmNvbXBvdW5kIDogZmFsc2U7XG5cbiAgLy8gTGFiZWwgZm9yIHRoZSBncmFwaCBpdHNlbGZcbiAgdGhpcy5fbGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgbm9kZVxuICB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgZWRnZVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gdiAtPiBsYWJlbFxuICB0aGlzLl9ub2RlcyA9IHt9O1xuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgLy8gdiAtPiBwYXJlbnRcbiAgICB0aGlzLl9wYXJlbnQgPSB7fTtcblxuICAgIC8vIHYgLT4gY2hpbGRyZW5cbiAgICB0aGlzLl9jaGlsZHJlbiA9IHt9O1xuICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdID0ge307XG4gIH1cblxuICAvLyB2IC0+IGVkZ2VPYmpcbiAgdGhpcy5faW4gPSB7fTtcblxuICAvLyB1IC0+IHYgLT4gTnVtYmVyXG4gIHRoaXMuX3ByZWRzID0ge307XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX291dCA9IHt9O1xuXG4gIC8vIHYgLT4gdyAtPiBOdW1iZXJcbiAgdGhpcy5fc3VjcyA9IHt9O1xuXG4gIC8vIGUgLT4gZWRnZU9ialxuICB0aGlzLl9lZGdlT2JqcyA9IHt9O1xuXG4gIC8vIGUgLT4gbGFiZWxcbiAgdGhpcy5fZWRnZUxhYmVscyA9IHt9O1xufVxuXG4vKiBOdW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fbm9kZUNvdW50ID0gMDtcblxuLyogTnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX2VkZ2VDb3VudCA9IDA7XG5cblxuLyogPT09IEdyYXBoIGZ1bmN0aW9ucyA9PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLmlzRGlyZWN0ZWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc011bHRpZ3JhcGg7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNDb21wb3VuZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNDb21wb3VuZDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRHcmFwaCA9IGZ1bmN0aW9uKGxhYmVsKSB7XG4gIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9sYWJlbDtcbn07XG5cblxuLyogPT09IE5vZGUgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9ub2RlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8ua2V5cyh0aGlzLl9ub2Rlcyk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHJldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5pc0VtcHR5KHNlbGYuX2luW3ZdKTtcbiAgfSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2lua3MgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9vdXRbdl0pO1xuICB9KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXROb2RlcyA9IGZ1bmN0aW9uKHZzLCB2YWx1ZSkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBfLmVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldE5vZGUodiwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldE5vZGUodik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZSA9IGZ1bmN0aW9uKHYsIHZhbHVlKSB7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX25vZGVzW3ZdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fbm9kZXNbdl0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHYpO1xuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRoaXMuX3BhcmVudFt2XSA9IEdSQVBIX05PREU7XG4gICAgdGhpcy5fY2hpbGRyZW5bdl0gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXVt2XSA9IHRydWU7XG4gIH1cbiAgdGhpcy5faW5bdl0gPSB7fTtcbiAgdGhpcy5fcHJlZHNbdl0gPSB7fTtcbiAgdGhpcy5fb3V0W3ZdID0ge307XG4gIHRoaXMuX3N1Y3Nbdl0gPSB7fTtcbiAgKyt0aGlzLl9ub2RlQ291bnQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGUgPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiB0aGlzLl9ub2Rlc1t2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gXy5oYXModGhpcy5fbm9kZXMsIHYpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnJlbW92ZU5vZGUgPSAgZnVuY3Rpb24odikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICB2YXIgcmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKGUpIHsgc2VsZi5yZW1vdmVFZGdlKHNlbGYuX2VkZ2VPYmpzW2VdKTsgfTtcbiAgICBkZWxldGUgdGhpcy5fbm9kZXNbdl07XG4gICAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFt2XTtcbiAgICAgIF8uZWFjaCh0aGlzLmNoaWxkcmVuKHYpLCBmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICBzZWxmLnNldFBhcmVudChjaGlsZCk7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt2XTtcbiAgICB9XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9pblt2XSksIHJlbW92ZUVkZ2UpO1xuICAgIGRlbGV0ZSB0aGlzLl9pblt2XTtcbiAgICBkZWxldGUgdGhpcy5fcHJlZHNbdl07XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9vdXRbdl0pLCByZW1vdmVFZGdlKTtcbiAgICBkZWxldGUgdGhpcy5fb3V0W3ZdO1xuICAgIGRlbGV0ZSB0aGlzLl9zdWNzW3ZdO1xuICAgIC0tdGhpcy5fbm9kZUNvdW50O1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhcmVudCA9IGZ1bmN0aW9uKHYsIHBhcmVudCkge1xuICBpZiAoIXRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaFwiKTtcbiAgfVxuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICBwYXJlbnQgPSBHUkFQSF9OT0RFO1xuICB9IGVsc2Uge1xuICAgIC8vIENvZXJjZSBwYXJlbnQgdG8gc3RyaW5nXG4gICAgcGFyZW50ICs9IFwiXCI7XG4gICAgZm9yICh2YXIgYW5jZXN0b3IgPSBwYXJlbnQ7XG4gICAgICAhXy5pc1VuZGVmaW5lZChhbmNlc3Rvcik7XG4gICAgICBhbmNlc3RvciA9IHRoaXMucGFyZW50KGFuY2VzdG9yKSkge1xuICAgICAgaWYgKGFuY2VzdG9yID09PSB2KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNldHRpbmcgXCIgKyBwYXJlbnQrIFwiIGFzIHBhcmVudCBvZiBcIiArIHYgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIgd291bGQgY3JlYXRlIGEgY3ljbGVcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXROb2RlKHBhcmVudCk7XG4gIH1cblxuICB0aGlzLnNldE5vZGUodik7XG4gIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICB0aGlzLl9wYXJlbnRbdl0gPSBwYXJlbnQ7XG4gIHRoaXMuX2NoaWxkcmVuW3BhcmVudF1bdl0gPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QgPSBmdW5jdGlvbih2KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdl1dW3ZdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnBhcmVudCA9IGZ1bmN0aW9uKHYpIHtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5fcGFyZW50W3ZdO1xuICAgIGlmIChwYXJlbnQgIT09IEdSQVBIX05PREUpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuY2hpbGRyZW4gPSBmdW5jdGlvbih2KSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHYpKSB7XG4gICAgdiA9IEdSQVBIX05PREU7XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgcmV0dXJuIF8ua2V5cyhjaGlsZHJlbik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHYgPT09IEdSQVBIX05PREUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpO1xuICB9IGVsc2UgaWYgKHRoaXMuaGFzTm9kZSh2KSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnByZWRlY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHByZWRzViA9IHRoaXMuX3ByZWRzW3ZdO1xuICBpZiAocHJlZHNWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhwcmVkc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc3VjY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHN1Y3NWID0gdGhpcy5fc3Vjc1t2XTtcbiAgaWYgKHN1Y3NWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhzdWNzVik7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5uZWlnaGJvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkcyA9IHRoaXMucHJlZGVjZXNzb3JzKHYpO1xuICBpZiAocHJlZHMpIHtcbiAgICByZXR1cm4gXy51bmlvbihwcmVkcywgdGhpcy5zdWNjZXNzb3JzKHYpKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTGVhZiA9IGZ1bmN0aW9uICh2KSB7XG4gIHZhciBuZWlnaGJvcnM7XG4gIGlmICh0aGlzLmlzRGlyZWN0ZWQoKSkge1xuICAgIG5laWdoYm9ycyA9IHRoaXMuc3VjY2Vzc29ycyh2KTtcbiAgfSBlbHNlIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLm5laWdoYm9ycyh2KTtcbiAgfVxuICByZXR1cm4gbmVpZ2hib3JzLmxlbmd0aCA9PT0gMDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5maWx0ZXJOb2RlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xuICB2YXIgY29weSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHtcbiAgICBkaXJlY3RlZDogdGhpcy5faXNEaXJlY3RlZCxcbiAgICBtdWx0aWdyYXBoOiB0aGlzLl9pc011bHRpZ3JhcGgsXG4gICAgY29tcG91bmQ6IHRoaXMuX2lzQ29tcG91bmRcbiAgfSk7XG5cbiAgY29weS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgXy5lYWNoKHRoaXMuX25vZGVzLCBmdW5jdGlvbih2YWx1ZSwgdikge1xuICAgIGlmIChmaWx0ZXIodikpIHtcbiAgICAgIGNvcHkuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcblxuICBfLmVhY2godGhpcy5fZWRnZU9ianMsIGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoY29weS5oYXNOb2RlKGUudikgJiYgY29weS5oYXNOb2RlKGUudykpIHtcbiAgICAgIGNvcHkuc2V0RWRnZShlLCBzZWxmLmVkZ2UoZSkpO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHBhcmVudHMgPSB7fTtcbiAgZnVuY3Rpb24gZmluZFBhcmVudCh2KSB7XG4gICAgdmFyIHBhcmVudCA9IHNlbGYucGFyZW50KHYpO1xuICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCB8fCBjb3B5Lmhhc05vZGUocGFyZW50KSkge1xuICAgICAgcGFyZW50c1t2XSA9IHBhcmVudDtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfSBlbHNlIGlmIChwYXJlbnQgaW4gcGFyZW50cykge1xuICAgICAgcmV0dXJuIHBhcmVudHNbcGFyZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIF8uZWFjaChjb3B5Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICAgIGNvcHkuc2V0UGFyZW50KHYsIGZpbmRQYXJlbnQodikpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvcHk7XG59O1xuXG4vKiA9PT0gRWRnZSBmdW5jdGlvbnMgPT09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbCA9IGZ1bmN0aW9uKG5ld0RlZmF1bHQpIHtcbiAgaWYgKCFfLmlzRnVuY3Rpb24obmV3RGVmYXVsdCkpIHtcbiAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgfVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBuZXdEZWZhdWx0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2VkZ2VDb3VudDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gXy52YWx1ZXModGhpcy5fZWRnZU9ianMpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhdGggPSBmdW5jdGlvbih2cywgdmFsdWUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgXy5yZWR1Y2UodnMsIGZ1bmN0aW9uKHYsIHcpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldEVkZ2UodiwgdywgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldEVkZ2Uodiwgdyk7XG4gICAgfVxuICAgIHJldHVybiB3O1xuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKlxuICogc2V0RWRnZSh2LCB3LCBbdmFsdWUsIFtuYW1lXV0pXG4gKiBzZXRFZGdlKHsgdiwgdywgW25hbWVdIH0sIFt2YWx1ZV0pXG4gKi9cbkdyYXBoLnByb3RvdHlwZS5zZXRFZGdlID0gZnVuY3Rpb24oKSB7XG4gIHZhciB2LCB3LCBuYW1lLCB2YWx1ZTtcbiAgdmFyIHZhbHVlU3BlY2lmaWVkID0gZmFsc2U7XG4gIHZhciBhcmcwID0gYXJndW1lbnRzWzBdO1xuXG4gIGlmICh0eXBlb2YgYXJnMCA9PT0gXCJvYmplY3RcIiAmJiBhcmcwICE9PSBudWxsICYmIFwidlwiIGluIGFyZzApIHtcbiAgICB2ID0gYXJnMC52O1xuICAgIHcgPSBhcmcwLnc7XG4gICAgbmFtZSA9IGFyZzAubmFtZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMV07XG4gICAgICB2YWx1ZVNwZWNpZmllZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHYgPSBhcmcwO1xuICAgIHcgPSBhcmd1bWVudHNbMV07XG4gICAgbmFtZSA9IGFyZ3VtZW50c1szXTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzJdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHYgPSBcIlwiICsgdjtcbiAgdyA9IFwiXCIgKyB3O1xuICBpZiAoIV8uaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICBuYW1lID0gXCJcIiArIG5hbWU7XG4gIH1cblxuICB2YXIgZSA9IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgaWYgKF8uaGFzKHRoaXMuX2VkZ2VMYWJlbHMsIGUpKSB7XG4gICAgaWYgKHZhbHVlU3BlY2lmaWVkKSB7XG4gICAgICB0aGlzLl9lZGdlTGFiZWxzW2VdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpICYmICF0aGlzLl9pc011bHRpZ3JhcGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IGEgbmFtZWQgZWRnZSB3aGVuIGlzTXVsdGlncmFwaCA9IGZhbHNlXCIpO1xuICB9XG5cbiAgLy8gSXQgZGlkbid0IGV4aXN0LCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBpdC5cbiAgLy8gRmlyc3QgZW5zdXJlIHRoZSBub2RlcyBleGlzdC5cbiAgdGhpcy5zZXROb2RlKHYpO1xuICB0aGlzLnNldE5vZGUodyk7XG5cbiAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlU3BlY2lmaWVkID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4odiwgdywgbmFtZSk7XG5cbiAgdmFyIGVkZ2VPYmogPSBlZGdlQXJnc1RvT2JqKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICAvLyBFbnN1cmUgd2UgYWRkIHVuZGlyZWN0ZWQgZWRnZXMgaW4gYSBjb25zaXN0ZW50IHdheS5cbiAgdiA9IGVkZ2VPYmoudjtcbiAgdyA9IGVkZ2VPYmoudztcblxuICBPYmplY3QuZnJlZXplKGVkZ2VPYmopO1xuICB0aGlzLl9lZGdlT2Jqc1tlXSA9IGVkZ2VPYmo7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3ByZWRzW3ddLCB2KTtcbiAgaW5jcmVtZW50T3JJbml0RW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gIHRoaXMuX2luW3ddW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fb3V0W3ZdW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fZWRnZUNvdW50Kys7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiB0aGlzLl9lZGdlTGFiZWxzW2VdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmhhc0VkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiBfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5yZW1vdmVFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICB2YXIgZWRnZSA9IHRoaXMuX2VkZ2VPYmpzW2VdO1xuICBpZiAoZWRnZSkge1xuICAgIHYgPSBlZGdlLnY7XG4gICAgdyA9IGVkZ2UudztcbiAgICBkZWxldGUgdGhpcy5fZWRnZUxhYmVsc1tlXTtcbiAgICBkZWxldGUgdGhpcy5fZWRnZU9ianNbZV07XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9zdWNzW3ZdLCB3KTtcbiAgICBkZWxldGUgdGhpcy5faW5bd11bZV07XG4gICAgZGVsZXRlIHRoaXMuX291dFt2XVtlXTtcbiAgICB0aGlzLl9lZGdlQ291bnQtLTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pbkVkZ2VzID0gZnVuY3Rpb24odiwgdSkge1xuICB2YXIgaW5WID0gdGhpcy5faW5bdl07XG4gIGlmIChpblYpIHtcbiAgICB2YXIgZWRnZXMgPSBfLnZhbHVlcyhpblYpO1xuICAgIGlmICghdSkge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudiA9PT0gdTsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5vdXRFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIG91dFYgPSB0aGlzLl9vdXRbdl07XG4gIGlmIChvdXRWKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMob3V0Vik7XG4gICAgaWYgKCF3KSB7XG4gICAgICByZXR1cm4gZWRnZXM7XG4gICAgfVxuICAgIHJldHVybiBfLmZpbHRlcihlZGdlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gZWRnZS53ID09PSB3OyB9KTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIGluRWRnZXMgPSB0aGlzLmluRWRnZXModiwgdyk7XG4gIGlmIChpbkVkZ2VzKSB7XG4gICAgcmV0dXJuIGluRWRnZXMuY29uY2F0KHRoaXMub3V0RWRnZXModiwgdykpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBpbmNyZW1lbnRPckluaXRFbnRyeShtYXAsIGspIHtcbiAgaWYgKG1hcFtrXSkge1xuICAgIG1hcFtrXSsrO1xuICB9IGVsc2Uge1xuICAgIG1hcFtrXSA9IDE7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVjcmVtZW50T3JSZW1vdmVFbnRyeShtYXAsIGspIHtcbiAgaWYgKCEtLW1hcFtrXSkgeyBkZWxldGUgbWFwW2tdOyB9XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiB2ICsgRURHRV9LRVlfREVMSU0gKyB3ICsgRURHRV9LRVlfREVMSU0gK1xuICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVkKG5hbWUpID8gREVGQVVMVF9FREdFX05BTUUgOiBuYW1lKTtcbn1cblxuZnVuY3Rpb24gZWRnZUFyZ3NUb09iaihpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHZhciBlZGdlT2JqID0gIHsgdjogdiwgdzogdyB9O1xuICBpZiAobmFtZSkge1xuICAgIGVkZ2VPYmoubmFtZSA9IG5hbWU7XG4gIH1cbiAgcmV0dXJuIGVkZ2VPYmo7XG59XG5cbmZ1bmN0aW9uIGVkZ2VPYmpUb0lkKGlzRGlyZWN0ZWQsIGVkZ2VPYmopIHtcbiAgcmV0dXJuIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqLnYsIGVkZ2VPYmoudywgZWRnZU9iai5uYW1lKTtcbn1cbiIsIi8vIEluY2x1ZGVzIG9ubHkgdGhlIFwiY29yZVwiIG9mIGdyYXBobGliXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IHJlcXVpcmUoXCIuL2dyYXBoXCIpLFxuICB2ZXJzaW9uOiByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG59O1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHdyaXRlOiB3cml0ZSxcbiAgcmVhZDogcmVhZFxufTtcblxuZnVuY3Rpb24gd3JpdGUoZykge1xuICB2YXIganNvbiA9IHtcbiAgICBvcHRpb25zOiB7XG4gICAgICBkaXJlY3RlZDogZy5pc0RpcmVjdGVkKCksXG4gICAgICBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpLFxuICAgICAgY29tcG91bmQ6IGcuaXNDb21wb3VuZCgpXG4gICAgfSxcbiAgICBub2Rlczogd3JpdGVOb2RlcyhnKSxcbiAgICBlZGdlczogd3JpdGVFZGdlcyhnKVxuICB9O1xuICBpZiAoIV8uaXNVbmRlZmluZWQoZy5ncmFwaCgpKSkge1xuICAgIGpzb24udmFsdWUgPSBfLmNsb25lKGcuZ3JhcGgoKSk7XG4gIH1cbiAgcmV0dXJuIGpzb247XG59XG5cbmZ1bmN0aW9uIHdyaXRlTm9kZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGVWYWx1ZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcGFyZW50ID0gZy5wYXJlbnQodik7XG4gICAgdmFyIG5vZGUgPSB7IHY6IHYgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQobm9kZVZhbHVlKSkge1xuICAgICAgbm9kZS52YWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRWRnZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2VWYWx1ZSA9IGcuZWRnZShlKTtcbiAgICB2YXIgZWRnZSA9IHsgdjogZS52LCB3OiBlLncgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZS5uYW1lKSkge1xuICAgICAgZWRnZS5uYW1lID0gZS5uYW1lO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZWRnZVZhbHVlKSkge1xuICAgICAgZWRnZS52YWx1ZSA9IGVkZ2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGVkZ2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkKGpzb24pIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoanNvbi5vcHRpb25zKS5zZXRHcmFwaChqc29uLnZhbHVlKTtcbiAgXy5lYWNoKGpzb24ubm9kZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZy5zZXROb2RlKGVudHJ5LnYsIGVudHJ5LnZhbHVlKTtcbiAgICBpZiAoZW50cnkucGFyZW50KSB7XG4gICAgICBnLnNldFBhcmVudChlbnRyeS52LCBlbnRyeS5wYXJlbnQpO1xuICAgIH1cbiAgfSk7XG4gIF8uZWFjaChqc29uLmVkZ2VzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0RWRnZSh7IHY6IGVudHJ5LnYsIHc6IGVudHJ5LncsIG5hbWU6IGVudHJ5Lm5hbWUgfSwgZW50cnkudmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGc7XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0ge1xuICAgICAgY2xvbmU6IHJlcXVpcmUoXCJsb2Rhc2gvY2xvbmVcIiksXG4gICAgICBjb25zdGFudDogcmVxdWlyZShcImxvZGFzaC9jb25zdGFudFwiKSxcbiAgICAgIGVhY2g6IHJlcXVpcmUoXCJsb2Rhc2gvZWFjaFwiKSxcbiAgICAgIGZpbHRlcjogcmVxdWlyZShcImxvZGFzaC9maWx0ZXJcIiksXG4gICAgICBoYXM6ICByZXF1aXJlKFwibG9kYXNoL2hhc1wiKSxcbiAgICAgIGlzQXJyYXk6IHJlcXVpcmUoXCJsb2Rhc2gvaXNBcnJheVwiKSxcbiAgICAgIGlzRW1wdHk6IHJlcXVpcmUoXCJsb2Rhc2gvaXNFbXB0eVwiKSxcbiAgICAgIGlzRnVuY3Rpb246IHJlcXVpcmUoXCJsb2Rhc2gvaXNGdW5jdGlvblwiKSxcbiAgICAgIGlzVW5kZWZpbmVkOiByZXF1aXJlKFwibG9kYXNoL2lzVW5kZWZpbmVkXCIpLFxuICAgICAga2V5czogcmVxdWlyZShcImxvZGFzaC9rZXlzXCIpLFxuICAgICAgbWFwOiByZXF1aXJlKFwibG9kYXNoL21hcFwiKSxcbiAgICAgIHJlZHVjZTogcmVxdWlyZShcImxvZGFzaC9yZWR1Y2VcIiksXG4gICAgICBzaXplOiByZXF1aXJlKFwibG9kYXNoL3NpemVcIiksXG4gICAgICB0cmFuc2Zvcm06IHJlcXVpcmUoXCJsb2Rhc2gvdHJhbnNmb3JtXCIpLFxuICAgICAgdW5pb246IHJlcXVpcmUoXCJsb2Rhc2gvdW5pb25cIiksXG4gICAgICB2YWx1ZXM6IHJlcXVpcmUoXCJsb2Rhc2gvdmFsdWVzXCIpXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICcyLjEuOCc7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iLCIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHk7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwidmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UmVkdWNlO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iLCJ2YXIgYmFzZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhbiBBU0NJSSBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xudmFyIGFzY2lpU2l6ZSA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlTaXplO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NJbmRleE9mO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduSW47XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgY3JlYXRlQmFzZUVhY2ggPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICovXG52YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRWFjaDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICkpIHtcbiAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUV4dHJlbXVtO1xuIiwidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaWx0ZXI7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwidmFyIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvck93bjtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gIH1cbiAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXQ7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldEFsbEtleXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR3Q7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhcztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXNJbjtcbiIsInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJc05hTiA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hTicpLFxuICAgIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXA7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hTjtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCJ2YXIgYmFzZU1hdGNoZXMgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlcycpLFxuICAgIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICovXG5mdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJdGVyYXRlZTtcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTHQ7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXA7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpLFxuICAgIGdldCA9IHJlcXVpcmUoJy4vZ2V0JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5O1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAgYmFzZU1lcmdlRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZURlZXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2U7XG4iLCJ2YXIgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpLFxuICAgIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2VEZWVwO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VNYXAgPSByZXF1aXJlKCcuL19iYXNlTWFwJyksXG4gICAgYmFzZVNvcnRCeSA9IHJlcXVpcmUoJy4vX2Jhc2VTb3J0QnknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjb21wYXJlTXVsdGlwbGUgPSByZXF1aXJlKCcuL19jb21wYXJlTXVsdGlwbGUnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgaWYgKGlzQXJyYXkoaXRlcmF0ZWUpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gIH1cblxuICB2YXIgaW5kZXggPSAtMTtcbiAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoYmFzZUl0ZXJhdGVlKSk7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gIH0pO1xuXG4gIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU9yZGVyQnk7XG4iLCJ2YXIgYmFzZVBpY2tCeSA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrQnknKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrO1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICB2YWx1ZSA9IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcblxuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrQnk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlEZWVwO1xuIiwiLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUNlaWwgPSBNYXRoLmNlaWwsXG4gICAgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZ2VgIGFuZCBgXy5yYW5nZVJpZ2h0YCB3aGljaCBkb2Vzbid0XG4gKiBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RlcCBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICovXG5mdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KG5hdGl2ZUNlaWwoKGVuZCAtIHN0YXJ0KSAvIChzdGVwIHx8IDEpKSwgMCksXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHJlc3VsdFtmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XSA9IHN0YXJ0O1xuICAgIHN0YXJ0ICs9IHN0ZXA7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmFuZ2U7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAqICBgY29sbGVjdGlvbmAgYXMgdGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpbml0QWNjdW1cbiAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlZHVjZTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVzdDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxLFxuICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKSxcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG5lc3RlZFtrZXldO1xuICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpc09iamVjdChvYmpWYWx1ZSlcbiAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICB9XG4gICAgfVxuICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgbmVzdGVkID0gbmVzdGVkW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0O1xuIiwidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyksXG4gICAgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgcmVzdWx0ID0gW10sXG4gICAgICBzZWVuID0gcmVzdWx0O1xuXG4gIGlmIChjb21wYXJhdG9yKSB7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICB9XG4gIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgaWYgKHNldCkge1xuICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICB9XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCIvKipcbiAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVppcE9iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RGdW5jdGlvbjtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsIi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIiwidmFyIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIGNvbGxlY3Rpb24gPSBrZXlzKGNvbGxlY3Rpb24pO1xuICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCk7XG4gICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUZpbmQ7XG4iLCJ2YXIgYmFzZVJhbmdlID0gcmVxdWlyZSgnLi9fYmFzZVJhbmdlJyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpLFxuICAgIHRvRmluaXRlID0gcmVxdWlyZSgnLi90b0Zpbml0ZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgXy5yYW5nZWAgb3IgYF8ucmFuZ2VSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJhbmdlKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICBlbmQgPSBzdGVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICB9XG4gICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUmFuZ2U7XG4iLCJ2YXIgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgbm9vcCA9IHJlcXVpcmUoJy4vbm9vcCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlU2V0O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwidmFyIGZsYXR0ZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW4nKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdFJlc3Q7XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hdGNoRGF0YTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG52YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNVbmljb2RlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZURhdGFWaWV3ID0gcmVxdWlyZSgnLi9fY2xvbmVEYXRhVmlldycpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGbGF0dGVuYWJsZTtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleWFibGU7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaWN0Q29tcGFyYWJsZTtcbiIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgbWVtb2l6ZSA9IHJlcXVpcmUoJy4vbWVtb2l6ZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG52YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICBjYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9KTtcblxuICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZUNhcHBlZDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzYWZlR2V0O1xuIiwiLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVBZGQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3J0T3V0O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiIsInZhciBhc2NpaVNpemUgPSByZXF1aXJlKCcuL19hc2NpaVNpemUnKSxcbiAgICBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9faGFzVW5pY29kZScpLFxuICAgIHVuaWNvZGVTaXplID0gcmVxdWlyZSgnLi9fdW5pY29kZVNpemUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBpbiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nU2l6ZShzdHJpbmcpIHtcbiAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgID8gdW5pY29kZVNpemUoc3RyaW5nKVxuICAgIDogYXNjaWlTaXplKHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nU2l6ZTtcbiIsInZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9QYXRoO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0tleTtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhIFVuaWNvZGUgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHVuaWNvZGVTaXplKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gcmVVbmljb2RlLmxhc3RJbmRleCA9IDA7XG4gIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgKytyZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmljb2RlU2l6ZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcDtcbiIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAqIHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5kZWZhdWx0c0RlZXBcbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICovXG52YXIgZGVmYXVsdHMgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aDtcbiAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgIGxlbmd0aCA9IDE7XG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgIHZhciBwcm9wc0xlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZvckVhY2gnKTtcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBiYXNlRmlsdGVyID0gcmVxdWlyZSgnLi9fYmFzZUZpbHRlcicpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiIsInZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLFxuICAgIGZpbmRJbmRleCA9IHJlcXVpcmUoJy4vZmluZEluZGV4Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICovXG52YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIiwidmFyIGJhc2VGaW5kSW5kZXggPSByZXF1aXJlKCcuL19iYXNlRmluZEluZGV4JyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gKiAvLyA9PiAxXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiAyXG4gKi9cbmZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgfVxuICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kSW5kZXg7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpO1xuXG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAqL1xuZnVuY3Rpb24gZmxhdHRlbihhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGFsaWFzIGVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICogQHNlZSBfLmZvckVhY2hSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICpcbiAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGNhc3RGdW5jdGlvbihpdGVyYXRlZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2g7XG4iLCJ2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhblxuICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICogaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjMuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5mb3JJblJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9ySW4ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICA/IG9iamVjdFxuICAgIDogYmFzZUZvcihvYmplY3QsIGNhc3RGdW5jdGlvbihpdGVyYXRlZSksIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9ySW47XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gKiAvLyA9PiAnZGVmYXVsdCdcbiAqL1xuZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldDtcbiIsInZhciBiYXNlSGFzID0gcmVxdWlyZSgnLi9fYmFzZUhhcycpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogeyAnYic6IDIgfSB9O1xuICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG90aGVyLCAnYScpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhcztcbiIsInZhciBiYXNlSGFzSW4gPSByZXF1aXJlKCcuL19iYXNlSGFzSW4nKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzSW47XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlkZW50aXR5O1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwidmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZU9iamVjdDtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsInZhciBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAqXG4gKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAqIHByb3BlcnRpZXMuXG4gKlxuICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRW1wdHkobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KHRydWUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSgxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRW1wdHk7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwidmFyIGJhc2VJc01hcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hcDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3ltYm9sO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNVbmRlZmluZWQ7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsYXN0O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gKiBgXy5ldmVyeWAsIGBfLmZpbHRlcmAsIGBfLm1hcGAsIGBfLm1hcFZhbHVlc2AsIGBfLnJlamVjdGAsIGFuZCBgXy5zb21lYC5cbiAqXG4gKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAqIGBhcnlgLCBgY2h1bmtgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBldmVyeWAsXG4gKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAqIGBzYW1wbGVTaXplYCwgYHNsaWNlYCwgYHNvbWVgLCBgc29ydEJ5YCwgYHNwbGl0YCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAqIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYW5kIGB3b3Jkc2BcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gKiAgIHJldHVybiBuICogbjtcbiAqIH1cbiAqXG4gKiBfLm1hcChbNCwgOF0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XVxuICpcbiAqIF8ubWFwKHsgJ2EnOiA0LCAnYic6IDggfSwgc3F1YXJlKTtcbiAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJyB9XG4gKiBdO1xuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXAodXNlcnMsICd1c2VyJyk7XG4gKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAqL1xuZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gKiBAc2VlIF8ubWFwS2V5c1xuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSB7XG4gKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICogfTtcbiAqXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFZhbHVlcztcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiA4XG4gKlxuICogXy5tYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1heChhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXg7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBiYXNlTWVyZ2UgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2UnKSxcbiAgICBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjUuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0ge1xuICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICogfTtcbiAqXG4gKiB2YXIgb3RoZXIgPSB7XG4gKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gKiB9O1xuICpcbiAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gKi9cbnZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlO1xuIiwidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICogYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE1hdGhcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLm1pbihbXSk7XG4gKiAvLyA9PiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBpZGVudGl0eSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbjtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1pbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBfLm1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cbmZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbkJ5O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi4zLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAqL1xuZnVuY3Rpb24gbm9vcCgpIHtcbiAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBub29wO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwaWNrO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLFxuICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlEZWVwJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbXG4gKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gKiAgIHsgJ2EnOiB7ICdiJzogMSB9IH1cbiAqIF07XG4gKlxuICogXy5tYXAob2JqZWN0cywgXy5wcm9wZXJ0eSgnYS5iJykpO1xuICogLy8gPT4gWzIsIDFdXG4gKlxuICogXy5tYXAoXy5zb3J0Qnkob2JqZWN0cywgXy5wcm9wZXJ0eShbJ2EnLCAnYiddKSksICdhLmInKTtcbiAqIC8vID0+IFsxLCAyXVxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3BlcnR5O1xuIiwidmFyIGNyZWF0ZVJhbmdlID0gcmVxdWlyZSgnLi9fY3JlYXRlUmFuZ2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAqIGBzdGFydGAgaXMgc3BlY2lmaWVkIHdpdGhvdXQgYW4gYGVuZGAgb3IgYHN0ZXBgLiBJZiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLFxuICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICpcbiAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ucmFuZ2UoNCk7XG4gKiAvLyA9PiBbMCwgMSwgMiwgM11cbiAqXG4gKiBfLnJhbmdlKC00KTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNF1cbiAqXG4gKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAqIC8vID0+IFswLCA1LCAxMCwgMTVdXG4gKlxuICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gKlxuICogXy5yYW5nZSgxLCA0LCAwKTtcbiAqIC8vID0+IFsxLCAxLCAxXVxuICpcbiAqIF8ucmFuZ2UoMCk7XG4gKiAvLyA9PiBbXVxuICovXG52YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbmdlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgICBzdHJpbmdTaXplID0gcmVxdWlyZSgnLi9fc3RyaW5nU2l6ZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAqIHZhbHVlcyBvciB0aGUgbnVtYmVyIG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5zaXplKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gKiAvLyA9PiAyXG4gKlxuICogXy5zaXplKCdwZWJibGVzJyk7XG4gKiAvLyA9PiA3XG4gKi9cbmZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pID8gc3RyaW5nU2l6ZShjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICB9XG4gIHJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2l6ZTtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyksXG4gICAgYmFzZU9yZGVyQnkgPSByZXF1aXJlKCcuL19iYXNlT3JkZXJCeScpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogMzAgfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICogXTtcbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCAzMF1dXG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCAzMF0sIFsnZnJlZCcsIDQ4XV1cbiAqL1xudmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBsZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoO1xuICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbXTtcbiAgfSBlbHNlIGlmIChsZW5ndGggPiAyICYmIGlzSXRlcmF0ZWVDYWxsKGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdLCBpdGVyYXRlZXNbMl0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gIH1cbiAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGJhc2VGbGF0dGVuKGl0ZXJhdGVlcywgMSksIFtdKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRCeTtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iLCJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcbiIsInZhciBiYXNlVG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlVG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG52YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaW9uO1xuIiwidmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcXVlSWQ7XG4iLCJ2YXIgYmFzZVZhbHVlcyA9IHJlcXVpcmUoJy4vX2Jhc2VWYWx1ZXMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlcztcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZVppcE9iamVjdCA9IHJlcXVpcmUoJy4vX2Jhc2VaaXBPYmplY3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjQuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbmZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB6aXBPYmplY3Q7XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCIvLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuYXNzaWduICE9IG51bGwgPyBPYmplY3QuYXNzaWduLmJpbmQoIE9iamVjdCApIDogZnVuY3Rpb24oIHRndCwgLi4uc3JjcyApe1xuICBzcmNzLmZvckVhY2goIHNyYyA9PiB7XG4gICAgT2JqZWN0LmtleXMoIHNyYyApLmZvckVhY2goIGsgPT4gdGd0W2tdID0gc3JjW2tdICk7XG4gIH0gKTtcblxuICByZXR1cm4gdGd0O1xufTtcbiIsImxldCBkZWZhdWx0cyA9IHtcbiAgLy8gZGFncmUgYWxnbyBvcHRpb25zLCB1c2VzIGRlZmF1bHQgdmFsdWUgb24gdW5kZWZpbmVkXG4gIG5vZGVTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIGVkZ2VTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBlZGdlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtEaXI6IHVuZGVmaW5lZCwgLy8gJ1RCJyBmb3IgdG9wIHRvIGJvdHRvbSBmbG93LCAnTFInIGZvciBsZWZ0IHRvIHJpZ2h0LFxuICByYW5rZXI6ICB1bmRlZmluZWQsIC8vIFR5cGUgb2YgYWxnb3JpdGhtIHRvIGFzc2lnbnMgYSByYW5rIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGguXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzOiBuZXR3b3JrLXNpbXBsZXgsIHRpZ2h0LXRyZWUgb3IgbG9uZ2VzdC1wYXRoXG4gIG1pbkxlbjogZnVuY3Rpb24oIGVkZ2UgKXsgcmV0dXJuIDE7IH0sIC8vIG51bWJlciBvZiByYW5rcyB0byBrZWVwIGJldHdlZW4gdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IG9mIHRoZSBlZGdlXG4gIGVkZ2VXZWlnaHQ6IGZ1bmN0aW9uKCBlZGdlICl7IHJldHVybiAxOyB9LCAvLyBoaWdoZXIgd2VpZ2h0IGVkZ2VzIGFyZSBnZW5lcmFsbHkgbWFkZSBzaG9ydGVyIGFuZCBzdHJhaWdodGVyIHRoYW4gbG93ZXIgd2VpZ2h0IGVkZ2VzXG5cbiAgLy8gZ2VuZXJhbCBsYXlvdXQgb3B0aW9uc1xuICBmaXQ6IHRydWUsIC8vIHdoZXRoZXIgdG8gZml0IHRvIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBmaXQgcGFkZGluZ1xuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcbiAgYW5pbWF0ZTogZmFsc2UsIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24oIG5vZGUsIGkgKXsgcmV0dXJuIHRydWU7IH0sIC8vIHdoZXRoZXIgdG8gYW5pbWF0ZSBzcGVjaWZpYyBub2RlcyB3aGVuIGFuaW1hdGlvbiBpcyBvbjsgbm9uLWFuaW1hdGVkIG5vZGVzIGltbWVkaWF0ZWx5IGdvIHRvIHRoZWlyIGZpbmFsIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLCAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCwgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uKCBub2RlLCBwb3MgKXsgcmV0dXJuIHBvczsgfSwgLy8gYSBmdW5jdGlvbiB0aGF0IGFwcGxpZXMgYSB0cmFuc2Zvcm0gdG8gdGhlIGZpbmFsIG5vZGUgcG9zaXRpb25cbiAgcmVhZHk6IGZ1bmN0aW9uKCl7fSwgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24oKXt9IC8vIG9uIGxheW91dHN0b3Bcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJjb25zdCBpbXBsID0gcmVxdWlyZSgnLi9sYXlvdXQnKTtcblxuLy8gcmVnaXN0ZXJzIHRoZSBleHRlbnNpb24gb24gYSBjeXRvc2NhcGUgbGliIHJlZlxubGV0IHJlZ2lzdGVyID0gZnVuY3Rpb24oIGN5dG9zY2FwZSApe1xuICBpZiggIWN5dG9zY2FwZSApeyByZXR1cm47IH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgY3l0b3NjYXBlKCAnbGF5b3V0JywgJ2RhZ3JlJywgaW1wbCApOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYoIHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnICl7IC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKCBjeXRvc2NhcGUgKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcbiIsImNvbnN0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbihvKXsgcmV0dXJuIHR5cGVvZiBvID09PSAnZnVuY3Rpb24nOyB9O1xuY29uc3QgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5jb25zdCBhc3NpZ24gPSByZXF1aXJlKCcuL2Fzc2lnbicpO1xuY29uc3QgZGFncmUgPSByZXF1aXJlKCdkYWdyZScpO1xuXG4vLyBjb25zdHJ1Y3RvclxuLy8gb3B0aW9ucyA6IG9iamVjdCBjb250YWluaW5nIGxheW91dCBvcHRpb25zXG5mdW5jdGlvbiBEYWdyZUxheW91dCggb3B0aW9ucyApe1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oIHt9LCBkZWZhdWx0cywgb3B0aW9ucyApO1xufVxuXG4vLyBydW5zIHRoZSBsYXlvdXRcbkRhZ3JlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbigpe1xuICBsZXQgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgbGV0IGxheW91dCA9IHRoaXM7XG5cbiAgbGV0IGN5ID0gb3B0aW9ucy5jeTsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICBsZXQgZWxlcyA9IG9wdGlvbnMuZWxlcztcblxuICBsZXQgZ2V0VmFsID0gZnVuY3Rpb24oIGVsZSwgdmFsICl7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odmFsKSA/IHZhbC5hcHBseSggZWxlLCBbIGVsZSBdICkgOiB2YWw7XG4gIH07XG5cbiAgbGV0IGJiID0gb3B0aW9ucy5ib3VuZGluZ0JveCB8fCB7IHgxOiAwLCB5MTogMCwgdzogY3kud2lkdGgoKSwgaDogY3kuaGVpZ2h0KCkgfTtcbiAgaWYoIGJiLngyID09PSB1bmRlZmluZWQgKXsgYmIueDIgPSBiYi54MSArIGJiLnc7IH1cbiAgaWYoIGJiLncgPT09IHVuZGVmaW5lZCApeyBiYi53ID0gYmIueDIgLSBiYi54MTsgfVxuICBpZiggYmIueTIgPT09IHVuZGVmaW5lZCApeyBiYi55MiA9IGJiLnkxICsgYmIuaDsgfVxuICBpZiggYmIuaCA9PT0gdW5kZWZpbmVkICl7IGJiLmggPSBiYi55MiAtIGJiLnkxOyB9XG5cbiAgbGV0IGcgPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoe1xuICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgY29tcG91bmQ6IHRydWVcbiAgfSk7XG5cbiAgbGV0IGdPYmogPSB7fTtcbiAgbGV0IHNldEdPYmogPSBmdW5jdGlvbiggbmFtZSwgdmFsICl7XG4gICAgaWYoIHZhbCAhPSBudWxsICl7XG4gICAgICBnT2JqWyBuYW1lIF0gPSB2YWw7XG4gICAgfVxuICB9O1xuXG4gIHNldEdPYmooICdub2Rlc2VwJywgb3B0aW9ucy5ub2RlU2VwICk7XG4gIHNldEdPYmooICdlZGdlc2VwJywgb3B0aW9ucy5lZGdlU2VwICk7XG4gIHNldEdPYmooICdyYW5rc2VwJywgb3B0aW9ucy5yYW5rU2VwICk7XG4gIHNldEdPYmooICdyYW5rZGlyJywgb3B0aW9ucy5yYW5rRGlyICk7XG4gIHNldEdPYmooICdyYW5rZXInLCBvcHRpb25zLnJhbmtlciApO1xuXG4gIGcuc2V0R3JhcGgoIGdPYmogKTtcblxuICBnLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7IHJldHVybiB7fTsgfSk7XG4gIGcuc2V0RGVmYXVsdE5vZGVMYWJlbChmdW5jdGlvbigpIHsgcmV0dXJuIHt9OyB9KTtcblxuICAvLyBhZGQgbm9kZXMgdG8gZGFncmVcbiAgbGV0IG5vZGVzID0gZWxlcy5ub2RlcygpO1xuICBmb3IoIGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrICl7XG4gICAgbGV0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICBsZXQgbmJiID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKCBvcHRpb25zICk7XG5cbiAgICBnLnNldE5vZGUoIG5vZGUuaWQoKSwge1xuICAgICAgd2lkdGg6IG5iYi53LFxuICAgICAgaGVpZ2h0OiBuYmIuaCxcbiAgICAgIG5hbWU6IG5vZGUuaWQoKVxuICAgIH0gKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKCBnLm5vZGUobm9kZS5pZCgpKSApO1xuICB9XG5cbiAgLy8gc2V0IGNvbXBvdW5kIHBhcmVudHNcbiAgZm9yKCBsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKyApe1xuICAgIGxldCBub2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiggbm9kZS5pc0NoaWxkKCkgKXtcbiAgICAgIGcuc2V0UGFyZW50KCBub2RlLmlkKCksIG5vZGUucGFyZW50KCkuaWQoKSApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCBlZGdlcyB0byBkYWdyZVxuICBsZXQgZWRnZXMgPSBlbGVzLmVkZ2VzKCkuc3RkRmlsdGVyKGZ1bmN0aW9uKCBlZGdlICl7XG4gICAgcmV0dXJuICFlZGdlLnNvdXJjZSgpLmlzUGFyZW50KCkgJiYgIWVkZ2UudGFyZ2V0KCkuaXNQYXJlbnQoKTsgLy8gZGFncmUgY2FuJ3QgaGFuZGxlIGVkZ2VzIG9uIGNvbXBvdW5kIG5vZGVzXG4gIH0pO1xuICBmb3IoIGxldCBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrICl7XG4gICAgbGV0IGVkZ2UgPSBlZGdlc1tpXTtcblxuICAgIGcuc2V0RWRnZSggZWRnZS5zb3VyY2UoKS5pZCgpLCBlZGdlLnRhcmdldCgpLmlkKCksIHtcbiAgICAgIG1pbmxlbjogZ2V0VmFsKCBlZGdlLCBvcHRpb25zLm1pbkxlbiApLFxuICAgICAgd2VpZ2h0OiBnZXRWYWwoIGVkZ2UsIG9wdGlvbnMuZWRnZVdlaWdodCApLFxuICAgICAgbmFtZTogZWRnZS5pZCgpXG4gICAgfSwgZWRnZS5pZCgpICk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyggZy5lZGdlKGVkZ2Uuc291cmNlKCkuaWQoKSwgZWRnZS50YXJnZXQoKS5pZCgpLCBlZGdlLmlkKCkpICk7XG4gIH1cblxuICBkYWdyZS5sYXlvdXQoIGcgKTtcblxuICBsZXQgZ05vZGVJZHMgPSBnLm5vZGVzKCk7XG4gIGZvciggbGV0IGkgPSAwOyBpIDwgZ05vZGVJZHMubGVuZ3RoOyBpKysgKXtcbiAgICBsZXQgaWQgPSBnTm9kZUlkc1tpXTtcbiAgICBsZXQgbiA9IGcubm9kZSggaWQgKTtcblxuICAgIGN5LmdldEVsZW1lbnRCeUlkKGlkKS5zY3JhdGNoKCkuZGFncmUgPSBuO1xuICB9XG5cbiAgbGV0IGRhZ3JlQkI7XG5cbiAgaWYoIG9wdGlvbnMuYm91bmRpbmdCb3ggKXtcbiAgICBkYWdyZUJCID0geyB4MTogSW5maW5pdHksIHgyOiAtSW5maW5pdHksIHkxOiBJbmZpbml0eSwgeTI6IC1JbmZpbml0eSB9O1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oIG5vZGUgKXtcbiAgICAgIGxldCBkTW9kZWwgPSBub2RlLnNjcmF0Y2goKS5kYWdyZTtcblxuICAgICAgZGFncmVCQi54MSA9IE1hdGgubWluKCBkYWdyZUJCLngxLCBkTW9kZWwueCApO1xuICAgICAgZGFncmVCQi54MiA9IE1hdGgubWF4KCBkYWdyZUJCLngyLCBkTW9kZWwueCApO1xuXG4gICAgICBkYWdyZUJCLnkxID0gTWF0aC5taW4oIGRhZ3JlQkIueTEsIGRNb2RlbC55ICk7XG4gICAgICBkYWdyZUJCLnkyID0gTWF0aC5tYXgoIGRhZ3JlQkIueTIsIGRNb2RlbC55ICk7XG4gICAgfSk7XG5cbiAgICBkYWdyZUJCLncgPSBkYWdyZUJCLngyIC0gZGFncmVCQi54MTtcbiAgICBkYWdyZUJCLmggPSBkYWdyZUJCLnkyIC0gZGFncmVCQi55MTtcbiAgfSBlbHNlIHtcbiAgICBkYWdyZUJCID0gYmI7XG4gIH1cblxuICBsZXQgY29uc3RyYWluUG9zID0gZnVuY3Rpb24oIHAgKXtcbiAgICBpZiggb3B0aW9ucy5ib3VuZGluZ0JveCApe1xuICAgICAgbGV0IHhQY3QgPSBkYWdyZUJCLncgPT09IDAgPyAwIDogKHAueCAtIGRhZ3JlQkIueDEpIC8gZGFncmVCQi53O1xuICAgICAgbGV0IHlQY3QgPSBkYWdyZUJCLmggPT09IDAgPyAwIDogKHAueSAtIGRhZ3JlQkIueTEpIC8gZGFncmVCQi5oO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIHhQY3QgKiBiYi53LFxuICAgICAgICB5OiBiYi55MSArIHlQY3QgKiBiYi5oXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH07XG5cbiAgbm9kZXMubGF5b3V0UG9zaXRpb25zKGxheW91dCwgb3B0aW9ucywgZnVuY3Rpb24oIGVsZSApe1xuICAgIGVsZSA9IHR5cGVvZiBlbGUgPT09IFwib2JqZWN0XCIgPyBlbGUgOiB0aGlzO1xuICAgIGxldCBkTW9kZWwgPSBlbGUuc2NyYXRjaCgpLmRhZ3JlO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpblBvcyh7XG4gICAgICB4OiBkTW9kZWwueCxcbiAgICAgIHk6IGRNb2RlbC55XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYWdyZUxheW91dDtcbiJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file + function DagreLayout(options) { + this.options = assign({}, defaults, options); + } // runs the layout + + + DagreLayout.prototype.run = function () { + var options = this.options; + var layout = this; + var cy = options.cy; // cy is automatically populated for us in the constructor + + var eles = options.eles; + + var getVal = function getVal(ele, val) { + return isFunction(val) ? val.apply(ele, [ele]) : val; + }; + + var bb = options.boundingBox || { + x1: 0, + y1: 0, + w: cy.width(), + h: cy.height() + }; + + if (bb.x2 === undefined) { + bb.x2 = bb.x1 + bb.w; + } + + if (bb.w === undefined) { + bb.w = bb.x2 - bb.x1; + } + + if (bb.y2 === undefined) { + bb.y2 = bb.y1 + bb.h; + } + + if (bb.h === undefined) { + bb.h = bb.y2 - bb.y1; + } + + var g = new dagre.graphlib.Graph({ + multigraph: true, + compound: true + }); + var gObj = {}; + + var setGObj = function setGObj(name, val) { + if (val != null) { + gObj[name] = val; + } + }; + + setGObj('nodesep', options.nodeSep); + setGObj('edgesep', options.edgeSep); + setGObj('ranksep', options.rankSep); + setGObj('rankdir', options.rankDir); + setGObj('ranker', options.ranker); + g.setGraph(gObj); + g.setDefaultEdgeLabel(function () { + return {}; + }); + g.setDefaultNodeLabel(function () { + return {}; + }); // add nodes to dagre + + var nodes = eles.nodes(); + + for (var i = 0; i < nodes.length; i++) { + var node = nodes[i]; + var nbb = node.layoutDimensions(options); + g.setNode(node.id(), { + width: nbb.w, + height: nbb.h, + name: node.id() + }); // console.log( g.node(node.id()) ); + } // set compound parents + + + for (var _i = 0; _i < nodes.length; _i++) { + var _node = nodes[_i]; + + if (_node.isChild()) { + g.setParent(_node.id(), _node.parent().id()); + } + } // add edges to dagre + + + var edges = eles.edges().stdFilter(function (edge) { + return !edge.source().isParent() && !edge.target().isParent(); // dagre can't handle edges on compound nodes + }); + + for (var _i2 = 0; _i2 < edges.length; _i2++) { + var edge = edges[_i2]; + g.setEdge(edge.source().id(), edge.target().id(), { + minlen: getVal(edge, options.minLen), + weight: getVal(edge, options.edgeWeight), + name: edge.id() + }, edge.id()); // console.log( g.edge(edge.source().id(), edge.target().id(), edge.id()) ); + } + + dagre.layout(g); + var gNodeIds = g.nodes(); + + for (var _i3 = 0; _i3 < gNodeIds.length; _i3++) { + var id = gNodeIds[_i3]; + var n = g.node(id); + cy.getElementById(id).scratch().dagre = n; + } + + var dagreBB; + + if (options.boundingBox) { + dagreBB = { + x1: Infinity, + x2: -Infinity, + y1: Infinity, + y2: -Infinity + }; + nodes.forEach(function (node) { + var dModel = node.scratch().dagre; + dagreBB.x1 = Math.min(dagreBB.x1, dModel.x); + dagreBB.x2 = Math.max(dagreBB.x2, dModel.x); + dagreBB.y1 = Math.min(dagreBB.y1, dModel.y); + dagreBB.y2 = Math.max(dagreBB.y2, dModel.y); + }); + dagreBB.w = dagreBB.x2 - dagreBB.x1; + dagreBB.h = dagreBB.y2 - dagreBB.y1; + } else { + dagreBB = bb; + } + + var constrainPos = function constrainPos(p) { + if (options.boundingBox) { + var xPct = dagreBB.w === 0 ? 0 : (p.x - dagreBB.x1) / dagreBB.w; + var yPct = dagreBB.h === 0 ? 0 : (p.y - dagreBB.y1) / dagreBB.h; + return { + x: bb.x1 + xPct * bb.w, + y: bb.y1 + yPct * bb.h + }; + } else { + return p; + } + }; + + nodes.layoutPositions(layout, options, function (ele) { + ele = _typeof(ele) === "object" ? ele : this; + var dModel = ele.scratch().dagre; + return constrainPos({ + x: dModel.x, + y: dModel.y + }); + }); + return this; // chaining + }; + + module.exports = DagreLayout; + + /***/ }) + + /******/ }); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWN5Y2xpYy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvYWRkLWJvcmRlci1zZWdtZW50cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvY29vcmRpbmF0ZS1zeXN0ZW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2RhdGEvbGlzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvZGVidWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2dyYXBobGliLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9ncmVlZHktZmFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9sYXlvdXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL2xvZGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvbmVzdGluZy1ncmFwaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvbm9ybWFsaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2JhcnljZW50ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2J1aWxkLWxheWVyLWdyYXBoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9jcm9zcy1jb3VudC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvb3JkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL2luaXQtb3JkZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL29yZGVyL3Jlc29sdmUtY29uZmxpY3RzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9zb3J0LXN1YmdyYXBoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9vcmRlci9zb3J0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wYXJlbnQtZHVtbXktY2hhaW5zLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2RhZ3JlL2xpYi9wb3NpdGlvbi9iay5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcG9zaXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvZmVhc2libGUtdHJlZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvcmFuay9uZXR3b3JrLXNpbXBsZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZGFncmUvbGliL3JhbmsvdXRpbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvdXRpbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9kYWdyZS9saWIvdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2NvbXBvbmVudHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kZnMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS1hbGwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9kaWprc3RyYS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2ZpbmQtY3ljbGVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9hbGcvZmxveWQtd2Fyc2hhbGwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL2lzLWFjeWNsaWMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wb3N0b3JkZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy9wcmVvcmRlci5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvYWxnL3ByaW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90YXJqYW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2FsZy90b3Bzb3J0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9kYXRhL3ByaW9yaXR5LXF1ZXVlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2dyYXBobGliL2xpYi9ncmFwaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2pzb24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvZ3JhcGhsaWIvbGliL2xvZGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9ncmFwaGxpYi9saWIvdmVyc2lvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0RhdGFWaWV3LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fSGFzaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX0xpc3RDYWNoZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX01hcENhY2hlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fUHJvbWlzZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX1NldENhY2hlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fU3RhY2suanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19VaW50OEFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fV2Vha01hcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FwcGx5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlFYWNoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUluY2x1ZGVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlJbmNsdWRlc1dpdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheUxpa2VLZXlzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYXJyYXlNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVB1c2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hcnJheVJlZHVjZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FycmF5U29tZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2FzY2lpU2l6ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc2lnbk1lcmdlVmFsdWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19hc3NpZ25WYWx1ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Fzc29jSW5kZXhPZi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VBc3NpZ24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQXNzaWduVmFsdWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ2xvbmUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlQ3JlYXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRXh0cmVtdW0uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlRmlsdGVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZpbmRJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGbGF0dGVuLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUZvci5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VGb3JPd24uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUdldEFsbEtleXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUd0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUhhcy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VIYXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJbmRleE9mLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZUlzRXF1YWwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNFcXVhbERlZXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXNNYXRjaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hTi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc05hdGl2ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VJc1R5cGVkQXJyYXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlSXRlcmF0ZWUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlS2V5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VLZXlzSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTHQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWFwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1hdGNoZXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlTWF0Y2hlc1Byb3BlcnR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZU1lcmdlRGVlcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VPcmRlckJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVBpY2suanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUGlja0J5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVByb3BlcnR5RGVlcC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSYW5nZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VSZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlUmVzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Jhc2VTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlU29ydEJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRpbWVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVRvU3RyaW5nLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuYXJ5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVVuaXEuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVmFsdWVzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fYmFzZVppcE9iamVjdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NhY2hlSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdEZ1bmN0aW9uLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2FzdFBhdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZUFycmF5QnVmZmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVCdWZmZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZURhdGFWaWV3LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY2xvbmVSZWdFeHAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jbG9uZVN5bWJvbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2Nsb25lVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NvbXBhcmVBc2NlbmRpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb21wYXJlTXVsdGlwbGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5QXJyYXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5T2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29weVN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jb3B5U3ltYm9sc0luLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY29yZUpzRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZUFzc2lnbmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlQmFzZUVhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19jcmVhdGVCYXNlRm9yLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlRmluZC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2NyZWF0ZVJhbmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fY3JlYXRlU2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbEFycmF5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2VxdWFsQnlUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19lcXVhbE9iamVjdHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19mbGF0UmVzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2ZyZWVHbG9iYWwuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRBbGxLZXlzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0QWxsS2V5c0luLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fZ2V0TWFwRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE1hdGNoRGF0YS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldE5hdGl2ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFByb3RvdHlwZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2dldFN5bWJvbHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRTeW1ib2xzSW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19nZXRWYWx1ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc1BhdGguanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNVbmljb2RlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaENsZWFyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaERlbGV0ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2hhc2hHZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19oYXNoSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faGFzaFNldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2luaXRDbG9uZUFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faW5pdENsb25lQnlUYWcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pbml0Q2xvbmVPYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0ZsYXR0ZW5hYmxlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzSXRlcmF0ZWVDYWxsLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNLZXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc0tleWFibGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19pc01hc2tlZC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX2lzUHJvdG90eXBlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9faXNTdHJpY3RDb21wYXJhYmxlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbGlzdENhY2hlQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVHZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19saXN0Q2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUNsZWFyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVEZWxldGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBDYWNoZUdldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX21hcENhY2hlSGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWFwQ2FjaGVTZXQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tYXBUb0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19tZW1vaXplQ2FwcGVkLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlQ3JlYXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fbmF0aXZlS2V5cy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25hdGl2ZUtleXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX25vZGVVdGlsLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fb3ZlclJlc3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19yb290LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2FmZUdldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3NldENhY2hlQWRkLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0Q2FjaGVIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zZXRUb0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc2V0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zaG9ydE91dC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrQ2xlYXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja0RlbGV0ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0YWNrR2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RhY2tIYXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdGFja1NldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3N0cmljdEluZGV4T2YuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL19zdHJpbmdTaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fc3RyaW5nVG9QYXRoLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9fdG9LZXkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL190b1NvdXJjZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvX3VuaWNvZGVTaXplLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jbG9uZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvY2xvbmVEZWVwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZGVmYXVsdHMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VhY2guanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2VxLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9maWx0ZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2ZpbmRJbmRleC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZmxhdHRlbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9yRWFjaC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvZm9ySW4uanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2dldC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaGFzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9oYXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaWRlbnRpdHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQXJndW1lbnRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0FycmF5TGlrZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNBcnJheUxpa2VPYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzQnVmZmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0VtcHR5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0Z1bmN0aW9uLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc0xlbmd0aC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNNYXAuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc09iamVjdExpa2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzUGxhaW5PYmplY3QuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzU2V0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9pc1N0cmluZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNTeW1ib2wuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2lzVHlwZWRBcnJheS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvaXNVbmRlZmluZWQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL2tleXNJbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbGFzdC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWFwLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9tYXBWYWx1ZXMuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21heC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVtb2l6ZS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWVyZ2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL21pbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvbWluQnkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vb3AuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcGljay5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvcHJvcGVydHkuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3JhbmdlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9yZWR1Y2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NpemUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3NvcnRCeS5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvc3R1YkFycmF5LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC9zdHViRmFsc2UuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvRmluaXRlLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b0ludGVnZXIuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1BsYWluT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC90b1N0cmluZy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdHJhbnNmb3JtLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vbm9kZV9tb2R1bGVzL2xvZGFzaC91bmlvbi5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvdW5pcXVlSWQuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9ub2RlX21vZHVsZXMvbG9kYXNoL3ZhbHVlcy5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8uL25vZGVfbW9kdWxlcy9sb2Rhc2gvemlwT2JqZWN0LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly9jeXRvc2NhcGVEYWdyZS8od2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vY3l0b3NjYXBlRGFncmUvLi9zcmMvYXNzaWduLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2RlZmF1bHRzLmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2luZGV4LmpzIiwid2VicGFjazovL2N5dG9zY2FwZURhZ3JlLy4vc3JjL2xheW91dC5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiYmluZCIsInRndCIsInNyY3MiLCJmb3JFYWNoIiwic3JjIiwia2V5cyIsImsiLCJkZWZhdWx0cyIsIm5vZGVTZXAiLCJ1bmRlZmluZWQiLCJlZGdlU2VwIiwicmFua1NlcCIsInJhbmtEaXIiLCJyYW5rZXIiLCJtaW5MZW4iLCJlZGdlIiwiZWRnZVdlaWdodCIsImZpdCIsInBhZGRpbmciLCJzcGFjaW5nRmFjdG9yIiwibm9kZURpbWVuc2lvbnNJbmNsdWRlTGFiZWxzIiwiYW5pbWF0ZSIsImFuaW1hdGVGaWx0ZXIiLCJub2RlIiwiaSIsImFuaW1hdGlvbkR1cmF0aW9uIiwiYW5pbWF0aW9uRWFzaW5nIiwiYm91bmRpbmdCb3giLCJ0cmFuc2Zvcm0iLCJwb3MiLCJyZWFkeSIsInN0b3AiLCJpbXBsIiwicmVxdWlyZSIsInJlZ2lzdGVyIiwiY3l0b3NjYXBlIiwiaXNGdW5jdGlvbiIsIm8iLCJkYWdyZSIsIkRhZ3JlTGF5b3V0Iiwib3B0aW9ucyIsInByb3RvdHlwZSIsInJ1biIsImxheW91dCIsImN5IiwiZWxlcyIsImdldFZhbCIsImVsZSIsInZhbCIsImFwcGx5IiwiYmIiLCJ4MSIsInkxIiwidyIsIndpZHRoIiwiaCIsImhlaWdodCIsIngyIiwieTIiLCJnIiwiZ3JhcGhsaWIiLCJHcmFwaCIsIm11bHRpZ3JhcGgiLCJjb21wb3VuZCIsImdPYmoiLCJzZXRHT2JqIiwibmFtZSIsInNldEdyYXBoIiwic2V0RGVmYXVsdEVkZ2VMYWJlbCIsInNldERlZmF1bHROb2RlTGFiZWwiLCJub2RlcyIsImxlbmd0aCIsIm5iYiIsImxheW91dERpbWVuc2lvbnMiLCJzZXROb2RlIiwiaWQiLCJpc0NoaWxkIiwic2V0UGFyZW50IiwicGFyZW50IiwiZWRnZXMiLCJzdGRGaWx0ZXIiLCJzb3VyY2UiLCJpc1BhcmVudCIsInRhcmdldCIsInNldEVkZ2UiLCJtaW5sZW4iLCJ3ZWlnaHQiLCJnTm9kZUlkcyIsIm4iLCJnZXRFbGVtZW50QnlJZCIsInNjcmF0Y2giLCJkYWdyZUJCIiwiSW5maW5pdHkiLCJkTW9kZWwiLCJNYXRoIiwibWluIiwieCIsIm1heCIsInkiLCJjb25zdHJhaW5Qb3MiLCJwIiwieFBjdCIsInlQY3QiLCJsYXlvdXRQb3NpdGlvbnMiXSwibWFwcGluZ3MiOiI7O1FBQUE7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7OztRQUdBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQSwwQ0FBMEMsZ0NBQWdDO1FBQzFFO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0Esd0RBQXdELGtCQUFrQjtRQUMxRTtRQUNBLGlEQUFpRCxjQUFjO1FBQy9EOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQSx5Q0FBeUMsaUNBQWlDO1FBQzFFLGdIQUFnSCxtQkFBbUIsRUFBRTtRQUNySTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBLDJCQUEyQiwwQkFBMEIsRUFBRTtRQUN2RCxpQ0FBaUMsZUFBZTtRQUNoRDtRQUNBO1FBQ0E7O1FBRUE7UUFDQSxzREFBc0QsK0RBQStEOztRQUVySDtRQUNBOzs7UUFHQTtRQUNBOzs7Ozs7Ozs7Ozs7QUNsRkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsWUFBWSxtQkFBTyxDQUFDLDREQUFnQjs7QUFFcEMsVUFBVSxtQkFBTyxDQUFDLHdEQUFjO0FBQ2hDLFNBQVMsbUJBQU8sQ0FBQyxzREFBYTtBQUM5QjtBQUNBLFVBQVUsbUJBQU8sQ0FBQyxvREFBWTtBQUM5QixZQUFZLG1CQUFPLENBQUMsb0RBQVk7QUFDaEMsR0FBRztBQUNILFdBQVcsbUJBQU8sQ0FBQywwREFBZTtBQUNsQzs7Ozs7Ozs7Ozs7OztBQ2hDYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsZ0JBQWdCLG1CQUFPLENBQUMsNERBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUNsRUEsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxnREFBUTs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsZUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsWUFBWTtBQUN2QztBQUNBOzs7Ozs7Ozs7Ozs7O0FDckNhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxvREFBVTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQywrQkFBK0IsRUFBRTtBQUNyRSxvQ0FBb0MsK0JBQStCLEVBQUU7QUFDckU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyx3QkFBd0IsRUFBRTs7QUFFOUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9DQUFvQyxzQkFBc0IsRUFBRTs7QUFFNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3ZFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3ZEQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLGdEQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTs7QUFFaEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsbUNBQW1DLGFBQWE7O0FBRXJFO0FBQ0Esa0JBQWtCLFdBQVc7QUFDN0I7QUFDQSxHQUFHOztBQUVIO0FBQ0EsMEJBQTBCO0FBQzFCLEdBQUc7O0FBRUg7QUFDQTtBQUNBLHVCQUF1QixlQUFlO0FBQ3RDO0FBQ0EsdUJBQXVCLGlCQUFpQjtBQUN4QztBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pDQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0EsZUFBZSxtQkFBTyxDQUFDLGtEQUFVO0FBQ2pDLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTtBQUNoQyxXQUFXLG1CQUFPLENBQUMsMERBQWE7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EseUNBQXlDLHdDQUF3QztBQUNqRix5Q0FBeUMsd0NBQXdDO0FBQ2pGO0FBQ0Esc0NBQXNDLE9BQU87QUFDN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0Esb0JBQW9CLHVCQUF1QjtBQUMzQzs7QUFFQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx5QkFBeUIsd0JBQXdCO0FBQ2pELEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSCw0REFBNEQsbUJBQW1CLEVBQUU7QUFDakY7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUgsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUNySGE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxzREFBVztBQUNqQyxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBYTtBQUNyQyxXQUFXLG1CQUFPLENBQUMsc0RBQVE7QUFDM0IscUJBQXFCLG1CQUFPLENBQUMsZ0RBQVE7QUFDckMsd0JBQXdCLG1CQUFPLENBQUMsOEVBQXVCO0FBQ3ZELHVCQUF1QixtQkFBTyxDQUFDLGdEQUFRO0FBQ3ZDLG1CQUFtQixtQkFBTyxDQUFDLGtFQUFpQjtBQUM1Qyx3QkFBd0IsbUJBQU8sQ0FBQyw4RUFBdUI7QUFDdkQsdUJBQXVCLG1CQUFPLENBQUMsMEVBQXFCO0FBQ3BELFlBQVksbUJBQU8sQ0FBQyx3REFBUztBQUM3QixlQUFlLG1CQUFPLENBQUMsOERBQVk7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLGdEQUFRO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx3REFBWTs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSw2Q0FBNkMsNEJBQTRCLEVBQUU7QUFDM0UsMkNBQTJDLDhCQUE4QixFQUFFO0FBQzNFLDJDQUEyQyxrQ0FBa0MsRUFBRTtBQUMvRSxHQUFHO0FBQ0g7O0FBRUE7QUFDQSxpREFBaUQsMkJBQTJCLEVBQUU7QUFDOUUsaURBQWlELG9CQUFvQixFQUFFO0FBQ3ZFLGlEQUFpRCxnQkFBZ0IsRUFBRTtBQUNuRSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELGtDQUFrQyxFQUFFO0FBQ3JGLGlEQUFpRCwyQkFBMkIsRUFBRTtBQUM5RSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELHlCQUF5QixFQUFFO0FBQzVFLGlEQUFpRCxtQkFBbUIsRUFBRTtBQUN0RSxpREFBaUQscUJBQXFCLEVBQUU7QUFDeEUsaURBQWlELDJCQUEyQixFQUFFO0FBQzlFLGlEQUFpRCxrQkFBa0IsRUFBRTtBQUNyRSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekUsaURBQWlELHNCQUFzQixFQUFFO0FBQ3pFLGlEQUFpRCxVQUFVLEVBQUU7QUFDN0QsaURBQWlELG9CQUFvQixFQUFFO0FBQ3ZFLGlEQUFpRCw0QkFBNEIsRUFBRTtBQUMvRSxpREFBaUQsYUFBYSxFQUFFO0FBQ2hFLGlEQUFpRCxzQkFBc0IsRUFBRTtBQUN6RSxpREFBaUQsc0JBQXNCLEVBQUU7QUFDekUsaURBQWlELG1CQUFtQixFQUFFO0FBQ3RFLGlEQUFpRCx5QkFBeUIsRUFBRTtBQUM1RSxpREFBaUQsMEJBQTBCLEVBQUU7QUFDN0UsaURBQWlELG1CQUFtQixFQUFFO0FBQ3RFLGlEQUFpRCx5QkFBeUIsRUFBRTtBQUM1RSxpREFBaUQsa0NBQWtDLEVBQUU7QUFDckYsaURBQWlELGlCQUFpQixFQUFFO0FBQ3BFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBOztBQUVBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EscUJBQXFCLG1DQUFtQztBQUN4RDs7QUFFQSx1QkFBdUI7QUFDdkI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsMkJBQTJCO0FBQzNCO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9DQUFvQyx3QkFBd0IsRUFBRTtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDJCQUEyQixnQkFBZ0I7QUFDM0MsMkJBQTJCLGdCQUFnQjtBQUMzQyxHQUFHOztBQUVIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQsNERBQTREO0FBQzVEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIseUJBQXlCO0FBQ3BEO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUywwQkFBMEI7QUFDbkMsU0FBUywrQkFBK0I7QUFDeEMsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOzs7Ozs7Ozs7Ozs7QUN2WUE7O0FBRUE7O0FBRUEsSUFBSSxJQUE2QjtBQUNqQztBQUNBO0FBQ0EsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDLGdCQUFnQixtQkFBTyxDQUFDLDBEQUFpQjtBQUN6QyxnQkFBZ0IsbUJBQU8sQ0FBQywwREFBaUI7QUFDekMsWUFBWSxtQkFBTyxDQUFDLGtEQUFhO0FBQ2pDLGNBQWMsbUJBQU8sQ0FBQyxzREFBZTtBQUNyQyxZQUFZLG1CQUFPLENBQUMsa0RBQWE7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHdEQUFnQjtBQUN2QyxlQUFlLG1CQUFPLENBQUMsd0RBQWdCO0FBQ3ZDLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxZQUFZLG1CQUFPLENBQUMsZ0RBQVk7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsZ0VBQW9CO0FBQy9DLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDLFdBQVcsbUJBQU8sQ0FBQyxnREFBWTtBQUMvQixhQUFhLG1CQUFPLENBQUMsb0RBQWM7QUFDbkMsV0FBVyxtQkFBTyxDQUFDLGdEQUFZO0FBQy9CLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsWUFBWSxtQkFBTyxDQUFDLGtEQUFhO0FBQ2pDLGFBQWEsbUJBQU8sQ0FBQyxvREFBYztBQUNuQyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsY0FBYyxtQkFBTyxDQUFDLHNEQUFlO0FBQ3JDLGdCQUFnQixtQkFBTyxDQUFDLDBEQUFpQjtBQUN6QyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsNERBQWtCO0FBQzNDO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNDQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7QUFDMUIsV0FBVyxtQkFBTyxDQUFDLGdEQUFROztBQUUzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0Q0FBNEM7QUFDNUM7QUFDQSwyQ0FBMkM7QUFDM0M7O0FBRUE7O0FBRUE7QUFDQSxvQ0FBb0MsNkJBQTZCLEVBQUU7O0FBRW5FO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQiw2QkFBNkI7QUFDdkQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUg7QUFDQSwwQkFBMEIsd0NBQXdDO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLFdBQVcsRUFBRTtBQUNwRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUNuSWE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLG9EQUFVO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyxnREFBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLHdCQUF3QixFQUFFO0FBQ2pFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxzQkFBc0IsZUFBZTtBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QiwyQkFBMkI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsMkJBQTJCO0FBQzlDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDZCQUE2Qix1QkFBdUI7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7QUN6RkEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjs7QUFFQTtBQUNBLGVBQWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsNEJBQTRCO0FBQ3REO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNwREEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLEdBQUcsb0JBQW9COztBQUU5QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUMxQkEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5REFBYTs7QUFFakM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUIsWUFBWSxhQUFhO0FBQ2xFLHdDQUF3QyxrQkFBa0IsRUFBRTs7QUFFNUQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQThCLG9DQUFvQztBQUNsRSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3hFYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQixxQkFBcUI7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxVQUFVLEVBQUU7QUFDbkQ7QUFDQTtBQUNBLGNBQWM7QUFDZCxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9ELFVBQVUsRUFBRTs7QUFFaEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7Ozs7OztBQ2xFYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsZ0JBQWdCLG1CQUFPLENBQUMsa0VBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsb0VBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsd0VBQWlCO0FBQzVDLHNCQUFzQixtQkFBTyxDQUFDLGdGQUFxQjtBQUNuRCw2QkFBNkIsbUJBQU8sQ0FBQyw4RkFBNEI7QUFDakUsWUFBWSxtQkFBTyxDQUFDLHlEQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLCtCQUErQixjQUFjO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDOUVhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxREFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILHNEQUFzRCx1QkFBdUIsRUFBRTtBQUMvRSx1REFBdUQsV0FBVyxFQUFFOztBQUVwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxREFBcUQsdUJBQXVCLEVBQUU7QUFDOUU7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3JDYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7O0FBRTNCOztBQUVBO0FBQ0Esd0NBQXdDLHNCQUFzQjtBQUM5RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQ0FBa0Msc0JBQXNCO0FBQ3hELDhCQUE4QixFQUFFO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBLHlDQUF5QywwQkFBMEI7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtEQUFrRCxzQkFBc0IsRUFBRTtBQUMxRTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUN6SEEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLGlCQUFpQixtQkFBTyxDQUFDLGtFQUFjO0FBQ3ZDLHVCQUF1QixtQkFBTyxDQUFDLGdGQUFxQjtBQUNwRCxXQUFXLG1CQUFPLENBQUMsc0RBQVE7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUMzRUEsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0Esc0RBQXNELGlCQUFpQixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3hEQSxRQUFRLG1CQUFPLENBQUMsb0RBQVU7O0FBRTFCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3JGYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLHlEQUFhO0FBQ2pDLFdBQVcsbUJBQU8sQ0FBQyxpREFBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSztBQUNMOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlO0FBQ2YsY0FBYztBQUNkOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUNBQXVDLGVBQWUsRUFBRTtBQUN4RDtBQUNBLHdEQUF3RCxTQUFTO0FBQ2pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7O0FBRUgsVUFBVTtBQUNWOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0RBQXNELGtCQUFrQixFQUFFO0FBQzFFO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQ0FBMEMsV0FBVyxFQUFFO0FBQ3ZEO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMENBQTBDO0FBQzFDLHlDQUF5QztBQUN6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekMsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDbGFhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxxREFBVztBQUMzQixXQUFXLG1CQUFPLENBQUMsaURBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMscURBQU07O0FBRTlCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvREFBb0QseUJBQXlCLEVBQUU7QUFDL0U7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7QUM1QmE7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFEQUFXO0FBQzNCLFlBQVksbUJBQU8sQ0FBQyx5REFBYTtBQUNqQyxZQUFZLG1CQUFPLENBQUMscURBQVE7O0FBRTVCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxxQkFBcUIsa0JBQWtCOztBQUV2QztBQUNBO0FBQ0E7QUFDQSxxQkFBcUI7O0FBRXJCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLDBCQUEwQjtBQUMxQjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7O0FDeEZhOztBQUViLGVBQWUsbUJBQU8sQ0FBQyxxREFBUTtBQUMvQjtBQUNBLG1CQUFtQixtQkFBTyxDQUFDLHVFQUFpQjtBQUM1QyxxQkFBcUIsbUJBQU8sQ0FBQywyRUFBbUI7O0FBRWhEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFrRDtBQUNsRCx3Q0FBd0M7QUFDeEMsNENBQTRDO0FBQzVDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQy9DYTs7QUFFYixRQUFRLG1CQUFPLENBQUMscURBQVc7QUFDM0IsbUJBQW1CLG1CQUFPLENBQUMsdUVBQWlCO0FBQzVDLFlBQVksbUJBQU8sQ0FBQyxxREFBUTtBQUM1QixlQUFlLG1CQUFPLENBQUMscURBQVE7QUFDL0IsZUFBZSxtQkFBTyxDQUFDLHlEQUFhO0FBQ3BDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFhO0FBQ3JDLGVBQWUsbUJBQU8sQ0FBQyxpREFBUzs7QUFFaEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSwwQkFBMEI7QUFDMUI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUgsNkNBQTZDLHVCQUF1QixFQUFFO0FBQ3RFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNENBQTRDLDBCQUEwQixFQUFFO0FBQ3hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7QUN6T2E7O0FBRWIsUUFBUSxtQkFBTyxDQUFDLHFEQUFXOztBQUUzQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0Esd0JBQXdCO0FBQ3hCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDOURBOztBQUVhOztBQUViLFFBQVEsbUJBQU8sQ0FBQyxvREFBVTtBQUMxQixZQUFZLG1CQUFPLENBQUMsd0RBQVk7O0FBRWhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0Msa0NBQWtDLEVBQUU7QUFDeEU7QUFDQSxvREFBb0Q7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQSw4QkFBOEIsK0JBQStCO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLEtBQUs7QUFDL0MsS0FBSyxvQkFBb0I7QUFDekI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFVBQVU7QUFDVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTRELFdBQVcsRUFBRTtBQUN6RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0RBQWdELHVCQUF1QixFQUFFO0FBQ3pFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBLG1EQUFtRCx1QkFBdUIsRUFBRTs7QUFFNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsaUNBQWlDLHlCQUF5QixFQUFFO0FBQzVEO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDN09BOzs7Ozs7Ozs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLCtCQUErQjtBQUMzQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxVQUFVLG1CQUFPLENBQUMsbURBQU87O0FBRXpCO0FBQ0E7QUFDQSxRQUFRLG1CQUFPLENBQUMsdURBQVk7QUFDNUIsT0FBTyxtQkFBTyxDQUFDLDJEQUFXO0FBQzFCO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3JDQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7O0FBRTNCOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTs7Ozs7Ozs7Ozs7O0FDMUJBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxxQkFBcUIsYUFBYTtBQUNsQztBQUNBO0FBQ0EsS0FBSztBQUNMLG9CQUFvQixhQUFhO0FBQ2pDO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3pDQSxlQUFlLG1CQUFPLENBQUMsK0RBQVk7QUFDbkMsUUFBUSxtQkFBTyxDQUFDLHdEQUFXOztBQUUzQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7Ozs7Ozs7Ozs7O0FDVEEsUUFBUSxtQkFBTyxDQUFDLHdEQUFXO0FBQzNCLG9CQUFvQixtQkFBTyxDQUFDLGtGQUF3Qjs7QUFFcEQ7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQixFQUFFO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ3JEQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLDJEQUFVOztBQUUvQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7OztBQ1RBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMkJBQTJCLHNCQUFzQixFQUFFO0FBQ25EOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSx5QkFBeUI7QUFDekI7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsdUJBQXVCO0FBQ3ZCLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pEQTtBQUNBLGNBQWMsbUJBQU8sQ0FBQyxtRUFBYztBQUNwQyxZQUFZLG1CQUFPLENBQUMsK0RBQVk7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVFQUFnQjtBQUN2QyxjQUFjLG1CQUFPLENBQUMscUVBQWU7QUFDckMsaUJBQWlCLG1CQUFPLENBQUMsMkVBQWtCO0FBQzNDLGFBQWEsbUJBQU8sQ0FBQyxtRUFBYztBQUNuQyxhQUFhLG1CQUFPLENBQUMsaUVBQWE7QUFDbEMsWUFBWSxtQkFBTyxDQUFDLCtEQUFZO0FBQ2hDLFFBQVEsbUJBQU8sQ0FBQyx1REFBUTtBQUN4QixVQUFVLG1CQUFPLENBQUMsMkRBQVU7QUFDNUIsV0FBVyxtQkFBTyxDQUFDLDZEQUFXO0FBQzlCOzs7Ozs7Ozs7Ozs7QUNaQSxjQUFjLG1CQUFPLENBQUMsNkRBQVc7O0FBRWpDOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDZEEsVUFBVSxtQkFBTyxDQUFDLHFEQUFPOztBQUV6Qjs7QUFFQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ05BLFVBQVUsbUJBQU8sQ0FBQyxxREFBTzs7QUFFekI7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7QUNOQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7QUFDM0IsWUFBWSxtQkFBTyxDQUFDLHNEQUFVO0FBQzlCLG9CQUFvQixtQkFBTyxDQUFDLGtGQUF3Qjs7QUFFcEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7O0FDbkRBLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLGdCQUFnQjtBQUNuQzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7Ozs7Ozs7Ozs7OztBQzlDQSxRQUFRLG1CQUFPLENBQUMsd0RBQVc7O0FBRTNCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHVDQUF1QyxnRDs7Ozs7Ozs7Ozs7QUNsQ3ZDLFFBQVEsbUJBQU8sQ0FBQyx3REFBVzs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQ0FBb0MsY0FBYyxFQUFFO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDZCQUE2QjtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQ3ZKYTs7QUFFYixRQUFRLG1CQUFPLENBQUMsdURBQVU7O0FBRTFCOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9FQUFvRSxXQUFXO0FBQy9FO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxvQ0FBb0M7QUFDdEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7QUFDQSxZQUFZLGVBQWU7QUFDM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHFCQUFxQixFQUFFO0FBQ2xFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMscUJBQXFCLEVBQUU7QUFDbEU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtCQUFrQixlQUFlO0FBQ2pDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFrQjtBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDbmhCQTtBQUNBO0FBQ0EsU0FBUyxtQkFBTyxDQUFDLHFEQUFTO0FBQzFCLFdBQVcsbUJBQU8sQ0FBQyx5REFBVztBQUM5Qjs7Ozs7Ozs7Ozs7O0FDSkEsUUFBUSxtQkFBTyxDQUFDLHVEQUFVO0FBQzFCLFlBQVksbUJBQU8sQ0FBQyxxREFBUzs7QUFFN0I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsZUFBZSwyQ0FBMkM7QUFDMUQsR0FBRztBQUNIO0FBQ0E7Ozs7Ozs7Ozs7OztBQ2pFQTs7QUFFQTs7QUFFQSxJQUFJLElBQTZCO0FBQ2pDO0FBQ0E7QUFDQSxhQUFhLG1CQUFPLENBQUMsb0RBQWM7QUFDbkMsZ0JBQWdCLG1CQUFPLENBQUMsMERBQWlCO0FBQ3pDLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxjQUFjLG1CQUFPLENBQUMsc0RBQWU7QUFDckMsWUFBWSxtQkFBTyxDQUFDLGdEQUFZO0FBQ2hDLGVBQWUsbUJBQU8sQ0FBQyx3REFBZ0I7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHdEQUFnQjtBQUN2QyxrQkFBa0IsbUJBQU8sQ0FBQyw4REFBbUI7QUFDN0MsbUJBQW1CLG1CQUFPLENBQUMsZ0VBQW9CO0FBQy9DLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxXQUFXLG1CQUFPLENBQUMsZ0RBQVk7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHNEQUFlO0FBQ3JDLFlBQVksbUJBQU8sQ0FBQyxrREFBYTtBQUNqQyxpQkFBaUIsbUJBQU8sQ0FBQyw0REFBa0I7QUFDM0MsYUFBYSxtQkFBTyxDQUFDLG9EQUFjO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxzREFBZTtBQUNyQztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0E7Ozs7Ozs7Ozs7OztBQ0FBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNOQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ05BLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQSxXQUFXLG1CQUFPLENBQUMsK0NBQVM7O0FBRTVCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ0xBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsTUFBTTtBQUNqQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDckJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNYQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsU0FBUyxtQkFBTyxDQUFDLHlDQUFNOztBQUV2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNCQSxTQUFTLG1CQUFPLENBQUMseUNBQU07O0FBRXZCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hCQSxxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7O0FBRWhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsRUFBRTtBQUNiO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsK0NBQVM7QUFDN0IsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQywrQ0FBUztBQUM3QixXQUFXLG1CQUFPLENBQUMsNkNBQVE7QUFDM0IsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxRQUFRO0FBQ25CO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQ0FBc0M7QUFDdEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcktBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUM3QkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxhQUFhO0FBQzFCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsV0FBVyxRQUFRO0FBQ25CLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQ0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLFdBQVcsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFM0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLGFBQWE7QUFDeEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNaQSxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixXQUFXLFFBQVE7QUFDbkI7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkEsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEZBLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDWEEsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0NBQW9DOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzlDQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzREEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLDBCQUEwQixtQkFBTyxDQUFDLDZFQUF3QjtBQUMxRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDOUJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDckJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsOEJBQThCLG1CQUFPLENBQUMscUZBQTRCOztBQUVsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsVUFBVSxtQkFBTyxDQUFDLDJDQUFPO0FBQ3pCLFlBQVksbUJBQU8sQ0FBQywrQ0FBUztBQUM3QixZQUFZLG1CQUFPLENBQUMsaURBQVU7QUFDOUIseUJBQXlCLG1CQUFPLENBQUMsMkVBQXVCO0FBQ3hELDhCQUE4QixtQkFBTyxDQUFDLHFGQUE0QjtBQUNsRSxZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0EsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxhQUFhLG1CQUFPLENBQUMsaURBQVU7QUFDL0IsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pDQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7QUFDcEQsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLHdCQUF3QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNyRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsaUJBQWlCLG1CQUFPLENBQUMseURBQWM7QUFDdkMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLG9CQUFvQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM3QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDM0MsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLG9CQUFvQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3RkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHNCQUFzQixtQkFBTyxDQUFDLHFFQUFvQjtBQUNsRCxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLDZCQUE2QjtBQUN4QyxXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLFlBQVk7QUFDWixHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hEQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxZQUFZLG1CQUFPLENBQUMsK0NBQVM7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEJBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxRQUFRO0FBQ25CLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDM0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLFdBQVcsUUFBUTtBQUNuQjtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdEJBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLFlBQVksbUJBQU8sQ0FBQyxpREFBVTs7QUFFOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLFdBQVcsU0FBUztBQUNwQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0NBQStDO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsREEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQSxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLHdCQUF3QixtQkFBTyxDQUFDLHlFQUFzQjtBQUN0RCxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN2RUEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsTUFBTTtBQUNqQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNaQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNiQSxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsWUFBWSxtQkFBTyxDQUFDLGlEQUFVO0FBQzlCLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcEJBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsWUFBWTtBQUN2QixhQUFhLFlBQVk7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSx5REFBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBLGtCQUFrQixLQUEwQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ2xDQSx1QkFBdUIsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXBEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsUUFBUTtBQUNuQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXOztBQUVoQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCOztBQUVwRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeENBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjs7QUFFcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLG1CQUFtQjtBQUM5QixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsTUFBTTtBQUNqQixXQUFXLE9BQU8sV0FBVztBQUM3QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3Qjs7QUFFeEI7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZDQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPLFdBQVc7QUFDN0IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTyxXQUFXO0FBQzdCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTOztBQUU1QjtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNMQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFFBQVE7QUFDbkIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQywrQ0FBK0M7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDeEJBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxRQUFRO0FBQ25CLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixXQUFXLG1CQUFPLENBQUMsNkNBQVE7QUFDM0IsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBLFdBQVcsUUFBUTtBQUNuQjtBQUNBLEdBQUc7QUFDSCxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUNWQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuRkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMvR0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6RkEsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ0hBLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjtBQUNoRCxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1CO0FBQ2hELG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsaURBQVU7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBLHlCQUF5QixtQkFBTyxDQUFDLDJFQUF1QjtBQUN4RCxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3ZCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXOztBQUVoQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3Q0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGdCQUFnQixtQkFBTyxDQUFDLHVEQUFhOztBQUVyQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTtBQUMxQixjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsVUFBVSxtQkFBTyxDQUFDLDZDQUFRO0FBQzFCLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ1pBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdEJBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDekJBLHVCQUF1QixtQkFBTyxDQUFDLHVFQUFxQjtBQUNwRCxvQkFBb0IsbUJBQU8sQ0FBQyxpRUFBa0I7QUFDOUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7O0FBRWxEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLFFBQVE7QUFDbkIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVFQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4QkEsU0FBUyxtQkFBTyxDQUFDLHlDQUFNO0FBQ3ZCLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTtBQUNsQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0JBLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZEEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25CQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2RBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ1pBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xDQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQkEsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCOztBQUU1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNmQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7O0FBRTVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkEsV0FBVyxtQkFBTyxDQUFDLCtDQUFTO0FBQzVCLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLFVBQVUsbUJBQU8sQ0FBQyw2Q0FBUTs7QUFFMUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2ZBLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDTEEsY0FBYyxtQkFBTyxDQUFDLHFEQUFZOztBQUVsQztBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNMQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQkEsK0RBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNILENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7Ozs7QUM3QkE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3JCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDZEEsWUFBWSxtQkFBTyxDQUFDLGlEQUFVOztBQUU5QjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNuQ0EsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7O0FBRXhDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsTUFBTTtBQUNuQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pCQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixXQUFXLFNBQVM7QUFDcEIsYUFBYSxTQUFTO0FBQ3RCO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2JBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjOztBQUV0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNkQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDYkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsVUFBVSxtQkFBTyxDQUFDLDZDQUFRO0FBQzFCLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLEVBQUU7QUFDYixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCOztBQUU5QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUMxQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxjQUFjO0FBQzNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsRUFBRTtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7O0FBRXRDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25DQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYzs7QUFFdEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0Esd0NBQXdDLFNBQVM7QUFDakQ7QUFDQTtBQUNBLFdBQVcsU0FBUyxHQUFHLFNBQVM7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLFNBQVMsbUJBQU8sQ0FBQyx5Q0FBTTtBQUN2QixxQkFBcUIsbUJBQU8sQ0FBQyxtRUFBbUI7QUFDaEQsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsVUFBVTtBQUNyQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0EsZUFBZSxTQUFTLEdBQUcsU0FBUyxHQUFHLFNBQVM7QUFDaEQsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQy9EQSxpQkFBaUIsbUJBQU8sQ0FBQyxtREFBVzs7Ozs7Ozs7Ozs7O0FDQXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLDhDQUE4QztBQUNwRCxNQUFNO0FBQ047QUFDQTtBQUNBLGdDQUFnQyxrQkFBa0IsRUFBRTtBQUNwRDtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsNEJBQTRCO0FBQ2hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0MsWUFBWTtBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25EQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0EsTUFBTSwrQ0FBK0M7QUFDckQsTUFBTSxnREFBZ0Q7QUFDdEQsTUFBTTtBQUNOO0FBQ0E7QUFDQSw4QkFBOEIsbUJBQW1CLEVBQUU7QUFDbkQ7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCLDJCQUEyQjtBQUM3QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN6Q0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxnQkFBZ0IsbUJBQU8sQ0FBQyx1REFBYTs7QUFFckM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLE1BQU0scUNBQXFDO0FBQzNDLE1BQU0scUNBQXFDO0FBQzNDLE1BQU07QUFDTjtBQUNBO0FBQ0EsbUNBQW1DLDJCQUEyQixFQUFFO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBLHVCQUF1QixrQ0FBa0M7QUFDekQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0REEsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCOztBQUUxQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7O0FBRWpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsYUFBYTtBQUMxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxjQUFjLGlCQUFpQjtBQUMvQjtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3hDQSxjQUFjLG1CQUFPLENBQUMscURBQVk7QUFDbEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxpREFBVTs7QUFFL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RDQSxjQUFjLG1CQUFPLENBQUMscURBQVk7O0FBRWxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUIsUUFBUSxPQUFPLFNBQVMsRUFBRTtBQUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0EsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsaUJBQWlCLE9BQU8sU0FBUztBQUNqQyx5QkFBeUIsZ0JBQWdCLFNBQVMsR0FBRztBQUNyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbENBLGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGNBQWMsbUJBQU8sQ0FBQyxxREFBWTs7QUFFbEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsMEJBQTBCLGdCQUFnQixTQUFTLEdBQUc7QUFDdEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2pDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3BCQSxzQkFBc0IsbUJBQU8sQ0FBQyxxRUFBb0I7QUFDbEQsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQSw2QkFBNkIsa0JBQWtCLEVBQUU7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDhDQUE4QyxrQkFBa0IsRUFBRTtBQUNsRTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ25DQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pCQSxpQkFBaUIsbUJBQU8sQ0FBQyx5REFBYztBQUN2QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNoQ0Esa0JBQWtCLG1CQUFPLENBQUMsMkRBQWU7QUFDekMsbUJBQW1CLG1CQUFPLENBQUMsNkRBQWdCOztBQUUzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaENBLHlEQUFXLG1CQUFPLENBQUMsK0NBQVM7QUFDNUIsZ0JBQWdCLG1CQUFPLENBQUMsdURBQWE7O0FBRXJDO0FBQ0Esa0JBQWtCLEtBQTBCOztBQUU1QztBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7OztBQ3JDQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVztBQUNqQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTtBQUN6QyxlQUFlLG1CQUFPLENBQUMscURBQVk7QUFDbkMsa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLFNBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVFQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDcENBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNsQ0EsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxRQUFRO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDMUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0EsZ0JBQWdCO0FBQ2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDOUJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdEQSxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxnQkFBZ0IsbUJBQU8sQ0FBQyx5REFBYztBQUN0QyxlQUFlLG1CQUFPLENBQUMsdURBQWE7O0FBRXBDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMxQkEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXO0FBQ2pDLG1CQUFtQixtQkFBTyxDQUFDLDZEQUFnQjs7QUFFM0M7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzdCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLFFBQVE7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELGdCQUFnQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3RDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzFCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNyQkEsb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxrQkFBa0IsbUJBQU8sQ0FBQywyREFBZTs7QUFFekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwQ0Esb0JBQW9CLG1CQUFPLENBQUMsaUVBQWtCO0FBQzlDLGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlOztBQUV6QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkJBLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsY0FBYyxtQkFBTyxDQUFDLHFEQUFZO0FBQ2xDLGNBQWMsbUJBQU8sQ0FBQyxtREFBVzs7QUFFakM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsVUFBVSxpQkFBaUI7QUFDM0I7QUFDQTtBQUNBO0FBQ0EsTUFBTSxtQkFBbUI7QUFDekIsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNwREEsc0JBQXNCLG1CQUFPLENBQUMscUVBQW9CO0FBQ2xELGlCQUFpQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3hDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlCQUFpQiwrQkFBK0I7QUFDaEQsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxtQ0FBbUMsY0FBYyxFQUFFO0FBQ25ELFVBQVUsMkJBQTJCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBLFVBQVUsMkJBQTJCO0FBQ3JDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDMUNBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxhQUFhLG1CQUFPLENBQUMsbURBQVc7QUFDaEMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM1QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhOztBQUVwQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsV0FBVyxTQUFTO0FBQ3BCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0EsaUJBQWlCO0FBQ2pCLGdCQUFnQjtBQUNoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN4RUEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMscUJBQXFCLG1CQUFPLENBQUMsbUVBQW1COztBQUVoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxVQUFVO0FBQ3JCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQSxZQUFZLFNBQVMsR0FBRyxTQUFTO0FBQ2pDO0FBQ0E7QUFDQTtBQUNBLFlBQVksU0FBUyxHQUFHLFNBQVM7QUFDakM7QUFDQTtBQUNBO0FBQ0EsVUFBVSxRQUFRLGlCQUFpQixHQUFHLGlCQUFpQjtBQUN2RDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUN0Q0EsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVztBQUNoQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE1BQU07QUFDakIsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzVCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLGFBQWEsbUJBQU8sQ0FBQyxtREFBVzs7QUFFaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxNQUFNO0FBQ2pCLFdBQVcsU0FBUztBQUNwQixhQUFhLEVBQUU7QUFDZjtBQUNBO0FBQ0EsbUJBQW1CLFNBQVMsR0FBRyxTQUFTO0FBQ3hDO0FBQ0EsaUNBQWlDLFlBQVksRUFBRTtBQUMvQyxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDakNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDaEJBLFdBQVcsbUJBQU8sQ0FBQywrQ0FBUzs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUN0QkEsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTs7QUFFcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxxQkFBcUI7QUFDaEMsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0EsNEJBQTRCO0FBQzVCLENBQUM7O0FBRUQ7Ozs7Ozs7Ozs7OztBQ3hCQSxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsdUJBQXVCLG1CQUFPLENBQUMsdUVBQXFCO0FBQ3BELFlBQVksbUJBQU8sQ0FBQyxpREFBVTtBQUM5QixZQUFZLG1CQUFPLENBQUMsaURBQVU7O0FBRTlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCLGFBQWEsU0FBUztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxNQUFNLE9BQU8sU0FBUyxFQUFFO0FBQ3hCLE1BQU0sT0FBTyxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQy9CQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU87QUFDbEIsYUFBYSxNQUFNO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUM3Q0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyxtQkFBbUIsbUJBQU8sQ0FBQywrREFBaUI7QUFDNUMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsY0FBYyxtQkFBTyxDQUFDLG1EQUFXOztBQUVqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsYUFBYTtBQUN4QixXQUFXLFNBQVM7QUFDcEIsV0FBVyxFQUFFO0FBQ2IsYUFBYSxFQUFFO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0EsYUFBYSx5QkFBeUI7QUFDdEM7QUFDQTtBQUNBLElBQUksSUFBSTtBQUNSLFVBQVUsOEJBQThCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2xEQSxlQUFlLG1CQUFPLENBQUMsdURBQWE7QUFDcEMsYUFBYSxtQkFBTyxDQUFDLG1EQUFXO0FBQ2hDLGtCQUFrQixtQkFBTyxDQUFDLDJEQUFlO0FBQ3pDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTs7QUFFeEM7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLG9CQUFvQjtBQUMvQixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsaUJBQWlCO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDN0NBLGtCQUFrQixtQkFBTyxDQUFDLDZEQUFnQjtBQUMxQyxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLHFCQUFxQixtQkFBTyxDQUFDLG1FQUFtQjs7QUFFaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGFBQWE7QUFDeEIsV0FBVyx5QkFBeUI7QUFDcEM7QUFDQSxhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0EsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTSw4QkFBOEI7QUFDcEMsTUFBTTtBQUNOO0FBQ0E7QUFDQSxpQ0FBaUMsZUFBZSxFQUFFO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUMvQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsUUFBUTtBQUNyQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLEVBQUU7QUFDYixhQUFhLE9BQU87QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ3pDQSxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDbkNBLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxlQUFlLG1CQUFPLENBQUMscURBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqRUEsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsYUFBYSxtQkFBTyxDQUFDLGlEQUFVOztBQUUvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxFQUFFO0FBQ2IsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhLFNBQVM7QUFDdEIsVUFBVTtBQUNWO0FBQ0EsYUFBYSxTQUFTO0FBQ3RCLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDL0JBLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjs7QUFFNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUMzQkEsZ0JBQWdCLG1CQUFPLENBQUMseURBQWM7QUFDdEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsaUJBQWlCLG1CQUFPLENBQUMsMkRBQWU7QUFDeEMsbUJBQW1CLG1CQUFPLENBQUMsK0RBQWlCO0FBQzVDLG1CQUFtQixtQkFBTyxDQUFDLCtEQUFpQjtBQUM1QyxjQUFjLG1CQUFPLENBQUMsbURBQVc7QUFDakMsZUFBZSxtQkFBTyxDQUFDLHFEQUFZO0FBQ25DLGlCQUFpQixtQkFBTyxDQUFDLHlEQUFjO0FBQ3ZDLGVBQWUsbUJBQU8sQ0FBQyxxREFBWTtBQUNuQyxtQkFBbUIsbUJBQU8sQ0FBQyw2REFBZ0I7O0FBRTNDO0FBQ0EsZ0NBQWdDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsRUFBRTtBQUNiLGFBQWEsRUFBRTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBLGdCQUFnQix5QkFBeUI7QUFDekM7QUFDQSxJQUFJLElBQUk7QUFDUixVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQ2hFQSxrQkFBa0IsbUJBQU8sQ0FBQyw2REFBZ0I7QUFDMUMsZUFBZSxtQkFBTyxDQUFDLHVEQUFhO0FBQ3BDLGVBQWUsbUJBQU8sQ0FBQyx1REFBYTtBQUNwQyx3QkFBd0IsbUJBQU8sQ0FBQyx1RUFBcUI7O0FBRXJEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsU0FBUztBQUNwQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOztBQUVEOzs7Ozs7Ozs7Ozs7QUN6QkEsZUFBZSxtQkFBTyxDQUFDLHFEQUFZOztBQUVuQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7Ozs7Ozs7Ozs7OztBQzNCQSxpQkFBaUIsbUJBQU8sQ0FBQywyREFBZTtBQUN4QyxXQUFXLG1CQUFPLENBQUMsNkNBQVE7O0FBRTNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsT0FBTztBQUNsQixhQUFhLE1BQU07QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOzs7Ozs7Ozs7Ozs7QUNqQ0Esa0JBQWtCLG1CQUFPLENBQUMsNkRBQWdCO0FBQzFDLG9CQUFvQixtQkFBTyxDQUFDLGlFQUFrQjs7QUFFOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsTUFBTTtBQUNqQixXQUFXLE1BQU07QUFDakIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7O0FDdkJBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNENBQTRDOztBQUU1Qzs7Ozs7Ozs7Ozs7O0FDbkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7O0FDckJBO0FBRUFBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQkMsTUFBTSxDQUFDQyxNQUFQLElBQWlCLElBQWpCLEdBQXdCRCxNQUFNLENBQUNDLE1BQVAsQ0FBY0MsSUFBZCxDQUFvQkYsTUFBcEIsQ0FBeEIsR0FBdUQsVUFBVUcsR0FBVixFQUF3QjtBQUFBLG9DQUFOQyxJQUFNO0FBQU5BLFFBQU07QUFBQTs7QUFDOUZBLE1BQUksQ0FBQ0MsT0FBTCxDQUFjLFVBQUFDLEdBQUcsRUFBSTtBQUNuQk4sVUFBTSxDQUFDTyxJQUFQLENBQWFELEdBQWIsRUFBbUJELE9BQW5CLENBQTRCLFVBQUFHLENBQUM7QUFBQSxhQUFJTCxHQUFHLENBQUNLLENBQUQsQ0FBSCxHQUFTRixHQUFHLENBQUNFLENBQUQsQ0FBaEI7QUFBQSxLQUE3QjtBQUNELEdBRkQ7QUFJQSxTQUFPTCxHQUFQO0FBQ0QsQ0FORCxDOzs7Ozs7Ozs7OztBQ0ZBLElBQUlNLFFBQVEsR0FBRztBQUNiO0FBQ0FDLFNBQU8sRUFBRUMsU0FGSTtBQUVPO0FBQ3BCQyxTQUFPLEVBQUVELFNBSEk7QUFHTztBQUNwQkUsU0FBTyxFQUFFRixTQUpJO0FBSU87QUFDcEJHLFNBQU8sRUFBRUgsU0FMSTtBQUtPO0FBQ3BCSSxRQUFNLEVBQUdKLFNBTkk7QUFNTztBQUNBO0FBQ3BCSyxRQUFNLEVBQUUsZ0JBQVVDLElBQVYsRUFBZ0I7QUFBRSxXQUFPLENBQVA7QUFBVyxHQVJ4QjtBQVEwQjtBQUN2Q0MsWUFBVSxFQUFFLG9CQUFVRCxJQUFWLEVBQWdCO0FBQUUsV0FBTyxDQUFQO0FBQVcsR0FUNUI7QUFTOEI7QUFFM0M7QUFDQUUsS0FBRyxFQUFFLElBWlE7QUFZRjtBQUNYQyxTQUFPLEVBQUUsRUFiSTtBQWFBO0FBQ2JDLGVBQWEsRUFBRVYsU0FkRjtBQWNhO0FBQzFCVyw2QkFBMkIsRUFBRSxLQWZoQjtBQWV1QjtBQUNwQ0MsU0FBTyxFQUFFLEtBaEJJO0FBZ0JHO0FBQ2hCQyxlQUFhLEVBQUUsdUJBQVVDLElBQVYsRUFBZ0JDLENBQWhCLEVBQW1CO0FBQUUsV0FBTyxJQUFQO0FBQWMsR0FqQnJDO0FBaUJ1QztBQUNwREMsbUJBQWlCLEVBQUUsR0FsQk47QUFrQlc7QUFDeEJDLGlCQUFlLEVBQUVqQixTQW5CSjtBQW1CZTtBQUM1QmtCLGFBQVcsRUFBRWxCLFNBcEJBO0FBb0JXO0FBQ3hCbUIsV0FBUyxFQUFFLG1CQUFVTCxJQUFWLEVBQWdCTSxHQUFoQixFQUFxQjtBQUFFLFdBQU9BLEdBQVA7QUFBYSxHQXJCbEM7QUFxQm9DO0FBQ2pEQyxPQUFLLEVBQUUsaUJBQVUsQ0FBRSxDQXRCTjtBQXNCUTtBQUNyQkMsTUFBSSxFQUFFLGdCQUFVLENBQUUsQ0F2QkwsQ0F1Qk07O0FBdkJOLENBQWY7QUEwQkFuQyxNQUFNLENBQUNDLE9BQVAsR0FBaUJVLFFBQWpCLEM7Ozs7Ozs7Ozs7O0FDMUJBLElBQU15QixJQUFJLEdBQUdDLG1CQUFPLENBQUMsaUNBQUQsQ0FBcEIsQyxDQUVBOzs7QUFDQSxJQUFJQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFVQyxTQUFWLEVBQXFCO0FBQ2xDLE1BQUksQ0FBQ0EsU0FBTCxFQUFnQjtBQUFFO0FBQVMsR0FETyxDQUNOOzs7QUFFNUJBLFdBQVMsQ0FBRSxRQUFGLEVBQVksT0FBWixFQUFxQkgsSUFBckIsQ0FBVCxDQUhrQyxDQUdJO0FBQ3ZDLENBSkQ7O0FBTUEsSUFBSSxPQUFPRyxTQUFQLEtBQXFCLFdBQXpCLEVBQXNDO0FBQUU7QUFDdENELFVBQVEsQ0FBRUMsU0FBRixDQUFSO0FBQ0Q7O0FBRUR2QyxNQUFNLENBQUNDLE9BQVAsR0FBaUJxQyxRQUFqQixDOzs7Ozs7Ozs7Ozs7O0FDYkEsSUFBTUUsVUFBVSxHQUFHLFNBQWJBLFVBQWEsQ0FBU0MsQ0FBVCxFQUFXO0FBQUUsU0FBTyxPQUFPQSxDQUFQLEtBQWEsVUFBcEI7QUFBaUMsQ0FBakU7O0FBQ0EsSUFBTTlCLFFBQVEsR0FBRzBCLG1CQUFPLENBQUMscUNBQUQsQ0FBeEI7O0FBQ0EsSUFBTWxDLE1BQU0sR0FBR2tDLG1CQUFPLENBQUMsaUNBQUQsQ0FBdEI7O0FBQ0EsSUFBTUssS0FBSyxHQUFHTCxtQkFBTyxDQUFDLDRDQUFELENBQXJCLEMsQ0FFQTtBQUNBOzs7QUFDQSxTQUFTTSxXQUFULENBQXNCQyxPQUF0QixFQUErQjtBQUM3QixPQUFLQSxPQUFMLEdBQWV6QyxNQUFNLENBQUUsRUFBRixFQUFNUSxRQUFOLEVBQWdCaUMsT0FBaEIsQ0FBckI7QUFDRCxDLENBRUQ7OztBQUNBRCxXQUFXLENBQUNFLFNBQVosQ0FBc0JDLEdBQXRCLEdBQTRCLFlBQVU7QUFDcEMsTUFBSUYsT0FBTyxHQUFHLEtBQUtBLE9BQW5CO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLElBQWI7QUFFQSxNQUFJQyxFQUFFLEdBQUdKLE9BQU8sQ0FBQ0ksRUFBakIsQ0FKb0MsQ0FJZjs7QUFDckIsTUFBSUMsSUFBSSxHQUFHTCxPQUFPLENBQUNLLElBQW5COztBQUVBLE1BQUlDLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQVVDLEdBQVYsRUFBZUMsR0FBZixFQUFvQjtBQUMvQixXQUFPWixVQUFVLENBQUNZLEdBQUQsQ0FBVixHQUFrQkEsR0FBRyxDQUFDQyxLQUFKLENBQVdGLEdBQVgsRUFBZ0IsQ0FBRUEsR0FBRixDQUFoQixDQUFsQixHQUE4Q0MsR0FBckQ7QUFDRCxHQUZEOztBQUlBLE1BQUlFLEVBQUUsR0FBR1YsT0FBTyxDQUFDYixXQUFSLElBQXVCO0FBQUV3QixNQUFFLEVBQUUsQ0FBTjtBQUFTQyxNQUFFLEVBQUUsQ0FBYjtBQUFnQkMsS0FBQyxFQUFFVCxFQUFFLENBQUNVLEtBQUgsRUFBbkI7QUFBK0JDLEtBQUMsRUFBRVgsRUFBRSxDQUFDWSxNQUFIO0FBQWxDLEdBQWhDOztBQUNBLE1BQUlOLEVBQUUsQ0FBQ08sRUFBSCxLQUFVaEQsU0FBZCxFQUF5QjtBQUFFeUMsTUFBRSxDQUFDTyxFQUFILEdBQVFQLEVBQUUsQ0FBQ0MsRUFBSCxHQUFRRCxFQUFFLENBQUNHLENBQW5CO0FBQXVCOztBQUNsRCxNQUFJSCxFQUFFLENBQUNHLENBQUgsS0FBUzVDLFNBQWIsRUFBd0I7QUFBRXlDLE1BQUUsQ0FBQ0csQ0FBSCxHQUFPSCxFQUFFLENBQUNPLEVBQUgsR0FBUVAsRUFBRSxDQUFDQyxFQUFsQjtBQUF1Qjs7QUFDakQsTUFBSUQsRUFBRSxDQUFDUSxFQUFILEtBQVVqRCxTQUFkLEVBQXlCO0FBQUV5QyxNQUFFLENBQUNRLEVBQUgsR0FBUVIsRUFBRSxDQUFDRSxFQUFILEdBQVFGLEVBQUUsQ0FBQ0ssQ0FBbkI7QUFBdUI7O0FBQ2xELE1BQUlMLEVBQUUsQ0FBQ0ssQ0FBSCxLQUFTOUMsU0FBYixFQUF3QjtBQUFFeUMsTUFBRSxDQUFDSyxDQUFILEdBQU9MLEVBQUUsQ0FBQ1EsRUFBSCxHQUFRUixFQUFFLENBQUNFLEVBQWxCO0FBQXVCOztBQUVqRCxNQUFJTyxDQUFDLEdBQUcsSUFBSXJCLEtBQUssQ0FBQ3NCLFFBQU4sQ0FBZUMsS0FBbkIsQ0FBeUI7QUFDL0JDLGNBQVUsRUFBRSxJQURtQjtBQUUvQkMsWUFBUSxFQUFFO0FBRnFCLEdBQXpCLENBQVI7QUFLQSxNQUFJQyxJQUFJLEdBQUcsRUFBWDs7QUFDQSxNQUFJQyxPQUFPLEdBQUcsU0FBVkEsT0FBVSxDQUFVQyxJQUFWLEVBQWdCbEIsR0FBaEIsRUFBcUI7QUFDakMsUUFBSUEsR0FBRyxJQUFJLElBQVgsRUFBaUI7QUFDZmdCLFVBQUksQ0FBRUUsSUFBRixDQUFKLEdBQWVsQixHQUFmO0FBQ0Q7QUFDRixHQUpEOztBQU1BaUIsU0FBTyxDQUFFLFNBQUYsRUFBYXpCLE9BQU8sQ0FBQ2hDLE9BQXJCLENBQVA7QUFDQXlELFNBQU8sQ0FBRSxTQUFGLEVBQWF6QixPQUFPLENBQUM5QixPQUFyQixDQUFQO0FBQ0F1RCxTQUFPLENBQUUsU0FBRixFQUFhekIsT0FBTyxDQUFDN0IsT0FBckIsQ0FBUDtBQUNBc0QsU0FBTyxDQUFFLFNBQUYsRUFBYXpCLE9BQU8sQ0FBQzVCLE9BQXJCLENBQVA7QUFDQXFELFNBQU8sQ0FBRSxRQUFGLEVBQVl6QixPQUFPLENBQUMzQixNQUFwQixDQUFQO0FBRUE4QyxHQUFDLENBQUNRLFFBQUYsQ0FBWUgsSUFBWjtBQUVBTCxHQUFDLENBQUNTLG1CQUFGLENBQXNCLFlBQVc7QUFBRSxXQUFPLEVBQVA7QUFBWSxHQUEvQztBQUNBVCxHQUFDLENBQUNVLG1CQUFGLENBQXNCLFlBQVc7QUFBRSxXQUFPLEVBQVA7QUFBWSxHQUEvQyxFQXRDb0MsQ0F3Q3BDOztBQUNBLE1BQUlDLEtBQUssR0FBR3pCLElBQUksQ0FBQ3lCLEtBQUwsRUFBWjs7QUFDQSxPQUFLLElBQUk5QyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHOEMsS0FBSyxDQUFDQyxNQUExQixFQUFrQy9DLENBQUMsRUFBbkMsRUFBdUM7QUFDckMsUUFBSUQsSUFBSSxHQUFHK0MsS0FBSyxDQUFDOUMsQ0FBRCxDQUFoQjtBQUNBLFFBQUlnRCxHQUFHLEdBQUdqRCxJQUFJLENBQUNrRCxnQkFBTCxDQUF1QmpDLE9BQXZCLENBQVY7QUFFQW1CLEtBQUMsQ0FBQ2UsT0FBRixDQUFXbkQsSUFBSSxDQUFDb0QsRUFBTCxFQUFYLEVBQXNCO0FBQ3BCckIsV0FBSyxFQUFFa0IsR0FBRyxDQUFDbkIsQ0FEUztBQUVwQkcsWUFBTSxFQUFFZ0IsR0FBRyxDQUFDakIsQ0FGUTtBQUdwQlcsVUFBSSxFQUFFM0MsSUFBSSxDQUFDb0QsRUFBTDtBQUhjLEtBQXRCLEVBSnFDLENBVXJDO0FBQ0QsR0FyRG1DLENBdURwQzs7O0FBQ0EsT0FBSyxJQUFJbkQsRUFBQyxHQUFHLENBQWIsRUFBZ0JBLEVBQUMsR0FBRzhDLEtBQUssQ0FBQ0MsTUFBMUIsRUFBa0MvQyxFQUFDLEVBQW5DLEVBQXVDO0FBQ3JDLFFBQUlELEtBQUksR0FBRytDLEtBQUssQ0FBQzlDLEVBQUQsQ0FBaEI7O0FBRUEsUUFBSUQsS0FBSSxDQUFDcUQsT0FBTCxFQUFKLEVBQW9CO0FBQ2xCakIsT0FBQyxDQUFDa0IsU0FBRixDQUFhdEQsS0FBSSxDQUFDb0QsRUFBTCxFQUFiLEVBQXdCcEQsS0FBSSxDQUFDdUQsTUFBTCxHQUFjSCxFQUFkLEVBQXhCO0FBQ0Q7QUFDRixHQTlEbUMsQ0FnRXBDOzs7QUFDQSxNQUFJSSxLQUFLLEdBQUdsQyxJQUFJLENBQUNrQyxLQUFMLEdBQWFDLFNBQWIsQ0FBdUIsVUFBVWpFLElBQVYsRUFBZ0I7QUFDakQsV0FBTyxDQUFDQSxJQUFJLENBQUNrRSxNQUFMLEdBQWNDLFFBQWQsRUFBRCxJQUE2QixDQUFDbkUsSUFBSSxDQUFDb0UsTUFBTCxHQUFjRCxRQUFkLEVBQXJDLENBRGlELENBQ2M7QUFDaEUsR0FGVyxDQUFaOztBQUdBLE9BQUssSUFBSTFELEdBQUMsR0FBRyxDQUFiLEVBQWdCQSxHQUFDLEdBQUd1RCxLQUFLLENBQUNSLE1BQTFCLEVBQWtDL0MsR0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJVCxJQUFJLEdBQUdnRSxLQUFLLENBQUN2RCxHQUFELENBQWhCO0FBRUFtQyxLQUFDLENBQUN5QixPQUFGLENBQVdyRSxJQUFJLENBQUNrRSxNQUFMLEdBQWNOLEVBQWQsRUFBWCxFQUErQjVELElBQUksQ0FBQ29FLE1BQUwsR0FBY1IsRUFBZCxFQUEvQixFQUFtRDtBQUNqRFUsWUFBTSxFQUFFdkMsTUFBTSxDQUFFL0IsSUFBRixFQUFReUIsT0FBTyxDQUFDMUIsTUFBaEIsQ0FEbUM7QUFFakR3RSxZQUFNLEVBQUV4QyxNQUFNLENBQUUvQixJQUFGLEVBQVF5QixPQUFPLENBQUN4QixVQUFoQixDQUZtQztBQUdqRGtELFVBQUksRUFBRW5ELElBQUksQ0FBQzRELEVBQUw7QUFIMkMsS0FBbkQsRUFJRzVELElBQUksQ0FBQzRELEVBQUwsRUFKSCxFQUhxQyxDQVNyQztBQUNEOztBQUVEckMsT0FBSyxDQUFDSyxNQUFOLENBQWNnQixDQUFkO0FBRUEsTUFBSTRCLFFBQVEsR0FBRzVCLENBQUMsQ0FBQ1csS0FBRixFQUFmOztBQUNBLE9BQUssSUFBSTlDLEdBQUMsR0FBRyxDQUFiLEVBQWdCQSxHQUFDLEdBQUcrRCxRQUFRLENBQUNoQixNQUE3QixFQUFxQy9DLEdBQUMsRUFBdEMsRUFBMEM7QUFDeEMsUUFBSW1ELEVBQUUsR0FBR1ksUUFBUSxDQUFDL0QsR0FBRCxDQUFqQjtBQUNBLFFBQUlnRSxDQUFDLEdBQUc3QixDQUFDLENBQUNwQyxJQUFGLENBQVFvRCxFQUFSLENBQVI7QUFFQS9CLE1BQUUsQ0FBQzZDLGNBQUgsQ0FBa0JkLEVBQWxCLEVBQXNCZSxPQUF0QixHQUFnQ3BELEtBQWhDLEdBQXdDa0QsQ0FBeEM7QUFDRDs7QUFFRCxNQUFJRyxPQUFKOztBQUVBLE1BQUluRCxPQUFPLENBQUNiLFdBQVosRUFBeUI7QUFDdkJnRSxXQUFPLEdBQUc7QUFBRXhDLFFBQUUsRUFBRXlDLFFBQU47QUFBZ0JuQyxRQUFFLEVBQUUsQ0FBQ21DLFFBQXJCO0FBQStCeEMsUUFBRSxFQUFFd0MsUUFBbkM7QUFBNkNsQyxRQUFFLEVBQUUsQ0FBQ2tDO0FBQWxELEtBQVY7QUFDQXRCLFNBQUssQ0FBQ25FLE9BQU4sQ0FBYyxVQUFVb0IsSUFBVixFQUFnQjtBQUM1QixVQUFJc0UsTUFBTSxHQUFHdEUsSUFBSSxDQUFDbUUsT0FBTCxHQUFlcEQsS0FBNUI7QUFFQXFELGFBQU8sQ0FBQ3hDLEVBQVIsR0FBYTJDLElBQUksQ0FBQ0MsR0FBTCxDQUFVSixPQUFPLENBQUN4QyxFQUFsQixFQUFzQjBDLE1BQU0sQ0FBQ0csQ0FBN0IsQ0FBYjtBQUNBTCxhQUFPLENBQUNsQyxFQUFSLEdBQWFxQyxJQUFJLENBQUNHLEdBQUwsQ0FBVU4sT0FBTyxDQUFDbEMsRUFBbEIsRUFBc0JvQyxNQUFNLENBQUNHLENBQTdCLENBQWI7QUFFQUwsYUFBTyxDQUFDdkMsRUFBUixHQUFhMEMsSUFBSSxDQUFDQyxHQUFMLENBQVVKLE9BQU8sQ0FBQ3ZDLEVBQWxCLEVBQXNCeUMsTUFBTSxDQUFDSyxDQUE3QixDQUFiO0FBQ0FQLGFBQU8sQ0FBQ2pDLEVBQVIsR0FBYW9DLElBQUksQ0FBQ0csR0FBTCxDQUFVTixPQUFPLENBQUNqQyxFQUFsQixFQUFzQm1DLE1BQU0sQ0FBQ0ssQ0FBN0IsQ0FBYjtBQUNELEtBUkQ7QUFVQVAsV0FBTyxDQUFDdEMsQ0FBUixHQUFZc0MsT0FBTyxDQUFDbEMsRUFBUixHQUFha0MsT0FBTyxDQUFDeEMsRUFBakM7QUFDQXdDLFdBQU8sQ0FBQ3BDLENBQVIsR0FBWW9DLE9BQU8sQ0FBQ2pDLEVBQVIsR0FBYWlDLE9BQU8sQ0FBQ3ZDLEVBQWpDO0FBQ0QsR0FkRCxNQWNPO0FBQ0x1QyxXQUFPLEdBQUd6QyxFQUFWO0FBQ0Q7O0FBRUQsTUFBSWlELFlBQVksR0FBRyxTQUFmQSxZQUFlLENBQVVDLENBQVYsRUFBYTtBQUM5QixRQUFJNUQsT0FBTyxDQUFDYixXQUFaLEVBQXlCO0FBQ3ZCLFVBQUkwRSxJQUFJLEdBQUdWLE9BQU8sQ0FBQ3RDLENBQVIsS0FBYyxDQUFkLEdBQWtCLENBQWxCLEdBQXNCLENBQUMrQyxDQUFDLENBQUNKLENBQUYsR0FBTUwsT0FBTyxDQUFDeEMsRUFBZixJQUFxQndDLE9BQU8sQ0FBQ3RDLENBQTlEO0FBQ0EsVUFBSWlELElBQUksR0FBR1gsT0FBTyxDQUFDcEMsQ0FBUixLQUFjLENBQWQsR0FBa0IsQ0FBbEIsR0FBc0IsQ0FBQzZDLENBQUMsQ0FBQ0YsQ0FBRixHQUFNUCxPQUFPLENBQUN2QyxFQUFmLElBQXFCdUMsT0FBTyxDQUFDcEMsQ0FBOUQ7QUFFQSxhQUFPO0FBQ0x5QyxTQUFDLEVBQUU5QyxFQUFFLENBQUNDLEVBQUgsR0FBUWtELElBQUksR0FBR25ELEVBQUUsQ0FBQ0csQ0FEaEI7QUFFTDZDLFNBQUMsRUFBRWhELEVBQUUsQ0FBQ0UsRUFBSCxHQUFRa0QsSUFBSSxHQUFHcEQsRUFBRSxDQUFDSztBQUZoQixPQUFQO0FBSUQsS0FSRCxNQVFPO0FBQ0wsYUFBTzZDLENBQVA7QUFDRDtBQUNGLEdBWkQ7O0FBY0E5QixPQUFLLENBQUNpQyxlQUFOLENBQXNCNUQsTUFBdEIsRUFBOEJILE9BQTlCLEVBQXVDLFVBQVVPLEdBQVYsRUFBZTtBQUNwREEsT0FBRyxHQUFHLFFBQU9BLEdBQVAsTUFBZSxRQUFmLEdBQTBCQSxHQUExQixHQUFnQyxJQUF0QztBQUNBLFFBQUk4QyxNQUFNLEdBQUc5QyxHQUFHLENBQUMyQyxPQUFKLEdBQWNwRCxLQUEzQjtBQUVBLFdBQU82RCxZQUFZLENBQUM7QUFDbEJILE9BQUMsRUFBRUgsTUFBTSxDQUFDRyxDQURRO0FBRWxCRSxPQUFDLEVBQUVMLE1BQU0sQ0FBQ0s7QUFGUSxLQUFELENBQW5CO0FBSUQsR0FSRDtBQVVBLFNBQU8sSUFBUCxDQXRJb0MsQ0FzSXZCO0FBQ2QsQ0F2SUQ7O0FBeUlBdEcsTUFBTSxDQUFDQyxPQUFQLEdBQWlCMEMsV0FBakIsQyIsImZpbGUiOiJjeXRvc2NhcGUtZGFncmUuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC5qc1wiKTtcbiIsIi8qXG5Db3B5cmlnaHQgKGMpIDIwMTItMjAxNCBDaHJpcyBQZXR0aXR0XG5cblBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbm9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbmluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbnRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbmNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcblxuVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbmFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG5USEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG5JTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbkZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRVxuQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbk9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU5cblRIRSBTT0ZUV0FSRS5cbiovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBncmFwaGxpYjogcmVxdWlyZShcIi4vbGliL2dyYXBobGliXCIpLFxuXG4gIGxheW91dDogcmVxdWlyZShcIi4vbGliL2xheW91dFwiKSxcbiAgZGVidWc6IHJlcXVpcmUoXCIuL2xpYi9kZWJ1Z1wiKSxcbiAgdXRpbDoge1xuICAgIHRpbWU6IHJlcXVpcmUoXCIuL2xpYi91dGlsXCIpLnRpbWUsXG4gICAgbm90aW1lOiByZXF1aXJlKFwiLi9saWIvdXRpbFwiKS5ub3RpbWVcbiAgfSxcbiAgdmVyc2lvbjogcmVxdWlyZShcIi4vbGliL3ZlcnNpb25cIilcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgZ3JlZWR5RkFTID0gcmVxdWlyZShcIi4vZ3JlZWR5LWZhc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICB1bmRvOiB1bmRvXG59O1xuXG5mdW5jdGlvbiBydW4oZykge1xuICB2YXIgZmFzID0gKGcuZ3JhcGgoKS5hY3ljbGljZXIgPT09IFwiZ3JlZWR5XCJcbiAgICA/IGdyZWVkeUZBUyhnLCB3ZWlnaHRGbihnKSlcbiAgICA6IGRmc0ZBUyhnKSk7XG4gIF8uZm9yRWFjaChmYXMsIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgZy5yZW1vdmVFZGdlKGUpO1xuICAgIGxhYmVsLmZvcndhcmROYW1lID0gZS5uYW1lO1xuICAgIGxhYmVsLnJldmVyc2VkID0gdHJ1ZTtcbiAgICBnLnNldEVkZ2UoZS53LCBlLnYsIGxhYmVsLCBfLnVuaXF1ZUlkKFwicmV2XCIpKTtcbiAgfSk7XG5cbiAgZnVuY3Rpb24gd2VpZ2h0Rm4oZykge1xuICAgIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgICByZXR1cm4gZy5lZGdlKGUpLndlaWdodDtcbiAgICB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGRmc0ZBUyhnKSB7XG4gIHZhciBmYXMgPSBbXTtcbiAgdmFyIHN0YWNrID0ge307XG4gIHZhciB2aXNpdGVkID0ge307XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICBpZiAoXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgc3RhY2tbdl0gPSB0cnVlO1xuICAgIF8uZm9yRWFjaChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBpZiAoXy5oYXMoc3RhY2ssIGUudykpIHtcbiAgICAgICAgZmFzLnB1c2goZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZnMoZS53KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBkZWxldGUgc3RhY2tbdl07XG4gIH1cblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBkZnMpO1xuICByZXR1cm4gZmFzO1xufVxuXG5mdW5jdGlvbiB1bmRvKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBsYWJlbCA9IGcuZWRnZShlKTtcbiAgICBpZiAobGFiZWwucmV2ZXJzZWQpIHtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcblxuICAgICAgdmFyIGZvcndhcmROYW1lID0gbGFiZWwuZm9yd2FyZE5hbWU7XG4gICAgICBkZWxldGUgbGFiZWwucmV2ZXJzZWQ7XG4gICAgICBkZWxldGUgbGFiZWwuZm9yd2FyZE5hbWU7XG4gICAgICBnLnNldEVkZ2UoZS53LCBlLnYsIGxhYmVsLCBmb3J3YXJkTmFtZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZEJvcmRlclNlZ21lbnRzO1xuXG5mdW5jdGlvbiBhZGRCb3JkZXJTZWdtZW50cyhnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGRmcyk7XG4gICAgfVxuXG4gICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgbm9kZS5ib3JkZXJMZWZ0ID0gW107XG4gICAgICBub2RlLmJvcmRlclJpZ2h0ID0gW107XG4gICAgICBmb3IgKHZhciByYW5rID0gbm9kZS5taW5SYW5rLCBtYXhSYW5rID0gbm9kZS5tYXhSYW5rICsgMTtcbiAgICAgICAgcmFuayA8IG1heFJhbms7XG4gICAgICAgICsrcmFuaykge1xuICAgICAgICBhZGRCb3JkZXJOb2RlKGcsIFwiYm9yZGVyTGVmdFwiLCBcIl9ibFwiLCB2LCBub2RlLCByYW5rKTtcbiAgICAgICAgYWRkQm9yZGVyTm9kZShnLCBcImJvcmRlclJpZ2h0XCIsIFwiX2JyXCIsIHYsIG5vZGUsIHJhbmspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF8uZm9yRWFjaChnLmNoaWxkcmVuKCksIGRmcyk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJvcCwgcHJlZml4LCBzZywgc2dOb2RlLCByYW5rKSB7XG4gIHZhciBsYWJlbCA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCwgcmFuazogcmFuaywgYm9yZGVyVHlwZTogcHJvcCB9O1xuICB2YXIgcHJldiA9IHNnTm9kZVtwcm9wXVtyYW5rIC0gMV07XG4gIHZhciBjdXJyID0gdXRpbC5hZGREdW1teU5vZGUoZywgXCJib3JkZXJcIiwgbGFiZWwsIHByZWZpeCk7XG4gIHNnTm9kZVtwcm9wXVtyYW5rXSA9IGN1cnI7XG4gIGcuc2V0UGFyZW50KGN1cnIsIHNnKTtcbiAgaWYgKHByZXYpIHtcbiAgICBnLnNldEVkZ2UocHJldiwgY3VyciwgeyB3ZWlnaHQ6IDEgfSk7XG4gIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGFkanVzdDogYWRqdXN0LFxuICB1bmRvOiB1bmRvXG59O1xuXG5mdW5jdGlvbiBhZGp1c3QoZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImxyXCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgc3dhcFdpZHRoSGVpZ2h0KGcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICB2YXIgcmFua0RpciA9IGcuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7XG4gIGlmIChyYW5rRGlyID09PSBcImJ0XCIgfHwgcmFua0RpciA9PT0gXCJybFwiKSB7XG4gICAgcmV2ZXJzZVkoZyk7XG4gIH1cblxuICBpZiAocmFua0RpciA9PT0gXCJsclwiIHx8IHJhbmtEaXIgPT09IFwicmxcIikge1xuICAgIHN3YXBYWShnKTtcbiAgICBzd2FwV2lkdGhIZWlnaHQoZyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc3dhcFdpZHRoSGVpZ2h0KGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBzd2FwV2lkdGhIZWlnaHRPbmUoZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHsgc3dhcFdpZHRoSGVpZ2h0T25lKGcuZWRnZShlKSk7IH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwV2lkdGhIZWlnaHRPbmUoYXR0cnMpIHtcbiAgdmFyIHcgPSBhdHRycy53aWR0aDtcbiAgYXR0cnMud2lkdGggPSBhdHRycy5oZWlnaHQ7XG4gIGF0dHJzLmhlaWdodCA9IHc7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VZKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXZlcnNlWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCByZXZlcnNlWU9uZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieVwiKSkge1xuICAgICAgcmV2ZXJzZVlPbmUoZWRnZSk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmV2ZXJzZVlPbmUoYXR0cnMpIHtcbiAgYXR0cnMueSA9IC1hdHRycy55O1xufVxuXG5mdW5jdGlvbiBzd2FwWFkoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHN3YXBYWU9uZShnLm5vZGUodikpOyB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgXy5mb3JFYWNoKGVkZ2UucG9pbnRzLCBzd2FwWFlPbmUpO1xuICAgIGlmIChfLmhhcyhlZGdlLCBcInhcIikpIHtcbiAgICAgIHN3YXBYWU9uZShlZGdlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2FwWFlPbmUoYXR0cnMpIHtcbiAgdmFyIHggPSBhdHRycy54O1xuICBhdHRycy54ID0gYXR0cnMueTtcbiAgYXR0cnMueSA9IHg7XG59XG4iLCIvKlxuICogU2ltcGxlIGRvdWJseSBsaW5rZWQgbGlzdCBpbXBsZW1lbnRhdGlvbiBkZXJpdmVkIGZyb20gQ29ybWVuLCBldCBhbC4sXG4gKiBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuXG4gKi9cblxubW9kdWxlLmV4cG9ydHMgPSBMaXN0O1xuXG5mdW5jdGlvbiBMaXN0KCkge1xuICB2YXIgc2VudGluZWwgPSB7fTtcbiAgc2VudGluZWwuX25leHQgPSBzZW50aW5lbC5fcHJldiA9IHNlbnRpbmVsO1xuICB0aGlzLl9zZW50aW5lbCA9IHNlbnRpbmVsO1xufVxuXG5MaXN0LnByb3RvdHlwZS5kZXF1ZXVlID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgZW50cnkgPSBzZW50aW5lbC5fcHJldjtcbiAgaWYgKGVudHJ5ICE9PSBzZW50aW5lbCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gICAgcmV0dXJuIGVudHJ5O1xuICB9XG59O1xuXG5MaXN0LnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24oZW50cnkpIHtcbiAgdmFyIHNlbnRpbmVsID0gdGhpcy5fc2VudGluZWw7XG4gIGlmIChlbnRyeS5fcHJldiAmJiBlbnRyeS5fbmV4dCkge1xuICAgIHVubGluayhlbnRyeSk7XG4gIH1cbiAgZW50cnkuX25leHQgPSBzZW50aW5lbC5fbmV4dDtcbiAgc2VudGluZWwuX25leHQuX3ByZXYgPSBlbnRyeTtcbiAgc2VudGluZWwuX25leHQgPSBlbnRyeTtcbiAgZW50cnkuX3ByZXYgPSBzZW50aW5lbDtcbn07XG5cbkxpc3QucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHJzID0gW107XG4gIHZhciBzZW50aW5lbCA9IHRoaXMuX3NlbnRpbmVsO1xuICB2YXIgY3VyciA9IHNlbnRpbmVsLl9wcmV2O1xuICB3aGlsZSAoY3VyciAhPT0gc2VudGluZWwpIHtcbiAgICBzdHJzLnB1c2goSlNPTi5zdHJpbmdpZnkoY3VyciwgZmlsdGVyT3V0TGlua3MpKTtcbiAgICBjdXJyID0gY3Vyci5fcHJldjtcbiAgfVxuICByZXR1cm4gXCJbXCIgKyBzdHJzLmpvaW4oXCIsIFwiKSArIFwiXVwiO1xufTtcblxuZnVuY3Rpb24gdW5saW5rKGVudHJ5KSB7XG4gIGVudHJ5Ll9wcmV2Ll9uZXh0ID0gZW50cnkuX25leHQ7XG4gIGVudHJ5Ll9uZXh0Ll9wcmV2ID0gZW50cnkuX3ByZXY7XG4gIGRlbGV0ZSBlbnRyeS5fbmV4dDtcbiAgZGVsZXRlIGVudHJ5Ll9wcmV2O1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJPdXRMaW5rcyhrLCB2KSB7XG4gIGlmIChrICE9PSBcIl9uZXh0XCIgJiYgayAhPT0gXCJfcHJldlwiKSB7XG4gICAgcmV0dXJuIHY7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBkZWJ1Z09yZGVyaW5nOiBkZWJ1Z09yZGVyaW5nXG59O1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuZnVuY3Rpb24gZGVidWdPcmRlcmluZyhnKSB7XG4gIHZhciBsYXllck1hdHJpeCA9IHV0aWwuYnVpbGRMYXllck1hdHJpeChnKTtcblxuICB2YXIgaCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlLCBtdWx0aWdyYXBoOiB0cnVlIH0pLnNldEdyYXBoKHt9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaC5zZXROb2RlKHYsIHsgbGFiZWw6IHYgfSk7XG4gICAgaC5zZXRQYXJlbnQodiwgXCJsYXllclwiICsgZy5ub2RlKHYpLnJhbmspO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaC5zZXRFZGdlKGUudiwgZS53LCB7fSwgZS5uYW1lKTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyTWF0cml4LCBmdW5jdGlvbihsYXllciwgaSkge1xuICAgIHZhciBsYXllclYgPSBcImxheWVyXCIgKyBpO1xuICAgIGguc2V0Tm9kZShsYXllclYsIHsgcmFuazogXCJzYW1lXCIgfSk7XG4gICAgXy5yZWR1Y2UobGF5ZXIsIGZ1bmN0aW9uKHUsIHYpIHtcbiAgICAgIGguc2V0RWRnZSh1LCB2LCB7IHN0eWxlOiBcImludmlzXCIgfSk7XG4gICAgICByZXR1cm4gdjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGg7XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBncmFwaGxpYjtcblxuaWYgKHR5cGVvZiByZXF1aXJlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgdHJ5IHtcbiAgICBncmFwaGxpYiA9IHJlcXVpcmUoXCJncmFwaGxpYlwiKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWdyYXBobGliKSB7XG4gIGdyYXBobGliID0gd2luZG93LmdyYXBobGliO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdyYXBobGliO1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciBMaXN0ID0gcmVxdWlyZShcIi4vZGF0YS9saXN0XCIpO1xuXG4vKlxuICogQSBncmVlZHkgaGV1cmlzdGljIGZvciBmaW5kaW5nIGEgZmVlZGJhY2sgYXJjIHNldCBmb3IgYSBncmFwaC4gQSBmZWVkYmFja1xuICogYXJjIHNldCBpcyBhIHNldCBvZiBlZGdlcyB0aGF0IGNhbiBiZSByZW1vdmVkIHRvIG1ha2UgYSBncmFwaCBhY3ljbGljLlxuICogVGhlIGFsZ29yaXRobSBjb21lcyBmcm9tOiBQLiBFYWRlcywgWC4gTGluLCBhbmQgVy4gRi4gU215dGgsIFwiQSBmYXN0IGFuZFxuICogZWZmZWN0aXZlIGhldXJpc3RpYyBmb3IgdGhlIGZlZWRiYWNrIGFyYyBzZXQgcHJvYmxlbS5cIiBUaGlzIGltcGxlbWVudGF0aW9uXG4gKiBhZGp1c3RzIHRoYXQgZnJvbSB0aGUgcGFwZXIgdG8gYWxsb3cgZm9yIHdlaWdodGVkIGVkZ2VzLlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGdyZWVkeUZBUztcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZOID0gXy5jb25zdGFudCgxKTtcblxuZnVuY3Rpb24gZ3JlZWR5RkFTKGcsIHdlaWdodEZuKSB7XG4gIGlmIChnLm5vZGVDb3VudCgpIDw9IDEpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdmFyIHN0YXRlID0gYnVpbGRTdGF0ZShnLCB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GTik7XG4gIHZhciByZXN1bHRzID0gZG9HcmVlZHlGQVMoc3RhdGUuZ3JhcGgsIHN0YXRlLmJ1Y2tldHMsIHN0YXRlLnplcm9JZHgpO1xuXG4gIC8vIEV4cGFuZCBtdWx0aS1lZGdlc1xuICByZXR1cm4gXy5mbGF0dGVuKF8ubWFwKHJlc3VsdHMsIGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gZy5vdXRFZGdlcyhlLnYsIGUudyk7XG4gIH0pLCB0cnVlKTtcbn1cblxuZnVuY3Rpb24gZG9HcmVlZHlGQVMoZywgYnVja2V0cywgemVyb0lkeCkge1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgc291cmNlcyA9IGJ1Y2tldHNbYnVja2V0cy5sZW5ndGggLSAxXTtcbiAgdmFyIHNpbmtzID0gYnVja2V0c1swXTtcblxuICB2YXIgZW50cnk7XG4gIHdoaWxlIChnLm5vZGVDb3VudCgpKSB7XG4gICAgd2hpbGUgKChlbnRyeSA9IHNpbmtzLmRlcXVldWUoKSkpICAgeyByZW1vdmVOb2RlKGcsIGJ1Y2tldHMsIHplcm9JZHgsIGVudHJ5KTsgfVxuICAgIHdoaWxlICgoZW50cnkgPSBzb3VyY2VzLmRlcXVldWUoKSkpIHsgcmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSk7IH1cbiAgICBpZiAoZy5ub2RlQ291bnQoKSkge1xuICAgICAgZm9yICh2YXIgaSA9IGJ1Y2tldHMubGVuZ3RoIC0gMjsgaSA+IDA7IC0taSkge1xuICAgICAgICBlbnRyeSA9IGJ1Y2tldHNbaV0uZGVxdWV1ZSgpO1xuICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5jb25jYXQocmVtb3ZlTm9kZShnLCBidWNrZXRzLCB6ZXJvSWR4LCBlbnRyeSwgdHJ1ZSkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZU5vZGUoZywgYnVja2V0cywgemVyb0lkeCwgZW50cnksIGNvbGxlY3RQcmVkZWNlc3NvcnMpIHtcbiAgdmFyIHJlc3VsdHMgPSBjb2xsZWN0UHJlZGVjZXNzb3JzID8gW10gOiB1bmRlZmluZWQ7XG5cbiAgXy5mb3JFYWNoKGcuaW5FZGdlcyhlbnRyeS52KSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ZWlnaHQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgdmFyIHVFbnRyeSA9IGcubm9kZShlZGdlLnYpO1xuXG4gICAgaWYgKGNvbGxlY3RQcmVkZWNlc3NvcnMpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh7IHY6IGVkZ2UudiwgdzogZWRnZS53IH0pO1xuICAgIH1cblxuICAgIHVFbnRyeS5vdXQgLT0gd2VpZ2h0O1xuICAgIGFzc2lnbkJ1Y2tldChidWNrZXRzLCB6ZXJvSWR4LCB1RW50cnkpO1xuICB9KTtcblxuICBfLmZvckVhY2goZy5vdXRFZGdlcyhlbnRyeS52KSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ZWlnaHQgPSBnLmVkZ2UoZWRnZSk7XG4gICAgdmFyIHcgPSBlZGdlLnc7XG4gICAgdmFyIHdFbnRyeSA9IGcubm9kZSh3KTtcbiAgICB3RW50cnlbXCJpblwiXSAtPSB3ZWlnaHQ7XG4gICAgYXNzaWduQnVja2V0KGJ1Y2tldHMsIHplcm9JZHgsIHdFbnRyeSk7XG4gIH0pO1xuXG4gIGcucmVtb3ZlTm9kZShlbnRyeS52KTtcblxuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gYnVpbGRTdGF0ZShnLCB3ZWlnaHRGbikge1xuICB2YXIgZmFzR3JhcGggPSBuZXcgR3JhcGgoKTtcbiAgdmFyIG1heEluID0gMDtcbiAgdmFyIG1heE91dCA9IDA7XG5cbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGZhc0dyYXBoLnNldE5vZGUodiwgeyB2OiB2LCBcImluXCI6IDAsIG91dDogMCB9KTtcbiAgfSk7XG5cbiAgLy8gQWdncmVnYXRlIHdlaWdodHMgb24gbm9kZXMsIGJ1dCBhbHNvIHN1bSB0aGUgd2VpZ2h0cyBhY3Jvc3MgbXVsdGktZWRnZXNcbiAgLy8gaW50byBhIHNpbmdsZSBlZGdlIGZvciB0aGUgZmFzR3JhcGguXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgcHJldldlaWdodCA9IGZhc0dyYXBoLmVkZ2UoZS52LCBlLncpIHx8IDA7XG4gICAgdmFyIHdlaWdodCA9IHdlaWdodEZuKGUpO1xuICAgIHZhciBlZGdlV2VpZ2h0ID0gcHJldldlaWdodCArIHdlaWdodDtcbiAgICBmYXNHcmFwaC5zZXRFZGdlKGUudiwgZS53LCBlZGdlV2VpZ2h0KTtcbiAgICBtYXhPdXQgPSBNYXRoLm1heChtYXhPdXQsIGZhc0dyYXBoLm5vZGUoZS52KS5vdXQgKz0gd2VpZ2h0KTtcbiAgICBtYXhJbiAgPSBNYXRoLm1heChtYXhJbiwgIGZhc0dyYXBoLm5vZGUoZS53KVtcImluXCJdICArPSB3ZWlnaHQpO1xuICB9KTtcblxuICB2YXIgYnVja2V0cyA9IF8ucmFuZ2UobWF4T3V0ICsgbWF4SW4gKyAzKS5tYXAoZnVuY3Rpb24oKSB7IHJldHVybiBuZXcgTGlzdCgpOyB9KTtcbiAgdmFyIHplcm9JZHggPSBtYXhJbiArIDE7XG5cbiAgXy5mb3JFYWNoKGZhc0dyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgZmFzR3JhcGgubm9kZSh2KSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IGdyYXBoOiBmYXNHcmFwaCwgYnVja2V0czogYnVja2V0cywgemVyb0lkeDogemVyb0lkeCB9O1xufVxuXG5mdW5jdGlvbiBhc3NpZ25CdWNrZXQoYnVja2V0cywgemVyb0lkeCwgZW50cnkpIHtcbiAgaWYgKCFlbnRyeS5vdXQpIHtcbiAgICBidWNrZXRzWzBdLmVucXVldWUoZW50cnkpO1xuICB9IGVsc2UgaWYgKCFlbnRyeVtcImluXCJdKSB7XG4gICAgYnVja2V0c1tidWNrZXRzLmxlbmd0aCAtIDFdLmVucXVldWUoZW50cnkpO1xuICB9IGVsc2Uge1xuICAgIGJ1Y2tldHNbZW50cnkub3V0IC0gZW50cnlbXCJpblwiXSArIHplcm9JZHhdLmVucXVldWUoZW50cnkpO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgYWN5Y2xpYyA9IHJlcXVpcmUoXCIuL2FjeWNsaWNcIik7XG52YXIgbm9ybWFsaXplID0gcmVxdWlyZShcIi4vbm9ybWFsaXplXCIpO1xudmFyIHJhbmsgPSByZXF1aXJlKFwiLi9yYW5rXCIpO1xudmFyIG5vcm1hbGl6ZVJhbmtzID0gcmVxdWlyZShcIi4vdXRpbFwiKS5ub3JtYWxpemVSYW5rcztcbnZhciBwYXJlbnREdW1teUNoYWlucyA9IHJlcXVpcmUoXCIuL3BhcmVudC1kdW1teS1jaGFpbnNcIik7XG52YXIgcmVtb3ZlRW1wdHlSYW5rcyA9IHJlcXVpcmUoXCIuL3V0aWxcIikucmVtb3ZlRW1wdHlSYW5rcztcbnZhciBuZXN0aW5nR3JhcGggPSByZXF1aXJlKFwiLi9uZXN0aW5nLWdyYXBoXCIpO1xudmFyIGFkZEJvcmRlclNlZ21lbnRzID0gcmVxdWlyZShcIi4vYWRkLWJvcmRlci1zZWdtZW50c1wiKTtcbnZhciBjb29yZGluYXRlU3lzdGVtID0gcmVxdWlyZShcIi4vY29vcmRpbmF0ZS1zeXN0ZW1cIik7XG52YXIgb3JkZXIgPSByZXF1aXJlKFwiLi9vcmRlclwiKTtcbnZhciBwb3NpdGlvbiA9IHJlcXVpcmUoXCIuL3Bvc2l0aW9uXCIpO1xudmFyIHV0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4vZ3JhcGhsaWJcIikuR3JhcGg7XG5cbm1vZHVsZS5leHBvcnRzID0gbGF5b3V0O1xuXG5mdW5jdGlvbiBsYXlvdXQoZywgb3B0cykge1xuICB2YXIgdGltZSA9IG9wdHMgJiYgb3B0cy5kZWJ1Z1RpbWluZyA/IHV0aWwudGltZSA6IHV0aWwubm90aW1lO1xuICB0aW1lKFwibGF5b3V0XCIsIGZ1bmN0aW9uKCkge1xuICAgIHZhciBsYXlvdXRHcmFwaCA9IFxuICAgICAgdGltZShcIiAgYnVpbGRMYXlvdXRHcmFwaFwiLCBmdW5jdGlvbigpIHsgcmV0dXJuIGJ1aWxkTGF5b3V0R3JhcGgoZyk7IH0pO1xuICAgIHRpbWUoXCIgIHJ1bkxheW91dFwiLCAgICAgICAgZnVuY3Rpb24oKSB7IHJ1bkxheW91dChsYXlvdXRHcmFwaCwgdGltZSk7IH0pO1xuICAgIHRpbWUoXCIgIHVwZGF0ZUlucHV0R3JhcGhcIiwgZnVuY3Rpb24oKSB7IHVwZGF0ZUlucHV0R3JhcGgoZywgbGF5b3V0R3JhcGgpOyB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJ1bkxheW91dChnLCB0aW1lKSB7XG4gIHRpbWUoXCIgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVsc1wiLCBmdW5jdGlvbigpIHsgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlU2VsZkVkZ2VzXCIsICAgICAgICBmdW5jdGlvbigpIHsgcmVtb3ZlU2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhY3ljbGljXCIsICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBhY3ljbGljLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgbmVzdGluZ0dyYXBoLnJ1blwiLCAgICAgICBmdW5jdGlvbigpIHsgbmVzdGluZ0dyYXBoLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmFua1wiLCAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcmFuayh1dGlsLmFzTm9uQ29tcG91bmRHcmFwaChnKSk7IH0pO1xuICB0aW1lKFwiICAgIGluamVjdEVkZ2VMYWJlbFByb3hpZXNcIiwgZnVuY3Rpb24oKSB7IGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIHJlbW92ZUVtcHR5UmFua3NcIiwgICAgICAgZnVuY3Rpb24oKSB7IHJlbW92ZUVtcHR5UmFua3MoZyk7IH0pO1xuICB0aW1lKFwiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwXCIsICAgZnVuY3Rpb24oKSB7IG5lc3RpbmdHcmFwaC5jbGVhbnVwKGcpOyB9KTtcbiAgdGltZShcIiAgICBub3JtYWxpemVSYW5rc1wiLCAgICAgICAgIGZ1bmN0aW9uKCkgeyBub3JtYWxpemVSYW5rcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgYXNzaWduUmFua01pbk1heFwiLCAgICAgICBmdW5jdGlvbigpIHsgYXNzaWduUmFua01pbk1heChnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmVtb3ZlRWRnZUxhYmVsUHJveGllc1wiLCBmdW5jdGlvbigpIHsgcmVtb3ZlRWRnZUxhYmVsUHJveGllcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplLnJ1blwiLCAgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplLnJ1bihnKTsgfSk7XG4gIHRpbWUoXCIgICAgcGFyZW50RHVtbXlDaGFpbnNcIiwgICAgICBmdW5jdGlvbigpIHsgcGFyZW50RHVtbXlDaGFpbnMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFkZEJvcmRlclNlZ21lbnRzXCIsICAgICAgZnVuY3Rpb24oKSB7IGFkZEJvcmRlclNlZ21lbnRzKGcpOyB9KTtcbiAgdGltZShcIiAgICBvcmRlclwiLCAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgeyBvcmRlcihnKTsgfSk7XG4gIHRpbWUoXCIgICAgaW5zZXJ0U2VsZkVkZ2VzXCIsICAgICAgICBmdW5jdGlvbigpIHsgaW5zZXJ0U2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICBhZGp1c3RDb29yZGluYXRlU3lzdGVtXCIsIGZ1bmN0aW9uKCkgeyBjb29yZGluYXRlU3lzdGVtLmFkanVzdChnKTsgfSk7XG4gIHRpbWUoXCIgICAgcG9zaXRpb25cIiwgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsgcG9zaXRpb24oZyk7IH0pO1xuICB0aW1lKFwiICAgIHBvc2l0aW9uU2VsZkVkZ2VzXCIsICAgICAgZnVuY3Rpb24oKSB7IHBvc2l0aW9uU2VsZkVkZ2VzKGcpOyB9KTtcbiAgdGltZShcIiAgICByZW1vdmVCb3JkZXJOb2Rlc1wiLCAgICAgIGZ1bmN0aW9uKCkgeyByZW1vdmVCb3JkZXJOb2RlcyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgbm9ybWFsaXplLnVuZG9cIiwgICAgICAgICBmdW5jdGlvbigpIHsgbm9ybWFsaXplLnVuZG8oZyk7IH0pO1xuICB0aW1lKFwiICAgIGZpeHVwRWRnZUxhYmVsQ29vcmRzXCIsICAgZnVuY3Rpb24oKSB7IGZpeHVwRWRnZUxhYmVsQ29vcmRzKGcpOyB9KTtcbiAgdGltZShcIiAgICB1bmRvQ29vcmRpbmF0ZVN5c3RlbVwiLCAgIGZ1bmN0aW9uKCkgeyBjb29yZGluYXRlU3lzdGVtLnVuZG8oZyk7IH0pO1xuICB0aW1lKFwiICAgIHRyYW5zbGF0ZUdyYXBoXCIsICAgICAgICAgZnVuY3Rpb24oKSB7IHRyYW5zbGF0ZUdyYXBoKGcpOyB9KTtcbiAgdGltZShcIiAgICBhc3NpZ25Ob2RlSW50ZXJzZWN0c1wiLCAgIGZ1bmN0aW9uKCkgeyBhc3NpZ25Ob2RlSW50ZXJzZWN0cyhnKTsgfSk7XG4gIHRpbWUoXCIgICAgcmV2ZXJzZVBvaW50c1wiLCAgICAgICAgICBmdW5jdGlvbigpIHsgcmV2ZXJzZVBvaW50c0ZvclJldmVyc2VkRWRnZXMoZyk7IH0pO1xuICB0aW1lKFwiICAgIGFjeWNsaWMudW5kb1wiLCAgICAgICAgICAgZnVuY3Rpb24oKSB7IGFjeWNsaWMudW5kbyhnKTsgfSk7XG59XG5cbi8qXG4gKiBDb3BpZXMgZmluYWwgbGF5b3V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGxheW91dCBncmFwaCBiYWNrIHRvIHRoZSBpbnB1dFxuICogZ3JhcGguIFRoaXMgcHJvY2VzcyBvbmx5IGNvcGllcyB3aGl0ZWxpc3RlZCBhdHRyaWJ1dGVzIGZyb20gdGhlIGxheW91dCBncmFwaFxuICogdG8gdGhlIGlucHV0IGdyYXBoLCBzbyBpdCBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiB1cGRhdGVJbnB1dEdyYXBoKGlucHV0R3JhcGgsIGxheW91dEdyYXBoKSB7XG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5wdXRMYWJlbCA9IGlucHV0R3JhcGgubm9kZSh2KTtcbiAgICB2YXIgbGF5b3V0TGFiZWwgPSBsYXlvdXRHcmFwaC5ub2RlKHYpO1xuXG4gICAgaWYgKGlucHV0TGFiZWwpIHtcbiAgICAgIGlucHV0TGFiZWwueCA9IGxheW91dExhYmVsLng7XG4gICAgICBpbnB1dExhYmVsLnkgPSBsYXlvdXRMYWJlbC55O1xuXG4gICAgICBpZiAobGF5b3V0R3JhcGguY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICAgIGlucHV0TGFiZWwud2lkdGggPSBsYXlvdXRMYWJlbC53aWR0aDtcbiAgICAgICAgaW5wdXRMYWJlbC5oZWlnaHQgPSBsYXlvdXRMYWJlbC5oZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGlucHV0TGFiZWwgPSBpbnB1dEdyYXBoLmVkZ2UoZSk7XG4gICAgdmFyIGxheW91dExhYmVsID0gbGF5b3V0R3JhcGguZWRnZShlKTtcblxuICAgIGlucHV0TGFiZWwucG9pbnRzID0gbGF5b3V0TGFiZWwucG9pbnRzO1xuICAgIGlmIChfLmhhcyhsYXlvdXRMYWJlbCwgXCJ4XCIpKSB7XG4gICAgICBpbnB1dExhYmVsLnggPSBsYXlvdXRMYWJlbC54O1xuICAgICAgaW5wdXRMYWJlbC55ID0gbGF5b3V0TGFiZWwueTtcbiAgICB9XG4gIH0pO1xuXG4gIGlucHV0R3JhcGguZ3JhcGgoKS53aWR0aCA9IGxheW91dEdyYXBoLmdyYXBoKCkud2lkdGg7XG4gIGlucHV0R3JhcGguZ3JhcGgoKS5oZWlnaHQgPSBsYXlvdXRHcmFwaC5ncmFwaCgpLmhlaWdodDtcbn1cblxudmFyIGdyYXBoTnVtQXR0cnMgPSBbXCJub2Rlc2VwXCIsIFwiZWRnZXNlcFwiLCBcInJhbmtzZXBcIiwgXCJtYXJnaW54XCIsIFwibWFyZ2lueVwiXTtcbnZhciBncmFwaERlZmF1bHRzID0geyByYW5rc2VwOiA1MCwgZWRnZXNlcDogMjAsIG5vZGVzZXA6IDUwLCByYW5rZGlyOiBcInRiXCIgfTtcbnZhciBncmFwaEF0dHJzID0gW1wiYWN5Y2xpY2VyXCIsIFwicmFua2VyXCIsIFwicmFua2RpclwiLCBcImFsaWduXCJdO1xudmFyIG5vZGVOdW1BdHRycyA9IFtcIndpZHRoXCIsIFwiaGVpZ2h0XCJdO1xudmFyIG5vZGVEZWZhdWx0cyA9IHsgd2lkdGg6IDAsIGhlaWdodDogMCB9O1xudmFyIGVkZ2VOdW1BdHRycyA9IFtcIm1pbmxlblwiLCBcIndlaWdodFwiLCBcIndpZHRoXCIsIFwiaGVpZ2h0XCIsIFwibGFiZWxvZmZzZXRcIl07XG52YXIgZWRnZURlZmF1bHRzID0ge1xuICBtaW5sZW46IDEsIHdlaWdodDogMSwgd2lkdGg6IDAsIGhlaWdodDogMCxcbiAgbGFiZWxvZmZzZXQ6IDEwLCBsYWJlbHBvczogXCJyXCJcbn07XG52YXIgZWRnZUF0dHJzID0gW1wibGFiZWxwb3NcIl07XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgbmV3IGdyYXBoIGZyb20gdGhlIGlucHV0IGdyYXBoLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgbGF5b3V0LlxuICogVGhpcyBwcm9jZXNzIGNvcGllcyBvbmx5IHdoaXRlbGlzdGVkIGF0dHJpYnV0ZXMgZnJvbSB0aGUgaW5wdXQgZ3JhcGggdG8gdGhlXG4gKiBsYXlvdXQgZ3JhcGguIFRodXMgdGhpcyBmdW5jdGlvbiBzZXJ2ZXMgYXMgYSBnb29kIHBsYWNlIHRvIGRldGVybWluZSB3aGF0XG4gKiBhdHRyaWJ1dGVzIGNhbiBpbmZsdWVuY2UgbGF5b3V0LlxuICovXG5mdW5jdGlvbiBidWlsZExheW91dEdyYXBoKGlucHV0R3JhcGgpIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoeyBtdWx0aWdyYXBoOiB0cnVlLCBjb21wb3VuZDogdHJ1ZSB9KTtcbiAgdmFyIGdyYXBoID0gY2Fub25pY2FsaXplKGlucHV0R3JhcGguZ3JhcGgoKSk7XG5cbiAgZy5zZXRHcmFwaChfLm1lcmdlKHt9LFxuICAgIGdyYXBoRGVmYXVsdHMsXG4gICAgc2VsZWN0TnVtYmVyQXR0cnMoZ3JhcGgsIGdyYXBoTnVtQXR0cnMpLFxuICAgIF8ucGljayhncmFwaCwgZ3JhcGhBdHRycykpKTtcblxuICBfLmZvckVhY2goaW5wdXRHcmFwaC5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBjYW5vbmljYWxpemUoaW5wdXRHcmFwaC5ub2RlKHYpKTtcbiAgICBnLnNldE5vZGUodiwgXy5kZWZhdWx0cyhzZWxlY3ROdW1iZXJBdHRycyhub2RlLCBub2RlTnVtQXR0cnMpLCBub2RlRGVmYXVsdHMpKTtcbiAgICBnLnNldFBhcmVudCh2LCBpbnB1dEdyYXBoLnBhcmVudCh2KSk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChpbnB1dEdyYXBoLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGNhbm9uaWNhbGl6ZShpbnB1dEdyYXBoLmVkZ2UoZSkpO1xuICAgIGcuc2V0RWRnZShlLCBfLm1lcmdlKHt9LFxuICAgICAgZWRnZURlZmF1bHRzLFxuICAgICAgc2VsZWN0TnVtYmVyQXR0cnMoZWRnZSwgZWRnZU51bUF0dHJzKSxcbiAgICAgIF8ucGljayhlZGdlLCBlZGdlQXR0cnMpKSk7XG4gIH0pO1xuXG4gIHJldHVybiBnO1xufVxuXG4vKlxuICogVGhpcyBpZGVhIGNvbWVzIGZyb20gdGhlIEdhbnNuZXIgcGFwZXI6IHRvIGFjY291bnQgZm9yIGVkZ2UgbGFiZWxzIGluIG91clxuICogbGF5b3V0IHdlIHNwbGl0IGVhY2ggcmFuayBpbiBoYWxmIGJ5IGRvdWJsaW5nIG1pbmxlbiBhbmQgaGFsdmluZyByYW5rc2VwLlxuICogVGhlbiB3ZSBjYW4gcGxhY2UgbGFiZWxzIGF0IHRoZXNlIG1pZC1wb2ludHMgYmV0d2VlbiBub2Rlcy5cbiAqXG4gKiBXZSBhbHNvIGFkZCBzb21lIG1pbmltYWwgcGFkZGluZyB0byB0aGUgd2lkdGggdG8gcHVzaCB0aGUgbGFiZWwgZm9yIHRoZSBlZGdlXG4gKiBhd2F5IGZyb20gdGhlIGVkZ2UgaXRzZWxmIGEgYml0LlxuICovXG5mdW5jdGlvbiBtYWtlU3BhY2VGb3JFZGdlTGFiZWxzKGcpIHtcbiAgdmFyIGdyYXBoID0gZy5ncmFwaCgpO1xuICBncmFwaC5yYW5rc2VwIC89IDI7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBlZGdlLm1pbmxlbiAqPSAyO1xuICAgIGlmIChlZGdlLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkgIT09IFwiY1wiKSB7XG4gICAgICBpZiAoZ3JhcGgucmFua2RpciA9PT0gXCJUQlwiIHx8IGdyYXBoLnJhbmtkaXIgPT09IFwiQlRcIikge1xuICAgICAgICBlZGdlLndpZHRoICs9IGVkZ2UubGFiZWxvZmZzZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlZGdlLmhlaWdodCArPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbi8qXG4gKiBDcmVhdGVzIHRlbXBvcmFyeSBkdW1teSBub2RlcyB0aGF0IGNhcHR1cmUgdGhlIHJhbmsgaW4gd2hpY2ggZWFjaCBlZGdlJ3NcbiAqIGxhYmVsIGlzIGdvaW5nIHRvLCBpZiBpdCBoYXMgb25lIG9mIG5vbi16ZXJvIHdpZHRoIGFuZCBoZWlnaHQuIFdlIGRvIHRoaXNcbiAqIHNvIHRoYXQgd2UgY2FuIHNhZmVseSByZW1vdmUgZW1wdHkgcmFua3Mgd2hpbGUgcHJlc2VydmluZyBiYWxhbmNlIGZvciB0aGVcbiAqIGxhYmVsJ3MgcG9zaXRpb24uXG4gKi9cbmZ1bmN0aW9uIGluamVjdEVkZ2VMYWJlbFByb3hpZXMoZykge1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKGVkZ2Uud2lkdGggJiYgZWRnZS5oZWlnaHQpIHtcbiAgICAgIHZhciB2ID0gZy5ub2RlKGUudik7XG4gICAgICB2YXIgdyA9IGcubm9kZShlLncpO1xuICAgICAgdmFyIGxhYmVsID0geyByYW5rOiAody5yYW5rIC0gdi5yYW5rKSAvIDIgKyB2LnJhbmssIGU6IGUgfTtcbiAgICAgIHV0aWwuYWRkRHVtbXlOb2RlKGcsIFwiZWRnZS1wcm94eVwiLCBsYWJlbCwgXCJfZXBcIik7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduUmFua01pbk1heChnKSB7XG4gIHZhciBtYXhSYW5rID0gMDtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmJvcmRlclRvcCkge1xuICAgICAgbm9kZS5taW5SYW5rID0gZy5ub2RlKG5vZGUuYm9yZGVyVG9wKS5yYW5rO1xuICAgICAgbm9kZS5tYXhSYW5rID0gZy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKS5yYW5rO1xuICAgICAgbWF4UmFuayA9IF8ubWF4KG1heFJhbmssIG5vZGUubWF4UmFuayk7XG4gICAgfVxuICB9KTtcbiAgZy5ncmFwaCgpLm1heFJhbmsgPSBtYXhSYW5rO1xufVxuXG5mdW5jdGlvbiByZW1vdmVFZGdlTGFiZWxQcm94aWVzKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmR1bW15ID09PSBcImVkZ2UtcHJveHlcIikge1xuICAgICAgZy5lZGdlKG5vZGUuZSkubGFiZWxSYW5rID0gbm9kZS5yYW5rO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZUdyYXBoKGcpIHtcbiAgdmFyIG1pblggPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhYID0gMDtcbiAgdmFyIG1pblkgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gIHZhciBtYXhZID0gMDtcbiAgdmFyIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCk7XG4gIHZhciBtYXJnaW5YID0gZ3JhcGhMYWJlbC5tYXJnaW54IHx8IDA7XG4gIHZhciBtYXJnaW5ZID0gZ3JhcGhMYWJlbC5tYXJnaW55IHx8IDA7XG5cbiAgZnVuY3Rpb24gZ2V0RXh0cmVtZXMoYXR0cnMpIHtcbiAgICB2YXIgeCA9IGF0dHJzLng7XG4gICAgdmFyIHkgPSBhdHRycy55O1xuICAgIHZhciB3ID0gYXR0cnMud2lkdGg7XG4gICAgdmFyIGggPSBhdHRycy5oZWlnaHQ7XG4gICAgbWluWCA9IE1hdGgubWluKG1pblgsIHggLSB3IC8gMik7XG4gICAgbWF4WCA9IE1hdGgubWF4KG1heFgsIHggKyB3IC8gMik7XG4gICAgbWluWSA9IE1hdGgubWluKG1pblksIHkgLSBoIC8gMik7XG4gICAgbWF4WSA9IE1hdGgubWF4KG1heFksIHkgKyBoIC8gMik7XG4gIH1cblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IGdldEV4dHJlbWVzKGcubm9kZSh2KSk7IH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkge1xuICAgICAgZ2V0RXh0cmVtZXMoZWRnZSk7XG4gICAgfVxuICB9KTtcblxuICBtaW5YIC09IG1hcmdpblg7XG4gIG1pblkgLT0gbWFyZ2luWTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgbm9kZS54IC09IG1pblg7XG4gICAgbm9kZS55IC09IG1pblk7XG4gIH0pO1xuXG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBfLmZvckVhY2goZWRnZS5wb2ludHMsIGZ1bmN0aW9uKHApIHtcbiAgICAgIHAueCAtPSBtaW5YO1xuICAgICAgcC55IC09IG1pblk7XG4gICAgfSk7XG4gICAgaWYgKF8uaGFzKGVkZ2UsIFwieFwiKSkgeyBlZGdlLnggLT0gbWluWDsgfVxuICAgIGlmIChfLmhhcyhlZGdlLCBcInlcIikpIHsgZWRnZS55IC09IG1pblk7IH1cbiAgfSk7XG5cbiAgZ3JhcGhMYWJlbC53aWR0aCA9IG1heFggLSBtaW5YICsgbWFyZ2luWDtcbiAgZ3JhcGhMYWJlbC5oZWlnaHQgPSBtYXhZIC0gbWluWSArIG1hcmdpblk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbk5vZGVJbnRlcnNlY3RzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIHZhciBub2RlViA9IGcubm9kZShlLnYpO1xuICAgIHZhciBub2RlVyA9IGcubm9kZShlLncpO1xuICAgIHZhciBwMSwgcDI7XG4gICAgaWYgKCFlZGdlLnBvaW50cykge1xuICAgICAgZWRnZS5wb2ludHMgPSBbXTtcbiAgICAgIHAxID0gbm9kZVc7XG4gICAgICBwMiA9IG5vZGVWO1xuICAgIH0gZWxzZSB7XG4gICAgICBwMSA9IGVkZ2UucG9pbnRzWzBdO1xuICAgICAgcDIgPSBlZGdlLnBvaW50c1tlZGdlLnBvaW50cy5sZW5ndGggLSAxXTtcbiAgICB9XG4gICAgZWRnZS5wb2ludHMudW5zaGlmdCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVYsIHAxKSk7XG4gICAgZWRnZS5wb2ludHMucHVzaCh1dGlsLmludGVyc2VjdFJlY3Qobm9kZVcsIHAyKSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaXh1cEVkZ2VMYWJlbENvb3JkcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZWRnZSA9IGcuZWRnZShlKTtcbiAgICBpZiAoXy5oYXMoZWRnZSwgXCJ4XCIpKSB7XG4gICAgICBpZiAoZWRnZS5sYWJlbHBvcyA9PT0gXCJsXCIgfHwgZWRnZS5sYWJlbHBvcyA9PT0gXCJyXCIpIHtcbiAgICAgICAgZWRnZS53aWR0aCAtPSBlZGdlLmxhYmVsb2Zmc2V0O1xuICAgICAgfVxuICAgICAgc3dpdGNoIChlZGdlLmxhYmVscG9zKSB7XG4gICAgICBjYXNlIFwibFwiOiBlZGdlLnggLT0gZWRnZS53aWR0aCAvIDIgKyBlZGdlLmxhYmVsb2Zmc2V0OyBicmVhaztcbiAgICAgIGNhc2UgXCJyXCI6IGVkZ2UueCArPSBlZGdlLndpZHRoIC8gMiArIGVkZ2UubGFiZWxvZmZzZXQ7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJldmVyc2VQb2ludHNGb3JSZXZlcnNlZEVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLnJldmVyc2VkKSB7XG4gICAgICBlZGdlLnBvaW50cy5yZXZlcnNlKCk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlQm9yZGVyTm9kZXMoZykge1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGcuY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICAgIHZhciB0ID0gZy5ub2RlKG5vZGUuYm9yZGVyVG9wKTtcbiAgICAgIHZhciBiID0gZy5ub2RlKG5vZGUuYm9yZGVyQm90dG9tKTtcbiAgICAgIHZhciBsID0gZy5ub2RlKF8ubGFzdChub2RlLmJvcmRlckxlZnQpKTtcbiAgICAgIHZhciByID0gZy5ub2RlKF8ubGFzdChub2RlLmJvcmRlclJpZ2h0KSk7XG5cbiAgICAgIG5vZGUud2lkdGggPSBNYXRoLmFicyhyLnggLSBsLngpO1xuICAgICAgbm9kZS5oZWlnaHQgPSBNYXRoLmFicyhiLnkgLSB0LnkpO1xuICAgICAgbm9kZS54ID0gbC54ICsgbm9kZS53aWR0aCAvIDI7XG4gICAgICBub2RlLnkgPSB0LnkgKyBub2RlLmhlaWdodCAvIDI7XG4gICAgfVxuICB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgaWYgKGcubm9kZSh2KS5kdW1teSA9PT0gXCJib3JkZXJcIikge1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVNlbGZFZGdlcyhnKSB7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoZS52ID09PSBlLncpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKGUudik7XG4gICAgICBpZiAoIW5vZGUuc2VsZkVkZ2VzKSB7XG4gICAgICAgIG5vZGUuc2VsZkVkZ2VzID0gW107XG4gICAgICB9XG4gICAgICBub2RlLnNlbGZFZGdlcy5wdXNoKHsgZTogZSwgbGFiZWw6IGcuZWRnZShlKSB9KTtcbiAgICAgIGcucmVtb3ZlRWRnZShlKTtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRTZWxmRWRnZXMoZykge1xuICB2YXIgbGF5ZXJzID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICBfLmZvckVhY2gobGF5ZXJzLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBvcmRlclNoaWZ0ID0gMDtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgICAgbm9kZS5vcmRlciA9IGkgKyBvcmRlclNoaWZ0O1xuICAgICAgXy5mb3JFYWNoKG5vZGUuc2VsZkVkZ2VzLCBmdW5jdGlvbihzZWxmRWRnZSkge1xuICAgICAgICB1dGlsLmFkZER1bW15Tm9kZShnLCBcInNlbGZlZGdlXCIsIHtcbiAgICAgICAgICB3aWR0aDogc2VsZkVkZ2UubGFiZWwud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiBzZWxmRWRnZS5sYWJlbC5oZWlnaHQsXG4gICAgICAgICAgcmFuazogbm9kZS5yYW5rLFxuICAgICAgICAgIG9yZGVyOiBpICsgKCsrb3JkZXJTaGlmdCksXG4gICAgICAgICAgZTogc2VsZkVkZ2UuZSxcbiAgICAgICAgICBsYWJlbDogc2VsZkVkZ2UubGFiZWxcbiAgICAgICAgfSwgXCJfc2VcIik7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSBub2RlLnNlbGZFZGdlcztcbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHBvc2l0aW9uU2VsZkVkZ2VzKGcpIHtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICAgIGlmIChub2RlLmR1bW15ID09PSBcInNlbGZlZGdlXCIpIHtcbiAgICAgIHZhciBzZWxmTm9kZSA9IGcubm9kZShub2RlLmUudik7XG4gICAgICB2YXIgeCA9IHNlbGZOb2RlLnggKyBzZWxmTm9kZS53aWR0aCAvIDI7XG4gICAgICB2YXIgeSA9IHNlbGZOb2RlLnk7XG4gICAgICB2YXIgZHggPSBub2RlLnggLSB4O1xuICAgICAgdmFyIGR5ID0gc2VsZk5vZGUuaGVpZ2h0IC8gMjtcbiAgICAgIGcuc2V0RWRnZShub2RlLmUsIG5vZGUubGFiZWwpO1xuICAgICAgZy5yZW1vdmVOb2RlKHYpO1xuICAgICAgbm9kZS5sYWJlbC5wb2ludHMgPSBbXG4gICAgICAgIHsgeDogeCArIDIgKiBkeCAvIDMsIHk6IHkgLSBkeSB9LFxuICAgICAgICB7IHg6IHggKyA1ICogZHggLyA2LCB5OiB5IC0gZHkgfSxcbiAgICAgICAgeyB4OiB4ICsgICAgIGR4ICAgICwgeTogeSB9LFxuICAgICAgICB7IHg6IHggKyA1ICogZHggLyA2LCB5OiB5ICsgZHkgfSxcbiAgICAgICAgeyB4OiB4ICsgMiAqIGR4IC8gMywgeTogeSArIGR5IH1cbiAgICAgIF07XG4gICAgICBub2RlLmxhYmVsLnggPSBub2RlLng7XG4gICAgICBub2RlLmxhYmVsLnkgPSBub2RlLnk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0TnVtYmVyQXR0cnMob2JqLCBhdHRycykge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoXy5waWNrKG9iaiwgYXR0cnMpLCBOdW1iZXIpO1xufVxuXG5mdW5jdGlvbiBjYW5vbmljYWxpemUoYXR0cnMpIHtcbiAgdmFyIG5ld0F0dHJzID0ge307XG4gIF8uZm9yRWFjaChhdHRycywgZnVuY3Rpb24odiwgaykge1xuICAgIG5ld0F0dHJzW2sudG9Mb3dlckNhc2UoKV0gPSB2O1xuICB9KTtcbiAgcmV0dXJuIG5ld0F0dHJzO1xufVxuIiwiLyogZ2xvYmFsIHdpbmRvdyAqL1xuXG52YXIgbG9kYXNoO1xuXG5pZiAodHlwZW9mIHJlcXVpcmUgPT09IFwiZnVuY3Rpb25cIikge1xuICB0cnkge1xuICAgIGxvZGFzaCA9IHtcbiAgICAgIGNsb25lRGVlcDogcmVxdWlyZShcImxvZGFzaC9jbG9uZURlZXBcIiksXG4gICAgICBjb25zdGFudDogcmVxdWlyZShcImxvZGFzaC9jb25zdGFudFwiKSxcbiAgICAgIGRlZmF1bHRzOiByZXF1aXJlKFwibG9kYXNoL2RlZmF1bHRzXCIpLFxuICAgICAgZWFjaDogcmVxdWlyZShcImxvZGFzaC9lYWNoXCIpLFxuICAgICAgZmlsdGVyOiByZXF1aXJlKFwibG9kYXNoL2ZpbHRlclwiKSxcbiAgICAgIGZpbmQ6IHJlcXVpcmUoXCJsb2Rhc2gvZmluZFwiKSxcbiAgICAgIGZsYXR0ZW46IHJlcXVpcmUoXCJsb2Rhc2gvZmxhdHRlblwiKSxcbiAgICAgIGZvckVhY2g6IHJlcXVpcmUoXCJsb2Rhc2gvZm9yRWFjaFwiKSxcbiAgICAgIGZvckluOiByZXF1aXJlKFwibG9kYXNoL2ZvckluXCIpLFxuICAgICAgaGFzOiAgcmVxdWlyZShcImxvZGFzaC9oYXNcIiksXG4gICAgICBpc1VuZGVmaW5lZDogcmVxdWlyZShcImxvZGFzaC9pc1VuZGVmaW5lZFwiKSxcbiAgICAgIGxhc3Q6IHJlcXVpcmUoXCJsb2Rhc2gvbGFzdFwiKSxcbiAgICAgIG1hcDogcmVxdWlyZShcImxvZGFzaC9tYXBcIiksXG4gICAgICBtYXBWYWx1ZXM6IHJlcXVpcmUoXCJsb2Rhc2gvbWFwVmFsdWVzXCIpLFxuICAgICAgbWF4OiByZXF1aXJlKFwibG9kYXNoL21heFwiKSxcbiAgICAgIG1lcmdlOiByZXF1aXJlKFwibG9kYXNoL21lcmdlXCIpLFxuICAgICAgbWluOiByZXF1aXJlKFwibG9kYXNoL21pblwiKSxcbiAgICAgIG1pbkJ5OiByZXF1aXJlKFwibG9kYXNoL21pbkJ5XCIpLFxuICAgICAgbm93OiByZXF1aXJlKFwibG9kYXNoL25vd1wiKSxcbiAgICAgIHBpY2s6IHJlcXVpcmUoXCJsb2Rhc2gvcGlja1wiKSxcbiAgICAgIHJhbmdlOiByZXF1aXJlKFwibG9kYXNoL3JhbmdlXCIpLFxuICAgICAgcmVkdWNlOiByZXF1aXJlKFwibG9kYXNoL3JlZHVjZVwiKSxcbiAgICAgIHNvcnRCeTogcmVxdWlyZShcImxvZGFzaC9zb3J0QnlcIiksXG4gICAgICB1bmlxdWVJZDogcmVxdWlyZShcImxvZGFzaC91bmlxdWVJZFwiKSxcbiAgICAgIHZhbHVlczogcmVxdWlyZShcImxvZGFzaC92YWx1ZXNcIiksXG4gICAgICB6aXBPYmplY3Q6IHJlcXVpcmUoXCJsb2Rhc2gvemlwT2JqZWN0XCIpLFxuICAgIH07XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBjb250aW51ZSByZWdhcmRsZXNzIG9mIGVycm9yXG4gIH1cbn1cblxuaWYgKCFsb2Rhc2gpIHtcbiAgbG9kYXNoID0gd2luZG93Ll87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbG9kYXNoO1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBydW46IHJ1bixcbiAgY2xlYW51cDogY2xlYW51cFxufTtcblxuLypcbiAqIEEgbmVzdGluZyBncmFwaCBjcmVhdGVzIGR1bW15IG5vZGVzIGZvciB0aGUgdG9wcyBhbmQgYm90dG9tcyBvZiBzdWJncmFwaHMsXG4gKiBhZGRzIGFwcHJvcHJpYXRlIGVkZ2VzIHRvIGVuc3VyZSB0aGF0IGFsbCBjbHVzdGVyIG5vZGVzIGFyZSBwbGFjZWQgYmV0d2VlblxuICogdGhlc2UgYm91bmRyaWVzLCBhbmQgZW5zdXJlcyB0aGF0IHRoZSBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKlxuICogSW4gYWRkaXRpb24gd2UgZW5zdXJlLCB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIG1pbmxlbiBwcm9wZXJ0eSwgdGhhdCBub2Rlc1xuICogYW5kIHN1YmdyYXBoIGJvcmRlciBub2RlcyB0byBub3QgZW5kIHVwIG9uIHRoZSBzYW1lIHJhbmsuXG4gKlxuICogUHJlY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBhIERBR1xuICogICAgMi4gTm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBhIG1pbmxlbiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0Y29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBJbnB1dCBncmFwaCBpcyBjb25uZWN0ZWQuXG4gKiAgICAyLiBEdW1teSBub2RlcyBhcmUgYWRkZWQgZm9yIHRoZSB0b3BzIGFuZCBib3R0b21zIG9mIHN1YmdyYXBocy5cbiAqICAgIDMuIFRoZSBtaW5sZW4gYXR0cmlidXRlIGZvciBub2RlcyBpcyBhZGp1c3RlZCB0byBlbnN1cmUgbm9kZXMgZG8gbm90XG4gKiAgICAgICBnZXQgcGxhY2VkIG9uIHRoZSBzYW1lIHJhbmsgYXMgc3ViZ3JhcGggYm9yZGVyIG5vZGVzLlxuICpcbiAqIFRoZSBuZXN0aW5nIGdyYXBoIGlkZWEgY29tZXMgZnJvbSBTYW5kZXIsIFwiTGF5b3V0IG9mIENvbXBvdW5kIERpcmVjdGVkXG4gKiBHcmFwaHMuXCJcbiAqL1xuZnVuY3Rpb24gcnVuKGcpIHtcbiAgdmFyIHJvb3QgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcInJvb3RcIiwge30sIFwiX3Jvb3RcIik7XG4gIHZhciBkZXB0aHMgPSB0cmVlRGVwdGhzKGcpO1xuICB2YXIgaGVpZ2h0ID0gXy5tYXgoXy52YWx1ZXMoZGVwdGhzKSkgLSAxOyAvLyBOb3RlOiBkZXB0aHMgaXMgYW4gT2JqZWN0IG5vdCBhbiBhcnJheVxuICB2YXIgbm9kZVNlcCA9IDIgKiBoZWlnaHQgKyAxO1xuXG4gIGcuZ3JhcGgoKS5uZXN0aW5nUm9vdCA9IHJvb3Q7XG5cbiAgLy8gTXVsdGlwbHkgbWlubGVuIGJ5IG5vZGVTZXAgdG8gYWxpZ24gbm9kZXMgb24gbm9uLWJvcmRlciByYW5rcy5cbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkgeyBnLmVkZ2UoZSkubWlubGVuICo9IG5vZGVTZXA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSBhIHdlaWdodCB0aGF0IGlzIHN1ZmZpY2llbnQgdG8ga2VlcCBzdWJncmFwaHMgdmVydGljYWxseSBjb21wYWN0XG4gIHZhciB3ZWlnaHQgPSBzdW1XZWlnaHRzKGcpICsgMTtcblxuICAvLyBDcmVhdGUgYm9yZGVyIG5vZGVzIGFuZCBsaW5rIHRoZW0gdXBcbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuICB9KTtcblxuICAvLyBTYXZlIHRoZSBtdWx0aXBsaWVyIGZvciBub2RlIGxheWVycyBmb3IgbGF0ZXIgcmVtb3ZhbCBvZiBlbXB0eSBib3JkZXJcbiAgLy8gbGF5ZXJzLlxuICBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3IgPSBub2RlU2VwO1xufVxuXG5mdW5jdGlvbiBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgdikge1xuICB2YXIgY2hpbGRyZW4gPSBnLmNoaWxkcmVuKHYpO1xuICBpZiAoIWNoaWxkcmVuLmxlbmd0aCkge1xuICAgIGlmICh2ICE9PSByb290KSB7XG4gICAgICBnLnNldEVkZ2Uocm9vdCwgdiwgeyB3ZWlnaHQ6IDAsIG1pbmxlbjogbm9kZVNlcCB9KTtcbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHRvcCA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9idFwiKTtcbiAgdmFyIGJvdHRvbSA9IHV0aWwuYWRkQm9yZGVyTm9kZShnLCBcIl9iYlwiKTtcbiAgdmFyIGxhYmVsID0gZy5ub2RlKHYpO1xuXG4gIGcuc2V0UGFyZW50KHRvcCwgdik7XG4gIGxhYmVsLmJvcmRlclRvcCA9IHRvcDtcbiAgZy5zZXRQYXJlbnQoYm90dG9tLCB2KTtcbiAgbGFiZWwuYm9yZGVyQm90dG9tID0gYm90dG9tO1xuXG4gIF8uZm9yRWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICBkZnMoZywgcm9vdCwgbm9kZVNlcCwgd2VpZ2h0LCBoZWlnaHQsIGRlcHRocywgY2hpbGQpO1xuXG4gICAgdmFyIGNoaWxkTm9kZSA9IGcubm9kZShjaGlsZCk7XG4gICAgdmFyIGNoaWxkVG9wID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IGNoaWxkTm9kZS5ib3JkZXJUb3AgOiBjaGlsZDtcbiAgICB2YXIgY2hpbGRCb3R0b20gPSBjaGlsZE5vZGUuYm9yZGVyQm90dG9tID8gY2hpbGROb2RlLmJvcmRlckJvdHRvbSA6IGNoaWxkO1xuICAgIHZhciB0aGlzV2VpZ2h0ID0gY2hpbGROb2RlLmJvcmRlclRvcCA/IHdlaWdodCA6IDIgKiB3ZWlnaHQ7XG4gICAgdmFyIG1pbmxlbiA9IGNoaWxkVG9wICE9PSBjaGlsZEJvdHRvbSA/IDEgOiBoZWlnaHQgLSBkZXB0aHNbdl0gKyAxO1xuXG4gICAgZy5zZXRFZGdlKHRvcCwgY2hpbGRUb3AsIHtcbiAgICAgIHdlaWdodDogdGhpc1dlaWdodCxcbiAgICAgIG1pbmxlbjogbWlubGVuLFxuICAgICAgbmVzdGluZ0VkZ2U6IHRydWVcbiAgICB9KTtcblxuICAgIGcuc2V0RWRnZShjaGlsZEJvdHRvbSwgYm90dG9tLCB7XG4gICAgICB3ZWlnaHQ6IHRoaXNXZWlnaHQsXG4gICAgICBtaW5sZW46IG1pbmxlbixcbiAgICAgIG5lc3RpbmdFZGdlOiB0cnVlXG4gICAgfSk7XG4gIH0pO1xuXG4gIGlmICghZy5wYXJlbnQodikpIHtcbiAgICBnLnNldEVkZ2Uocm9vdCwgdG9wLCB7IHdlaWdodDogMCwgbWlubGVuOiBoZWlnaHQgKyBkZXB0aHNbdl0gfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdHJlZURlcHRocyhnKSB7XG4gIHZhciBkZXB0aHMgPSB7fTtcbiAgZnVuY3Rpb24gZGZzKHYsIGRlcHRoKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gZy5jaGlsZHJlbih2KTtcbiAgICBpZiAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBfLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICAgIGRmcyhjaGlsZCwgZGVwdGggKyAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBkZXB0aHNbdl0gPSBkZXB0aDtcbiAgfVxuICBfLmZvckVhY2goZy5jaGlsZHJlbigpLCBmdW5jdGlvbih2KSB7IGRmcyh2LCAxKTsgfSk7XG4gIHJldHVybiBkZXB0aHM7XG59XG5cbmZ1bmN0aW9uIHN1bVdlaWdodHMoZykge1xuICByZXR1cm4gXy5yZWR1Y2UoZy5lZGdlcygpLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICByZXR1cm4gYWNjICsgZy5lZGdlKGUpLndlaWdodDtcbiAgfSwgMCk7XG59XG5cbmZ1bmN0aW9uIGNsZWFudXAoZykge1xuICB2YXIgZ3JhcGhMYWJlbCA9IGcuZ3JhcGgoKTtcbiAgZy5yZW1vdmVOb2RlKGdyYXBoTGFiZWwubmVzdGluZ1Jvb3QpO1xuICBkZWxldGUgZ3JhcGhMYWJlbC5uZXN0aW5nUm9vdDtcbiAgXy5mb3JFYWNoKGcuZWRnZXMoKSwgZnVuY3Rpb24oZSkge1xuICAgIHZhciBlZGdlID0gZy5lZGdlKGUpO1xuICAgIGlmIChlZGdlLm5lc3RpbmdFZGdlKSB7XG4gICAgICBnLnJlbW92ZUVkZ2UoZSk7XG4gICAgfVxuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4vdXRpbFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHJ1bjogcnVuLFxuICB1bmRvOiB1bmRvXG59O1xuXG4vKlxuICogQnJlYWtzIGFueSBsb25nIGVkZ2VzIGluIHRoZSBncmFwaCBpbnRvIHNob3J0IHNlZ21lbnRzIHRoYXQgc3BhbiAxIGxheWVyXG4gKiBlYWNoLiBUaGlzIG9wZXJhdGlvbiBpcyB1bmRvYWJsZSB3aXRoIHRoZSBkZW5vcm1hbGl6ZSBmdW5jdGlvbi5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBUaGUgaW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBFYWNoIG5vZGUgaW4gdGhlIGdyYXBoIGhhcyBhIFwicmFua1wiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uOlxuICpcbiAqICAgIDEuIEFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggaGF2ZSBhIGxlbmd0aCBvZiAxLlxuICogICAgMi4gRHVtbXkgbm9kZXMgYXJlIGFkZGVkIHdoZXJlIGVkZ2VzIGhhdmUgYmVlbiBzcGxpdCBpbnRvIHNlZ21lbnRzLlxuICogICAgMy4gVGhlIGdyYXBoIGlzIGF1Z21lbnRlZCB3aXRoIGEgXCJkdW1teUNoYWluc1wiIGF0dHJpYnV0ZSB3aGljaCBjb250YWluc1xuICogICAgICAgdGhlIGZpcnN0IGR1bW15IGluIGVhY2ggY2hhaW4gb2YgZHVtbXkgbm9kZXMgcHJvZHVjZWQuXG4gKi9cbmZ1bmN0aW9uIHJ1bihnKSB7XG4gIGcuZ3JhcGgoKS5kdW1teUNoYWlucyA9IFtdO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlZGdlKSB7IG5vcm1hbGl6ZUVkZ2UoZywgZWRnZSk7IH0pO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemVFZGdlKGcsIGUpIHtcbiAgdmFyIHYgPSBlLnY7XG4gIHZhciB2UmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICB2YXIgdyA9IGUudztcbiAgdmFyIHdSYW5rID0gZy5ub2RlKHcpLnJhbms7XG4gIHZhciBuYW1lID0gZS5uYW1lO1xuICB2YXIgZWRnZUxhYmVsID0gZy5lZGdlKGUpO1xuICB2YXIgbGFiZWxSYW5rID0gZWRnZUxhYmVsLmxhYmVsUmFuaztcblxuICBpZiAod1JhbmsgPT09IHZSYW5rICsgMSkgcmV0dXJuO1xuXG4gIGcucmVtb3ZlRWRnZShlKTtcblxuICB2YXIgZHVtbXksIGF0dHJzLCBpO1xuICBmb3IgKGkgPSAwLCArK3ZSYW5rOyB2UmFuayA8IHdSYW5rOyArK2ksICsrdlJhbmspIHtcbiAgICBlZGdlTGFiZWwucG9pbnRzID0gW107XG4gICAgYXR0cnMgPSB7XG4gICAgICB3aWR0aDogMCwgaGVpZ2h0OiAwLFxuICAgICAgZWRnZUxhYmVsOiBlZGdlTGFiZWwsIGVkZ2VPYmo6IGUsXG4gICAgICByYW5rOiB2UmFua1xuICAgIH07XG4gICAgZHVtbXkgPSB1dGlsLmFkZER1bW15Tm9kZShnLCBcImVkZ2VcIiwgYXR0cnMsIFwiX2RcIik7XG4gICAgaWYgKHZSYW5rID09PSBsYWJlbFJhbmspIHtcbiAgICAgIGF0dHJzLndpZHRoID0gZWRnZUxhYmVsLndpZHRoO1xuICAgICAgYXR0cnMuaGVpZ2h0ID0gZWRnZUxhYmVsLmhlaWdodDtcbiAgICAgIGF0dHJzLmR1bW15ID0gXCJlZGdlLWxhYmVsXCI7XG4gICAgICBhdHRycy5sYWJlbHBvcyA9IGVkZ2VMYWJlbC5sYWJlbHBvcztcbiAgICB9XG4gICAgZy5zZXRFZGdlKHYsIGR1bW15LCB7IHdlaWdodDogZWRnZUxhYmVsLndlaWdodCB9LCBuYW1lKTtcbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgZy5ncmFwaCgpLmR1bW15Q2hhaW5zLnB1c2goZHVtbXkpO1xuICAgIH1cbiAgICB2ID0gZHVtbXk7XG4gIH1cblxuICBnLnNldEVkZ2UodiwgdywgeyB3ZWlnaHQ6IGVkZ2VMYWJlbC53ZWlnaHQgfSwgbmFtZSk7XG59XG5cbmZ1bmN0aW9uIHVuZG8oZykge1xuICBfLmZvckVhY2goZy5ncmFwaCgpLmR1bW15Q2hhaW5zLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgdmFyIG9yaWdMYWJlbCA9IG5vZGUuZWRnZUxhYmVsO1xuICAgIHZhciB3O1xuICAgIGcuc2V0RWRnZShub2RlLmVkZ2VPYmosIG9yaWdMYWJlbCk7XG4gICAgd2hpbGUgKG5vZGUuZHVtbXkpIHtcbiAgICAgIHcgPSBnLnN1Y2Nlc3NvcnModilbMF07XG4gICAgICBnLnJlbW92ZU5vZGUodik7XG4gICAgICBvcmlnTGFiZWwucG9pbnRzLnB1c2goeyB4OiBub2RlLngsIHk6IG5vZGUueSB9KTtcbiAgICAgIGlmIChub2RlLmR1bW15ID09PSBcImVkZ2UtbGFiZWxcIikge1xuICAgICAgICBvcmlnTGFiZWwueCA9IG5vZGUueDtcbiAgICAgICAgb3JpZ0xhYmVsLnkgPSBub2RlLnk7XG4gICAgICAgIG9yaWdMYWJlbC53aWR0aCA9IG5vZGUud2lkdGg7XG4gICAgICAgIG9yaWdMYWJlbC5oZWlnaHQgPSBub2RlLmhlaWdodDtcbiAgICAgIH1cbiAgICAgIHYgPSB3O1xuICAgICAgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB9XG4gIH0pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGFkZFN1YmdyYXBoQ29uc3RyYWludHM7XG5cbmZ1bmN0aW9uIGFkZFN1YmdyYXBoQ29uc3RyYWludHMoZywgY2csIHZzKSB7XG4gIHZhciBwcmV2ID0ge30sXG4gICAgcm9vdFByZXY7XG5cbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIGNoaWxkID0gZy5wYXJlbnQodiksXG4gICAgICBwYXJlbnQsXG4gICAgICBwcmV2Q2hpbGQ7XG4gICAgd2hpbGUgKGNoaWxkKSB7XG4gICAgICBwYXJlbnQgPSBnLnBhcmVudChjaGlsZCk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHByZXZDaGlsZCA9IHByZXZbcGFyZW50XTtcbiAgICAgICAgcHJldltwYXJlbnRdID0gY2hpbGQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcmV2Q2hpbGQgPSByb290UHJldjtcbiAgICAgICAgcm9vdFByZXYgPSBjaGlsZDtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2Q2hpbGQgJiYgcHJldkNoaWxkICE9PSBjaGlsZCkge1xuICAgICAgICBjZy5zZXRFZGdlKHByZXZDaGlsZCwgY2hpbGQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjaGlsZCA9IHBhcmVudDtcbiAgICB9XG4gIH0pO1xuXG4gIC8qXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGNoaWxkcmVuID0gdiA/IGcuY2hpbGRyZW4odikgOiBnLmNoaWxkcmVuKCk7XG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgdmFyIG1pbiA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICAgICAgICBzdWJncmFwaHMgPSBbXTtcbiAgICAgIF8uZWFjaChjaGlsZHJlbiwgZnVuY3Rpb24oY2hpbGQpIHtcbiAgICAgICAgdmFyIGNoaWxkTWluID0gZGZzKGNoaWxkKTtcbiAgICAgICAgaWYgKGcuY2hpbGRyZW4oY2hpbGQpLmxlbmd0aCkge1xuICAgICAgICAgIHN1YmdyYXBocy5wdXNoKHsgdjogY2hpbGQsIG9yZGVyOiBjaGlsZE1pbiB9KTtcbiAgICAgICAgfVxuICAgICAgICBtaW4gPSBNYXRoLm1pbihtaW4sIGNoaWxkTWluKTtcbiAgICAgIH0pO1xuICAgICAgXy5yZWR1Y2UoXy5zb3J0Qnkoc3ViZ3JhcGhzLCBcIm9yZGVyXCIpLCBmdW5jdGlvbihwcmV2LCBjdXJyKSB7XG4gICAgICAgIGNnLnNldEVkZ2UocHJldi52LCBjdXJyLnYpO1xuICAgICAgICByZXR1cm4gY3VycjtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG1pbjtcbiAgICB9XG4gICAgcmV0dXJuIGcubm9kZSh2KS5vcmRlcjtcbiAgfVxuICBkZnModW5kZWZpbmVkKTtcbiAgKi9cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXJ5Y2VudGVyO1xuXG5mdW5jdGlvbiBiYXJ5Y2VudGVyKGcsIG1vdmFibGUpIHtcbiAgcmV0dXJuIF8ubWFwKG1vdmFibGUsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgaW5WID0gZy5pbkVkZ2VzKHYpO1xuICAgIGlmICghaW5WLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHsgdjogdiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgcmVzdWx0ID0gXy5yZWR1Y2UoaW5WLCBmdW5jdGlvbihhY2MsIGUpIHtcbiAgICAgICAgdmFyIGVkZ2UgPSBnLmVkZ2UoZSksXG4gICAgICAgICAgbm9kZVUgPSBnLm5vZGUoZS52KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdW06IGFjYy5zdW0gKyAoZWRnZS53ZWlnaHQgKiBub2RlVS5vcmRlciksXG4gICAgICAgICAgd2VpZ2h0OiBhY2Mud2VpZ2h0ICsgZWRnZS53ZWlnaHRcbiAgICAgICAgfTtcbiAgICAgIH0sIHsgc3VtOiAwLCB3ZWlnaHQ6IDAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHY6IHYsXG4gICAgICAgIGJhcnljZW50ZXI6IHJlc3VsdC5zdW0gLyByZXN1bHQud2VpZ2h0LFxuICAgICAgICB3ZWlnaHQ6IHJlc3VsdC53ZWlnaHRcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGJ1aWxkTGF5ZXJHcmFwaDtcblxuLypcbiAqIENvbnN0cnVjdHMgYSBncmFwaCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNvcnQgYSBsYXllciBvZiBub2Rlcy4gVGhlIGdyYXBoIHdpbGxcbiAqIGNvbnRhaW4gYWxsIGJhc2UgYW5kIHN1YmdyYXBoIG5vZGVzIGZyb20gdGhlIHJlcXVlc3QgbGF5ZXIgaW4gdGhlaXIgb3JpZ2luYWxcbiAqIGhpZXJhcmNoeSBhbmQgYW55IGVkZ2VzIHRoYXQgYXJlIGluY2lkZW50IG9uIHRoZXNlIG5vZGVzIGFuZCBhcmUgb2YgdGhlIHR5cGVcbiAqIHJlcXVlc3RlZCBieSB0aGUgXCJyZWxhdGlvbnNoaXBcIiBwYXJhbWV0ZXIuXG4gKlxuICogTm9kZXMgZnJvbSB0aGUgcmVxdWVzdGVkIHJhbmsgdGhhdCBkbyBub3QgaGF2ZSBwYXJlbnRzIGFyZSBhc3NpZ25lZCBhIHJvb3RcbiAqIG5vZGUgaW4gdGhlIG91dHB1dCBncmFwaCwgd2hpY2ggaXMgc2V0IGluIHRoZSByb290IGdyYXBoIGF0dHJpYnV0ZS4gVGhpc1xuICogbWFrZXMgaXQgZWFzeSB0byB3YWxrIHRoZSBoaWVyYXJjaHkgb2YgbW92YWJsZSBub2RlcyBkdXJpbmcgb3JkZXJpbmcuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUdcbiAqICAgIDIuIEJhc2Ugbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhdmUgYSByYW5rIGF0dHJpYnV0ZVxuICogICAgMy4gU3ViZ3JhcGggbm9kZXMgaW4gdGhlIGlucHV0IGdyYXBoIGhhcyBtaW5SYW5rIGFuZCBtYXhSYW5rIGF0dHJpYnV0ZXNcbiAqICAgIDQuIEVkZ2VzIGhhdmUgYW4gYXNzaWduZWQgd2VpZ2h0XG4gKlxuICogUG9zdC1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIE91dHB1dCBncmFwaCBoYXMgYWxsIG5vZGVzIGluIHRoZSBtb3ZhYmxlIHJhbmsgd2l0aCBwcmVzZXJ2ZWRcbiAqICAgICAgIGhpZXJhcmNoeS5cbiAqICAgIDIuIFJvb3Qgbm9kZXMgaW4gdGhlIG1vdmFibGUgbGF5ZXIgYXJlIG1hZGUgY2hpbGRyZW4gb2YgdGhlIG5vZGVcbiAqICAgICAgIGluZGljYXRlZCBieSB0aGUgcm9vdCBhdHRyaWJ1dGUgb2YgdGhlIGdyYXBoLlxuICogICAgMy4gTm9uLW1vdmFibGUgbm9kZXMgaW5jaWRlbnQgb24gbW92YWJsZSBub2Rlcywgc2VsZWN0ZWQgYnkgdGhlXG4gKiAgICAgICByZWxhdGlvbnNoaXAgcGFyYW1ldGVyLCBhcmUgaW5jbHVkZWQgaW4gdGhlIGdyYXBoICh3aXRob3V0IGhpZXJhcmNoeSkuXG4gKiAgICA0LiBFZGdlcyBpbmNpZGVudCBvbiBtb3ZhYmxlIG5vZGVzLCBzZWxlY3RlZCBieSB0aGUgcmVsYXRpb25zaGlwXG4gKiAgICAgICBwYXJhbWV0ZXIsIGFyZSBhZGRlZCB0byB0aGUgb3V0cHV0IGdyYXBoLlxuICogICAgNS4gVGhlIHdlaWdodHMgZm9yIGNvcGllZCBlZGdlcyBhcmUgYWdncmVnYXRlZCBhcyBuZWVkLCBzaW5jZSB0aGUgb3V0cHV0XG4gKiAgICAgICBncmFwaCBpcyBub3QgYSBtdWx0aS1ncmFwaC5cbiAqL1xuZnVuY3Rpb24gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCkge1xuICB2YXIgcm9vdCA9IGNyZWF0ZVJvb3ROb2RlKGcpLFxuICAgIHJlc3VsdCA9IG5ldyBHcmFwaCh7IGNvbXBvdW5kOiB0cnVlIH0pLnNldEdyYXBoKHsgcm9vdDogcm9vdCB9KVxuICAgICAgLnNldERlZmF1bHROb2RlTGFiZWwoZnVuY3Rpb24odikgeyByZXR1cm4gZy5ub2RlKHYpOyB9KTtcblxuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodiksXG4gICAgICBwYXJlbnQgPSBnLnBhcmVudCh2KTtcblxuICAgIGlmIChub2RlLnJhbmsgPT09IHJhbmsgfHwgbm9kZS5taW5SYW5rIDw9IHJhbmsgJiYgcmFuayA8PSBub2RlLm1heFJhbmspIHtcbiAgICAgIHJlc3VsdC5zZXROb2RlKHYpO1xuICAgICAgcmVzdWx0LnNldFBhcmVudCh2LCBwYXJlbnQgfHwgcm9vdCk7XG5cbiAgICAgIC8vIFRoaXMgYXNzdW1lcyB3ZSBoYXZlIG9ubHkgc2hvcnQgZWRnZXMhXG4gICAgICBfLmZvckVhY2goZ1tyZWxhdGlvbnNoaXBdKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICAgIHZhciB1ID0gZS52ID09PSB2ID8gZS53IDogZS52LFxuICAgICAgICAgIGVkZ2UgPSByZXN1bHQuZWRnZSh1LCB2KSxcbiAgICAgICAgICB3ZWlnaHQgPSAhXy5pc1VuZGVmaW5lZChlZGdlKSA/IGVkZ2Uud2VpZ2h0IDogMDtcbiAgICAgICAgcmVzdWx0LnNldEVkZ2UodSwgdiwgeyB3ZWlnaHQ6IGcuZWRnZShlKS53ZWlnaHQgKyB3ZWlnaHQgfSk7XG4gICAgICB9KTtcblxuICAgICAgaWYgKF8uaGFzKG5vZGUsIFwibWluUmFua1wiKSkge1xuICAgICAgICByZXN1bHQuc2V0Tm9kZSh2LCB7XG4gICAgICAgICAgYm9yZGVyTGVmdDogbm9kZS5ib3JkZXJMZWZ0W3JhbmtdLFxuICAgICAgICAgIGJvcmRlclJpZ2h0OiBub2RlLmJvcmRlclJpZ2h0W3JhbmtdXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlUm9vdE5vZGUoZykge1xuICB2YXIgdjtcbiAgd2hpbGUgKGcuaGFzTm9kZSgodiA9IF8udW5pcXVlSWQoXCJfcm9vdFwiKSkpKTtcbiAgcmV0dXJuIHY7XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGNyb3NzQ291bnQ7XG5cbi8qXG4gKiBBIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYSBsYXllcmluZyAoYW4gYXJyYXkgb2YgbGF5ZXJzLCBlYWNoIHdpdGggYW4gYXJyYXkgb2ZcbiAqIG9yZGVyZXJkIG5vZGVzKSBhbmQgYSBncmFwaCBhbmQgcmV0dXJucyBhIHdlaWdodGVkIGNyb3NzaW5nIGNvdW50LlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIElucHV0IGdyYXBoIG11c3QgYmUgc2ltcGxlIChub3QgYSBtdWx0aWdyYXBoKSwgZGlyZWN0ZWQsIGFuZCBpbmNsdWRlXG4gKiAgICAgICBvbmx5IHNpbXBsZSBlZGdlcy5cbiAqICAgIDIuIEVkZ2VzIGluIHRoZSBpbnB1dCBncmFwaCBtdXN0IGhhdmUgYXNzaWduZWQgd2VpZ2h0cy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGdyYXBoIGFuZCBsYXllcmluZyBtYXRyaXggYXJlIGxlZnQgdW5jaGFuZ2VkLlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIGlzIGRlcml2ZWQgZnJvbSBCYXJ0aCwgZXQgYWwuLCBcIkJpbGF5ZXIgQ3Jvc3MgQ291bnRpbmcuXCJcbiAqL1xuZnVuY3Rpb24gY3Jvc3NDb3VudChnLCBsYXllcmluZykge1xuICB2YXIgY2MgPSAwO1xuICBmb3IgKHZhciBpID0gMTsgaSA8IGxheWVyaW5nLmxlbmd0aDsgKytpKSB7XG4gICAgY2MgKz0gdHdvTGF5ZXJDcm9zc0NvdW50KGcsIGxheWVyaW5nW2ktMV0sIGxheWVyaW5nW2ldKTtcbiAgfVxuICByZXR1cm4gY2M7XG59XG5cbmZ1bmN0aW9uIHR3b0xheWVyQ3Jvc3NDb3VudChnLCBub3J0aExheWVyLCBzb3V0aExheWVyKSB7XG4gIC8vIFNvcnQgYWxsIG9mIHRoZSBlZGdlcyBiZXR3ZWVuIHRoZSBub3J0aCBhbmQgc291dGggbGF5ZXJzIGJ5IHRoZWlyIHBvc2l0aW9uXG4gIC8vIGluIHRoZSBub3J0aCBsYXllciBhbmQgdGhlbiB0aGUgc291dGguIE1hcCB0aGVzZSBlZGdlcyB0byB0aGUgcG9zaXRpb24gb2ZcbiAgLy8gdGhlaXIgaGVhZCBpbiB0aGUgc291dGggbGF5ZXIuXG4gIHZhciBzb3V0aFBvcyA9IF8uemlwT2JqZWN0KHNvdXRoTGF5ZXIsXG4gICAgXy5tYXAoc291dGhMYXllciwgZnVuY3Rpb24gKHYsIGkpIHsgcmV0dXJuIGk7IH0pKTtcbiAgdmFyIHNvdXRoRW50cmllcyA9IF8uZmxhdHRlbihfLm1hcChub3J0aExheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uc29ydEJ5KF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB7IHBvczogc291dGhQb3NbZS53XSwgd2VpZ2h0OiBnLmVkZ2UoZSkud2VpZ2h0IH07XG4gICAgfSksIFwicG9zXCIpO1xuICB9KSwgdHJ1ZSk7XG5cbiAgLy8gQnVpbGQgdGhlIGFjY3VtdWxhdG9yIHRyZWVcbiAgdmFyIGZpcnN0SW5kZXggPSAxO1xuICB3aGlsZSAoZmlyc3RJbmRleCA8IHNvdXRoTGF5ZXIubGVuZ3RoKSBmaXJzdEluZGV4IDw8PSAxO1xuICB2YXIgdHJlZVNpemUgPSAyICogZmlyc3RJbmRleCAtIDE7XG4gIGZpcnN0SW5kZXggLT0gMTtcbiAgdmFyIHRyZWUgPSBfLm1hcChuZXcgQXJyYXkodHJlZVNpemUpLCBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH0pO1xuXG4gIC8vIENhbGN1bGF0ZSB0aGUgd2VpZ2h0ZWQgY3Jvc3NpbmdzXG4gIHZhciBjYyA9IDA7XG4gIF8uZm9yRWFjaChzb3V0aEVudHJpZXMuZm9yRWFjaChmdW5jdGlvbihlbnRyeSkge1xuICAgIHZhciBpbmRleCA9IGVudHJ5LnBvcyArIGZpcnN0SW5kZXg7XG4gICAgdHJlZVtpbmRleF0gKz0gZW50cnkud2VpZ2h0O1xuICAgIHZhciB3ZWlnaHRTdW0gPSAwO1xuICAgIHdoaWxlIChpbmRleCA+IDApIHtcbiAgICAgIGlmIChpbmRleCAlIDIpIHtcbiAgICAgICAgd2VpZ2h0U3VtICs9IHRyZWVbaW5kZXggKyAxXTtcbiAgICAgIH1cbiAgICAgIGluZGV4ID0gKGluZGV4IC0gMSkgPj4gMTtcbiAgICAgIHRyZWVbaW5kZXhdICs9IGVudHJ5LndlaWdodDtcbiAgICB9XG4gICAgY2MgKz0gZW50cnkud2VpZ2h0ICogd2VpZ2h0U3VtO1xuICB9KSk7XG5cbiAgcmV0dXJuIGNjO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBpbml0T3JkZXIgPSByZXF1aXJlKFwiLi9pbml0LW9yZGVyXCIpO1xudmFyIGNyb3NzQ291bnQgPSByZXF1aXJlKFwiLi9jcm9zcy1jb3VudFwiKTtcbnZhciBzb3J0U3ViZ3JhcGggPSByZXF1aXJlKFwiLi9zb3J0LXN1YmdyYXBoXCIpO1xudmFyIGJ1aWxkTGF5ZXJHcmFwaCA9IHJlcXVpcmUoXCIuL2J1aWxkLWxheWVyLWdyYXBoXCIpO1xudmFyIGFkZFN1YmdyYXBoQ29uc3RyYWludHMgPSByZXF1aXJlKFwiLi9hZGQtc3ViZ3JhcGgtY29uc3RyYWludHNcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuR3JhcGg7XG52YXIgdXRpbCA9IHJlcXVpcmUoXCIuLi91dGlsXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG9yZGVyO1xuXG4vKlxuICogQXBwbGllcyBoZXVyaXN0aWNzIHRvIG1pbmltaXplIGVkZ2UgY3Jvc3NpbmdzIGluIHRoZSBncmFwaCBhbmQgc2V0cyB0aGUgYmVzdFxuICogb3JkZXIgc29sdXRpb24gYXMgYW4gb3JkZXIgYXR0cmlidXRlIG9uIGVhY2ggbm9kZS5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIERBR1xuICogICAgMi4gR3JhcGggbm9kZXMgbXVzdCBiZSBvYmplY3RzIHdpdGggYSBcInJhbmtcIiBhdHRyaWJ1dGVcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSB0aGUgXCJ3ZWlnaHRcIiBhdHRyaWJ1dGVcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGFuIFwib3JkZXJcIiBhdHRyaWJ1dGUgYmFzZWQgb24gdGhlIHJlc3VsdHMgb2YgdGhlXG4gKiAgICAgICBhbGdvcml0aG0uXG4gKi9cbmZ1bmN0aW9uIG9yZGVyKGcpIHtcbiAgdmFyIG1heFJhbmsgPSB1dGlsLm1heFJhbmsoZyksXG4gICAgZG93bkxheWVyR3JhcGhzID0gYnVpbGRMYXllckdyYXBocyhnLCBfLnJhbmdlKDEsIG1heFJhbmsgKyAxKSwgXCJpbkVkZ2VzXCIpLFxuICAgIHVwTGF5ZXJHcmFwaHMgPSBidWlsZExheWVyR3JhcGhzKGcsIF8ucmFuZ2UobWF4UmFuayAtIDEsIC0xLCAtMSksIFwib3V0RWRnZXNcIik7XG5cbiAgdmFyIGxheWVyaW5nID0gaW5pdE9yZGVyKGcpO1xuICBhc3NpZ25PcmRlcihnLCBsYXllcmluZyk7XG5cbiAgdmFyIGJlc3RDQyA9IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSxcbiAgICBiZXN0O1xuXG4gIGZvciAodmFyIGkgPSAwLCBsYXN0QmVzdCA9IDA7IGxhc3RCZXN0IDwgNDsgKytpLCArK2xhc3RCZXN0KSB7XG4gICAgc3dlZXBMYXllckdyYXBocyhpICUgMiA/IGRvd25MYXllckdyYXBocyA6IHVwTGF5ZXJHcmFwaHMsIGkgJSA0ID49IDIpO1xuXG4gICAgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gICAgdmFyIGNjID0gY3Jvc3NDb3VudChnLCBsYXllcmluZyk7XG4gICAgaWYgKGNjIDwgYmVzdENDKSB7XG4gICAgICBsYXN0QmVzdCA9IDA7XG4gICAgICBiZXN0ID0gXy5jbG9uZURlZXAobGF5ZXJpbmcpO1xuICAgICAgYmVzdENDID0gY2M7XG4gICAgfVxuICB9XG5cbiAgYXNzaWduT3JkZXIoZywgYmVzdCk7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJHcmFwaHMoZywgcmFua3MsIHJlbGF0aW9uc2hpcCkge1xuICByZXR1cm4gXy5tYXAocmFua3MsIGZ1bmN0aW9uKHJhbmspIHtcbiAgICByZXR1cm4gYnVpbGRMYXllckdyYXBoKGcsIHJhbmssIHJlbGF0aW9uc2hpcCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBzd2VlcExheWVyR3JhcGhzKGxheWVyR3JhcGhzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIGNnID0gbmV3IEdyYXBoKCk7XG4gIF8uZm9yRWFjaChsYXllckdyYXBocywgZnVuY3Rpb24obGcpIHtcbiAgICB2YXIgcm9vdCA9IGxnLmdyYXBoKCkucm9vdDtcbiAgICB2YXIgc29ydGVkID0gc29ydFN1YmdyYXBoKGxnLCByb290LCBjZywgYmlhc1JpZ2h0KTtcbiAgICBfLmZvckVhY2goc29ydGVkLnZzLCBmdW5jdGlvbih2LCBpKSB7XG4gICAgICBsZy5ub2RlKHYpLm9yZGVyID0gaTtcbiAgICB9KTtcbiAgICBhZGRTdWJncmFwaENvbnN0cmFpbnRzKGxnLCBjZywgc29ydGVkLnZzKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFzc2lnbk9yZGVyKGcsIGxheWVyaW5nKSB7XG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYsIGkpIHtcbiAgICAgIGcubm9kZSh2KS5vcmRlciA9IGk7XG4gICAgfSk7XG4gIH0pO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbml0T3JkZXI7XG5cbi8qXG4gKiBBc3NpZ25zIGFuIGluaXRpYWwgb3JkZXIgdmFsdWUgZm9yIGVhY2ggbm9kZSBieSBwZXJmb3JtaW5nIGEgREZTIHNlYXJjaFxuICogc3RhcnRpbmcgZnJvbSBub2RlcyBpbiB0aGUgZmlyc3QgcmFuay4gTm9kZXMgYXJlIGFzc2lnbmVkIGFuIG9yZGVyIGluIHRoZWlyXG4gKiByYW5rIGFzIHRoZXkgYXJlIGZpcnN0IHZpc2l0ZWQuXG4gKlxuICogVGhpcyBhcHByb2FjaCBjb21lcyBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZFxuICogR3JhcGhzLlwiXG4gKlxuICogUmV0dXJucyBhIGxheWVyaW5nIG1hdHJpeCB3aXRoIGFuIGFycmF5IHBlciBsYXllciBhbmQgZWFjaCBsYXllciBzb3J0ZWQgYnlcbiAqIHRoZSBvcmRlciBvZiBpdHMgbm9kZXMuXG4gKi9cbmZ1bmN0aW9uIGluaXRPcmRlcihnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBzaW1wbGVOb2RlcyA9IF8uZmlsdGVyKGcubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIHJldHVybiAhZy5jaGlsZHJlbih2KS5sZW5ndGg7XG4gIH0pO1xuICB2YXIgbWF4UmFuayA9IF8ubWF4KF8ubWFwKHNpbXBsZU5vZGVzLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuICB2YXIgbGF5ZXJzID0gXy5tYXAoXy5yYW5nZShtYXhSYW5rICsgMSksIGZ1bmN0aW9uKCkgeyByZXR1cm4gW107IH0pO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSByZXR1cm47XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgbGF5ZXJzW25vZGUucmFua10ucHVzaCh2KTtcbiAgICBfLmZvckVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICB9XG5cbiAgdmFyIG9yZGVyZWRWcyA9IF8uc29ydEJ5KHNpbXBsZU5vZGVzLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSk7XG4gIF8uZm9yRWFjaChvcmRlcmVkVnMsIGRmcyk7XG5cbiAgcmV0dXJuIGxheWVycztcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVzb2x2ZUNvbmZsaWN0cztcblxuLypcbiAqIEdpdmVuIGEgbGlzdCBvZiBlbnRyaWVzIG9mIHRoZSBmb3JtIHt2LCBiYXJ5Y2VudGVyLCB3ZWlnaHR9IGFuZCBhXG4gKiBjb25zdHJhaW50IGdyYXBoIHRoaXMgZnVuY3Rpb24gd2lsbCByZXNvbHZlIGFueSBjb25mbGljdHMgYmV0d2VlbiB0aGVcbiAqIGNvbnN0cmFpbnQgZ3JhcGggYW5kIHRoZSBiYXJ5Y2VudGVycyBmb3IgdGhlIGVudHJpZXMuIElmIHRoZSBiYXJ5Y2VudGVycyBmb3JcbiAqIGFuIGVudHJ5IHdvdWxkIHZpb2xhdGUgYSBjb25zdHJhaW50IGluIHRoZSBjb25zdHJhaW50IGdyYXBoIHRoZW4gd2UgY29hbGVzY2VcbiAqIHRoZSBub2RlcyBpbiB0aGUgY29uZmxpY3QgaW50byBhIG5ldyBub2RlIHRoYXQgcmVzcGVjdHMgdGhlIGNvbnRyYWludCBhbmRcbiAqIGFnZ3JlZ2F0ZXMgYmFyeWNlbnRlciBhbmQgd2VpZ2h0IGluZm9ybWF0aW9uLlxuICpcbiAqIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIGluIEZvcnN0ZXIsIFwiQSBGYXN0IGFuZFxuICogU2ltcGxlIEh1ZXJpc3RpYyBmb3IgQ29uc3RyYWluZWQgVHdvLUxldmVsIENyb3NzaW5nIFJlZHVjdGlvbixcIiB0aG91Z2h0IGl0XG4gKiBkaWZmZXJzIGluIHNvbWUgc3BlY2lmaWMgZGV0YWlscy5cbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBFYWNoIGVudHJ5IGhhcyB0aGUgZm9ybSB7diwgYmFyeWNlbnRlciwgd2VpZ2h0fSwgb3IgaWYgdGhlIG5vZGUgaGFzXG4gKiAgICAgICBubyBiYXJ5Y2VudGVyLCB0aGVuIHt2fS5cbiAqXG4gKiBSZXR1cm5zOlxuICpcbiAqICAgIEEgbmV3IGxpc3Qgb2YgZW50cmllcyBvZiB0aGUgZm9ybSB7dnMsIGksIGJhcnljZW50ZXIsIHdlaWdodH0uIFRoZSBsaXN0XG4gKiAgICBgdnNgIG1heSBlaXRoZXIgYmUgYSBzaW5nbGV0b24gb3IgaXQgbWF5IGJlIGFuIGFnZ3JlZ2F0aW9uIG9mIG5vZGVzXG4gKiAgICBvcmRlcmVkIHN1Y2ggdGhhdCB0aGV5IGRvIG5vdCB2aW9sYXRlIGNvbnN0cmFpbnRzIGZyb20gdGhlIGNvbnN0cmFpbnRcbiAqICAgIGdyYXBoLiBUaGUgcHJvcGVydHkgYGlgIGlzIHRoZSBsb3dlc3Qgb3JpZ2luYWwgaW5kZXggb2YgYW55IG9mIHRoZVxuICogICAgZWxlbWVudHMgaW4gYHZzYC5cbiAqL1xuZnVuY3Rpb24gcmVzb2x2ZUNvbmZsaWN0cyhlbnRyaWVzLCBjZykge1xuICB2YXIgbWFwcGVkRW50cmllcyA9IHt9O1xuICBfLmZvckVhY2goZW50cmllcywgZnVuY3Rpb24oZW50cnksIGkpIHtcbiAgICB2YXIgdG1wID0gbWFwcGVkRW50cmllc1tlbnRyeS52XSA9IHtcbiAgICAgIGluZGVncmVlOiAwLFxuICAgICAgXCJpblwiOiBbXSxcbiAgICAgIG91dDogW10sXG4gICAgICB2czogW2VudHJ5LnZdLFxuICAgICAgaTogaVxuICAgIH07XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVudHJ5LmJhcnljZW50ZXIpKSB7XG4gICAgICB0bXAuYmFyeWNlbnRlciA9IGVudHJ5LmJhcnljZW50ZXI7XG4gICAgICB0bXAud2VpZ2h0ID0gZW50cnkud2VpZ2h0O1xuICAgIH1cbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGNnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgZW50cnlWID0gbWFwcGVkRW50cmllc1tlLnZdO1xuICAgIHZhciBlbnRyeVcgPSBtYXBwZWRFbnRyaWVzW2Uud107XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKGVudHJ5VikgJiYgIV8uaXNVbmRlZmluZWQoZW50cnlXKSkge1xuICAgICAgZW50cnlXLmluZGVncmVlKys7XG4gICAgICBlbnRyeVYub3V0LnB1c2gobWFwcGVkRW50cmllc1tlLnddKTtcbiAgICB9XG4gIH0pO1xuXG4gIHZhciBzb3VyY2VTZXQgPSBfLmZpbHRlcihtYXBwZWRFbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIHJldHVybiAhZW50cnkuaW5kZWdyZWU7XG4gIH0pO1xuXG4gIHJldHVybiBkb1Jlc29sdmVDb25mbGljdHMoc291cmNlU2V0KTtcbn1cblxuZnVuY3Rpb24gZG9SZXNvbHZlQ29uZmxpY3RzKHNvdXJjZVNldCkge1xuICB2YXIgZW50cmllcyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGhhbmRsZUluKHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbih1RW50cnkpIHtcbiAgICAgIGlmICh1RW50cnkubWVyZ2VkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHVFbnRyeS5iYXJ5Y2VudGVyKSB8fFxuICAgICAgICAgIF8uaXNVbmRlZmluZWQodkVudHJ5LmJhcnljZW50ZXIpIHx8XG4gICAgICAgICAgdUVudHJ5LmJhcnljZW50ZXIgPj0gdkVudHJ5LmJhcnljZW50ZXIpIHtcbiAgICAgICAgbWVyZ2VFbnRyaWVzKHZFbnRyeSwgdUVudHJ5KTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlT3V0KHZFbnRyeSkge1xuICAgIHJldHVybiBmdW5jdGlvbih3RW50cnkpIHtcbiAgICAgIHdFbnRyeVtcImluXCJdLnB1c2godkVudHJ5KTtcbiAgICAgIGlmICgtLXdFbnRyeS5pbmRlZ3JlZSA9PT0gMCkge1xuICAgICAgICBzb3VyY2VTZXQucHVzaCh3RW50cnkpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICB3aGlsZSAoc291cmNlU2V0Lmxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IHNvdXJjZVNldC5wb3AoKTtcbiAgICBlbnRyaWVzLnB1c2goZW50cnkpO1xuICAgIF8uZm9yRWFjaChlbnRyeVtcImluXCJdLnJldmVyc2UoKSwgaGFuZGxlSW4oZW50cnkpKTtcbiAgICBfLmZvckVhY2goZW50cnkub3V0LCBoYW5kbGVPdXQoZW50cnkpKTtcbiAgfVxuXG4gIHJldHVybiBfLm1hcChfLmZpbHRlcihlbnRyaWVzLCBmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gIWVudHJ5Lm1lcmdlZDsgfSksXG4gICAgZnVuY3Rpb24oZW50cnkpIHtcbiAgICAgIHJldHVybiBfLnBpY2soZW50cnksIFtcInZzXCIsIFwiaVwiLCBcImJhcnljZW50ZXJcIiwgXCJ3ZWlnaHRcIl0pO1xuICAgIH0pO1xuXG59XG5cbmZ1bmN0aW9uIG1lcmdlRW50cmllcyh0YXJnZXQsIHNvdXJjZSkge1xuICB2YXIgc3VtID0gMDtcbiAgdmFyIHdlaWdodCA9IDA7XG5cbiAgaWYgKHRhcmdldC53ZWlnaHQpIHtcbiAgICBzdW0gKz0gdGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0O1xuICAgIHdlaWdodCArPSB0YXJnZXQud2VpZ2h0O1xuICB9XG5cbiAgaWYgKHNvdXJjZS53ZWlnaHQpIHtcbiAgICBzdW0gKz0gc291cmNlLmJhcnljZW50ZXIgKiBzb3VyY2Uud2VpZ2h0O1xuICAgIHdlaWdodCArPSBzb3VyY2Uud2VpZ2h0O1xuICB9XG5cbiAgdGFyZ2V0LnZzID0gc291cmNlLnZzLmNvbmNhdCh0YXJnZXQudnMpO1xuICB0YXJnZXQuYmFyeWNlbnRlciA9IHN1bSAvIHdlaWdodDtcbiAgdGFyZ2V0LndlaWdodCA9IHdlaWdodDtcbiAgdGFyZ2V0LmkgPSBNYXRoLm1pbihzb3VyY2UuaSwgdGFyZ2V0LmkpO1xuICBzb3VyY2UubWVyZ2VkID0gdHJ1ZTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBiYXJ5Y2VudGVyID0gcmVxdWlyZShcIi4vYmFyeWNlbnRlclwiKTtcbnZhciByZXNvbHZlQ29uZmxpY3RzID0gcmVxdWlyZShcIi4vcmVzb2x2ZS1jb25mbGljdHNcIik7XG52YXIgc29ydCA9IHJlcXVpcmUoXCIuL3NvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydFN1YmdyYXBoO1xuXG5mdW5jdGlvbiBzb3J0U3ViZ3JhcGgoZywgdiwgY2csIGJpYXNSaWdodCkge1xuICB2YXIgbW92YWJsZSA9IGcuY2hpbGRyZW4odik7XG4gIHZhciBub2RlID0gZy5ub2RlKHYpO1xuICB2YXIgYmwgPSBub2RlID8gbm9kZS5ib3JkZXJMZWZ0IDogdW5kZWZpbmVkO1xuICB2YXIgYnIgPSBub2RlID8gbm9kZS5ib3JkZXJSaWdodDogdW5kZWZpbmVkO1xuICB2YXIgc3ViZ3JhcGhzID0ge307XG5cbiAgaWYgKGJsKSB7XG4gICAgbW92YWJsZSA9IF8uZmlsdGVyKG1vdmFibGUsIGZ1bmN0aW9uKHcpIHtcbiAgICAgIHJldHVybiB3ICE9PSBibCAmJiB3ICE9PSBicjtcbiAgICB9KTtcbiAgfVxuXG4gIHZhciBiYXJ5Y2VudGVycyA9IGJhcnljZW50ZXIoZywgbW92YWJsZSk7XG4gIF8uZm9yRWFjaChiYXJ5Y2VudGVycywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICBpZiAoZy5jaGlsZHJlbihlbnRyeS52KS5sZW5ndGgpIHtcbiAgICAgIHZhciBzdWJncmFwaFJlc3VsdCA9IHNvcnRTdWJncmFwaChnLCBlbnRyeS52LCBjZywgYmlhc1JpZ2h0KTtcbiAgICAgIHN1YmdyYXBoc1tlbnRyeS52XSA9IHN1YmdyYXBoUmVzdWx0O1xuICAgICAgaWYgKF8uaGFzKHN1YmdyYXBoUmVzdWx0LCBcImJhcnljZW50ZXJcIikpIHtcbiAgICAgICAgbWVyZ2VCYXJ5Y2VudGVycyhlbnRyeSwgc3ViZ3JhcGhSZXN1bHQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgdmFyIGVudHJpZXMgPSByZXNvbHZlQ29uZmxpY3RzKGJhcnljZW50ZXJzLCBjZyk7XG4gIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpO1xuXG4gIHZhciByZXN1bHQgPSBzb3J0KGVudHJpZXMsIGJpYXNSaWdodCk7XG5cbiAgaWYgKGJsKSB7XG4gICAgcmVzdWx0LnZzID0gXy5mbGF0dGVuKFtibCwgcmVzdWx0LnZzLCBicl0sIHRydWUpO1xuICAgIGlmIChnLnByZWRlY2Vzc29ycyhibCkubGVuZ3RoKSB7XG4gICAgICB2YXIgYmxQcmVkID0gZy5ub2RlKGcucHJlZGVjZXNzb3JzKGJsKVswXSksXG4gICAgICAgIGJyUHJlZCA9IGcubm9kZShnLnByZWRlY2Vzc29ycyhicilbMF0pO1xuICAgICAgaWYgKCFfLmhhcyhyZXN1bHQsIFwiYmFyeWNlbnRlclwiKSkge1xuICAgICAgICByZXN1bHQuYmFyeWNlbnRlciA9IDA7XG4gICAgICAgIHJlc3VsdC53ZWlnaHQgPSAwO1xuICAgICAgfVxuICAgICAgcmVzdWx0LmJhcnljZW50ZXIgPSAocmVzdWx0LmJhcnljZW50ZXIgKiByZXN1bHQud2VpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsUHJlZC5vcmRlciArIGJyUHJlZC5vcmRlcikgLyAocmVzdWx0LndlaWdodCArIDIpO1xuICAgICAgcmVzdWx0LndlaWdodCArPSAyO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGV4cGFuZFN1YmdyYXBocyhlbnRyaWVzLCBzdWJncmFwaHMpIHtcbiAgXy5mb3JFYWNoKGVudHJpZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZW50cnkudnMgPSBfLmZsYXR0ZW4oZW50cnkudnMubWFwKGZ1bmN0aW9uKHYpIHtcbiAgICAgIGlmIChzdWJncmFwaHNbdl0pIHtcbiAgICAgICAgcmV0dXJuIHN1YmdyYXBoc1t2XS52cztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0pLCB0cnVlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1lcmdlQmFyeWNlbnRlcnModGFyZ2V0LCBvdGhlcikge1xuICBpZiAoIV8uaXNVbmRlZmluZWQodGFyZ2V0LmJhcnljZW50ZXIpKSB7XG4gICAgdGFyZ2V0LmJhcnljZW50ZXIgPSAodGFyZ2V0LmJhcnljZW50ZXIgKiB0YXJnZXQud2VpZ2h0ICtcbiAgICAgICAgICAgICAgICAgICAgICAgICBvdGhlci5iYXJ5Y2VudGVyICogb3RoZXIud2VpZ2h0KSAvXG4gICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LndlaWdodCArIG90aGVyLndlaWdodCk7XG4gICAgdGFyZ2V0LndlaWdodCArPSBvdGhlci53ZWlnaHQ7XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0LmJhcnljZW50ZXIgPSBvdGhlci5iYXJ5Y2VudGVyO1xuICAgIHRhcmdldC53ZWlnaHQgPSBvdGhlci53ZWlnaHQ7XG4gIH1cbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gc29ydDtcblxuZnVuY3Rpb24gc29ydChlbnRyaWVzLCBiaWFzUmlnaHQpIHtcbiAgdmFyIHBhcnRzID0gdXRpbC5wYXJ0aXRpb24oZW50cmllcywgZnVuY3Rpb24oZW50cnkpIHtcbiAgICByZXR1cm4gXy5oYXMoZW50cnksIFwiYmFyeWNlbnRlclwiKTtcbiAgfSk7XG4gIHZhciBzb3J0YWJsZSA9IHBhcnRzLmxocyxcbiAgICB1bnNvcnRhYmxlID0gXy5zb3J0QnkocGFydHMucmhzLCBmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gLWVudHJ5Lmk7IH0pLFxuICAgIHZzID0gW10sXG4gICAgc3VtID0gMCxcbiAgICB3ZWlnaHQgPSAwLFxuICAgIHZzSW5kZXggPSAwO1xuXG4gIHNvcnRhYmxlLnNvcnQoY29tcGFyZVdpdGhCaWFzKCEhYmlhc1JpZ2h0KSk7XG5cbiAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcblxuICBfLmZvckVhY2goc29ydGFibGUsIGZ1bmN0aW9uIChlbnRyeSkge1xuICAgIHZzSW5kZXggKz0gZW50cnkudnMubGVuZ3RoO1xuICAgIHZzLnB1c2goZW50cnkudnMpO1xuICAgIHN1bSArPSBlbnRyeS5iYXJ5Y2VudGVyICogZW50cnkud2VpZ2h0O1xuICAgIHdlaWdodCArPSBlbnRyeS53ZWlnaHQ7XG4gICAgdnNJbmRleCA9IGNvbnN1bWVVbnNvcnRhYmxlKHZzLCB1bnNvcnRhYmxlLCB2c0luZGV4KTtcbiAgfSk7XG5cbiAgdmFyIHJlc3VsdCA9IHsgdnM6IF8uZmxhdHRlbih2cywgdHJ1ZSkgfTtcbiAgaWYgKHdlaWdodCkge1xuICAgIHJlc3VsdC5iYXJ5Y2VudGVyID0gc3VtIC8gd2VpZ2h0O1xuICAgIHJlc3VsdC53ZWlnaHQgPSB3ZWlnaHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gY29uc3VtZVVuc29ydGFibGUodnMsIHVuc29ydGFibGUsIGluZGV4KSB7XG4gIHZhciBsYXN0O1xuICB3aGlsZSAodW5zb3J0YWJsZS5sZW5ndGggJiYgKGxhc3QgPSBfLmxhc3QodW5zb3J0YWJsZSkpLmkgPD0gaW5kZXgpIHtcbiAgICB1bnNvcnRhYmxlLnBvcCgpO1xuICAgIHZzLnB1c2gobGFzdC52cyk7XG4gICAgaW5kZXgrKztcbiAgfVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmVXaXRoQmlhcyhiaWFzKSB7XG4gIHJldHVybiBmdW5jdGlvbihlbnRyeVYsIGVudHJ5Vykge1xuICAgIGlmIChlbnRyeVYuYmFyeWNlbnRlciA8IGVudHJ5Vy5iYXJ5Y2VudGVyKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfSBlbHNlIGlmIChlbnRyeVYuYmFyeWNlbnRlciA+IGVudHJ5Vy5iYXJ5Y2VudGVyKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG5cbiAgICByZXR1cm4gIWJpYXMgPyBlbnRyeVYuaSAtIGVudHJ5Vy5pIDogZW50cnlXLmkgLSBlbnRyeVYuaTtcbiAgfTtcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBhcmVudER1bW15Q2hhaW5zO1xuXG5mdW5jdGlvbiBwYXJlbnREdW1teUNoYWlucyhnKSB7XG4gIHZhciBwb3N0b3JkZXJOdW1zID0gcG9zdG9yZGVyKGcpO1xuXG4gIF8uZm9yRWFjaChnLmdyYXBoKCkuZHVtbXlDaGFpbnMsIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgZWRnZU9iaiA9IG5vZGUuZWRnZU9iajtcbiAgICB2YXIgcGF0aERhdGEgPSBmaW5kUGF0aChnLCBwb3N0b3JkZXJOdW1zLCBlZGdlT2JqLnYsIGVkZ2VPYmoudyk7XG4gICAgdmFyIHBhdGggPSBwYXRoRGF0YS5wYXRoO1xuICAgIHZhciBsY2EgPSBwYXRoRGF0YS5sY2E7XG4gICAgdmFyIHBhdGhJZHggPSAwO1xuICAgIHZhciBwYXRoViA9IHBhdGhbcGF0aElkeF07XG4gICAgdmFyIGFzY2VuZGluZyA9IHRydWU7XG5cbiAgICB3aGlsZSAodiAhPT0gZWRnZU9iai53KSB7XG4gICAgICBub2RlID0gZy5ub2RlKHYpO1xuXG4gICAgICBpZiAoYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlICgocGF0aFYgPSBwYXRoW3BhdGhJZHhdKSAhPT0gbGNhICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYpLm1heFJhbmsgPCBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aFYgPT09IGxjYSkge1xuICAgICAgICAgIGFzY2VuZGluZyA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghYXNjZW5kaW5nKSB7XG4gICAgICAgIHdoaWxlIChwYXRoSWR4IDwgcGF0aC5sZW5ndGggLSAxICYmXG4gICAgICAgICAgICAgICBnLm5vZGUocGF0aFYgPSBwYXRoW3BhdGhJZHggKyAxXSkubWluUmFuayA8PSBub2RlLnJhbmspIHtcbiAgICAgICAgICBwYXRoSWR4Kys7XG4gICAgICAgIH1cbiAgICAgICAgcGF0aFYgPSBwYXRoW3BhdGhJZHhdO1xuICAgICAgfVxuXG4gICAgICBnLnNldFBhcmVudCh2LCBwYXRoVik7XG4gICAgICB2ID0gZy5zdWNjZXNzb3JzKHYpWzBdO1xuICAgIH1cbiAgfSk7XG59XG5cbi8vIEZpbmQgYSBwYXRoIGZyb20gdiB0byB3IHRocm91Z2ggdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3IgKExDQSkuIFJldHVybiB0aGVcbi8vIGZ1bGwgcGF0aCBhbmQgdGhlIExDQS5cbmZ1bmN0aW9uIGZpbmRQYXRoKGcsIHBvc3RvcmRlck51bXMsIHYsIHcpIHtcbiAgdmFyIHZQYXRoID0gW107XG4gIHZhciB3UGF0aCA9IFtdO1xuICB2YXIgbG93ID0gTWF0aC5taW4ocG9zdG9yZGVyTnVtc1t2XS5sb3csIHBvc3RvcmRlck51bXNbd10ubG93KTtcbiAgdmFyIGxpbSA9IE1hdGgubWF4KHBvc3RvcmRlck51bXNbdl0ubGltLCBwb3N0b3JkZXJOdW1zW3ddLmxpbSk7XG4gIHZhciBwYXJlbnQ7XG4gIHZhciBsY2E7XG5cbiAgLy8gVHJhdmVyc2UgdXAgZnJvbSB2IHRvIGZpbmQgdGhlIExDQVxuICBwYXJlbnQgPSB2O1xuICBkbyB7XG4gICAgcGFyZW50ID0gZy5wYXJlbnQocGFyZW50KTtcbiAgICB2UGF0aC5wdXNoKHBhcmVudCk7XG4gIH0gd2hpbGUgKHBhcmVudCAmJlxuICAgICAgICAgICAocG9zdG9yZGVyTnVtc1twYXJlbnRdLmxvdyA+IGxvdyB8fCBsaW0gPiBwb3N0b3JkZXJOdW1zW3BhcmVudF0ubGltKSk7XG4gIGxjYSA9IHBhcmVudDtcblxuICAvLyBUcmF2ZXJzZSBmcm9tIHcgdG8gTENBXG4gIHBhcmVudCA9IHc7XG4gIHdoaWxlICgocGFyZW50ID0gZy5wYXJlbnQocGFyZW50KSkgIT09IGxjYSkge1xuICAgIHdQYXRoLnB1c2gocGFyZW50KTtcbiAgfVxuXG4gIHJldHVybiB7IHBhdGg6IHZQYXRoLmNvbmNhdCh3UGF0aC5yZXZlcnNlKCkpLCBsY2E6IGxjYSB9O1xufVxuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZykge1xuICB2YXIgcmVzdWx0ID0ge307XG4gIHZhciBsaW0gPSAwO1xuXG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgdmFyIGxvdyA9IGxpbTtcbiAgICBfLmZvckVhY2goZy5jaGlsZHJlbih2KSwgZGZzKTtcbiAgICByZXN1bHRbdl0gPSB7IGxvdzogbG93LCBsaW06IGxpbSsrIH07XG4gIH1cbiAgXy5mb3JFYWNoKGcuY2hpbGRyZW4oKSwgZGZzKTtcblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuLi9ncmFwaGxpYlwiKS5HcmFwaDtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG5cbi8qXG4gKiBUaGlzIG1vZHVsZSBwcm92aWRlcyBjb29yZGluYXRlIGFzc2lnbm1lbnQgYmFzZWQgb24gQnJhbmRlcyBhbmQgS8O2cGYsIFwiRmFzdFxuICogYW5kIFNpbXBsZSBIb3Jpem9udGFsIENvb3JkaW5hdGUgQXNzaWdubWVudC5cIlxuICovXG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBwb3NpdGlvblg6IHBvc2l0aW9uWCxcbiAgZmluZFR5cGUxQ29uZmxpY3RzOiBmaW5kVHlwZTFDb25mbGljdHMsXG4gIGZpbmRUeXBlMkNvbmZsaWN0czogZmluZFR5cGUyQ29uZmxpY3RzLFxuICBhZGRDb25mbGljdDogYWRkQ29uZmxpY3QsXG4gIGhhc0NvbmZsaWN0OiBoYXNDb25mbGljdCxcbiAgdmVydGljYWxBbGlnbm1lbnQ6IHZlcnRpY2FsQWxpZ25tZW50LFxuICBob3Jpem9udGFsQ29tcGFjdGlvbjogaG9yaXpvbnRhbENvbXBhY3Rpb24sXG4gIGFsaWduQ29vcmRpbmF0ZXM6IGFsaWduQ29vcmRpbmF0ZXMsXG4gIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50OiBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudCxcbiAgYmFsYW5jZTogYmFsYW5jZVxufTtcblxuLypcbiAqIE1hcmtzIGFsbCBlZGdlcyBpbiB0aGUgZ3JhcGggd2l0aCBhIHR5cGUtMSBjb25mbGljdCB3aXRoIHRoZSBcInR5cGUxQ29uZmxpY3RcIlxuICogcHJvcGVydHkuIEEgdHlwZS0xIGNvbmZsaWN0IGlzIG9uZSB3aGVyZSBhIG5vbi1pbm5lciBzZWdtZW50IGNyb3NzZXMgYW5cbiAqIGlubmVyIHNlZ21lbnQuIEFuIGlubmVyIHNlZ21lbnQgaXMgYW4gZWRnZSB3aXRoIGJvdGggaW5jaWRlbnQgbm9kZXMgbWFya2VkXG4gKiB3aXRoIHRoZSBcImR1bW15XCIgcHJvcGVydHkuXG4gKlxuICogVGhpcyBhbGdvcml0aG0gc2NhbnMgbGF5ZXIgYnkgbGF5ZXIsIHN0YXJ0aW5nIHdpdGggdGhlIHNlY29uZCwgZm9yIHR5cGUtMVxuICogY29uZmxpY3RzIGJldHdlZW4gdGhlIGN1cnJlbnQgbGF5ZXIgYW5kIHRoZSBwcmV2aW91cyBsYXllci4gRm9yIGVhY2ggbGF5ZXJcbiAqIGl0IHNjYW5zIHRoZSBub2RlcyBmcm9tIGxlZnQgdG8gcmlnaHQgdW50aWwgaXQgcmVhY2hlcyBvbmUgdGhhdCBpcyBpbmNpZGVudFxuICogb24gYW4gaW5uZXIgc2VnbWVudC4gSXQgdGhlbiBzY2FucyBwcmVkZWNlc3NvcnMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgaGF2ZVxuICogZWRnZXMgdGhhdCBjcm9zcyB0aGF0IGlubmVyIHNlZ21lbnQuIEF0IHRoZSBlbmQgYSBmaW5hbCBzY2FuIGlzIGRvbmUgZm9yIGFsbFxuICogbm9kZXMgb24gdGhlIGN1cnJlbnQgcmFuayB0byBzZWUgaWYgdGhleSBjcm9zcyB0aGUgbGFzdCB2aXNpdGVkIGlubmVyXG4gKiBzZWdtZW50LlxuICpcbiAqIFRoaXMgYWxnb3JpdGhtIChzYWZlbHkpIGFzc3VtZXMgdGhhdCBhIGR1bW15IG5vZGUgd2lsbCBvbmx5IGJlIGluY2lkZW50IG9uIGFcbiAqIHNpbmdsZSBub2RlIGluIHRoZSBsYXllcnMgYmVpbmcgc2Nhbm5lZC5cbiAqL1xuZnVuY3Rpb24gZmluZFR5cGUxQ29uZmxpY3RzKGcsIGxheWVyaW5nKSB7XG4gIHZhciBjb25mbGljdHMgPSB7fTtcblxuICBmdW5jdGlvbiB2aXNpdExheWVyKHByZXZMYXllciwgbGF5ZXIpIHtcbiAgICB2YXJcbiAgICAgIC8vIGxhc3QgdmlzaXRlZCBub2RlIGluIHRoZSBwcmV2aW91cyBsYXllciB0aGF0IGlzIGluY2lkZW50IG9uIGFuIGlubmVyXG4gICAgICAvLyBzZWdtZW50LlxuICAgICAgazAgPSAwLFxuICAgICAgLy8gVHJhY2tzIHRoZSBsYXN0IG5vZGUgaW4gdGhpcyBsYXllciBzY2FubmVkIGZvciBjcm9zc2luZ3Mgd2l0aCBhIHR5cGUtMVxuICAgICAgLy8gc2VnbWVudC5cbiAgICAgIHNjYW5Qb3MgPSAwLFxuICAgICAgcHJldkxheWVyTGVuZ3RoID0gcHJldkxheWVyLmxlbmd0aCxcbiAgICAgIGxhc3ROb2RlID0gXy5sYXN0KGxheWVyKTtcblxuICAgIF8uZm9yRWFjaChsYXllciwgZnVuY3Rpb24odiwgaSkge1xuICAgICAgdmFyIHcgPSBmaW5kT3RoZXJJbm5lclNlZ21lbnROb2RlKGcsIHYpLFxuICAgICAgICBrMSA9IHcgPyBnLm5vZGUodykub3JkZXIgOiBwcmV2TGF5ZXJMZW5ndGg7XG5cbiAgICAgIGlmICh3IHx8IHYgPT09IGxhc3ROb2RlKSB7XG4gICAgICAgIF8uZm9yRWFjaChsYXllci5zbGljZShzY2FuUG9zLCBpICsxKSwgZnVuY3Rpb24oc2Nhbk5vZGUpIHtcbiAgICAgICAgICBfLmZvckVhY2goZy5wcmVkZWNlc3NvcnMoc2Nhbk5vZGUpLCBmdW5jdGlvbih1KSB7XG4gICAgICAgICAgICB2YXIgdUxhYmVsID0gZy5ub2RlKHUpLFxuICAgICAgICAgICAgICB1UG9zID0gdUxhYmVsLm9yZGVyO1xuICAgICAgICAgICAgaWYgKCh1UG9zIDwgazAgfHwgazEgPCB1UG9zKSAmJlxuICAgICAgICAgICAgICAgICEodUxhYmVsLmR1bW15ICYmIGcubm9kZShzY2FuTm9kZSkuZHVtbXkpKSB7XG4gICAgICAgICAgICAgIGFkZENvbmZsaWN0KGNvbmZsaWN0cywgdSwgc2Nhbk5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgc2NhblBvcyA9IGkgKyAxO1xuICAgICAgICBrMCA9IGsxO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGxheWVyO1xuICB9XG5cbiAgXy5yZWR1Y2UobGF5ZXJpbmcsIHZpc2l0TGF5ZXIpO1xuICByZXR1cm4gY29uZmxpY3RzO1xufVxuXG5mdW5jdGlvbiBmaW5kVHlwZTJDb25mbGljdHMoZywgbGF5ZXJpbmcpIHtcbiAgdmFyIGNvbmZsaWN0cyA9IHt9O1xuXG4gIGZ1bmN0aW9uIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aEVuZCwgcHJldk5vcnRoQm9yZGVyLCBuZXh0Tm9ydGhCb3JkZXIpIHtcbiAgICB2YXIgdjtcbiAgICBfLmZvckVhY2goXy5yYW5nZShzb3V0aFBvcywgc291dGhFbmQpLCBmdW5jdGlvbihpKSB7XG4gICAgICB2ID0gc291dGhbaV07XG4gICAgICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgICAgIF8uZm9yRWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgICAgIHZhciB1Tm9kZSA9IGcubm9kZSh1KTtcbiAgICAgICAgICBpZiAodU5vZGUuZHVtbXkgJiZcbiAgICAgICAgICAgICAgKHVOb2RlLm9yZGVyIDwgcHJldk5vcnRoQm9yZGVyIHx8IHVOb2RlLm9yZGVyID4gbmV4dE5vcnRoQm9yZGVyKSkge1xuICAgICAgICAgICAgYWRkQ29uZmxpY3QoY29uZmxpY3RzLCB1LCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cblxuICBmdW5jdGlvbiB2aXNpdExheWVyKG5vcnRoLCBzb3V0aCkge1xuICAgIHZhciBwcmV2Tm9ydGhQb3MgPSAtMSxcbiAgICAgIG5leHROb3J0aFBvcyxcbiAgICAgIHNvdXRoUG9zID0gMDtcblxuICAgIF8uZm9yRWFjaChzb3V0aCwgZnVuY3Rpb24odiwgc291dGhMb29rYWhlYWQpIHtcbiAgICAgIGlmIChnLm5vZGUodikuZHVtbXkgPT09IFwiYm9yZGVyXCIpIHtcbiAgICAgICAgdmFyIHByZWRlY2Vzc29ycyA9IGcucHJlZGVjZXNzb3JzKHYpO1xuICAgICAgICBpZiAocHJlZGVjZXNzb3JzLmxlbmd0aCkge1xuICAgICAgICAgIG5leHROb3J0aFBvcyA9IGcubm9kZShwcmVkZWNlc3NvcnNbMF0pLm9yZGVyO1xuICAgICAgICAgIHNjYW4oc291dGgsIHNvdXRoUG9zLCBzb3V0aExvb2thaGVhZCwgcHJldk5vcnRoUG9zLCBuZXh0Tm9ydGhQb3MpO1xuICAgICAgICAgIHNvdXRoUG9zID0gc291dGhMb29rYWhlYWQ7XG4gICAgICAgICAgcHJldk5vcnRoUG9zID0gbmV4dE5vcnRoUG9zO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBzY2FuKHNvdXRoLCBzb3V0aFBvcywgc291dGgubGVuZ3RoLCBuZXh0Tm9ydGhQb3MsIG5vcnRoLmxlbmd0aCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc291dGg7XG4gIH1cblxuICBfLnJlZHVjZShsYXllcmluZywgdmlzaXRMYXllcik7XG4gIHJldHVybiBjb25mbGljdHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRPdGhlcklubmVyU2VnbWVudE5vZGUoZywgdikge1xuICBpZiAoZy5ub2RlKHYpLmR1bW15KSB7XG4gICAgcmV0dXJuIF8uZmluZChnLnByZWRlY2Vzc29ycyh2KSwgZnVuY3Rpb24odSkge1xuICAgICAgcmV0dXJuIGcubm9kZSh1KS5kdW1teTtcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhZGRDb25mbGljdChjb25mbGljdHMsIHYsIHcpIHtcbiAgaWYgKHYgPiB3KSB7XG4gICAgdmFyIHRtcCA9IHY7XG4gICAgdiA9IHc7XG4gICAgdyA9IHRtcDtcbiAgfVxuXG4gIHZhciBjb25mbGljdHNWID0gY29uZmxpY3RzW3ZdO1xuICBpZiAoIWNvbmZsaWN0c1YpIHtcbiAgICBjb25mbGljdHNbdl0gPSBjb25mbGljdHNWID0ge307XG4gIH1cbiAgY29uZmxpY3RzVlt3XSA9IHRydWU7XG59XG5cbmZ1bmN0aW9uIGhhc0NvbmZsaWN0KGNvbmZsaWN0cywgdiwgdykge1xuICBpZiAodiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiBfLmhhcyhjb25mbGljdHNbdl0sIHcpO1xufVxuXG4vKlxuICogVHJ5IHRvIGFsaWduIG5vZGVzIGludG8gdmVydGljYWwgXCJibG9ja3NcIiB3aGVyZSBwb3NzaWJsZS4gVGhpcyBhbGdvcml0aG1cbiAqIGF0dGVtcHRzIHRvIGFsaWduIGEgbm9kZSB3aXRoIG9uZSBvZiBpdHMgbWVkaWFuIG5laWdoYm9ycy4gSWYgdGhlIGVkZ2VcbiAqIGNvbm5lY3RpbmcgYSBuZWlnaGJvciBpcyBhIHR5cGUtMSBjb25mbGljdCB0aGVuIHdlIGlnbm9yZSB0aGF0IHBvc3NpYmlsaXR5LlxuICogSWYgYSBwcmV2aW91cyBub2RlIGhhcyBhbHJlYWR5IGZvcm1lZCBhIGJsb2NrIHdpdGggYSBub2RlIGFmdGVyIHRoZSBub2RlXG4gKiB3ZSdyZSB0cnlpbmcgdG8gZm9ybSBhIGJsb2NrIHdpdGgsIHdlIGFsc28gaWdub3JlIHRoYXQgcG9zc2liaWxpdHkgLSBvdXJcbiAqIGJsb2NrcyB3b3VsZCBiZSBzcGxpdCBpbiB0aGF0IHNjZW5hcmlvLlxuICovXG5mdW5jdGlvbiB2ZXJ0aWNhbEFsaWdubWVudChnLCBsYXllcmluZywgY29uZmxpY3RzLCBuZWlnaGJvckZuKSB7XG4gIHZhciByb290ID0ge30sXG4gICAgYWxpZ24gPSB7fSxcbiAgICBwb3MgPSB7fTtcblxuICAvLyBXZSBjYWNoZSB0aGUgcG9zaXRpb24gaGVyZSBiYXNlZCBvbiB0aGUgbGF5ZXJpbmcgYmVjYXVzZSB0aGUgZ3JhcGggYW5kXG4gIC8vIGxheWVyaW5nIG1heSBiZSBvdXQgb2Ygc3luYy4gVGhlIGxheWVyaW5nIG1hdHJpeCBpcyBtYW5pcHVsYXRlZCB0b1xuICAvLyBnZW5lcmF0ZSBkaWZmZXJlbnQgZXh0cmVtZSBhbGlnbm1lbnRzLlxuICBfLmZvckVhY2gobGF5ZXJpbmcsIGZ1bmN0aW9uKGxheWVyKSB7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2LCBvcmRlcikge1xuICAgICAgcm9vdFt2XSA9IHY7XG4gICAgICBhbGlnblt2XSA9IHY7XG4gICAgICBwb3Nbdl0gPSBvcmRlcjtcbiAgICB9KTtcbiAgfSk7XG5cbiAgXy5mb3JFYWNoKGxheWVyaW5nLCBmdW5jdGlvbihsYXllcikge1xuICAgIHZhciBwcmV2SWR4ID0gLTE7XG4gICAgXy5mb3JFYWNoKGxheWVyLCBmdW5jdGlvbih2KSB7XG4gICAgICB2YXIgd3MgPSBuZWlnaGJvckZuKHYpO1xuICAgICAgaWYgKHdzLmxlbmd0aCkge1xuICAgICAgICB3cyA9IF8uc29ydEJ5KHdzLCBmdW5jdGlvbih3KSB7IHJldHVybiBwb3Nbd107IH0pO1xuICAgICAgICB2YXIgbXAgPSAod3MubGVuZ3RoIC0gMSkgLyAyO1xuICAgICAgICBmb3IgKHZhciBpID0gTWF0aC5mbG9vcihtcCksIGlsID0gTWF0aC5jZWlsKG1wKTsgaSA8PSBpbDsgKytpKSB7XG4gICAgICAgICAgdmFyIHcgPSB3c1tpXTtcbiAgICAgICAgICBpZiAoYWxpZ25bdl0gPT09IHYgJiZcbiAgICAgICAgICAgICAgcHJldklkeCA8IHBvc1t3XSAmJlxuICAgICAgICAgICAgICAhaGFzQ29uZmxpY3QoY29uZmxpY3RzLCB2LCB3KSkge1xuICAgICAgICAgICAgYWxpZ25bd10gPSB2O1xuICAgICAgICAgICAgYWxpZ25bdl0gPSByb290W3ZdID0gcm9vdFt3XTtcbiAgICAgICAgICAgIHByZXZJZHggPSBwb3Nbd107XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB7IHJvb3Q6IHJvb3QsIGFsaWduOiBhbGlnbiB9O1xufVxuXG5mdW5jdGlvbiBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBsYXllcmluZywgcm9vdCwgYWxpZ24sIHJldmVyc2VTZXApIHtcbiAgLy8gVGhpcyBwb3J0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGlmZmVycyBmcm9tIEJLIGR1ZSB0byBhIG51bWJlciBvZiBwcm9ibGVtcy5cbiAgLy8gSW5zdGVhZCBvZiB0aGVpciBhbGdvcml0aG0gd2UgY29uc3RydWN0IGEgbmV3IGJsb2NrIGdyYXBoIGFuZCBkbyB0d29cbiAgLy8gc3dlZXBzLiBUaGUgZmlyc3Qgc3dlZXAgcGxhY2VzIGJsb2NrcyB3aXRoIHRoZSBzbWFsbGVzdCBwb3NzaWJsZVxuICAvLyBjb29yZGluYXRlcy4gVGhlIHNlY29uZCBzd2VlcCByZW1vdmVzIHVudXNlZCBzcGFjZSBieSBtb3ZpbmcgYmxvY2tzIHRvIHRoZVxuICAvLyBncmVhdGVzdCBjb29yZGluYXRlcyB3aXRob3V0IHZpb2xhdGluZyBzZXBhcmF0aW9uLlxuICB2YXIgeHMgPSB7fSxcbiAgICBibG9ja0cgPSBidWlsZEJsb2NrR3JhcGgoZywgbGF5ZXJpbmcsIHJvb3QsIHJldmVyc2VTZXApLFxuICAgIGJvcmRlclR5cGUgPSByZXZlcnNlU2VwID8gXCJib3JkZXJMZWZ0XCIgOiBcImJvcmRlclJpZ2h0XCI7XG5cbiAgZnVuY3Rpb24gaXRlcmF0ZShzZXRYc0Z1bmMsIG5leHROb2Rlc0Z1bmMpIHtcbiAgICB2YXIgc3RhY2sgPSBibG9ja0cubm9kZXMoKTtcbiAgICB2YXIgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIHZhciB2aXNpdGVkID0ge307XG4gICAgd2hpbGUgKGVsZW0pIHtcbiAgICAgIGlmICh2aXNpdGVkW2VsZW1dKSB7XG4gICAgICAgIHNldFhzRnVuYyhlbGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZpc2l0ZWRbZWxlbV0gPSB0cnVlO1xuICAgICAgICBzdGFjay5wdXNoKGVsZW0pO1xuICAgICAgICBzdGFjayA9IHN0YWNrLmNvbmNhdChuZXh0Tm9kZXNGdW5jKGVsZW0pKTtcbiAgICAgIH1cblxuICAgICAgZWxlbSA9IHN0YWNrLnBvcCgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZpcnN0IHBhc3MsIGFzc2lnbiBzbWFsbGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMShlbGVtKSB7XG4gICAgeHNbZWxlbV0gPSBibG9ja0cuaW5FZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5tYXgoYWNjLCB4c1tlLnZdICsgYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIDApO1xuICB9XG5cbiAgLy8gU2Vjb25kIHBhc3MsIGFzc2lnbiBncmVhdGVzdCBjb29yZGluYXRlc1xuICBmdW5jdGlvbiBwYXNzMihlbGVtKSB7XG4gICAgdmFyIG1pbiA9IGJsb2NrRy5vdXRFZGdlcyhlbGVtKS5yZWR1Y2UoZnVuY3Rpb24oYWNjLCBlKSB7XG4gICAgICByZXR1cm4gTWF0aC5taW4oYWNjLCB4c1tlLnddIC0gYmxvY2tHLmVkZ2UoZSkpO1xuICAgIH0sIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG5cbiAgICB2YXIgbm9kZSA9IGcubm9kZShlbGVtKTtcbiAgICBpZiAobWluICE9PSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgJiYgbm9kZS5ib3JkZXJUeXBlICE9PSBib3JkZXJUeXBlKSB7XG4gICAgICB4c1tlbGVtXSA9IE1hdGgubWF4KHhzW2VsZW1dLCBtaW4pO1xuICAgIH1cbiAgfVxuXG4gIGl0ZXJhdGUocGFzczEsIGJsb2NrRy5wcmVkZWNlc3NvcnMuYmluZChibG9ja0cpKTtcbiAgaXRlcmF0ZShwYXNzMiwgYmxvY2tHLnN1Y2Nlc3NvcnMuYmluZChibG9ja0cpKTtcblxuICAvLyBBc3NpZ24geCBjb29yZGluYXRlcyB0byBhbGwgbm9kZXNcbiAgXy5mb3JFYWNoKGFsaWduLCBmdW5jdGlvbih2KSB7XG4gICAgeHNbdl0gPSB4c1tyb290W3ZdXTtcbiAgfSk7XG5cbiAgcmV0dXJuIHhzO1xufVxuXG5cbmZ1bmN0aW9uIGJ1aWxkQmxvY2tHcmFwaChnLCBsYXllcmluZywgcm9vdCwgcmV2ZXJzZVNlcCkge1xuICB2YXIgYmxvY2tHcmFwaCA9IG5ldyBHcmFwaCgpLFxuICAgIGdyYXBoTGFiZWwgPSBnLmdyYXBoKCksXG4gICAgc2VwRm4gPSBzZXAoZ3JhcGhMYWJlbC5ub2Rlc2VwLCBncmFwaExhYmVsLmVkZ2VzZXAsIHJldmVyc2VTZXApO1xuXG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgdTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIHZhciB2Um9vdCA9IHJvb3Rbdl07XG4gICAgICBibG9ja0dyYXBoLnNldE5vZGUodlJvb3QpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIHVSb290ID0gcm9vdFt1XSxcbiAgICAgICAgICBwcmV2TWF4ID0gYmxvY2tHcmFwaC5lZGdlKHVSb290LCB2Um9vdCk7XG4gICAgICAgIGJsb2NrR3JhcGguc2V0RWRnZSh1Um9vdCwgdlJvb3QsIE1hdGgubWF4KHNlcEZuKGcsIHYsIHUpLCBwcmV2TWF4IHx8IDApKTtcbiAgICAgIH1cbiAgICAgIHUgPSB2O1xuICAgIH0pO1xuICB9KTtcblxuICByZXR1cm4gYmxvY2tHcmFwaDtcbn1cblxuLypcbiAqIFJldHVybnMgdGhlIGFsaWdubWVudCB0aGF0IGhhcyB0aGUgc21hbGxlc3Qgd2lkdGggb2YgdGhlIGdpdmVuIGFsaWdubWVudHMuXG4gKi9cbmZ1bmN0aW9uIGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50KGcsIHhzcykge1xuICByZXR1cm4gXy5taW5CeShfLnZhbHVlcyh4c3MpLCBmdW5jdGlvbiAoeHMpIHtcbiAgICB2YXIgbWF4ID0gTnVtYmVyLk5FR0FUSVZFX0lORklOSVRZO1xuICAgIHZhciBtaW4gPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5cbiAgICBfLmZvckluKHhzLCBmdW5jdGlvbiAoeCwgdikge1xuICAgICAgdmFyIGhhbGZXaWR0aCA9IHdpZHRoKGcsIHYpIC8gMjtcblxuICAgICAgbWF4ID0gTWF0aC5tYXgoeCArIGhhbGZXaWR0aCwgbWF4KTtcbiAgICAgIG1pbiA9IE1hdGgubWluKHggLSBoYWxmV2lkdGgsIG1pbik7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbWF4IC0gbWluO1xuICB9KTtcbn1cblxuLypcbiAqIEFsaWduIHRoZSBjb29yZGluYXRlcyBvZiBlYWNoIG9mIHRoZSBsYXlvdXQgYWxpZ25tZW50cyBzdWNoIHRoYXRcbiAqIGxlZnQtYmlhc2VkIGFsaWdubWVudHMgaGF2ZSB0aGVpciBtaW5pbXVtIGNvb3JkaW5hdGUgYXQgdGhlIHNhbWUgcG9pbnQgYXNcbiAqIHRoZSBtaW5pbXVtIGNvb3JkaW5hdGUgb2YgdGhlIHNtYWxsZXN0IHdpZHRoIGFsaWdubWVudCBhbmQgcmlnaHQtYmlhc2VkXG4gKiBhbGlnbm1lbnRzIGhhdmUgdGhlaXIgbWF4aW11bSBjb29yZGluYXRlIGF0IHRoZSBzYW1lIHBvaW50IGFzIHRoZSBtYXhpbXVtXG4gKiBjb29yZGluYXRlIG9mIHRoZSBzbWFsbGVzdCB3aWR0aCBhbGlnbm1lbnQuXG4gKi9cbmZ1bmN0aW9uIGFsaWduQ29vcmRpbmF0ZXMoeHNzLCBhbGlnblRvKSB7XG4gIHZhciBhbGlnblRvVmFscyA9IF8udmFsdWVzKGFsaWduVG8pLFxuICAgIGFsaWduVG9NaW4gPSBfLm1pbihhbGlnblRvVmFscyksXG4gICAgYWxpZ25Ub01heCA9IF8ubWF4KGFsaWduVG9WYWxzKTtcblxuICBfLmZvckVhY2goW1widVwiLCBcImRcIl0sIGZ1bmN0aW9uKHZlcnQpIHtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICB2YXIgYWxpZ25tZW50ID0gdmVydCArIGhvcml6LFxuICAgICAgICB4cyA9IHhzc1thbGlnbm1lbnRdLFxuICAgICAgICBkZWx0YTtcbiAgICAgIGlmICh4cyA9PT0gYWxpZ25UbykgcmV0dXJuO1xuXG4gICAgICB2YXIgeHNWYWxzID0gXy52YWx1ZXMoeHMpO1xuICAgICAgZGVsdGEgPSBob3JpeiA9PT0gXCJsXCIgPyBhbGlnblRvTWluIC0gXy5taW4oeHNWYWxzKSA6IGFsaWduVG9NYXggLSBfLm1heCh4c1ZhbHMpO1xuXG4gICAgICBpZiAoZGVsdGEpIHtcbiAgICAgICAgeHNzW2FsaWdubWVudF0gPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4geCArIGRlbHRhOyB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGJhbGFuY2UoeHNzLCBhbGlnbikge1xuICByZXR1cm4gXy5tYXBWYWx1ZXMoeHNzLnVsLCBmdW5jdGlvbihpZ25vcmUsIHYpIHtcbiAgICBpZiAoYWxpZ24pIHtcbiAgICAgIHJldHVybiB4c3NbYWxpZ24udG9Mb3dlckNhc2UoKV1bdl07XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB4cyA9IF8uc29ydEJ5KF8ubWFwKHhzcywgdikpO1xuICAgICAgcmV0dXJuICh4c1sxXSArIHhzWzJdKSAvIDI7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcG9zaXRpb25YKGcpIHtcbiAgdmFyIGxheWVyaW5nID0gdXRpbC5idWlsZExheWVyTWF0cml4KGcpO1xuICB2YXIgY29uZmxpY3RzID0gXy5tZXJnZShcbiAgICBmaW5kVHlwZTFDb25mbGljdHMoZywgbGF5ZXJpbmcpLFxuICAgIGZpbmRUeXBlMkNvbmZsaWN0cyhnLCBsYXllcmluZykpO1xuXG4gIHZhciB4c3MgPSB7fTtcbiAgdmFyIGFkanVzdGVkTGF5ZXJpbmc7XG4gIF8uZm9yRWFjaChbXCJ1XCIsIFwiZFwiXSwgZnVuY3Rpb24odmVydCkge1xuICAgIGFkanVzdGVkTGF5ZXJpbmcgPSB2ZXJ0ID09PSBcInVcIiA/IGxheWVyaW5nIDogXy52YWx1ZXMobGF5ZXJpbmcpLnJldmVyc2UoKTtcbiAgICBfLmZvckVhY2goW1wibFwiLCBcInJcIl0sIGZ1bmN0aW9uKGhvcml6KSB7XG4gICAgICBpZiAoaG9yaXogPT09IFwiclwiKSB7XG4gICAgICAgIGFkanVzdGVkTGF5ZXJpbmcgPSBfLm1hcChhZGp1c3RlZExheWVyaW5nLCBmdW5jdGlvbihpbm5lcikge1xuICAgICAgICAgIHJldHVybiBfLnZhbHVlcyhpbm5lcikucmV2ZXJzZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgdmFyIG5laWdoYm9yRm4gPSAodmVydCA9PT0gXCJ1XCIgPyBnLnByZWRlY2Vzc29ycyA6IGcuc3VjY2Vzc29ycykuYmluZChnKTtcbiAgICAgIHZhciBhbGlnbiA9IHZlcnRpY2FsQWxpZ25tZW50KGcsIGFkanVzdGVkTGF5ZXJpbmcsIGNvbmZsaWN0cywgbmVpZ2hib3JGbik7XG4gICAgICB2YXIgeHMgPSBob3Jpem9udGFsQ29tcGFjdGlvbihnLCBhZGp1c3RlZExheWVyaW5nLFxuICAgICAgICBhbGlnbi5yb290LCBhbGlnbi5hbGlnbiwgaG9yaXogPT09IFwiclwiKTtcbiAgICAgIGlmIChob3JpeiA9PT0gXCJyXCIpIHtcbiAgICAgICAgeHMgPSBfLm1hcFZhbHVlcyh4cywgZnVuY3Rpb24oeCkgeyByZXR1cm4gLXg7IH0pO1xuICAgICAgfVxuICAgICAgeHNzW3ZlcnQgKyBob3Jpel0gPSB4cztcbiAgICB9KTtcbiAgfSk7XG5cbiAgdmFyIHNtYWxsZXN0V2lkdGggPSBmaW5kU21hbGxlc3RXaWR0aEFsaWdubWVudChnLCB4c3MpO1xuICBhbGlnbkNvb3JkaW5hdGVzKHhzcywgc21hbGxlc3RXaWR0aCk7XG4gIHJldHVybiBiYWxhbmNlKHhzcywgZy5ncmFwaCgpLmFsaWduKTtcbn1cblxuZnVuY3Rpb24gc2VwKG5vZGVTZXAsIGVkZ2VTZXAsIHJldmVyc2VTZXApIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGcsIHYsIHcpIHtcbiAgICB2YXIgdkxhYmVsID0gZy5ub2RlKHYpO1xuICAgIHZhciB3TGFiZWwgPSBnLm5vZGUodyk7XG4gICAgdmFyIHN1bSA9IDA7XG4gICAgdmFyIGRlbHRhO1xuXG4gICAgc3VtICs9IHZMYWJlbC53aWR0aCAvIDI7XG4gICAgaWYgKF8uaGFzKHZMYWJlbCwgXCJsYWJlbHBvc1wiKSkge1xuICAgICAgc3dpdGNoICh2TGFiZWwubGFiZWxwb3MudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBcImxcIjogZGVsdGEgPSAtdkxhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICBjYXNlIFwiclwiOiBkZWx0YSA9IHZMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZGVsdGEpIHtcbiAgICAgIHN1bSArPSByZXZlcnNlU2VwID8gZGVsdGEgOiAtZGVsdGE7XG4gICAgfVxuICAgIGRlbHRhID0gMDtcblxuICAgIHN1bSArPSAodkxhYmVsLmR1bW15ID8gZWRnZVNlcCA6IG5vZGVTZXApIC8gMjtcbiAgICBzdW0gKz0gKHdMYWJlbC5kdW1teSA/IGVkZ2VTZXAgOiBub2RlU2VwKSAvIDI7XG5cbiAgICBzdW0gKz0gd0xhYmVsLndpZHRoIC8gMjtcbiAgICBpZiAoXy5oYXMod0xhYmVsLCBcImxhYmVscG9zXCIpKSB7XG4gICAgICBzd2l0Y2ggKHdMYWJlbC5sYWJlbHBvcy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFwibFwiOiBkZWx0YSA9IHdMYWJlbC53aWR0aCAvIDI7IGJyZWFrO1xuICAgICAgY2FzZSBcInJcIjogZGVsdGEgPSAtd0xhYmVsLndpZHRoIC8gMjsgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWx0YSkge1xuICAgICAgc3VtICs9IHJldmVyc2VTZXAgPyBkZWx0YSA6IC1kZWx0YTtcbiAgICB9XG4gICAgZGVsdGEgPSAwO1xuXG4gICAgcmV0dXJuIHN1bTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2lkdGgoZywgdikge1xuICByZXR1cm4gZy5ub2RlKHYpLndpZHRoO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcbnZhciB1dGlsID0gcmVxdWlyZShcIi4uL3V0aWxcIik7XG52YXIgcG9zaXRpb25YID0gcmVxdWlyZShcIi4vYmtcIikucG9zaXRpb25YO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHBvc2l0aW9uO1xuXG5mdW5jdGlvbiBwb3NpdGlvbihnKSB7XG4gIGcgPSB1dGlsLmFzTm9uQ29tcG91bmRHcmFwaChnKTtcblxuICBwb3NpdGlvblkoZyk7XG4gIF8uZm9yRWFjaChwb3NpdGlvblgoZyksIGZ1bmN0aW9uKHgsIHYpIHtcbiAgICBnLm5vZGUodikueCA9IHg7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwb3NpdGlvblkoZykge1xuICB2YXIgbGF5ZXJpbmcgPSB1dGlsLmJ1aWxkTGF5ZXJNYXRyaXgoZyk7XG4gIHZhciByYW5rU2VwID0gZy5ncmFwaCgpLnJhbmtzZXA7XG4gIHZhciBwcmV2WSA9IDA7XG4gIF8uZm9yRWFjaChsYXllcmluZywgZnVuY3Rpb24obGF5ZXIpIHtcbiAgICB2YXIgbWF4SGVpZ2h0ID0gXy5tYXgoXy5tYXAobGF5ZXIsIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5oZWlnaHQ7IH0pKTtcbiAgICBfLmZvckVhY2gobGF5ZXIsIGZ1bmN0aW9uKHYpIHtcbiAgICAgIGcubm9kZSh2KS55ID0gcHJldlkgKyBtYXhIZWlnaHQgLyAyO1xuICAgIH0pO1xuICAgIHByZXZZICs9IG1heEhlaWdodCArIHJhbmtTZXA7XG4gIH0pO1xufVxuXG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIEdyYXBoID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLkdyYXBoO1xudmFyIHNsYWNrID0gcmVxdWlyZShcIi4vdXRpbFwiKS5zbGFjaztcblxubW9kdWxlLmV4cG9ydHMgPSBmZWFzaWJsZVRyZWU7XG5cbi8qXG4gKiBDb25zdHJ1Y3RzIGEgc3Bhbm5pbmcgdHJlZSB3aXRoIHRpZ2h0IGVkZ2VzIGFuZCBhZGp1c3RlZCB0aGUgaW5wdXQgbm9kZSdzXG4gKiByYW5rcyB0byBhY2hpZXZlIHRoaXMuIEEgdGlnaHQgZWRnZSBpcyBvbmUgdGhhdCBpcyBoYXMgYSBsZW5ndGggdGhhdCBtYXRjaGVzXG4gKiBpdHMgXCJtaW5sZW5cIiBhdHRyaWJ1dGUuXG4gKlxuICogVGhlIGJhc2ljIHN0cnVjdHVyZSBmb3IgdGhpcyBmdW5jdGlvbiBpcyBkZXJpdmVkIGZyb20gR2Fuc25lciwgZXQgYWwuLCBcIkFcbiAqIFRlY2huaXF1ZSBmb3IgRHJhd2luZyBEaXJlY3RlZCBHcmFwaHMuXCJcbiAqXG4gKiBQcmUtY29uZGl0aW9uczpcbiAqXG4gKiAgICAxLiBHcmFwaCBtdXN0IGJlIGEgREFHLlxuICogICAgMi4gR3JhcGggbXVzdCBiZSBjb25uZWN0ZWQuXG4gKiAgICAzLiBHcmFwaCBtdXN0IGhhdmUgYXQgbGVhc3Qgb25lIG5vZGUuXG4gKiAgICA1LiBHcmFwaCBub2RlcyBtdXN0IGhhdmUgYmVlbiBwcmV2aW91c2x5IGFzc2lnbmVkIGEgXCJyYW5rXCIgcHJvcGVydHkgdGhhdFxuICogICAgICAgcmVzcGVjdHMgdGhlIFwibWlubGVuXCIgcHJvcGVydHkgb2YgaW5jaWRlbnQgZWRnZXMuXG4gKiAgICA2LiBHcmFwaCBlZGdlcyBtdXN0IGhhdmUgYSBcIm1pbmxlblwiIHByb3BlcnR5LlxuICpcbiAqIFBvc3QtY29uZGl0aW9uczpcbiAqXG4gKiAgICAtIEdyYXBoIG5vZGVzIHdpbGwgaGF2ZSB0aGVpciByYW5rIGFkanVzdGVkIHRvIGVuc3VyZSB0aGF0IGFsbCBlZGdlcyBhcmVcbiAqICAgICAgdGlnaHQuXG4gKlxuICogUmV0dXJucyBhIHRyZWUgKHVuZGlyZWN0ZWQgZ3JhcGgpIHRoYXQgaXMgY29uc3RydWN0ZWQgdXNpbmcgb25seSBcInRpZ2h0XCJcbiAqIGVkZ2VzLlxuICovXG5mdW5jdGlvbiBmZWFzaWJsZVRyZWUoZykge1xuICB2YXIgdCA9IG5ldyBHcmFwaCh7IGRpcmVjdGVkOiBmYWxzZSB9KTtcblxuICAvLyBDaG9vc2UgYXJiaXRyYXJ5IG5vZGUgZnJvbSB3aGljaCB0byBzdGFydCBvdXIgdHJlZVxuICB2YXIgc3RhcnQgPSBnLm5vZGVzKClbMF07XG4gIHZhciBzaXplID0gZy5ub2RlQ291bnQoKTtcbiAgdC5zZXROb2RlKHN0YXJ0LCB7fSk7XG5cbiAgdmFyIGVkZ2UsIGRlbHRhO1xuICB3aGlsZSAodGlnaHRUcmVlKHQsIGcpIDwgc2l6ZSkge1xuICAgIGVkZ2UgPSBmaW5kTWluU2xhY2tFZGdlKHQsIGcpO1xuICAgIGRlbHRhID0gdC5oYXNOb2RlKGVkZ2UudikgPyBzbGFjayhnLCBlZGdlKSA6IC1zbGFjayhnLCBlZGdlKTtcbiAgICBzaGlmdFJhbmtzKHQsIGcsIGRlbHRhKTtcbiAgfVxuXG4gIHJldHVybiB0O1xufVxuXG4vKlxuICogRmluZHMgYSBtYXhpbWFsIHRyZWUgb2YgdGlnaHQgZWRnZXMgYW5kIHJldHVybnMgdGhlIG51bWJlciBvZiBub2RlcyBpbiB0aGVcbiAqIHRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRpZ2h0VHJlZSh0LCBnKSB7XG4gIGZ1bmN0aW9uIGRmcyh2KSB7XG4gICAgXy5mb3JFYWNoKGcubm9kZUVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICB2YXIgZWRnZVYgPSBlLnYsXG4gICAgICAgIHcgPSAodiA9PT0gZWRnZVYpID8gZS53IDogZWRnZVY7XG4gICAgICBpZiAoIXQuaGFzTm9kZSh3KSAmJiAhc2xhY2soZywgZSkpIHtcbiAgICAgICAgdC5zZXROb2RlKHcsIHt9KTtcbiAgICAgICAgdC5zZXRFZGdlKHYsIHcsIHt9KTtcbiAgICAgICAgZGZzKHcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZGZzKTtcbiAgcmV0dXJuIHQubm9kZUNvdW50KCk7XG59XG5cbi8qXG4gKiBGaW5kcyB0aGUgZWRnZSB3aXRoIHRoZSBzbWFsbGVzdCBzbGFjayB0aGF0IGlzIGluY2lkZW50IG9uIHRyZWUgYW5kIHJldHVybnNcbiAqIGl0LlxuICovXG5mdW5jdGlvbiBmaW5kTWluU2xhY2tFZGdlKHQsIGcpIHtcbiAgcmV0dXJuIF8ubWluQnkoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgaWYgKHQuaGFzTm9kZShlLnYpICE9PSB0Lmhhc05vZGUoZS53KSkge1xuICAgICAgcmV0dXJuIHNsYWNrKGcsIGUpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNoaWZ0UmFua3ModCwgZywgZGVsdGEpIHtcbiAgXy5mb3JFYWNoKHQubm9kZXMoKSwgZnVuY3Rpb24odikge1xuICAgIGcubm9kZSh2KS5yYW5rICs9IGRlbHRhO1xuICB9KTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgcmFua1V0aWwgPSByZXF1aXJlKFwiLi91dGlsXCIpO1xudmFyIGxvbmdlc3RQYXRoID0gcmFua1V0aWwubG9uZ2VzdFBhdGg7XG52YXIgZmVhc2libGVUcmVlID0gcmVxdWlyZShcIi4vZmVhc2libGUtdHJlZVwiKTtcbnZhciBuZXR3b3JrU2ltcGxleCA9IHJlcXVpcmUoXCIuL25ldHdvcmstc2ltcGxleFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSByYW5rO1xuXG4vKlxuICogQXNzaWducyBhIHJhbmsgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaCB0aGF0IHJlc3BlY3RzIHRoZSBcIm1pbmxlblwiXG4gKiBjb25zdHJhaW50IHNwZWNpZmllZCBvbiBlZGdlcyBiZXR3ZWVuIG5vZGVzLlxuICpcbiAqIFRoaXMgYmFzaWMgc3RydWN0dXJlIGlzIGRlcml2ZWQgZnJvbSBHYW5zbmVyLCBldCBhbC4sIFwiQSBUZWNobmlxdWUgZm9yXG4gKiBEcmF3aW5nIERpcmVjdGVkIEdyYXBocy5cIlxuICpcbiAqIFByZS1jb25kaXRpb25zOlxuICpcbiAqICAgIDEuIEdyYXBoIG11c3QgYmUgYSBjb25uZWN0ZWQgREFHXG4gKiAgICAyLiBHcmFwaCBub2RlcyBtdXN0IGJlIG9iamVjdHNcbiAqICAgIDMuIEdyYXBoIGVkZ2VzIG11c3QgaGF2ZSBcIndlaWdodFwiIGFuZCBcIm1pbmxlblwiIGF0dHJpYnV0ZXNcbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gR3JhcGggbm9kZXMgd2lsbCBoYXZlIGEgXCJyYW5rXCIgYXR0cmlidXRlIGJhc2VkIG9uIHRoZSByZXN1bHRzIG9mIHRoZVxuICogICAgICAgYWxnb3JpdGhtLiBSYW5rcyBjYW4gc3RhcnQgYXQgYW55IGluZGV4IChpbmNsdWRpbmcgbmVnYXRpdmUpLCB3ZSdsbFxuICogICAgICAgZml4IHRoZW0gdXAgbGF0ZXIuXG4gKi9cbmZ1bmN0aW9uIHJhbmsoZykge1xuICBzd2l0Y2goZy5ncmFwaCgpLnJhbmtlcikge1xuICBjYXNlIFwibmV0d29yay1zaW1wbGV4XCI6IG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpOyBicmVhaztcbiAgY2FzZSBcInRpZ2h0LXRyZWVcIjogdGlnaHRUcmVlUmFua2VyKGcpOyBicmVhaztcbiAgY2FzZSBcImxvbmdlc3QtcGF0aFwiOiBsb25nZXN0UGF0aFJhbmtlcihnKTsgYnJlYWs7XG4gIGRlZmF1bHQ6IG5ldHdvcmtTaW1wbGV4UmFua2VyKGcpO1xuICB9XG59XG5cbi8vIEEgZmFzdCBhbmQgc2ltcGxlIHJhbmtlciwgYnV0IHJlc3VsdHMgYXJlIGZhciBmcm9tIG9wdGltYWwuXG52YXIgbG9uZ2VzdFBhdGhSYW5rZXIgPSBsb25nZXN0UGF0aDtcblxuZnVuY3Rpb24gdGlnaHRUcmVlUmFua2VyKGcpIHtcbiAgbG9uZ2VzdFBhdGgoZyk7XG4gIGZlYXNpYmxlVHJlZShnKTtcbn1cblxuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXhSYW5rZXIoZykge1xuICBuZXR3b3JrU2ltcGxleChnKTtcbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgZmVhc2libGVUcmVlID0gcmVxdWlyZShcIi4vZmVhc2libGUtdHJlZVwiKTtcbnZhciBzbGFjayA9IHJlcXVpcmUoXCIuL3V0aWxcIikuc2xhY2s7XG52YXIgaW5pdFJhbmsgPSByZXF1aXJlKFwiLi91dGlsXCIpLmxvbmdlc3RQYXRoO1xudmFyIHByZW9yZGVyID0gcmVxdWlyZShcIi4uL2dyYXBobGliXCIpLmFsZy5wcmVvcmRlcjtcbnZhciBwb3N0b3JkZXIgPSByZXF1aXJlKFwiLi4vZ3JhcGhsaWJcIikuYWxnLnBvc3RvcmRlcjtcbnZhciBzaW1wbGlmeSA9IHJlcXVpcmUoXCIuLi91dGlsXCIpLnNpbXBsaWZ5O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5ldHdvcmtTaW1wbGV4O1xuXG4vLyBFeHBvc2Ugc29tZSBpbnRlcm5hbHMgZm9yIHRlc3RpbmcgcHVycG9zZXNcbm5ldHdvcmtTaW1wbGV4LmluaXRMb3dMaW1WYWx1ZXMgPSBpbml0TG93TGltVmFsdWVzO1xubmV0d29ya1NpbXBsZXguaW5pdEN1dFZhbHVlcyA9IGluaXRDdXRWYWx1ZXM7XG5uZXR3b3JrU2ltcGxleC5jYWxjQ3V0VmFsdWUgPSBjYWxjQ3V0VmFsdWU7XG5uZXR3b3JrU2ltcGxleC5sZWF2ZUVkZ2UgPSBsZWF2ZUVkZ2U7XG5uZXR3b3JrU2ltcGxleC5lbnRlckVkZ2UgPSBlbnRlckVkZ2U7XG5uZXR3b3JrU2ltcGxleC5leGNoYW5nZUVkZ2VzID0gZXhjaGFuZ2VFZGdlcztcblxuLypcbiAqIFRoZSBuZXR3b3JrIHNpbXBsZXggYWxnb3JpdGhtIGFzc2lnbnMgcmFua3MgdG8gZWFjaCBub2RlIGluIHRoZSBpbnB1dCBncmFwaFxuICogYW5kIGl0ZXJhdGl2ZWx5IGltcHJvdmVzIHRoZSByYW5raW5nIHRvIHJlZHVjZSB0aGUgbGVuZ3RoIG9mIGVkZ2VzLlxuICpcbiAqIFByZWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gVGhlIGlucHV0IGdyYXBoIG11c3QgYmUgYSBEQUcuXG4gKiAgICAyLiBBbGwgbm9kZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBhbiBvYmplY3QgdmFsdWUuXG4gKiAgICAzLiBBbGwgZWRnZXMgaW4gdGhlIGdyYXBoIG11c3QgaGF2ZSBcIm1pbmxlblwiIGFuZCBcIndlaWdodFwiIGF0dHJpYnV0ZXMuXG4gKlxuICogUG9zdGNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gQWxsIG5vZGVzIGluIHRoZSBncmFwaCB3aWxsIGhhdmUgYW4gYXNzaWduZWQgXCJyYW5rXCIgYXR0cmlidXRlIHRoYXQgaGFzXG4gKiAgICAgICBiZWVuIG9wdGltaXplZCBieSB0aGUgbmV0d29yayBzaW1wbGV4IGFsZ29yaXRobS4gUmFua3Mgc3RhcnQgYXQgMC5cbiAqXG4gKlxuICogQSByb3VnaCBza2V0Y2ggb2YgdGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOlxuICpcbiAqICAgIDEuIEFzc2lnbiBpbml0aWFsIHJhbmtzIHRvIGVhY2ggbm9kZS4gV2UgdXNlIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLFxuICogICAgICAgd2hpY2ggYXNzaWducyByYW5rcyB0byB0aGUgbG93ZXN0IHBvc2l0aW9uIHBvc3NpYmxlLiBJbiBnZW5lcmFsIHRoaXNcbiAqICAgICAgIGxlYWRzIHRvIHZlcnkgd2lkZSBib3R0b20gcmFua3MgYW5kIHVubmVjZXNzYXJpbHkgbG9uZyBlZGdlcy5cbiAqICAgIDIuIENvbnN0cnVjdCBhIGZlYXNpYmxlIHRpZ2h0IHRyZWUuIEEgdGlnaHQgdHJlZSBpcyBvbmUgc3VjaCB0aGF0IGFsbFxuICogICAgICAgZWRnZXMgaW4gdGhlIHRyZWUgaGF2ZSBubyBzbGFjayAoZGlmZmVyZW5jZSBiZXR3ZWVuIGxlbmd0aCBvZiBlZGdlXG4gKiAgICAgICBhbmQgbWlubGVuIGZvciB0aGUgZWRnZSkuIFRoaXMgYnkgaXRzZWxmIGdyZWF0bHkgaW1wcm92ZXMgdGhlIGFzc2lnbmVkXG4gKiAgICAgICByYW5raW5ncyBieSBzaG9ydGluZyBlZGdlcy5cbiAqICAgIDMuIEl0ZXJhdGl2ZWx5IGZpbmQgZWRnZXMgdGhhdCBoYXZlIG5lZ2F0aXZlIGN1dCB2YWx1ZXMuIEdlbmVyYWxseSBhXG4gKiAgICAgICBuZWdhdGl2ZSBjdXQgdmFsdWUgaW5kaWNhdGVzIHRoYXQgdGhlIGVkZ2UgY291bGQgYmUgcmVtb3ZlZCBhbmQgYSBuZXdcbiAqICAgICAgIHRyZWUgZWRnZSBjb3VsZCBiZSBhZGRlZCB0byBwcm9kdWNlIGEgbW9yZSBjb21wYWN0IGdyYXBoLlxuICpcbiAqIE11Y2ggb2YgdGhlIGFsZ29yaXRobXMgaGVyZSBhcmUgZGVyaXZlZCBmcm9tIEdhbnNuZXIsIGV0IGFsLiwgXCJBIFRlY2huaXF1ZVxuICogZm9yIERyYXdpbmcgRGlyZWN0ZWQgR3JhcGhzLlwiIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIGZpbGUgcm91Z2hseSBmb2xsb3dzIHRoZVxuICogc3RydWN0dXJlIG9mIHRoZSBvdmVyYWxsIGFsZ29yaXRobS5cbiAqL1xuZnVuY3Rpb24gbmV0d29ya1NpbXBsZXgoZykge1xuICBnID0gc2ltcGxpZnkoZyk7XG4gIGluaXRSYW5rKGcpO1xuICB2YXIgdCA9IGZlYXNpYmxlVHJlZShnKTtcbiAgaW5pdExvd0xpbVZhbHVlcyh0KTtcbiAgaW5pdEN1dFZhbHVlcyh0LCBnKTtcblxuICB2YXIgZSwgZjtcbiAgd2hpbGUgKChlID0gbGVhdmVFZGdlKHQpKSkge1xuICAgIGYgPSBlbnRlckVkZ2UodCwgZywgZSk7XG4gICAgZXhjaGFuZ2VFZGdlcyh0LCBnLCBlLCBmKTtcbiAgfVxufVxuXG4vKlxuICogSW5pdGlhbGl6ZXMgY3V0IHZhbHVlcyBmb3IgYWxsIGVkZ2VzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpbml0Q3V0VmFsdWVzKHQsIGcpIHtcbiAgdmFyIHZzID0gcG9zdG9yZGVyKHQsIHQubm9kZXMoKSk7XG4gIHZzID0gdnMuc2xpY2UoMCwgdnMubGVuZ3RoIC0gMSk7XG4gIF8uZm9yRWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGFzc2lnbkN1dFZhbHVlKHQsIGcsIHYpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gYXNzaWduQ3V0VmFsdWUodCwgZywgY2hpbGQpIHtcbiAgdmFyIGNoaWxkTGFiID0gdC5ub2RlKGNoaWxkKTtcbiAgdmFyIHBhcmVudCA9IGNoaWxkTGFiLnBhcmVudDtcbiAgdC5lZGdlKGNoaWxkLCBwYXJlbnQpLmN1dHZhbHVlID0gY2FsY0N1dFZhbHVlKHQsIGcsIGNoaWxkKTtcbn1cblxuLypcbiAqIEdpdmVuIHRoZSB0aWdodCB0cmVlLCBpdHMgZ3JhcGgsIGFuZCBhIGNoaWxkIGluIHRoZSBncmFwaCBjYWxjdWxhdGUgYW5kXG4gKiByZXR1cm4gdGhlIGN1dCB2YWx1ZSBmb3IgdGhlIGVkZ2UgYmV0d2VlbiB0aGUgY2hpbGQgYW5kIGl0cyBwYXJlbnQuXG4gKi9cbmZ1bmN0aW9uIGNhbGNDdXRWYWx1ZSh0LCBnLCBjaGlsZCkge1xuICB2YXIgY2hpbGRMYWIgPSB0Lm5vZGUoY2hpbGQpO1xuICB2YXIgcGFyZW50ID0gY2hpbGRMYWIucGFyZW50O1xuICAvLyBUcnVlIGlmIHRoZSBjaGlsZCBpcyBvbiB0aGUgdGFpbCBlbmQgb2YgdGhlIGVkZ2UgaW4gdGhlIGRpcmVjdGVkIGdyYXBoXG4gIHZhciBjaGlsZElzVGFpbCA9IHRydWU7XG4gIC8vIFRoZSBncmFwaCdzIHZpZXcgb2YgdGhlIHRyZWUgZWRnZSB3ZSdyZSBpbnNwZWN0aW5nXG4gIHZhciBncmFwaEVkZ2UgPSBnLmVkZ2UoY2hpbGQsIHBhcmVudCk7XG4gIC8vIFRoZSBhY2N1bXVsYXRlZCBjdXQgdmFsdWUgZm9yIHRoZSBlZGdlIGJldHdlZW4gdGhpcyBub2RlIGFuZCBpdHMgcGFyZW50XG4gIHZhciBjdXRWYWx1ZSA9IDA7XG5cbiAgaWYgKCFncmFwaEVkZ2UpIHtcbiAgICBjaGlsZElzVGFpbCA9IGZhbHNlO1xuICAgIGdyYXBoRWRnZSA9IGcuZWRnZShwYXJlbnQsIGNoaWxkKTtcbiAgfVxuXG4gIGN1dFZhbHVlID0gZ3JhcGhFZGdlLndlaWdodDtcblxuICBfLmZvckVhY2goZy5ub2RlRWRnZXMoY2hpbGQpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGlzT3V0RWRnZSA9IGUudiA9PT0gY2hpbGQsXG4gICAgICBvdGhlciA9IGlzT3V0RWRnZSA/IGUudyA6IGUudjtcblxuICAgIGlmIChvdGhlciAhPT0gcGFyZW50KSB7XG4gICAgICB2YXIgcG9pbnRzVG9IZWFkID0gaXNPdXRFZGdlID09PSBjaGlsZElzVGFpbCxcbiAgICAgICAgb3RoZXJXZWlnaHQgPSBnLmVkZ2UoZSkud2VpZ2h0O1xuXG4gICAgICBjdXRWYWx1ZSArPSBwb2ludHNUb0hlYWQgPyBvdGhlcldlaWdodCA6IC1vdGhlcldlaWdodDtcbiAgICAgIGlmIChpc1RyZWVFZGdlKHQsIGNoaWxkLCBvdGhlcikpIHtcbiAgICAgICAgdmFyIG90aGVyQ3V0VmFsdWUgPSB0LmVkZ2UoY2hpbGQsIG90aGVyKS5jdXR2YWx1ZTtcbiAgICAgICAgY3V0VmFsdWUgKz0gcG9pbnRzVG9IZWFkID8gLW90aGVyQ3V0VmFsdWUgOiBvdGhlckN1dFZhbHVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGN1dFZhbHVlO1xufVxuXG5mdW5jdGlvbiBpbml0TG93TGltVmFsdWVzKHRyZWUsIHJvb3QpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAyKSB7XG4gICAgcm9vdCA9IHRyZWUubm9kZXMoKVswXTtcbiAgfVxuICBkZnNBc3NpZ25Mb3dMaW0odHJlZSwge30sIDEsIHJvb3QpO1xufVxuXG5mdW5jdGlvbiBkZnNBc3NpZ25Mb3dMaW0odHJlZSwgdmlzaXRlZCwgbmV4dExpbSwgdiwgcGFyZW50KSB7XG4gIHZhciBsb3cgPSBuZXh0TGltO1xuICB2YXIgbGFiZWwgPSB0cmVlLm5vZGUodik7XG5cbiAgdmlzaXRlZFt2XSA9IHRydWU7XG4gIF8uZm9yRWFjaCh0cmVlLm5laWdoYm9ycyh2KSwgZnVuY3Rpb24odykge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdykpIHtcbiAgICAgIG5leHRMaW0gPSBkZnNBc3NpZ25Mb3dMaW0odHJlZSwgdmlzaXRlZCwgbmV4dExpbSwgdywgdik7XG4gICAgfVxuICB9KTtcblxuICBsYWJlbC5sb3cgPSBsb3c7XG4gIGxhYmVsLmxpbSA9IG5leHRMaW0rKztcbiAgaWYgKHBhcmVudCkge1xuICAgIGxhYmVsLnBhcmVudCA9IHBhcmVudDtcbiAgfSBlbHNlIHtcbiAgICAvLyBUT0RPIHNob3VsZCBiZSBhYmxlIHRvIHJlbW92ZSB0aGlzIHdoZW4gd2UgaW5jcmVtZW50YWxseSB1cGRhdGUgbG93IGxpbVxuICAgIGRlbGV0ZSBsYWJlbC5wYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gbmV4dExpbTtcbn1cblxuZnVuY3Rpb24gbGVhdmVFZGdlKHRyZWUpIHtcbiAgcmV0dXJuIF8uZmluZCh0cmVlLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICByZXR1cm4gdHJlZS5lZGdlKGUpLmN1dHZhbHVlIDwgMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVudGVyRWRnZSh0LCBnLCBlZGdlKSB7XG4gIHZhciB2ID0gZWRnZS52O1xuICB2YXIgdyA9IGVkZ2UudztcblxuICAvLyBGb3IgdGhlIHJlc3Qgb2YgdGhpcyBmdW5jdGlvbiB3ZSBhc3N1bWUgdGhhdCB2IGlzIHRoZSB0YWlsIGFuZCB3IGlzIHRoZVxuICAvLyBoZWFkLCBzbyBpZiB3ZSBkb24ndCBoYXZlIHRoaXMgZWRnZSBpbiB0aGUgZ3JhcGggd2Ugc2hvdWxkIGZsaXAgaXQgdG9cbiAgLy8gbWF0Y2ggdGhlIGNvcnJlY3Qgb3JpZW50YXRpb24uXG4gIGlmICghZy5oYXNFZGdlKHYsIHcpKSB7XG4gICAgdiA9IGVkZ2UudztcbiAgICB3ID0gZWRnZS52O1xuICB9XG5cbiAgdmFyIHZMYWJlbCA9IHQubm9kZSh2KTtcbiAgdmFyIHdMYWJlbCA9IHQubm9kZSh3KTtcbiAgdmFyIHRhaWxMYWJlbCA9IHZMYWJlbDtcbiAgdmFyIGZsaXAgPSBmYWxzZTtcblxuICAvLyBJZiB0aGUgcm9vdCBpcyBpbiB0aGUgdGFpbCBvZiB0aGUgZWRnZSB0aGVuIHdlIG5lZWQgdG8gZmxpcCB0aGUgbG9naWMgdGhhdFxuICAvLyBjaGVja3MgZm9yIHRoZSBoZWFkIGFuZCB0YWlsIG5vZGVzIGluIHRoZSBjYW5kaWRhdGVzIGZ1bmN0aW9uIGJlbG93LlxuICBpZiAodkxhYmVsLmxpbSA+IHdMYWJlbC5saW0pIHtcbiAgICB0YWlsTGFiZWwgPSB3TGFiZWw7XG4gICAgZmxpcCA9IHRydWU7XG4gIH1cblxuICB2YXIgY2FuZGlkYXRlcyA9IF8uZmlsdGVyKGcuZWRnZXMoKSwgZnVuY3Rpb24oZWRnZSkge1xuICAgIHJldHVybiBmbGlwID09PSBpc0Rlc2NlbmRhbnQodCwgdC5ub2RlKGVkZ2UudiksIHRhaWxMYWJlbCkgJiZcbiAgICAgICAgICAgZmxpcCAhPT0gaXNEZXNjZW5kYW50KHQsIHQubm9kZShlZGdlLncpLCB0YWlsTGFiZWwpO1xuICB9KTtcblxuICByZXR1cm4gXy5taW5CeShjYW5kaWRhdGVzLCBmdW5jdGlvbihlZGdlKSB7IHJldHVybiBzbGFjayhnLCBlZGdlKTsgfSk7XG59XG5cbmZ1bmN0aW9uIGV4Y2hhbmdlRWRnZXModCwgZywgZSwgZikge1xuICB2YXIgdiA9IGUudjtcbiAgdmFyIHcgPSBlLnc7XG4gIHQucmVtb3ZlRWRnZSh2LCB3KTtcbiAgdC5zZXRFZGdlKGYudiwgZi53LCB7fSk7XG4gIGluaXRMb3dMaW1WYWx1ZXModCk7XG4gIGluaXRDdXRWYWx1ZXModCwgZyk7XG4gIHVwZGF0ZVJhbmtzKHQsIGcpO1xufVxuXG5mdW5jdGlvbiB1cGRhdGVSYW5rcyh0LCBnKSB7XG4gIHZhciByb290ID0gXy5maW5kKHQubm9kZXMoKSwgZnVuY3Rpb24odikgeyByZXR1cm4gIWcubm9kZSh2KS5wYXJlbnQ7IH0pO1xuICB2YXIgdnMgPSBwcmVvcmRlcih0LCByb290KTtcbiAgdnMgPSB2cy5zbGljZSgxKTtcbiAgXy5mb3JFYWNoKHZzLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHBhcmVudCA9IHQubm9kZSh2KS5wYXJlbnQsXG4gICAgICBlZGdlID0gZy5lZGdlKHYsIHBhcmVudCksXG4gICAgICBmbGlwcGVkID0gZmFsc2U7XG5cbiAgICBpZiAoIWVkZ2UpIHtcbiAgICAgIGVkZ2UgPSBnLmVkZ2UocGFyZW50LCB2KTtcbiAgICAgIGZsaXBwZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIGcubm9kZSh2KS5yYW5rID0gZy5ub2RlKHBhcmVudCkucmFuayArIChmbGlwcGVkID8gZWRnZS5taW5sZW4gOiAtZWRnZS5taW5sZW4pO1xuICB9KTtcbn1cblxuLypcbiAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZWRnZSBpcyBpbiB0aGUgdHJlZS5cbiAqL1xuZnVuY3Rpb24gaXNUcmVlRWRnZSh0cmVlLCB1LCB2KSB7XG4gIHJldHVybiB0cmVlLmhhc0VkZ2UodSwgdik7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIHNwZWNpZmllZCBub2RlIGlzIGRlc2NlbmRhbnQgb2YgdGhlIHJvb3Qgbm9kZSBwZXIgdGhlXG4gKiBhc3NpZ25lZCBsb3cgYW5kIGxpbSBhdHRyaWJ1dGVzIGluIHRoZSB0cmVlLlxuICovXG5mdW5jdGlvbiBpc0Rlc2NlbmRhbnQodHJlZSwgdkxhYmVsLCByb290TGFiZWwpIHtcbiAgcmV0dXJuIHJvb3RMYWJlbC5sb3cgPD0gdkxhYmVsLmxpbSAmJiB2TGFiZWwubGltIDw9IHJvb3RMYWJlbC5saW07XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgbG9uZ2VzdFBhdGg6IGxvbmdlc3RQYXRoLFxuICBzbGFjazogc2xhY2tcbn07XG5cbi8qXG4gKiBJbml0aWFsaXplcyByYW5rcyBmb3IgdGhlIGlucHV0IGdyYXBoIHVzaW5nIHRoZSBsb25nZXN0IHBhdGggYWxnb3JpdGhtLiBUaGlzXG4gKiBhbGdvcml0aG0gc2NhbGVzIHdlbGwgYW5kIGlzIGZhc3QgaW4gcHJhY3RpY2UsIGl0IHlpZWxkcyByYXRoZXIgcG9vclxuICogc29sdXRpb25zLiBOb2RlcyBhcmUgcHVzaGVkIHRvIHRoZSBsb3dlc3QgbGF5ZXIgcG9zc2libGUsIGxlYXZpbmcgdGhlIGJvdHRvbVxuICogcmFua3Mgd2lkZSBhbmQgbGVhdmluZyBlZGdlcyBsb25nZXIgdGhhbiBuZWNlc3NhcnkuIEhvd2V2ZXIsIGR1ZSB0byBpdHNcbiAqIHNwZWVkLCB0aGlzIGFsZ29yaXRobSBpcyBnb29kIGZvciBnZXR0aW5nIGFuIGluaXRpYWwgcmFua2luZyB0aGF0IGNhbiBiZSBmZWRcbiAqIGludG8gb3RoZXIgYWxnb3JpdGhtcy5cbiAqXG4gKiBUaGlzIGFsZ29yaXRobSBkb2VzIG5vdCBub3JtYWxpemUgbGF5ZXJzIGJlY2F1c2UgaXQgd2lsbCBiZSB1c2VkIGJ5IG90aGVyXG4gKiBhbGdvcml0aG1zIGluIG1vc3QgY2FzZXMuIElmIHVzaW5nIHRoaXMgYWxnb3JpdGhtIGRpcmVjdGx5LCBiZSBzdXJlIHRvXG4gKiBydW4gbm9ybWFsaXplIGF0IHRoZSBlbmQuXG4gKlxuICogUHJlLWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gSW5wdXQgZ3JhcGggaXMgYSBEQUcuXG4gKiAgICAyLiBJbnB1dCBncmFwaCBub2RlIGxhYmVscyBjYW4gYmUgYXNzaWduZWQgcHJvcGVydGllcy5cbiAqXG4gKiBQb3N0LWNvbmRpdGlvbnM6XG4gKlxuICogICAgMS4gRWFjaCBub2RlIHdpbGwgYmUgYXNzaWduIGFuICh1bm5vcm1hbGl6ZWQpIFwicmFua1wiIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBsb25nZXN0UGF0aChnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgbGFiZWwgPSBnLm5vZGUodik7XG4gICAgaWYgKF8uaGFzKHZpc2l0ZWQsIHYpKSB7XG4gICAgICByZXR1cm4gbGFiZWwucmFuaztcbiAgICB9XG4gICAgdmlzaXRlZFt2XSA9IHRydWU7XG5cbiAgICB2YXIgcmFuayA9IF8ubWluKF8ubWFwKGcub3V0RWRnZXModiksIGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiBkZnMoZS53KSAtIGcuZWRnZShlKS5taW5sZW47XG4gICAgfSkpO1xuXG4gICAgaWYgKHJhbmsgPT09IE51bWJlci5QT1NJVElWRV9JTkZJTklUWSB8fCAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW10pIGZvciBMb2Rhc2ggM1xuICAgICAgICByYW5rID09PSB1bmRlZmluZWQgfHwgLy8gcmV0dXJuIHZhbHVlIG9mIF8ubWFwKFtdKSBmb3IgTG9kYXNoIDRcbiAgICAgICAgcmFuayA9PT0gbnVsbCkgeyAvLyByZXR1cm4gdmFsdWUgb2YgXy5tYXAoW251bGxdKVxuICAgICAgcmFuayA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIChsYWJlbC5yYW5rID0gcmFuayk7XG4gIH1cblxuICBfLmZvckVhY2goZy5zb3VyY2VzKCksIGRmcyk7XG59XG5cbi8qXG4gKiBSZXR1cm5zIHRoZSBhbW91bnQgb2Ygc2xhY2sgZm9yIHRoZSBnaXZlbiBlZGdlLiBUaGUgc2xhY2sgaXMgZGVmaW5lZCBhcyB0aGVcbiAqIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgbGVuZ3RoIG9mIHRoZSBlZGdlIGFuZCBpdHMgbWluaW11bSBsZW5ndGguXG4gKi9cbmZ1bmN0aW9uIHNsYWNrKGcsIGUpIHtcbiAgcmV0dXJuIGcubm9kZShlLncpLnJhbmsgLSBnLm5vZGUoZS52KS5yYW5rIC0gZy5lZGdlKGUpLm1pbmxlbjtcbn1cbiIsIi8qIGVzbGludCBcIm5vLWNvbnNvbGVcIjogb2ZmICovXG5cblwidXNlIHN0cmljdFwiO1xuXG52YXIgXyA9IHJlcXVpcmUoXCIuL2xvZGFzaFwiKTtcbnZhciBHcmFwaCA9IHJlcXVpcmUoXCIuL2dyYXBobGliXCIpLkdyYXBoO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgYWRkRHVtbXlOb2RlOiBhZGREdW1teU5vZGUsXG4gIHNpbXBsaWZ5OiBzaW1wbGlmeSxcbiAgYXNOb25Db21wb3VuZEdyYXBoOiBhc05vbkNvbXBvdW5kR3JhcGgsXG4gIHN1Y2Nlc3NvcldlaWdodHM6IHN1Y2Nlc3NvcldlaWdodHMsXG4gIHByZWRlY2Vzc29yV2VpZ2h0czogcHJlZGVjZXNzb3JXZWlnaHRzLFxuICBpbnRlcnNlY3RSZWN0OiBpbnRlcnNlY3RSZWN0LFxuICBidWlsZExheWVyTWF0cml4OiBidWlsZExheWVyTWF0cml4LFxuICBub3JtYWxpemVSYW5rczogbm9ybWFsaXplUmFua3MsXG4gIHJlbW92ZUVtcHR5UmFua3M6IHJlbW92ZUVtcHR5UmFua3MsXG4gIGFkZEJvcmRlck5vZGU6IGFkZEJvcmRlck5vZGUsXG4gIG1heFJhbms6IG1heFJhbmssXG4gIHBhcnRpdGlvbjogcGFydGl0aW9uLFxuICB0aW1lOiB0aW1lLFxuICBub3RpbWU6IG5vdGltZVxufTtcblxuLypcbiAqIEFkZHMgYSBkdW1teSBub2RlIHRvIHRoZSBncmFwaCBhbmQgcmV0dXJuIHYuXG4gKi9cbmZ1bmN0aW9uIGFkZER1bW15Tm9kZShnLCB0eXBlLCBhdHRycywgbmFtZSkge1xuICB2YXIgdjtcbiAgZG8ge1xuICAgIHYgPSBfLnVuaXF1ZUlkKG5hbWUpO1xuICB9IHdoaWxlIChnLmhhc05vZGUodikpO1xuXG4gIGF0dHJzLmR1bW15ID0gdHlwZTtcbiAgZy5zZXROb2RlKHYsIGF0dHJzKTtcbiAgcmV0dXJuIHY7XG59XG5cbi8qXG4gKiBSZXR1cm5zIGEgbmV3IGdyYXBoIHdpdGggb25seSBzaW1wbGUgZWRnZXMuIEhhbmRsZXMgYWdncmVnYXRpb24gb2YgZGF0YVxuICogYXNzb2NpYXRlZCB3aXRoIG11bHRpLWVkZ2VzLlxuICovXG5mdW5jdGlvbiBzaW1wbGlmeShnKSB7XG4gIHZhciBzaW1wbGlmaWVkID0gbmV3IEdyYXBoKCkuc2V0R3JhcGgoZy5ncmFwaCgpKTtcbiAgXy5mb3JFYWNoKGcubm9kZXMoKSwgZnVuY3Rpb24odikgeyBzaW1wbGlmaWVkLnNldE5vZGUodiwgZy5ub2RlKHYpKTsgfSk7XG4gIF8uZm9yRWFjaChnLmVkZ2VzKCksIGZ1bmN0aW9uKGUpIHtcbiAgICB2YXIgc2ltcGxlTGFiZWwgPSBzaW1wbGlmaWVkLmVkZ2UoZS52LCBlLncpIHx8IHsgd2VpZ2h0OiAwLCBtaW5sZW46IDEgfTtcbiAgICB2YXIgbGFiZWwgPSBnLmVkZ2UoZSk7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUudiwgZS53LCB7XG4gICAgICB3ZWlnaHQ6IHNpbXBsZUxhYmVsLndlaWdodCArIGxhYmVsLndlaWdodCxcbiAgICAgIG1pbmxlbjogTWF0aC5tYXgoc2ltcGxlTGFiZWwubWlubGVuLCBsYWJlbC5taW5sZW4pXG4gICAgfSk7XG4gIH0pO1xuICByZXR1cm4gc2ltcGxpZmllZDtcbn1cblxuZnVuY3Rpb24gYXNOb25Db21wb3VuZEdyYXBoKGcpIHtcbiAgdmFyIHNpbXBsaWZpZWQgPSBuZXcgR3JhcGgoeyBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpIH0pLnNldEdyYXBoKGcuZ3JhcGgoKSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoIWcuY2hpbGRyZW4odikubGVuZ3RoKSB7XG4gICAgICBzaW1wbGlmaWVkLnNldE5vZGUodiwgZy5ub2RlKHYpKTtcbiAgICB9XG4gIH0pO1xuICBfLmZvckVhY2goZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgc2ltcGxpZmllZC5zZXRFZGdlKGUsIGcuZWRnZShlKSk7XG4gIH0pO1xuICByZXR1cm4gc2ltcGxpZmllZDtcbn1cblxuZnVuY3Rpb24gc3VjY2Vzc29yV2VpZ2h0cyhnKSB7XG4gIHZhciB3ZWlnaHRNYXAgPSBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgc3VjcyA9IHt9O1xuICAgIF8uZm9yRWFjaChnLm91dEVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBzdWNzW2Uud10gPSAoc3Vjc1tlLnddIHx8IDApICsgZy5lZGdlKGUpLndlaWdodDtcbiAgICB9KTtcbiAgICByZXR1cm4gc3VjcztcbiAgfSk7XG4gIHJldHVybiBfLnppcE9iamVjdChnLm5vZGVzKCksIHdlaWdodE1hcCk7XG59XG5cbmZ1bmN0aW9uIHByZWRlY2Vzc29yV2VpZ2h0cyhnKSB7XG4gIHZhciB3ZWlnaHRNYXAgPSBfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcHJlZHMgPSB7fTtcbiAgICBfLmZvckVhY2goZy5pbkVkZ2VzKHYpLCBmdW5jdGlvbihlKSB7XG4gICAgICBwcmVkc1tlLnZdID0gKHByZWRzW2Uudl0gfHwgMCkgKyBnLmVkZ2UoZSkud2VpZ2h0O1xuICAgIH0pO1xuICAgIHJldHVybiBwcmVkcztcbiAgfSk7XG4gIHJldHVybiBfLnppcE9iamVjdChnLm5vZGVzKCksIHdlaWdodE1hcCk7XG59XG5cbi8qXG4gKiBGaW5kcyB3aGVyZSBhIGxpbmUgc3RhcnRpbmcgYXQgcG9pbnQgKHt4LCB5fSkgd291bGQgaW50ZXJzZWN0IGEgcmVjdGFuZ2xlXG4gKiAoe3gsIHksIHdpZHRoLCBoZWlnaHR9KSBpZiBpdCB3ZXJlIHBvaW50aW5nIGF0IHRoZSByZWN0YW5nbGUncyBjZW50ZXIuXG4gKi9cbmZ1bmN0aW9uIGludGVyc2VjdFJlY3QocmVjdCwgcG9pbnQpIHtcbiAgdmFyIHggPSByZWN0Lng7XG4gIHZhciB5ID0gcmVjdC55O1xuXG4gIC8vIFJlY3RhbmdsZSBpbnRlcnNlY3Rpb24gYWxnb3JpdGhtIGZyb206XG4gIC8vIGh0dHA6Ly9tYXRoLnN0YWNrZXhjaGFuZ2UuY29tL3F1ZXN0aW9ucy8xMDgxMTMvZmluZC1lZGdlLWJldHdlZW4tdHdvLWJveGVzXG4gIHZhciBkeCA9IHBvaW50LnggLSB4O1xuICB2YXIgZHkgPSBwb2ludC55IC0geTtcbiAgdmFyIHcgPSByZWN0LndpZHRoIC8gMjtcbiAgdmFyIGggPSByZWN0LmhlaWdodCAvIDI7XG5cbiAgaWYgKCFkeCAmJiAhZHkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGVcIik7XG4gIH1cblxuICB2YXIgc3gsIHN5O1xuICBpZiAoTWF0aC5hYnMoZHkpICogdyA+IE1hdGguYWJzKGR4KSAqIGgpIHtcbiAgICAvLyBJbnRlcnNlY3Rpb24gaXMgdG9wIG9yIGJvdHRvbSBvZiByZWN0LlxuICAgIGlmIChkeSA8IDApIHtcbiAgICAgIGggPSAtaDtcbiAgICB9XG4gICAgc3ggPSBoICogZHggLyBkeTtcbiAgICBzeSA9IGg7XG4gIH0gZWxzZSB7XG4gICAgLy8gSW50ZXJzZWN0aW9uIGlzIGxlZnQgb3IgcmlnaHQgb2YgcmVjdC5cbiAgICBpZiAoZHggPCAwKSB7XG4gICAgICB3ID0gLXc7XG4gICAgfVxuICAgIHN4ID0gdztcbiAgICBzeSA9IHcgKiBkeSAvIGR4O1xuICB9XG5cbiAgcmV0dXJuIHsgeDogeCArIHN4LCB5OiB5ICsgc3kgfTtcbn1cblxuLypcbiAqIEdpdmVuIGEgREFHIHdpdGggZWFjaCBub2RlIGFzc2lnbmVkIFwicmFua1wiIGFuZCBcIm9yZGVyXCIgcHJvcGVydGllcywgdGhpc1xuICogZnVuY3Rpb24gd2lsbCBwcm9kdWNlIGEgbWF0cml4IHdpdGggdGhlIGlkcyBvZiBlYWNoIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkTGF5ZXJNYXRyaXgoZykge1xuICB2YXIgbGF5ZXJpbmcgPSBfLm1hcChfLnJhbmdlKG1heFJhbmsoZykgKyAxKSwgZnVuY3Rpb24oKSB7IHJldHVybiBbXTsgfSk7XG4gIF8uZm9yRWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgbm9kZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcmFuayA9IG5vZGUucmFuaztcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQocmFuaykpIHtcbiAgICAgIGxheWVyaW5nW3JhbmtdW25vZGUub3JkZXJdID0gdjtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gbGF5ZXJpbmc7XG59XG5cbi8qXG4gKiBBZGp1c3RzIHRoZSByYW5rcyBmb3IgYWxsIG5vZGVzIGluIHRoZSBncmFwaCBzdWNoIHRoYXQgYWxsIG5vZGVzIHYgaGF2ZVxuICogcmFuayh2KSA+PSAwIGFuZCBhdCBsZWFzdCBvbmUgbm9kZSB3IGhhcyByYW5rKHcpID0gMC5cbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplUmFua3MoZykge1xuICB2YXIgbWluID0gXy5taW4oXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm5vZGUodikucmFuazsgfSkpO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGUgPSBnLm5vZGUodik7XG4gICAgaWYgKF8uaGFzKG5vZGUsIFwicmFua1wiKSkge1xuICAgICAgbm9kZS5yYW5rIC09IG1pbjtcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVFbXB0eVJhbmtzKGcpIHtcbiAgLy8gUmFua3MgbWF5IG5vdCBzdGFydCBhdCAwLCBzbyB3ZSBuZWVkIHRvIG9mZnNldCB0aGVtXG4gIHZhciBvZmZzZXQgPSBfLm1pbihfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcubm9kZSh2KS5yYW5rOyB9KSk7XG5cbiAgdmFyIGxheWVycyA9IFtdO1xuICBfLmZvckVhY2goZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIHJhbmsgPSBnLm5vZGUodikucmFuayAtIG9mZnNldDtcbiAgICBpZiAoIWxheWVyc1tyYW5rXSkge1xuICAgICAgbGF5ZXJzW3JhbmtdID0gW107XG4gICAgfVxuICAgIGxheWVyc1tyYW5rXS5wdXNoKHYpO1xuICB9KTtcblxuICB2YXIgZGVsdGEgPSAwO1xuICB2YXIgbm9kZVJhbmtGYWN0b3IgPSBnLmdyYXBoKCkubm9kZVJhbmtGYWN0b3I7XG4gIF8uZm9yRWFjaChsYXllcnMsIGZ1bmN0aW9uKHZzLCBpKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodnMpICYmIGkgJSBub2RlUmFua0ZhY3RvciAhPT0gMCkge1xuICAgICAgLS1kZWx0YTtcbiAgICB9IGVsc2UgaWYgKGRlbHRhKSB7XG4gICAgICBfLmZvckVhY2godnMsIGZ1bmN0aW9uKHYpIHsgZy5ub2RlKHYpLnJhbmsgKz0gZGVsdGE7IH0pO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkZEJvcmRlck5vZGUoZywgcHJlZml4LCByYW5rLCBvcmRlcikge1xuICB2YXIgbm9kZSA9IHtcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDBcbiAgfTtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPj0gNCkge1xuICAgIG5vZGUucmFuayA9IHJhbms7XG4gICAgbm9kZS5vcmRlciA9IG9yZGVyO1xuICB9XG4gIHJldHVybiBhZGREdW1teU5vZGUoZywgXCJib3JkZXJcIiwgbm9kZSwgcHJlZml4KTtcbn1cblxuZnVuY3Rpb24gbWF4UmFuayhnKSB7XG4gIHJldHVybiBfLm1heChfLm1hcChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgcmFuayA9IGcubm9kZSh2KS5yYW5rO1xuICAgIGlmICghXy5pc1VuZGVmaW5lZChyYW5rKSkge1xuICAgICAgcmV0dXJuIHJhbms7XG4gICAgfVxuICB9KSk7XG59XG5cbi8qXG4gKiBQYXJ0aXRpb24gYSBjb2xsZWN0aW9uIGludG8gdHdvIGdyb3VwczogYGxoc2AgYW5kIGByaHNgLiBJZiB0aGUgc3VwcGxpZWRcbiAqIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSBmb3IgYW4gZW50cnkgaXQgZ29lcyBpbnRvIGBsaHNgLiBPdGhlcndpc2UgaXQgZ29lc1xuICogaW50byBgcmhzLlxuICovXG5mdW5jdGlvbiBwYXJ0aXRpb24oY29sbGVjdGlvbiwgZm4pIHtcbiAgdmFyIHJlc3VsdCA9IHsgbGhzOiBbXSwgcmhzOiBbXSB9O1xuICBfLmZvckVhY2goY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpZiAoZm4odmFsdWUpKSB7XG4gICAgICByZXN1bHQubGhzLnB1c2godmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHQucmhzLnB1c2godmFsdWUpO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qXG4gKiBSZXR1cm5zIGEgbmV3IGZ1bmN0aW9uIHRoYXQgd3JhcHMgYGZuYCB3aXRoIGEgdGltZXIuIFRoZSB3cmFwcGVyIGxvZ3MgdGhlXG4gKiB0aW1lIGl0IHRha2VzIHRvIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiB0aW1lKG5hbWUsIGZuKSB7XG4gIHZhciBzdGFydCA9IF8ubm93KCk7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH0gZmluYWxseSB7XG4gICAgY29uc29sZS5sb2cobmFtZSArIFwiIHRpbWU6IFwiICsgKF8ubm93KCkgLSBzdGFydCkgKyBcIm1zXCIpO1xuICB9XG59XG5cbmZ1bmN0aW9uIG5vdGltZShuYW1lLCBmbikge1xuICByZXR1cm4gZm4oKTtcbn1cbiIsIm1vZHVsZS5leHBvcnRzID0gXCIwLjguNVwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQsIENocmlzIFBldHRpdHRcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0XG4gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDpcbiAqXG4gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXNcbiAqIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLlxuICpcbiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSxcbiAqIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb25cbiAqIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLlxuICpcbiAqIDMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGNvcHlyaWdodCBob2xkZXIgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzXG4gKiBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dFxuICogc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLlxuICpcbiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgXCJBUyBJU1wiIEFORFxuICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRURcbiAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkVcbiAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEVcbiAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMXG4gKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUlxuICogU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVJcbiAqIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksXG4gKiBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRVxuICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cbiAqL1xuXG52YXIgbGliID0gcmVxdWlyZShcIi4vbGliXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IGxpYi5HcmFwaCxcbiAganNvbjogcmVxdWlyZShcIi4vbGliL2pzb25cIiksXG4gIGFsZzogcmVxdWlyZShcIi4vbGliL2FsZ1wiKSxcbiAgdmVyc2lvbjogbGliLnZlcnNpb25cbn07XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcG9uZW50cztcblxuZnVuY3Rpb24gY29tcG9uZW50cyhnKSB7XG4gIHZhciB2aXNpdGVkID0ge307XG4gIHZhciBjbXB0cyA9IFtdO1xuICB2YXIgY21wdDtcblxuICBmdW5jdGlvbiBkZnModikge1xuICAgIGlmIChfLmhhcyh2aXNpdGVkLCB2KSkgcmV0dXJuO1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuICAgIGNtcHQucHVzaCh2KTtcbiAgICBfLmVhY2goZy5zdWNjZXNzb3JzKHYpLCBkZnMpO1xuICAgIF8uZWFjaChnLnByZWRlY2Vzc29ycyh2KSwgZGZzKTtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBjbXB0ID0gW107XG4gICAgZGZzKHYpO1xuICAgIGlmIChjbXB0Lmxlbmd0aCkge1xuICAgICAgY21wdHMucHVzaChjbXB0KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjbXB0cztcbn1cbiIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZnM7XG5cbi8qXG4gKiBBIGhlbHBlciB0aGF0IHByZWZvcm1zIGEgcHJlLSBvciBwb3N0LW9yZGVyIHRyYXZlcnNhbCBvbiB0aGUgaW5wdXQgZ3JhcGhcbiAqIGFuZCByZXR1cm5zIHRoZSBub2RlcyBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIHZpc2l0ZWQuIElmIHRoZSBncmFwaCBpc1xuICogdW5kaXJlY3RlZCB0aGVuIHRoaXMgYWxnb3JpdGhtIHdpbGwgbmF2aWdhdGUgdXNpbmcgbmVpZ2hib3JzLiBJZiB0aGUgZ3JhcGhcbiAqIGlzIGRpcmVjdGVkIHRoZW4gdGhpcyBhbGdvcml0aG0gd2lsbCBuYXZpZ2F0ZSB1c2luZyBzdWNjZXNzb3JzLlxuICpcbiAqIE9yZGVyIG11c3QgYmUgb25lIG9mIFwicHJlXCIgb3IgXCJwb3N0XCIuXG4gKi9cbmZ1bmN0aW9uIGRmcyhnLCB2cywgb3JkZXIpIHtcbiAgaWYgKCFfLmlzQXJyYXkodnMpKSB7XG4gICAgdnMgPSBbdnNdO1xuICB9XG5cbiAgdmFyIG5hdmlnYXRpb24gPSAoZy5pc0RpcmVjdGVkKCkgPyBnLnN1Y2Nlc3NvcnMgOiBnLm5laWdoYm9ycykuYmluZChnKTtcblxuICB2YXIgYWNjID0gW107XG4gIHZhciB2aXNpdGVkID0ge307XG4gIF8uZWFjaCh2cywgZnVuY3Rpb24odikge1xuICAgIGlmICghZy5oYXNOb2RlKHYpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHcmFwaCBkb2VzIG5vdCBoYXZlIG5vZGU6IFwiICsgdik7XG4gICAgfVxuXG4gICAgZG9EZnMoZywgdiwgb3JkZXIgPT09IFwicG9zdFwiLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICB9KTtcbiAgcmV0dXJuIGFjYztcbn1cblxuZnVuY3Rpb24gZG9EZnMoZywgdiwgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpIHtcbiAgaWYgKCFfLmhhcyh2aXNpdGVkLCB2KSkge1xuICAgIHZpc2l0ZWRbdl0gPSB0cnVlO1xuXG4gICAgaWYgKCFwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgICBfLmVhY2gobmF2aWdhdGlvbih2KSwgZnVuY3Rpb24odykge1xuICAgICAgZG9EZnMoZywgdywgcG9zdG9yZGVyLCB2aXNpdGVkLCBuYXZpZ2F0aW9uLCBhY2MpO1xuICAgIH0pO1xuICAgIGlmIChwb3N0b3JkZXIpIHsgYWNjLnB1c2godik7IH1cbiAgfVxufVxuIiwidmFyIGRpamtzdHJhID0gcmVxdWlyZShcIi4vZGlqa3N0cmFcIik7XG52YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZGlqa3N0cmFBbGw7XG5cbmZ1bmN0aW9uIGRpamtzdHJhQWxsKGcsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKSB7XG4gIHJldHVybiBfLnRyYW5zZm9ybShnLm5vZGVzKCksIGZ1bmN0aW9uKGFjYywgdikge1xuICAgIGFjY1t2XSA9IGRpamtzdHJhKGcsIHYsIHdlaWdodEZ1bmMsIGVkZ2VGdW5jKTtcbiAgfSwge30pO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xudmFyIFByaW9yaXR5UXVldWUgPSByZXF1aXJlKFwiLi4vZGF0YS9wcmlvcml0eS1xdWV1ZVwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkaWprc3RyYTtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBkaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkRpamtzdHJhKGcsIFN0cmluZyhzb3VyY2UpLFxuICAgIHdlaWdodEZuIHx8IERFRkFVTFRfV0VJR0hUX0ZVTkMsXG4gICAgZWRnZUZuIHx8IGZ1bmN0aW9uKHYpIHsgcmV0dXJuIGcub3V0RWRnZXModik7IH0pO1xufVxuXG5mdW5jdGlvbiBydW5EaWprc3RyYShnLCBzb3VyY2UsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgdmFyIHJlc3VsdHMgPSB7fTtcbiAgdmFyIHBxID0gbmV3IFByaW9yaXR5UXVldWUoKTtcbiAgdmFyIHYsIHZFbnRyeTtcblxuICB2YXIgdXBkYXRlTmVpZ2hib3JzID0gZnVuY3Rpb24oZWRnZSkge1xuICAgIHZhciB3ID0gZWRnZS52ICE9PSB2ID8gZWRnZS52IDogZWRnZS53O1xuICAgIHZhciB3RW50cnkgPSByZXN1bHRzW3ddO1xuICAgIHZhciB3ZWlnaHQgPSB3ZWlnaHRGbihlZGdlKTtcbiAgICB2YXIgZGlzdGFuY2UgPSB2RW50cnkuZGlzdGFuY2UgKyB3ZWlnaHQ7XG5cbiAgICBpZiAod2VpZ2h0IDwgMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiBcIiArXG4gICAgICAgICAgICAgICAgICAgICAgXCJCYWQgZWRnZTogXCIgKyBlZGdlICsgXCIgV2VpZ2h0OiBcIiArIHdlaWdodCk7XG4gICAgfVxuXG4gICAgaWYgKGRpc3RhbmNlIDwgd0VudHJ5LmRpc3RhbmNlKSB7XG4gICAgICB3RW50cnkuZGlzdGFuY2UgPSBkaXN0YW5jZTtcbiAgICAgIHdFbnRyeS5wcmVkZWNlc3NvciA9IHY7XG4gICAgICBwcS5kZWNyZWFzZSh3LCBkaXN0YW5jZSk7XG4gICAgfVxuICB9O1xuXG4gIGcubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICB2YXIgZGlzdGFuY2UgPSB2ID09PSBzb3VyY2UgPyAwIDogTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO1xuICAgIHJlc3VsdHNbdl0gPSB7IGRpc3RhbmNlOiBkaXN0YW5jZSB9O1xuICAgIHBxLmFkZCh2LCBkaXN0YW5jZSk7XG4gIH0pO1xuXG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIHZFbnRyeSA9IHJlc3VsdHNbdl07XG4gICAgaWYgKHZFbnRyeS5kaXN0YW5jZSA9PT0gTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBlZGdlRm4odikuZm9yRWFjaCh1cGRhdGVOZWlnaGJvcnMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgdGFyamFuID0gcmVxdWlyZShcIi4vdGFyamFuXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbmRDeWNsZXM7XG5cbmZ1bmN0aW9uIGZpbmRDeWNsZXMoZykge1xuICByZXR1cm4gXy5maWx0ZXIodGFyamFuKGcpLCBmdW5jdGlvbihjbXB0KSB7XG4gICAgcmV0dXJuIGNtcHQubGVuZ3RoID4gMSB8fCAoY21wdC5sZW5ndGggPT09IDEgJiYgZy5oYXNFZGdlKGNtcHRbMF0sIGNtcHRbMF0pKTtcbiAgfSk7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gZmxveWRXYXJzaGFsbDtcblxudmFyIERFRkFVTFRfV0VJR0hUX0ZVTkMgPSBfLmNvbnN0YW50KDEpO1xuXG5mdW5jdGlvbiBmbG95ZFdhcnNoYWxsKGcsIHdlaWdodEZuLCBlZGdlRm4pIHtcbiAgcmV0dXJuIHJ1bkZsb3lkV2Fyc2hhbGwoZyxcbiAgICB3ZWlnaHRGbiB8fCBERUZBVUxUX1dFSUdIVF9GVU5DLFxuICAgIGVkZ2VGbiB8fCBmdW5jdGlvbih2KSB7IHJldHVybiBnLm91dEVkZ2VzKHYpOyB9KTtcbn1cblxuZnVuY3Rpb24gcnVuRmxveWRXYXJzaGFsbChnLCB3ZWlnaHRGbiwgZWRnZUZuKSB7XG4gIHZhciByZXN1bHRzID0ge307XG4gIHZhciBub2RlcyA9IGcubm9kZXMoKTtcblxuICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHYpIHtcbiAgICByZXN1bHRzW3ZdID0ge307XG4gICAgcmVzdWx0c1t2XVt2XSA9IHsgZGlzdGFuY2U6IDAgfTtcbiAgICBub2Rlcy5mb3JFYWNoKGZ1bmN0aW9uKHcpIHtcbiAgICAgIGlmICh2ICE9PSB3KSB7XG4gICAgICAgIHJlc3VsdHNbdl1bd10gPSB7IGRpc3RhbmNlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBlZGdlRm4odikuZm9yRWFjaChmdW5jdGlvbihlZGdlKSB7XG4gICAgICB2YXIgdyA9IGVkZ2UudiA9PT0gdiA/IGVkZ2UudyA6IGVkZ2UudjtcbiAgICAgIHZhciBkID0gd2VpZ2h0Rm4oZWRnZSk7XG4gICAgICByZXN1bHRzW3ZdW3ddID0geyBkaXN0YW5jZTogZCwgcHJlZGVjZXNzb3I6IHYgfTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihrKSB7XG4gICAgdmFyIHJvd0sgPSByZXN1bHRzW2tdO1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oaSkge1xuICAgICAgdmFyIHJvd0kgPSByZXN1bHRzW2ldO1xuICAgICAgbm9kZXMuZm9yRWFjaChmdW5jdGlvbihqKSB7XG4gICAgICAgIHZhciBpayA9IHJvd0lba107XG4gICAgICAgIHZhciBraiA9IHJvd0tbal07XG4gICAgICAgIHZhciBpaiA9IHJvd0lbal07XG4gICAgICAgIHZhciBhbHREaXN0YW5jZSA9IGlrLmRpc3RhbmNlICsga2ouZGlzdGFuY2U7XG4gICAgICAgIGlmIChhbHREaXN0YW5jZSA8IGlqLmRpc3RhbmNlKSB7XG4gICAgICAgICAgaWouZGlzdGFuY2UgPSBhbHREaXN0YW5jZTtcbiAgICAgICAgICBpai5wcmVkZWNlc3NvciA9IGtqLnByZWRlY2Vzc29yO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHtcbiAgY29tcG9uZW50czogcmVxdWlyZShcIi4vY29tcG9uZW50c1wiKSxcbiAgZGlqa3N0cmE6IHJlcXVpcmUoXCIuL2RpamtzdHJhXCIpLFxuICBkaWprc3RyYUFsbDogcmVxdWlyZShcIi4vZGlqa3N0cmEtYWxsXCIpLFxuICBmaW5kQ3ljbGVzOiByZXF1aXJlKFwiLi9maW5kLWN5Y2xlc1wiKSxcbiAgZmxveWRXYXJzaGFsbDogcmVxdWlyZShcIi4vZmxveWQtd2Fyc2hhbGxcIiksXG4gIGlzQWN5Y2xpYzogcmVxdWlyZShcIi4vaXMtYWN5Y2xpY1wiKSxcbiAgcG9zdG9yZGVyOiByZXF1aXJlKFwiLi9wb3N0b3JkZXJcIiksXG4gIHByZW9yZGVyOiByZXF1aXJlKFwiLi9wcmVvcmRlclwiKSxcbiAgcHJpbTogcmVxdWlyZShcIi4vcHJpbVwiKSxcbiAgdGFyamFuOiByZXF1aXJlKFwiLi90YXJqYW5cIiksXG4gIHRvcHNvcnQ6IHJlcXVpcmUoXCIuL3RvcHNvcnRcIilcbn07XG4iLCJ2YXIgdG9wc29ydCA9IHJlcXVpcmUoXCIuL3RvcHNvcnRcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBY3ljbGljO1xuXG5mdW5jdGlvbiBpc0FjeWNsaWMoZykge1xuICB0cnkge1xuICAgIHRvcHNvcnQoZyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIHRvcHNvcnQuQ3ljbGVFeGNlcHRpb24pIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiIsInZhciBkZnMgPSByZXF1aXJlKFwiLi9kZnNcIik7XG5cbm1vZHVsZS5leHBvcnRzID0gcG9zdG9yZGVyO1xuXG5mdW5jdGlvbiBwb3N0b3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwb3N0XCIpO1xufVxuIiwidmFyIGRmcyA9IHJlcXVpcmUoXCIuL2Rmc1wiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBwcmVvcmRlcjtcblxuZnVuY3Rpb24gcHJlb3JkZXIoZywgdnMpIHtcbiAgcmV0dXJuIGRmcyhnLCB2cywgXCJwcmVcIik7XG59XG4iLCJ2YXIgXyA9IHJlcXVpcmUoXCIuLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi4vZ3JhcGhcIik7XG52YXIgUHJpb3JpdHlRdWV1ZSA9IHJlcXVpcmUoXCIuLi9kYXRhL3ByaW9yaXR5LXF1ZXVlXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHByaW07XG5cbmZ1bmN0aW9uIHByaW0oZywgd2VpZ2h0RnVuYykge1xuICB2YXIgcmVzdWx0ID0gbmV3IEdyYXBoKCk7XG4gIHZhciBwYXJlbnRzID0ge307XG4gIHZhciBwcSA9IG5ldyBQcmlvcml0eVF1ZXVlKCk7XG4gIHZhciB2O1xuXG4gIGZ1bmN0aW9uIHVwZGF0ZU5laWdoYm9ycyhlZGdlKSB7XG4gICAgdmFyIHcgPSBlZGdlLnYgPT09IHYgPyBlZGdlLncgOiBlZGdlLnY7XG4gICAgdmFyIHByaSA9IHBxLnByaW9yaXR5KHcpO1xuICAgIGlmIChwcmkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGVkZ2VXZWlnaHQgPSB3ZWlnaHRGdW5jKGVkZ2UpO1xuICAgICAgaWYgKGVkZ2VXZWlnaHQgPCBwcmkpIHtcbiAgICAgICAgcGFyZW50c1t3XSA9IHY7XG4gICAgICAgIHBxLmRlY3JlYXNlKHcsIGVkZ2VXZWlnaHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChnLm5vZGVDb3VudCgpID09PSAwKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIF8uZWFjaChnLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICBwcS5hZGQodiwgTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTtcbiAgICByZXN1bHQuc2V0Tm9kZSh2KTtcbiAgfSk7XG5cbiAgLy8gU3RhcnQgZnJvbSBhbiBhcmJpdHJhcnkgbm9kZVxuICBwcS5kZWNyZWFzZShnLm5vZGVzKClbMF0sIDApO1xuXG4gIHZhciBpbml0ID0gZmFsc2U7XG4gIHdoaWxlIChwcS5zaXplKCkgPiAwKSB7XG4gICAgdiA9IHBxLnJlbW92ZU1pbigpO1xuICAgIGlmIChfLmhhcyhwYXJlbnRzLCB2KSkge1xuICAgICAgcmVzdWx0LnNldEVkZ2UodiwgcGFyZW50c1t2XSk7XG4gICAgfSBlbHNlIGlmIChpbml0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiBcIiArIGcpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBnLm5vZGVFZGdlcyh2KS5mb3JFYWNoKHVwZGF0ZU5laWdoYm9ycyk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRhcmphbjtcblxuZnVuY3Rpb24gdGFyamFuKGcpIHtcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIHN0YWNrID0gW107XG4gIHZhciB2aXNpdGVkID0ge307IC8vIG5vZGUgaWQgLT4geyBvblN0YWNrLCBsb3dsaW5rLCBpbmRleCB9XG4gIHZhciByZXN1bHRzID0gW107XG5cbiAgZnVuY3Rpb24gZGZzKHYpIHtcbiAgICB2YXIgZW50cnkgPSB2aXNpdGVkW3ZdID0ge1xuICAgICAgb25TdGFjazogdHJ1ZSxcbiAgICAgIGxvd2xpbms6IGluZGV4LFxuICAgICAgaW5kZXg6IGluZGV4KytcbiAgICB9O1xuICAgIHN0YWNrLnB1c2godik7XG5cbiAgICBnLnN1Y2Nlc3NvcnModikuZm9yRWFjaChmdW5jdGlvbih3KSB7XG4gICAgICBpZiAoIV8uaGFzKHZpc2l0ZWQsIHcpKSB7XG4gICAgICAgIGRmcyh3KTtcbiAgICAgICAgZW50cnkubG93bGluayA9IE1hdGgubWluKGVudHJ5Lmxvd2xpbmssIHZpc2l0ZWRbd10ubG93bGluayk7XG4gICAgICB9IGVsc2UgaWYgKHZpc2l0ZWRbd10ub25TdGFjaykge1xuICAgICAgICBlbnRyeS5sb3dsaW5rID0gTWF0aC5taW4oZW50cnkubG93bGluaywgdmlzaXRlZFt3XS5pbmRleCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoZW50cnkubG93bGluayA9PT0gZW50cnkuaW5kZXgpIHtcbiAgICAgIHZhciBjbXB0ID0gW107XG4gICAgICB2YXIgdztcbiAgICAgIGRvIHtcbiAgICAgICAgdyA9IHN0YWNrLnBvcCgpO1xuICAgICAgICB2aXNpdGVkW3ddLm9uU3RhY2sgPSBmYWxzZTtcbiAgICAgICAgY21wdC5wdXNoKHcpO1xuICAgICAgfSB3aGlsZSAodiAhPT0gdyk7XG4gICAgICByZXN1bHRzLnB1c2goY21wdCk7XG4gICAgfVxuICB9XG5cbiAgZy5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24odikge1xuICAgIGlmICghXy5oYXModmlzaXRlZCwgdikpIHtcbiAgICAgIGRmcyh2KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHRzO1xufVxuIiwidmFyIF8gPSByZXF1aXJlKFwiLi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHRvcHNvcnQ7XG50b3Bzb3J0LkN5Y2xlRXhjZXB0aW9uID0gQ3ljbGVFeGNlcHRpb247XG5cbmZ1bmN0aW9uIHRvcHNvcnQoZykge1xuICB2YXIgdmlzaXRlZCA9IHt9O1xuICB2YXIgc3RhY2sgPSB7fTtcbiAgdmFyIHJlc3VsdHMgPSBbXTtcblxuICBmdW5jdGlvbiB2aXNpdChub2RlKSB7XG4gICAgaWYgKF8uaGFzKHN0YWNrLCBub2RlKSkge1xuICAgICAgdGhyb3cgbmV3IEN5Y2xlRXhjZXB0aW9uKCk7XG4gICAgfVxuXG4gICAgaWYgKCFfLmhhcyh2aXNpdGVkLCBub2RlKSkge1xuICAgICAgc3RhY2tbbm9kZV0gPSB0cnVlO1xuICAgICAgdmlzaXRlZFtub2RlXSA9IHRydWU7XG4gICAgICBfLmVhY2goZy5wcmVkZWNlc3NvcnMobm9kZSksIHZpc2l0KTtcbiAgICAgIGRlbGV0ZSBzdGFja1tub2RlXTtcbiAgICAgIHJlc3VsdHMucHVzaChub2RlKTtcbiAgICB9XG4gIH1cblxuICBfLmVhY2goZy5zaW5rcygpLCB2aXNpdCk7XG5cbiAgaWYgKF8uc2l6ZSh2aXNpdGVkKSAhPT0gZy5ub2RlQ291bnQoKSkge1xuICAgIHRocm93IG5ldyBDeWNsZUV4Y2VwdGlvbigpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIEN5Y2xlRXhjZXB0aW9uKCkge31cbkN5Y2xlRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpOyAvLyBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEVycm9yIHRvIHBhc3MgdGVzdGluZyIsInZhciBfID0gcmVxdWlyZShcIi4uL2xvZGFzaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcmlvcml0eVF1ZXVlO1xuXG4vKipcbiAqIEEgbWluLXByaW9yaXR5IHF1ZXVlIGRhdGEgc3RydWN0dXJlLiBUaGlzIGFsZ29yaXRobSBpcyBkZXJpdmVkIGZyb20gQ29ybWVuLFxuICogZXQgYWwuLCBcIkludHJvZHVjdGlvbiB0byBBbGdvcml0aG1zXCIuIFRoZSBiYXNpYyBpZGVhIG9mIGEgbWluLXByaW9yaXR5XG4gKiBxdWV1ZSBpcyB0aGF0IHlvdSBjYW4gZWZmaWNpZW50bHkgKGluIE8oMSkgdGltZSkgZ2V0IHRoZSBzbWFsbGVzdCBrZXkgaW5cbiAqIHRoZSBxdWV1ZS4gQWRkaW5nIGFuZCByZW1vdmluZyBlbGVtZW50cyB0YWtlcyBPKGxvZyBuKSB0aW1lLiBBIGtleSBjYW5cbiAqIGhhdmUgaXRzIHByaW9yaXR5IGRlY3JlYXNlZCBpbiBPKGxvZyBuKSB0aW1lLlxuICovXG5mdW5jdGlvbiBQcmlvcml0eVF1ZXVlKCkge1xuICB0aGlzLl9hcnIgPSBbXTtcbiAgdGhpcy5fa2V5SW5kaWNlcyA9IHt9O1xufVxuXG4vKipcbiAqIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgcXVldWUuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5zaXplID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9hcnIubGVuZ3RoO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBrZXlzIHRoYXQgYXJlIGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obilgIHRpbWUuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2Fyci5tYXAoZnVuY3Rpb24oeCkgeyByZXR1cm4geC5rZXk7IH0pO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGB0cnVlYCBpZiAqKmtleSoqIGlzIGluIHRoZSBxdWV1ZSBhbmQgYGZhbHNlYCBpZiBub3QuXG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKGtleSkge1xuICByZXR1cm4gXy5oYXModGhpcy5fa2V5SW5kaWNlcywga2V5KTtcbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUgcHJpb3JpdHkgZm9yICoqa2V5KiouIElmICoqa2V5KiogaXMgbm90IHByZXNlbnQgaW4gdGhlIHF1ZXVlXG4gKiB0aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgdW5kZWZpbmVkYC4gVGFrZXMgYE8oMSlgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5wcmlvcml0eSA9IGZ1bmN0aW9uKGtleSkge1xuICB2YXIgaW5kZXggPSB0aGlzLl9rZXlJbmRpY2VzW2tleV07XG4gIGlmIChpbmRleCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FycltpbmRleF0ucHJpb3JpdHk7XG4gIH1cbn07XG5cbi8qKlxuICogUmV0dXJucyB0aGUga2V5IGZvciB0aGUgbWluaW11bSBlbGVtZW50IGluIHRoaXMgcXVldWUuIElmIHRoZSBxdWV1ZSBpc1xuICogZW1wdHkgdGhpcyBmdW5jdGlvbiB0aHJvd3MgYW4gRXJyb3IuIFRha2VzIGBPKDEpYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5taW4gPSBmdW5jdGlvbigpIHtcbiAgaWYgKHRoaXMuc2l6ZSgpID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiUXVldWUgdW5kZXJmbG93XCIpO1xuICB9XG4gIHJldHVybiB0aGlzLl9hcnJbMF0ua2V5O1xufTtcblxuLyoqXG4gKiBJbnNlcnRzIGEgbmV3IGtleSBpbnRvIHRoZSBwcmlvcml0eSBxdWV1ZS4gSWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cyBpblxuICogdGhlIHF1ZXVlIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgOyBvdGhlcndpc2UgaXQgd2lsbCByZXR1cm4gYHRydWVgLlxuICogVGFrZXMgYE8obilgIHRpbWUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGtleSB0aGUga2V5IHRvIGFkZFxuICogQHBhcmFtIHtOdW1iZXJ9IHByaW9yaXR5IHRoZSBpbml0aWFsIHByaW9yaXR5IGZvciB0aGUga2V5XG4gKi9cblByaW9yaXR5UXVldWUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGtleUluZGljZXMgPSB0aGlzLl9rZXlJbmRpY2VzO1xuICBrZXkgPSBTdHJpbmcoa2V5KTtcbiAgaWYgKCFfLmhhcyhrZXlJbmRpY2VzLCBrZXkpKSB7XG4gICAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgICB2YXIgaW5kZXggPSBhcnIubGVuZ3RoO1xuICAgIGtleUluZGljZXNba2V5XSA9IGluZGV4O1xuICAgIGFyci5wdXNoKHtrZXk6IGtleSwgcHJpb3JpdHk6IHByaW9yaXR5fSk7XG4gICAgdGhpcy5fZGVjcmVhc2UoaW5kZXgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogUmVtb3ZlcyBhbmQgcmV0dXJucyB0aGUgc21hbGxlc3Qga2V5IGluIHRoZSBxdWV1ZS4gVGFrZXMgYE8obG9nIG4pYCB0aW1lLlxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5yZW1vdmVNaW4gPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fc3dhcCgwLCB0aGlzLl9hcnIubGVuZ3RoIC0gMSk7XG4gIHZhciBtaW4gPSB0aGlzLl9hcnIucG9wKCk7XG4gIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW21pbi5rZXldO1xuICB0aGlzLl9oZWFwaWZ5KDApO1xuICByZXR1cm4gbWluLmtleTtcbn07XG5cbi8qKlxuICogRGVjcmVhc2VzIHRoZSBwcmlvcml0eSBmb3IgKiprZXkqKiB0byAqKnByaW9yaXR5KiouIElmIHRoZSBuZXcgcHJpb3JpdHkgaXNcbiAqIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgcHJpb3JpdHksIHRoaXMgZnVuY3Rpb24gd2lsbCB0aHJvdyBhbiBFcnJvci5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0ga2V5IHRoZSBrZXkgZm9yIHdoaWNoIHRvIHJhaXNlIHByaW9yaXR5XG4gKiBAcGFyYW0ge051bWJlcn0gcHJpb3JpdHkgdGhlIG5ldyBwcmlvcml0eSBmb3IgdGhlIGtleVxuICovXG5Qcmlvcml0eVF1ZXVlLnByb3RvdHlwZS5kZWNyZWFzZSA9IGZ1bmN0aW9uKGtleSwgcHJpb3JpdHkpIHtcbiAgdmFyIGluZGV4ID0gdGhpcy5fa2V5SW5kaWNlc1trZXldO1xuICBpZiAocHJpb3JpdHkgPiB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBcIiArXG4gICAgICAgIFwiS2V5OiBcIiArIGtleSArIFwiIE9sZDogXCIgKyB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ICsgXCIgTmV3OiBcIiArIHByaW9yaXR5KTtcbiAgfVxuICB0aGlzLl9hcnJbaW5kZXhdLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gIHRoaXMuX2RlY3JlYXNlKGluZGV4KTtcbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9oZWFwaWZ5ID0gZnVuY3Rpb24oaSkge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIgbCA9IDIgKiBpO1xuICB2YXIgciA9IGwgKyAxO1xuICB2YXIgbGFyZ2VzdCA9IGk7XG4gIGlmIChsIDwgYXJyLmxlbmd0aCkge1xuICAgIGxhcmdlc3QgPSBhcnJbbF0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyBsIDogbGFyZ2VzdDtcbiAgICBpZiAociA8IGFyci5sZW5ndGgpIHtcbiAgICAgIGxhcmdlc3QgPSBhcnJbcl0ucHJpb3JpdHkgPCBhcnJbbGFyZ2VzdF0ucHJpb3JpdHkgPyByIDogbGFyZ2VzdDtcbiAgICB9XG4gICAgaWYgKGxhcmdlc3QgIT09IGkpIHtcbiAgICAgIHRoaXMuX3N3YXAoaSwgbGFyZ2VzdCk7XG4gICAgICB0aGlzLl9oZWFwaWZ5KGxhcmdlc3QpO1xuICAgIH1cbiAgfVxufTtcblxuUHJpb3JpdHlRdWV1ZS5wcm90b3R5cGUuX2RlY3JlYXNlID0gZnVuY3Rpb24oaW5kZXgpIHtcbiAgdmFyIGFyciA9IHRoaXMuX2FycjtcbiAgdmFyIHByaW9yaXR5ID0gYXJyW2luZGV4XS5wcmlvcml0eTtcbiAgdmFyIHBhcmVudDtcbiAgd2hpbGUgKGluZGV4ICE9PSAwKSB7XG4gICAgcGFyZW50ID0gaW5kZXggPj4gMTtcbiAgICBpZiAoYXJyW3BhcmVudF0ucHJpb3JpdHkgPCBwcmlvcml0eSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIHRoaXMuX3N3YXAoaW5kZXgsIHBhcmVudCk7XG4gICAgaW5kZXggPSBwYXJlbnQ7XG4gIH1cbn07XG5cblByaW9yaXR5UXVldWUucHJvdG90eXBlLl9zd2FwID0gZnVuY3Rpb24oaSwgaikge1xuICB2YXIgYXJyID0gdGhpcy5fYXJyO1xuICB2YXIga2V5SW5kaWNlcyA9IHRoaXMuX2tleUluZGljZXM7XG4gIHZhciBvcmlnQXJySSA9IGFycltpXTtcbiAgdmFyIG9yaWdBcnJKID0gYXJyW2pdO1xuICBhcnJbaV0gPSBvcmlnQXJySjtcbiAgYXJyW2pdID0gb3JpZ0Fyckk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckoua2V5XSA9IGk7XG4gIGtleUluZGljZXNbb3JpZ0Fyckkua2V5XSA9IGo7XG59O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBfID0gcmVxdWlyZShcIi4vbG9kYXNoXCIpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEdyYXBoO1xuXG52YXIgREVGQVVMVF9FREdFX05BTUUgPSBcIlxceDAwXCI7XG52YXIgR1JBUEhfTk9ERSA9IFwiXFx4MDBcIjtcbnZhciBFREdFX0tFWV9ERUxJTSA9IFwiXFx4MDFcIjtcblxuLy8gSW1wbGVtZW50YXRpb24gbm90ZXM6XG4vL1xuLy8gICogTm9kZSBpZCBxdWVyeSBmdW5jdGlvbnMgc2hvdWxkIHJldHVybiBzdHJpbmcgaWRzIGZvciB0aGUgbm9kZXNcbi8vICAqIEVkZ2UgaWQgcXVlcnkgZnVuY3Rpb25zIHNob3VsZCByZXR1cm4gYW4gXCJlZGdlT2JqXCIsIGVkZ2Ugb2JqZWN0LCB0aGF0IGlzXG4vLyAgICBjb21wb3NlZCBvZiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gdW5pcXVlbHkgaWRlbnRpZnkgYW4gZWRnZToge3YsIHcsIG5hbWV9LlxuLy8gICogSW50ZXJuYWxseSB3ZSB1c2UgYW4gXCJlZGdlSWRcIiwgYSBzdHJpbmdpZmllZCBmb3JtIG9mIHRoZSBlZGdlT2JqLCB0b1xuLy8gICAgcmVmZXJlbmNlIGVkZ2VzLiBUaGlzIGlzIGJlY2F1c2Ugd2UgbmVlZCBhIHBlcmZvcm1hbnQgd2F5IHRvIGxvb2sgdGhlc2Vcbi8vICAgIGVkZ2VzIHVwIGFuZCwgb2JqZWN0IHByb3BlcnRpZXMsIHdoaWNoIGhhdmUgc3RyaW5nIGtleXMsIGFyZSB0aGUgY2xvc2VzdFxuLy8gICAgd2UncmUgZ29pbmcgdG8gZ2V0IHRvIGEgcGVyZm9ybWFudCBoYXNodGFibGUgaW4gSmF2YVNjcmlwdC5cblxuZnVuY3Rpb24gR3JhcGgob3B0cykge1xuICB0aGlzLl9pc0RpcmVjdGVkID0gXy5oYXMob3B0cywgXCJkaXJlY3RlZFwiKSA/IG9wdHMuZGlyZWN0ZWQgOiB0cnVlO1xuICB0aGlzLl9pc011bHRpZ3JhcGggPSBfLmhhcyhvcHRzLCBcIm11bHRpZ3JhcGhcIikgPyBvcHRzLm11bHRpZ3JhcGggOiBmYWxzZTtcbiAgdGhpcy5faXNDb21wb3VuZCA9IF8uaGFzKG9wdHMsIFwiY29tcG91bmRcIikgPyBvcHRzLmNvbXBvdW5kIDogZmFsc2U7XG5cbiAgLy8gTGFiZWwgZm9yIHRoZSBncmFwaCBpdHNlbGZcbiAgdGhpcy5fbGFiZWwgPSB1bmRlZmluZWQ7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgbm9kZVxuICB0aGlzLl9kZWZhdWx0Tm9kZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gRGVmYXVsdHMgdG8gYmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBuZXcgZWRnZVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBfLmNvbnN0YW50KHVuZGVmaW5lZCk7XG5cbiAgLy8gdiAtPiBsYWJlbFxuICB0aGlzLl9ub2RlcyA9IHt9O1xuXG4gIGlmICh0aGlzLl9pc0NvbXBvdW5kKSB7XG4gICAgLy8gdiAtPiBwYXJlbnRcbiAgICB0aGlzLl9wYXJlbnQgPSB7fTtcblxuICAgIC8vIHYgLT4gY2hpbGRyZW5cbiAgICB0aGlzLl9jaGlsZHJlbiA9IHt9O1xuICAgIHRoaXMuX2NoaWxkcmVuW0dSQVBIX05PREVdID0ge307XG4gIH1cblxuICAvLyB2IC0+IGVkZ2VPYmpcbiAgdGhpcy5faW4gPSB7fTtcblxuICAvLyB1IC0+IHYgLT4gTnVtYmVyXG4gIHRoaXMuX3ByZWRzID0ge307XG5cbiAgLy8gdiAtPiBlZGdlT2JqXG4gIHRoaXMuX291dCA9IHt9O1xuXG4gIC8vIHYgLT4gdyAtPiBOdW1iZXJcbiAgdGhpcy5fc3VjcyA9IHt9O1xuXG4gIC8vIGUgLT4gZWRnZU9ialxuICB0aGlzLl9lZGdlT2JqcyA9IHt9O1xuXG4gIC8vIGUgLT4gbGFiZWxcbiAgdGhpcy5fZWRnZUxhYmVscyA9IHt9O1xufVxuXG4vKiBOdW1iZXIgb2Ygbm9kZXMgaW4gdGhlIGdyYXBoLiBTaG91bGQgb25seSBiZSBjaGFuZ2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbi4gKi9cbkdyYXBoLnByb3RvdHlwZS5fbm9kZUNvdW50ID0gMDtcblxuLyogTnVtYmVyIG9mIGVkZ2VzIGluIHRoZSBncmFwaC4gU2hvdWxkIG9ubHkgYmUgY2hhbmdlZCBieSB0aGUgaW1wbGVtZW50YXRpb24uICovXG5HcmFwaC5wcm90b3R5cGUuX2VkZ2VDb3VudCA9IDA7XG5cblxuLyogPT09IEdyYXBoIGZ1bmN0aW9ucyA9PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLmlzRGlyZWN0ZWQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNNdWx0aWdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9pc011bHRpZ3JhcGg7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuaXNDb21wb3VuZCA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5faXNDb21wb3VuZDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXRHcmFwaCA9IGZ1bmN0aW9uKGxhYmVsKSB7XG4gIHRoaXMuX2xhYmVsID0gbGFiZWw7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmdyYXBoID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9sYWJlbDtcbn07XG5cblxuLyogPT09IE5vZGUgZnVuY3Rpb25zID09PT09PT09PT0gKi9cblxuR3JhcGgucHJvdG90eXBlLnNldERlZmF1bHROb2RlTGFiZWwgPSBmdW5jdGlvbihuZXdEZWZhdWx0KSB7XG4gIGlmICghXy5pc0Z1bmN0aW9uKG5ld0RlZmF1bHQpKSB7XG4gICAgbmV3RGVmYXVsdCA9IF8uY29uc3RhbnQobmV3RGVmYXVsdCk7XG4gIH1cbiAgdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuID0gbmV3RGVmYXVsdDtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZUNvdW50ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiB0aGlzLl9ub2RlQ291bnQ7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUubm9kZXMgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIF8ua2V5cyh0aGlzLl9ub2Rlcyk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc291cmNlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIHJldHVybiBfLmZpbHRlcih0aGlzLm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICByZXR1cm4gXy5pc0VtcHR5KHNlbGYuX2luW3ZdKTtcbiAgfSk7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2lua3MgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICByZXR1cm4gXy5maWx0ZXIodGhpcy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgcmV0dXJuIF8uaXNFbXB0eShzZWxmLl9vdXRbdl0pO1xuICB9KTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5zZXROb2RlcyA9IGZ1bmN0aW9uKHZzLCB2YWx1ZSkge1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICBfLmVhY2godnMsIGZ1bmN0aW9uKHYpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldE5vZGUodiwgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldE5vZGUodik7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0Tm9kZSA9IGZ1bmN0aW9uKHYsIHZhbHVlKSB7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRoaXMuX25vZGVzW3ZdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdGhpcy5fbm9kZXNbdl0gPSBhcmd1bWVudHMubGVuZ3RoID4gMSA/IHZhbHVlIDogdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuKHYpO1xuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHRoaXMuX3BhcmVudFt2XSA9IEdSQVBIX05PREU7XG4gICAgdGhpcy5fY2hpbGRyZW5bdl0gPSB7fTtcbiAgICB0aGlzLl9jaGlsZHJlbltHUkFQSF9OT0RFXVt2XSA9IHRydWU7XG4gIH1cbiAgdGhpcy5faW5bdl0gPSB7fTtcbiAgdGhpcy5fcHJlZHNbdl0gPSB7fTtcbiAgdGhpcy5fb3V0W3ZdID0ge307XG4gIHRoaXMuX3N1Y3Nbdl0gPSB7fTtcbiAgKyt0aGlzLl9ub2RlQ291bnQ7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGUgPSBmdW5jdGlvbih2KSB7XG4gIHJldHVybiB0aGlzLl9ub2Rlc1t2XTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5oYXNOb2RlID0gZnVuY3Rpb24odikge1xuICByZXR1cm4gXy5oYXModGhpcy5fbm9kZXMsIHYpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnJlbW92ZU5vZGUgPSAgZnVuY3Rpb24odikge1xuICB2YXIgc2VsZiA9IHRoaXM7XG4gIGlmIChfLmhhcyh0aGlzLl9ub2RlcywgdikpIHtcbiAgICB2YXIgcmVtb3ZlRWRnZSA9IGZ1bmN0aW9uKGUpIHsgc2VsZi5yZW1vdmVFZGdlKHNlbGYuX2VkZ2VPYmpzW2VdKTsgfTtcbiAgICBkZWxldGUgdGhpcy5fbm9kZXNbdl07XG4gICAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICAgIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFt2XTtcbiAgICAgIF8uZWFjaCh0aGlzLmNoaWxkcmVuKHYpLCBmdW5jdGlvbihjaGlsZCkge1xuICAgICAgICBzZWxmLnNldFBhcmVudChjaGlsZCk7XG4gICAgICB9KTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt2XTtcbiAgICB9XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9pblt2XSksIHJlbW92ZUVkZ2UpO1xuICAgIGRlbGV0ZSB0aGlzLl9pblt2XTtcbiAgICBkZWxldGUgdGhpcy5fcHJlZHNbdl07XG4gICAgXy5lYWNoKF8ua2V5cyh0aGlzLl9vdXRbdl0pLCByZW1vdmVFZGdlKTtcbiAgICBkZWxldGUgdGhpcy5fb3V0W3ZdO1xuICAgIGRlbGV0ZSB0aGlzLl9zdWNzW3ZdO1xuICAgIC0tdGhpcy5fbm9kZUNvdW50O1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhcmVudCA9IGZ1bmN0aW9uKHYsIHBhcmVudCkge1xuICBpZiAoIXRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaFwiKTtcbiAgfVxuXG4gIGlmIChfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICBwYXJlbnQgPSBHUkFQSF9OT0RFO1xuICB9IGVsc2Uge1xuICAgIC8vIENvZXJjZSBwYXJlbnQgdG8gc3RyaW5nXG4gICAgcGFyZW50ICs9IFwiXCI7XG4gICAgZm9yICh2YXIgYW5jZXN0b3IgPSBwYXJlbnQ7XG4gICAgICAhXy5pc1VuZGVmaW5lZChhbmNlc3Rvcik7XG4gICAgICBhbmNlc3RvciA9IHRoaXMucGFyZW50KGFuY2VzdG9yKSkge1xuICAgICAgaWYgKGFuY2VzdG9yID09PSB2KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIlNldHRpbmcgXCIgKyBwYXJlbnQrIFwiIGFzIHBhcmVudCBvZiBcIiArIHYgK1xuICAgICAgICAgICAgICAgICAgICAgICAgXCIgd291bGQgY3JlYXRlIGEgY3ljbGVcIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXROb2RlKHBhcmVudCk7XG4gIH1cblxuICB0aGlzLnNldE5vZGUodik7XG4gIHRoaXMuX3JlbW92ZUZyb21QYXJlbnRzQ2hpbGRMaXN0KHYpO1xuICB0aGlzLl9wYXJlbnRbdl0gPSBwYXJlbnQ7XG4gIHRoaXMuX2NoaWxkcmVuW3BhcmVudF1bdl0gPSB0cnVlO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QgPSBmdW5jdGlvbih2KSB7XG4gIGRlbGV0ZSB0aGlzLl9jaGlsZHJlblt0aGlzLl9wYXJlbnRbdl1dW3ZdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnBhcmVudCA9IGZ1bmN0aW9uKHYpIHtcbiAgaWYgKHRoaXMuX2lzQ29tcG91bmQpIHtcbiAgICB2YXIgcGFyZW50ID0gdGhpcy5fcGFyZW50W3ZdO1xuICAgIGlmIChwYXJlbnQgIT09IEdSQVBIX05PREUpIHtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfVxuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuY2hpbGRyZW4gPSBmdW5jdGlvbih2KSB7XG4gIGlmIChfLmlzVW5kZWZpbmVkKHYpKSB7XG4gICAgdiA9IEdSQVBIX05PREU7XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX2NoaWxkcmVuW3ZdO1xuICAgIGlmIChjaGlsZHJlbikge1xuICAgICAgcmV0dXJuIF8ua2V5cyhjaGlsZHJlbik7XG4gICAgfVxuICB9IGVsc2UgaWYgKHYgPT09IEdSQVBIX05PREUpIHtcbiAgICByZXR1cm4gdGhpcy5ub2RlcygpO1xuICB9IGVsc2UgaWYgKHRoaXMuaGFzTm9kZSh2KSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLnByZWRlY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHByZWRzViA9IHRoaXMuX3ByZWRzW3ZdO1xuICBpZiAocHJlZHNWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhwcmVkc1YpO1xuICB9XG59O1xuXG5HcmFwaC5wcm90b3R5cGUuc3VjY2Vzc29ycyA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIHN1Y3NWID0gdGhpcy5fc3Vjc1t2XTtcbiAgaWYgKHN1Y3NWKSB7XG4gICAgcmV0dXJuIF8ua2V5cyhzdWNzVik7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5uZWlnaGJvcnMgPSBmdW5jdGlvbih2KSB7XG4gIHZhciBwcmVkcyA9IHRoaXMucHJlZGVjZXNzb3JzKHYpO1xuICBpZiAocHJlZHMpIHtcbiAgICByZXR1cm4gXy51bmlvbihwcmVkcywgdGhpcy5zdWNjZXNzb3JzKHYpKTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLmlzTGVhZiA9IGZ1bmN0aW9uICh2KSB7XG4gIHZhciBuZWlnaGJvcnM7XG4gIGlmICh0aGlzLmlzRGlyZWN0ZWQoKSkge1xuICAgIG5laWdoYm9ycyA9IHRoaXMuc3VjY2Vzc29ycyh2KTtcbiAgfSBlbHNlIHtcbiAgICBuZWlnaGJvcnMgPSB0aGlzLm5laWdoYm9ycyh2KTtcbiAgfVxuICByZXR1cm4gbmVpZ2hib3JzLmxlbmd0aCA9PT0gMDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5maWx0ZXJOb2RlcyA9IGZ1bmN0aW9uKGZpbHRlcikge1xuICB2YXIgY29weSA9IG5ldyB0aGlzLmNvbnN0cnVjdG9yKHtcbiAgICBkaXJlY3RlZDogdGhpcy5faXNEaXJlY3RlZCxcbiAgICBtdWx0aWdyYXBoOiB0aGlzLl9pc011bHRpZ3JhcGgsXG4gICAgY29tcG91bmQ6IHRoaXMuX2lzQ29tcG91bmRcbiAgfSk7XG5cbiAgY29weS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO1xuXG4gIHZhciBzZWxmID0gdGhpcztcbiAgXy5lYWNoKHRoaXMuX25vZGVzLCBmdW5jdGlvbih2YWx1ZSwgdikge1xuICAgIGlmIChmaWx0ZXIodikpIHtcbiAgICAgIGNvcHkuc2V0Tm9kZSh2LCB2YWx1ZSk7XG4gICAgfVxuICB9KTtcblxuICBfLmVhY2godGhpcy5fZWRnZU9ianMsIGZ1bmN0aW9uKGUpIHtcbiAgICBpZiAoY29weS5oYXNOb2RlKGUudikgJiYgY29weS5oYXNOb2RlKGUudykpIHtcbiAgICAgIGNvcHkuc2V0RWRnZShlLCBzZWxmLmVkZ2UoZSkpO1xuICAgIH1cbiAgfSk7XG5cbiAgdmFyIHBhcmVudHMgPSB7fTtcbiAgZnVuY3Rpb24gZmluZFBhcmVudCh2KSB7XG4gICAgdmFyIHBhcmVudCA9IHNlbGYucGFyZW50KHYpO1xuICAgIGlmIChwYXJlbnQgPT09IHVuZGVmaW5lZCB8fCBjb3B5Lmhhc05vZGUocGFyZW50KSkge1xuICAgICAgcGFyZW50c1t2XSA9IHBhcmVudDtcbiAgICAgIHJldHVybiBwYXJlbnQ7XG4gICAgfSBlbHNlIGlmIChwYXJlbnQgaW4gcGFyZW50cykge1xuICAgICAgcmV0dXJuIHBhcmVudHNbcGFyZW50XTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZpbmRQYXJlbnQocGFyZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAodGhpcy5faXNDb21wb3VuZCkge1xuICAgIF8uZWFjaChjb3B5Lm5vZGVzKCksIGZ1bmN0aW9uKHYpIHtcbiAgICAgIGNvcHkuc2V0UGFyZW50KHYsIGZpbmRQYXJlbnQodikpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGNvcHk7XG59O1xuXG4vKiA9PT0gRWRnZSBmdW5jdGlvbnMgPT09PT09PT09PSAqL1xuXG5HcmFwaC5wcm90b3R5cGUuc2V0RGVmYXVsdEVkZ2VMYWJlbCA9IGZ1bmN0aW9uKG5ld0RlZmF1bHQpIHtcbiAgaWYgKCFfLmlzRnVuY3Rpb24obmV3RGVmYXVsdCkpIHtcbiAgICBuZXdEZWZhdWx0ID0gXy5jb25zdGFudChuZXdEZWZhdWx0KTtcbiAgfVxuICB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4gPSBuZXdEZWZhdWx0O1xuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlQ291bnQgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHRoaXMuX2VkZ2VDb3VudDtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5lZGdlcyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gXy52YWx1ZXModGhpcy5fZWRnZU9ianMpO1xufTtcblxuR3JhcGgucHJvdG90eXBlLnNldFBhdGggPSBmdW5jdGlvbih2cywgdmFsdWUpIHtcbiAgdmFyIHNlbGYgPSB0aGlzO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50cztcbiAgXy5yZWR1Y2UodnMsIGZ1bmN0aW9uKHYsIHcpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBzZWxmLnNldEVkZ2UodiwgdywgdmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxmLnNldEVkZ2Uodiwgdyk7XG4gICAgfVxuICAgIHJldHVybiB3O1xuICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vKlxuICogc2V0RWRnZSh2LCB3LCBbdmFsdWUsIFtuYW1lXV0pXG4gKiBzZXRFZGdlKHsgdiwgdywgW25hbWVdIH0sIFt2YWx1ZV0pXG4gKi9cbkdyYXBoLnByb3RvdHlwZS5zZXRFZGdlID0gZnVuY3Rpb24oKSB7XG4gIHZhciB2LCB3LCBuYW1lLCB2YWx1ZTtcbiAgdmFyIHZhbHVlU3BlY2lmaWVkID0gZmFsc2U7XG4gIHZhciBhcmcwID0gYXJndW1lbnRzWzBdO1xuXG4gIGlmICh0eXBlb2YgYXJnMCA9PT0gXCJvYmplY3RcIiAmJiBhcmcwICE9PSBudWxsICYmIFwidlwiIGluIGFyZzApIHtcbiAgICB2ID0gYXJnMC52O1xuICAgIHcgPSBhcmcwLnc7XG4gICAgbmFtZSA9IGFyZzAubmFtZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikge1xuICAgICAgdmFsdWUgPSBhcmd1bWVudHNbMV07XG4gICAgICB2YWx1ZVNwZWNpZmllZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHYgPSBhcmcwO1xuICAgIHcgPSBhcmd1bWVudHNbMV07XG4gICAgbmFtZSA9IGFyZ3VtZW50c1szXTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDIpIHtcbiAgICAgIHZhbHVlID0gYXJndW1lbnRzWzJdO1xuICAgICAgdmFsdWVTcGVjaWZpZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHYgPSBcIlwiICsgdjtcbiAgdyA9IFwiXCIgKyB3O1xuICBpZiAoIV8uaXNVbmRlZmluZWQobmFtZSkpIHtcbiAgICBuYW1lID0gXCJcIiArIG5hbWU7XG4gIH1cblxuICB2YXIgZSA9IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKTtcbiAgaWYgKF8uaGFzKHRoaXMuX2VkZ2VMYWJlbHMsIGUpKSB7XG4gICAgaWYgKHZhbHVlU3BlY2lmaWVkKSB7XG4gICAgICB0aGlzLl9lZGdlTGFiZWxzW2VdID0gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgaWYgKCFfLmlzVW5kZWZpbmVkKG5hbWUpICYmICF0aGlzLl9pc011bHRpZ3JhcGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3Qgc2V0IGEgbmFtZWQgZWRnZSB3aGVuIGlzTXVsdGlncmFwaCA9IGZhbHNlXCIpO1xuICB9XG5cbiAgLy8gSXQgZGlkbid0IGV4aXN0LCBzbyB3ZSBuZWVkIHRvIGNyZWF0ZSBpdC5cbiAgLy8gRmlyc3QgZW5zdXJlIHRoZSBub2RlcyBleGlzdC5cbiAgdGhpcy5zZXROb2RlKHYpO1xuICB0aGlzLnNldE5vZGUodyk7XG5cbiAgdGhpcy5fZWRnZUxhYmVsc1tlXSA9IHZhbHVlU3BlY2lmaWVkID8gdmFsdWUgOiB0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm4odiwgdywgbmFtZSk7XG5cbiAgdmFyIGVkZ2VPYmogPSBlZGdlQXJnc1RvT2JqKHRoaXMuX2lzRGlyZWN0ZWQsIHYsIHcsIG5hbWUpO1xuICAvLyBFbnN1cmUgd2UgYWRkIHVuZGlyZWN0ZWQgZWRnZXMgaW4gYSBjb25zaXN0ZW50IHdheS5cbiAgdiA9IGVkZ2VPYmoudjtcbiAgdyA9IGVkZ2VPYmoudztcblxuICBPYmplY3QuZnJlZXplKGVkZ2VPYmopO1xuICB0aGlzLl9lZGdlT2Jqc1tlXSA9IGVkZ2VPYmo7XG4gIGluY3JlbWVudE9ySW5pdEVudHJ5KHRoaXMuX3ByZWRzW3ddLCB2KTtcbiAgaW5jcmVtZW50T3JJbml0RW50cnkodGhpcy5fc3Vjc1t2XSwgdyk7XG4gIHRoaXMuX2luW3ddW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fb3V0W3ZdW2VdID0gZWRnZU9iajtcbiAgdGhpcy5fZWRnZUNvdW50Kys7XG4gIHJldHVybiB0aGlzO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmVkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiB0aGlzLl9lZGdlTGFiZWxzW2VdO1xufTtcblxuR3JhcGgucHJvdG90eXBlLmhhc0VkZ2UgPSBmdW5jdGlvbih2LCB3LCBuYW1lKSB7XG4gIHZhciBlID0gKGFyZ3VtZW50cy5sZW5ndGggPT09IDFcbiAgICA/IGVkZ2VPYmpUb0lkKHRoaXMuX2lzRGlyZWN0ZWQsIGFyZ3VtZW50c1swXSlcbiAgICA6IGVkZ2VBcmdzVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCB2LCB3LCBuYW1lKSk7XG4gIHJldHVybiBfLmhhcyh0aGlzLl9lZGdlTGFiZWxzLCBlKTtcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5yZW1vdmVFZGdlID0gZnVuY3Rpb24odiwgdywgbmFtZSkge1xuICB2YXIgZSA9IChhcmd1bWVudHMubGVuZ3RoID09PSAxXG4gICAgPyBlZGdlT2JqVG9JZCh0aGlzLl9pc0RpcmVjdGVkLCBhcmd1bWVudHNbMF0pXG4gICAgOiBlZGdlQXJnc1RvSWQodGhpcy5faXNEaXJlY3RlZCwgdiwgdywgbmFtZSkpO1xuICB2YXIgZWRnZSA9IHRoaXMuX2VkZ2VPYmpzW2VdO1xuICBpZiAoZWRnZSkge1xuICAgIHYgPSBlZGdlLnY7XG4gICAgdyA9IGVkZ2UudztcbiAgICBkZWxldGUgdGhpcy5fZWRnZUxhYmVsc1tlXTtcbiAgICBkZWxldGUgdGhpcy5fZWRnZU9ianNbZV07XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9wcmVkc1t3XSwgdik7XG4gICAgZGVjcmVtZW50T3JSZW1vdmVFbnRyeSh0aGlzLl9zdWNzW3ZdLCB3KTtcbiAgICBkZWxldGUgdGhpcy5faW5bd11bZV07XG4gICAgZGVsZXRlIHRoaXMuX291dFt2XVtlXTtcbiAgICB0aGlzLl9lZGdlQ291bnQtLTtcbiAgfVxuICByZXR1cm4gdGhpcztcbn07XG5cbkdyYXBoLnByb3RvdHlwZS5pbkVkZ2VzID0gZnVuY3Rpb24odiwgdSkge1xuICB2YXIgaW5WID0gdGhpcy5faW5bdl07XG4gIGlmIChpblYpIHtcbiAgICB2YXIgZWRnZXMgPSBfLnZhbHVlcyhpblYpO1xuICAgIGlmICghdSkge1xuICAgICAgcmV0dXJuIGVkZ2VzO1xuICAgIH1cbiAgICByZXR1cm4gXy5maWx0ZXIoZWRnZXMsIGZ1bmN0aW9uKGVkZ2UpIHsgcmV0dXJuIGVkZ2UudiA9PT0gdTsgfSk7XG4gIH1cbn07XG5cbkdyYXBoLnByb3RvdHlwZS5vdXRFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIG91dFYgPSB0aGlzLl9vdXRbdl07XG4gIGlmIChvdXRWKSB7XG4gICAgdmFyIGVkZ2VzID0gXy52YWx1ZXMob3V0Vik7XG4gICAgaWYgKCF3KSB7XG4gICAgICByZXR1cm4gZWRnZXM7XG4gICAgfVxuICAgIHJldHVybiBfLmZpbHRlcihlZGdlcywgZnVuY3Rpb24oZWRnZSkgeyByZXR1cm4gZWRnZS53ID09PSB3OyB9KTtcbiAgfVxufTtcblxuR3JhcGgucHJvdG90eXBlLm5vZGVFZGdlcyA9IGZ1bmN0aW9uKHYsIHcpIHtcbiAgdmFyIGluRWRnZXMgPSB0aGlzLmluRWRnZXModiwgdyk7XG4gIGlmIChpbkVkZ2VzKSB7XG4gICAgcmV0dXJuIGluRWRnZXMuY29uY2F0KHRoaXMub3V0RWRnZXModiwgdykpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBpbmNyZW1lbnRPckluaXRFbnRyeShtYXAsIGspIHtcbiAgaWYgKG1hcFtrXSkge1xuICAgIG1hcFtrXSsrO1xuICB9IGVsc2Uge1xuICAgIG1hcFtrXSA9IDE7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVjcmVtZW50T3JSZW1vdmVFbnRyeShtYXAsIGspIHtcbiAgaWYgKCEtLW1hcFtrXSkgeyBkZWxldGUgbWFwW2tdOyB9XG59XG5cbmZ1bmN0aW9uIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHJldHVybiB2ICsgRURHRV9LRVlfREVMSU0gKyB3ICsgRURHRV9LRVlfREVMSU0gK1xuICAgICAgICAgICAgIChfLmlzVW5kZWZpbmVkKG5hbWUpID8gREVGQVVMVF9FREdFX05BTUUgOiBuYW1lKTtcbn1cblxuZnVuY3Rpb24gZWRnZUFyZ3NUb09iaihpc0RpcmVjdGVkLCB2Xywgd18sIG5hbWUpIHtcbiAgdmFyIHYgPSBcIlwiICsgdl87XG4gIHZhciB3ID0gXCJcIiArIHdfO1xuICBpZiAoIWlzRGlyZWN0ZWQgJiYgdiA+IHcpIHtcbiAgICB2YXIgdG1wID0gdjtcbiAgICB2ID0gdztcbiAgICB3ID0gdG1wO1xuICB9XG4gIHZhciBlZGdlT2JqID0gIHsgdjogdiwgdzogdyB9O1xuICBpZiAobmFtZSkge1xuICAgIGVkZ2VPYmoubmFtZSA9IG5hbWU7XG4gIH1cbiAgcmV0dXJuIGVkZ2VPYmo7XG59XG5cbmZ1bmN0aW9uIGVkZ2VPYmpUb0lkKGlzRGlyZWN0ZWQsIGVkZ2VPYmopIHtcbiAgcmV0dXJuIGVkZ2VBcmdzVG9JZChpc0RpcmVjdGVkLCBlZGdlT2JqLnYsIGVkZ2VPYmoudywgZWRnZU9iai5uYW1lKTtcbn1cbiIsIi8vIEluY2x1ZGVzIG9ubHkgdGhlIFwiY29yZVwiIG9mIGdyYXBobGliXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgR3JhcGg6IHJlcXVpcmUoXCIuL2dyYXBoXCIpLFxuICB2ZXJzaW9uOiByZXF1aXJlKFwiLi92ZXJzaW9uXCIpXG59O1xuIiwidmFyIF8gPSByZXF1aXJlKFwiLi9sb2Rhc2hcIik7XG52YXIgR3JhcGggPSByZXF1aXJlKFwiLi9ncmFwaFwiKTtcblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIHdyaXRlOiB3cml0ZSxcbiAgcmVhZDogcmVhZFxufTtcblxuZnVuY3Rpb24gd3JpdGUoZykge1xuICB2YXIganNvbiA9IHtcbiAgICBvcHRpb25zOiB7XG4gICAgICBkaXJlY3RlZDogZy5pc0RpcmVjdGVkKCksXG4gICAgICBtdWx0aWdyYXBoOiBnLmlzTXVsdGlncmFwaCgpLFxuICAgICAgY29tcG91bmQ6IGcuaXNDb21wb3VuZCgpXG4gICAgfSxcbiAgICBub2Rlczogd3JpdGVOb2RlcyhnKSxcbiAgICBlZGdlczogd3JpdGVFZGdlcyhnKVxuICB9O1xuICBpZiAoIV8uaXNVbmRlZmluZWQoZy5ncmFwaCgpKSkge1xuICAgIGpzb24udmFsdWUgPSBfLmNsb25lKGcuZ3JhcGgoKSk7XG4gIH1cbiAgcmV0dXJuIGpzb247XG59XG5cbmZ1bmN0aW9uIHdyaXRlTm9kZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5ub2RlcygpLCBmdW5jdGlvbih2KSB7XG4gICAgdmFyIG5vZGVWYWx1ZSA9IGcubm9kZSh2KTtcbiAgICB2YXIgcGFyZW50ID0gZy5wYXJlbnQodik7XG4gICAgdmFyIG5vZGUgPSB7IHY6IHYgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQobm9kZVZhbHVlKSkge1xuICAgICAgbm9kZS52YWx1ZSA9IG5vZGVWYWx1ZTtcbiAgICB9XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHBhcmVudCkpIHtcbiAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHdyaXRlRWRnZXMoZykge1xuICByZXR1cm4gXy5tYXAoZy5lZGdlcygpLCBmdW5jdGlvbihlKSB7XG4gICAgdmFyIGVkZ2VWYWx1ZSA9IGcuZWRnZShlKTtcbiAgICB2YXIgZWRnZSA9IHsgdjogZS52LCB3OiBlLncgfTtcbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZS5uYW1lKSkge1xuICAgICAgZWRnZS5uYW1lID0gZS5uYW1lO1xuICAgIH1cbiAgICBpZiAoIV8uaXNVbmRlZmluZWQoZWRnZVZhbHVlKSkge1xuICAgICAgZWRnZS52YWx1ZSA9IGVkZ2VWYWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGVkZ2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZWFkKGpzb24pIHtcbiAgdmFyIGcgPSBuZXcgR3JhcGgoanNvbi5vcHRpb25zKS5zZXRHcmFwaChqc29uLnZhbHVlKTtcbiAgXy5lYWNoKGpzb24ubm9kZXMsIGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgZy5zZXROb2RlKGVudHJ5LnYsIGVudHJ5LnZhbHVlKTtcbiAgICBpZiAoZW50cnkucGFyZW50KSB7XG4gICAgICBnLnNldFBhcmVudChlbnRyeS52LCBlbnRyeS5wYXJlbnQpO1xuICAgIH1cbiAgfSk7XG4gIF8uZWFjaChqc29uLmVkZ2VzLCBmdW5jdGlvbihlbnRyeSkge1xuICAgIGcuc2V0RWRnZSh7IHY6IGVudHJ5LnYsIHc6IGVudHJ5LncsIG5hbWU6IGVudHJ5Lm5hbWUgfSwgZW50cnkudmFsdWUpO1xuICB9KTtcbiAgcmV0dXJuIGc7XG59XG4iLCIvKiBnbG9iYWwgd2luZG93ICovXG5cbnZhciBsb2Rhc2g7XG5cbmlmICh0eXBlb2YgcmVxdWlyZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gIHRyeSB7XG4gICAgbG9kYXNoID0ge1xuICAgICAgY2xvbmU6IHJlcXVpcmUoXCJsb2Rhc2gvY2xvbmVcIiksXG4gICAgICBjb25zdGFudDogcmVxdWlyZShcImxvZGFzaC9jb25zdGFudFwiKSxcbiAgICAgIGVhY2g6IHJlcXVpcmUoXCJsb2Rhc2gvZWFjaFwiKSxcbiAgICAgIGZpbHRlcjogcmVxdWlyZShcImxvZGFzaC9maWx0ZXJcIiksXG4gICAgICBoYXM6ICByZXF1aXJlKFwibG9kYXNoL2hhc1wiKSxcbiAgICAgIGlzQXJyYXk6IHJlcXVpcmUoXCJsb2Rhc2gvaXNBcnJheVwiKSxcbiAgICAgIGlzRW1wdHk6IHJlcXVpcmUoXCJsb2Rhc2gvaXNFbXB0eVwiKSxcbiAgICAgIGlzRnVuY3Rpb246IHJlcXVpcmUoXCJsb2Rhc2gvaXNGdW5jdGlvblwiKSxcbiAgICAgIGlzVW5kZWZpbmVkOiByZXF1aXJlKFwibG9kYXNoL2lzVW5kZWZpbmVkXCIpLFxuICAgICAga2V5czogcmVxdWlyZShcImxvZGFzaC9rZXlzXCIpLFxuICAgICAgbWFwOiByZXF1aXJlKFwibG9kYXNoL21hcFwiKSxcbiAgICAgIHJlZHVjZTogcmVxdWlyZShcImxvZGFzaC9yZWR1Y2VcIiksXG4gICAgICBzaXplOiByZXF1aXJlKFwibG9kYXNoL3NpemVcIiksXG4gICAgICB0cmFuc2Zvcm06IHJlcXVpcmUoXCJsb2Rhc2gvdHJhbnNmb3JtXCIpLFxuICAgICAgdW5pb246IHJlcXVpcmUoXCJsb2Rhc2gvdW5pb25cIiksXG4gICAgICB2YWx1ZXM6IHJlcXVpcmUoXCJsb2Rhc2gvdmFsdWVzXCIpXG4gICAgfTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGNvbnRpbnVlIHJlZ2FyZGxlc3Mgb2YgZXJyb3JcbiAgfVxufVxuXG5pZiAoIWxvZGFzaCkge1xuICBsb2Rhc2ggPSB3aW5kb3cuXztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb2Rhc2g7XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICcyLjEuOCc7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERhdGFWaWV3O1xuIiwidmFyIGhhc2hDbGVhciA9IHJlcXVpcmUoJy4vX2hhc2hDbGVhcicpLFxuICAgIGhhc2hEZWxldGUgPSByZXF1aXJlKCcuL19oYXNoRGVsZXRlJyksXG4gICAgaGFzaEdldCA9IHJlcXVpcmUoJy4vX2hhc2hHZXQnKSxcbiAgICBoYXNoSGFzID0gcmVxdWlyZSgnLi9faGFzaEhhcycpLFxuICAgIGhhc2hTZXQgPSByZXF1aXJlKCcuL19oYXNoU2V0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGhhc2ggb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBIYXNoKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYEhhc2hgLlxuSGFzaC5wcm90b3R5cGUuY2xlYXIgPSBoYXNoQ2xlYXI7XG5IYXNoLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBoYXNoRGVsZXRlO1xuSGFzaC5wcm90b3R5cGUuZ2V0ID0gaGFzaEdldDtcbkhhc2gucHJvdG90eXBlLmhhcyA9IGhhc2hIYXM7XG5IYXNoLnByb3RvdHlwZS5zZXQgPSBoYXNoU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEhhc2g7XG4iLCJ2YXIgbGlzdENhY2hlQ2xlYXIgPSByZXF1aXJlKCcuL19saXN0Q2FjaGVDbGVhcicpLFxuICAgIGxpc3RDYWNoZURlbGV0ZSA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZURlbGV0ZScpLFxuICAgIGxpc3RDYWNoZUdldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUdldCcpLFxuICAgIGxpc3RDYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZUhhcycpLFxuICAgIGxpc3RDYWNoZVNldCA9IHJlcXVpcmUoJy4vX2xpc3RDYWNoZVNldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gbGlzdCBjYWNoZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIExpc3RDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBMaXN0Q2FjaGVgLlxuTGlzdENhY2hlLnByb3RvdHlwZS5jbGVhciA9IGxpc3RDYWNoZUNsZWFyO1xuTGlzdENhY2hlLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBsaXN0Q2FjaGVEZWxldGU7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmdldCA9IGxpc3RDYWNoZUdldDtcbkxpc3RDYWNoZS5wcm90b3R5cGUuaGFzID0gbGlzdENhY2hlSGFzO1xuTGlzdENhY2hlLnByb3RvdHlwZS5zZXQgPSBsaXN0Q2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTGlzdENhY2hlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE1hcDtcbiIsInZhciBtYXBDYWNoZUNsZWFyID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVDbGVhcicpLFxuICAgIG1hcENhY2hlRGVsZXRlID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVEZWxldGUnKSxcbiAgICBtYXBDYWNoZUdldCA9IHJlcXVpcmUoJy4vX21hcENhY2hlR2V0JyksXG4gICAgbWFwQ2FjaGVIYXMgPSByZXF1aXJlKCcuL19tYXBDYWNoZUhhcycpLFxuICAgIG1hcENhY2hlU2V0ID0gcmVxdWlyZSgnLi9fbWFwQ2FjaGVTZXQnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbWFwIGNhY2hlIG9iamVjdCB0byBzdG9yZSBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjb25zdHJ1Y3RvclxuICogQHBhcmFtIHtBcnJheX0gW2VudHJpZXNdIFRoZSBrZXktdmFsdWUgcGFpcnMgdG8gY2FjaGUuXG4gKi9cbmZ1bmN0aW9uIE1hcENhY2hlKGVudHJpZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBlbnRyaWVzID09IG51bGwgPyAwIDogZW50cmllcy5sZW5ndGg7XG5cbiAgdGhpcy5jbGVhcigpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBlbnRyeSA9IGVudHJpZXNbaW5kZXhdO1xuICAgIHRoaXMuc2V0KGVudHJ5WzBdLCBlbnRyeVsxXSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYE1hcENhY2hlYC5cbk1hcENhY2hlLnByb3RvdHlwZS5jbGVhciA9IG1hcENhY2hlQ2xlYXI7XG5NYXBDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbWFwQ2FjaGVEZWxldGU7XG5NYXBDYWNoZS5wcm90b3R5cGUuZ2V0ID0gbWFwQ2FjaGVHZXQ7XG5NYXBDYWNoZS5wcm90b3R5cGUuaGFzID0gbWFwQ2FjaGVIYXM7XG5NYXBDYWNoZS5wcm90b3R5cGUuc2V0ID0gbWFwQ2FjaGVTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gTWFwQ2FjaGU7XG4iLCJ2YXIgZ2V0TmF0aXZlID0gcmVxdWlyZSgnLi9fZ2V0TmF0aXZlJyksXG4gICAgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpLFxuICAgIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBTZXQgPSBnZXROYXRpdmUocm9vdCwgJ1NldCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldDtcbiIsInZhciBNYXBDYWNoZSA9IHJlcXVpcmUoJy4vX01hcENhY2hlJyksXG4gICAgc2V0Q2FjaGVBZGQgPSByZXF1aXJlKCcuL19zZXRDYWNoZUFkZCcpLFxuICAgIHNldENhY2hlSGFzID0gcmVxdWlyZSgnLi9fc2V0Q2FjaGVIYXMnKTtcblxuLyoqXG4gKlxuICogQ3JlYXRlcyBhbiBhcnJheSBjYWNoZSBvYmplY3QgdG8gc3RvcmUgdW5pcXVlIHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbdmFsdWVzXSBUaGUgdmFsdWVzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTZXRDYWNoZSh2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMgPT0gbnVsbCA/IDAgOiB2YWx1ZXMubGVuZ3RoO1xuXG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTWFwQ2FjaGU7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdGhpcy5hZGQodmFsdWVzW2luZGV4XSk7XG4gIH1cbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFNldENhY2hlYC5cblNldENhY2hlLnByb3RvdHlwZS5hZGQgPSBTZXRDYWNoZS5wcm90b3R5cGUucHVzaCA9IHNldENhY2hlQWRkO1xuU2V0Q2FjaGUucHJvdG90eXBlLmhhcyA9IHNldENhY2hlSGFzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNldENhY2hlO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIHN0YWNrQ2xlYXIgPSByZXF1aXJlKCcuL19zdGFja0NsZWFyJyksXG4gICAgc3RhY2tEZWxldGUgPSByZXF1aXJlKCcuL19zdGFja0RlbGV0ZScpLFxuICAgIHN0YWNrR2V0ID0gcmVxdWlyZSgnLi9fc3RhY2tHZXQnKSxcbiAgICBzdGFja0hhcyA9IHJlcXVpcmUoJy4vX3N0YWNrSGFzJyksXG4gICAgc3RhY2tTZXQgPSByZXF1aXJlKCcuL19zdGFja1NldCcpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbm1vZHVsZS5leHBvcnRzID0gU3RhY2s7XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ltYm9sO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFVpbnQ4QXJyYXkgPSByb290LlVpbnQ4QXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gVWludDhBcnJheTtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKSxcbiAgICByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyB0aGF0IGFyZSB2ZXJpZmllZCB0byBiZSBuYXRpdmUuICovXG52YXIgV2Vha01hcCA9IGdldE5hdGl2ZShyb290LCAnV2Vha01hcCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFdlYWtNYXA7XG4iLCIvKipcbiAqIEEgZmFzdGVyIGFsdGVybmF0aXZlIHRvIGBGdW5jdGlvbiNhcHBseWAsIHRoaXMgZnVuY3Rpb24gaW52b2tlcyBgZnVuY2BcbiAqIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIGB0aGlzQXJnYCBhbmQgdGhlIGFyZ3VtZW50cyBvZiBgYXJnc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGludm9rZS5cbiAqIEBwYXJhbSB7Kn0gdGhpc0FyZyBUaGUgYHRoaXNgIGJpbmRpbmcgb2YgYGZ1bmNgLlxuICogQHBhcmFtIHtBcnJheX0gYXJncyBUaGUgYXJndW1lbnRzIHRvIGludm9rZSBgZnVuY2Agd2l0aC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXN1bHQgb2YgYGZ1bmNgLlxuICovXG5mdW5jdGlvbiBhcHBseShmdW5jLCB0aGlzQXJnLCBhcmdzKSB7XG4gIHN3aXRjaCAoYXJncy5sZW5ndGgpIHtcbiAgICBjYXNlIDA6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZyk7XG4gICAgY2FzZSAxOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0pO1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdKTtcbiAgICBjYXNlIDM6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSwgYXJnc1sxXSwgYXJnc1syXSk7XG4gIH1cbiAgcmV0dXJuIGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXBwbHk7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5mb3JFYWNoYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlFYWNoKGFycmF5LCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgaWYgKGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSA9PT0gZmFsc2UpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlFYWNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uZmlsdGVyYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHByZWRpY2F0ZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmlsdGVyZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGFycmF5RmlsdGVyKGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc0luZGV4ID0gMCxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdO1xuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJlc3VsdFtyZXNJbmRleCsrXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5RmlsdGVyO1xuIiwidmFyIGJhc2VJbmRleE9mID0gcmVxdWlyZSgnLi9fYmFzZUluZGV4T2YnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uaW5jbHVkZXNgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogc3BlY2lmeWluZyBhbiBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0IFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB0YXJnZXRgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5SW5jbHVkZXMoYXJyYXksIHZhbHVlKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgMCkgPiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzO1xuIiwiLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIGxpa2UgYGFycmF5SW5jbHVkZXNgIGV4Y2VwdCB0aGF0IGl0IGFjY2VwdHMgYSBjb21wYXJhdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB0YXJnZXQgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHRhcmdldGAgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlJbmNsdWRlc1dpdGgoYXJyYXksIHZhbHVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoY29tcGFyYXRvcih2YWx1ZSwgYXJyYXlbaW5kZXhdKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheUluY2x1ZGVzV2l0aDtcbiIsInZhciBiYXNlVGltZXMgPSByZXF1aXJlKCcuL19iYXNlVGltZXMnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlMaWtlS2V5cztcbiIsIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLm1hcGAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBhcnJheU1hcChhcnJheSwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IEFycmF5KGxlbmd0aCk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlNYXA7XG4iLCIvKipcbiAqIEFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIGB2YWx1ZXNgIHRvIGBhcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fSB2YWx1ZXMgVGhlIHZhbHVlcyB0byBhcHBlbmQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYXJyYXlQdXNoKGFycmF5LCB2YWx1ZXMpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSB2YWx1ZXMubGVuZ3RoLFxuICAgICAgb2Zmc2V0ID0gYXJyYXkubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbb2Zmc2V0ICsgaW5kZXhdID0gdmFsdWVzW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXJyYXlQdXNoO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ucmVkdWNlYCBmb3IgYXJyYXlzIHdpdGhvdXQgc3VwcG9ydCBmb3JcbiAqIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IFthcnJheV0gVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpbml0QWNjdW1dIFNwZWNpZnkgdXNpbmcgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGFycmF5YCBhc1xuICogIHRoZSBpbml0aWFsIHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGFjY3VtdWxhdGVkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBhcnJheVJlZHVjZShhcnJheSwgaXRlcmF0ZWUsIGFjY3VtdWxhdG9yLCBpbml0QWNjdW0pIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheSA9PSBudWxsID8gMCA6IGFycmF5Lmxlbmd0aDtcblxuICBpZiAoaW5pdEFjY3VtICYmIGxlbmd0aCkge1xuICAgIGFjY3VtdWxhdG9yID0gYXJyYXlbKytpbmRleF07XG4gIH1cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBhY2N1bXVsYXRvciA9IGl0ZXJhdGVlKGFjY3VtdWxhdG9yLCBhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSk7XG4gIH1cbiAgcmV0dXJuIGFjY3VtdWxhdG9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFycmF5UmVkdWNlO1xuIiwiLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8uc29tZWAgZm9yIGFycmF5cyB3aXRob3V0IHN1cHBvcnQgZm9yIGl0ZXJhdGVlXG4gKiBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXldIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbnkgZWxlbWVudCBwYXNzZXMgdGhlIHByZWRpY2F0ZSBjaGVjayxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5U29tZShhcnJheSwgcHJlZGljYXRlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAocHJlZGljYXRlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBhcnJheVNvbWU7XG4iLCJ2YXIgYmFzZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fYmFzZVByb3BlcnR5Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhbiBBU0NJSSBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xudmFyIGFzY2lpU2l6ZSA9IGJhc2VQcm9wZXJ0eSgnbGVuZ3RoJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gYXNjaWlTaXplO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGVxID0gcmVxdWlyZSgnLi9lcScpO1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZSBgYXNzaWduVmFsdWVgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3QgYXNzaWduXG4gKiBgdW5kZWZpbmVkYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgaWYgKCh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFlcShvYmplY3Rba2V5XSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFzc2lnbk1lcmdlVmFsdWU7XG4iLCJ2YXIgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyksXG4gICAgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQXNzaWducyBgdmFsdWVgIHRvIGBrZXlgIG9mIGBvYmplY3RgIGlmIHRoZSBleGlzdGluZyB2YWx1ZSBpcyBub3QgZXF1aXZhbGVudFxuICogdXNpbmcgW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGZvciBlcXVhbGl0eSBjb21wYXJpc29ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV07XG4gIGlmICghKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGVxKG9ialZhbHVlLCB2YWx1ZSkpIHx8XG4gICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCAmJiAhKGtleSBpbiBvYmplY3QpKSkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgdmFsdWUpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzaWduVmFsdWU7XG4iLCJ2YXIgZXEgPSByZXF1aXJlKCcuL2VxJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIGBrZXlgIGlzIGZvdW5kIGluIGBhcnJheWAgb2Yga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0ga2V5IFRoZSBrZXkgdG8gc2VhcmNoIGZvci5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGFzc29jSW5kZXhPZihhcnJheSwga2V5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGlmIChlcShhcnJheVtsZW5ndGhdWzBdLCBrZXkpKSB7XG4gICAgICByZXR1cm4gbGVuZ3RoO1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYXNzb2NJbmRleE9mO1xuIiwidmFyIGNvcHlPYmplY3QgPSByZXF1aXJlKCcuL19jb3B5T2JqZWN0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmFzc2lnbmAgd2l0aG91dCBzdXBwb3J0IGZvciBtdWx0aXBsZSBzb3VyY2VzXG4gKiBvciBgY3VzdG9taXplcmAgZnVuY3Rpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUFzc2lnbjtcbiIsInZhciBjb3B5T2JqZWN0ID0gcmVxdWlyZSgnLi9fY29weU9iamVjdCcpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQXNzaWduSW47XG4iLCJ2YXIgZGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL19kZWZpbmVQcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBhc3NpZ25WYWx1ZWAgYW5kIGBhc3NpZ25NZXJnZVZhbHVlYCB3aXRob3V0XG4gKiB2YWx1ZSBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYmFzZUFzc2lnblZhbHVlKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICBpZiAoa2V5ID09ICdfX3Byb3RvX18nICYmIGRlZmluZVByb3BlcnR5KSB7XG4gICAgZGVmaW5lUHJvcGVydHkob2JqZWN0LCBrZXksIHtcbiAgICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICAgJ2VudW1lcmFibGUnOiB0cnVlLFxuICAgICAgJ3ZhbHVlJzogdmFsdWUsXG4gICAgICAnd3JpdGFibGUnOiB0cnVlXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VBc3NpZ25WYWx1ZTtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgYXJyYXlFYWNoID0gcmVxdWlyZSgnLi9fYXJyYXlFYWNoJyksXG4gICAgYXNzaWduVmFsdWUgPSByZXF1aXJlKCcuL19hc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VBc3NpZ24gPSByZXF1aXJlKCcuL19iYXNlQXNzaWduJyksXG4gICAgYmFzZUFzc2lnbkluID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnbkluJyksXG4gICAgY2xvbmVCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUJ1ZmZlcicpLFxuICAgIGNvcHlBcnJheSA9IHJlcXVpcmUoJy4vX2NvcHlBcnJheScpLFxuICAgIGNvcHlTeW1ib2xzID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHMnKSxcbiAgICBjb3B5U3ltYm9sc0luID0gcmVxdWlyZSgnLi9fY29weVN5bWJvbHNJbicpLFxuICAgIGdldEFsbEtleXMgPSByZXF1aXJlKCcuL19nZXRBbGxLZXlzJyksXG4gICAgZ2V0QWxsS2V5c0luID0gcmVxdWlyZSgnLi9fZ2V0QWxsS2V5c0luJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaW5pdENsb25lQXJyYXkgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVBcnJheScpLFxuICAgIGluaXRDbG9uZUJ5VGFnID0gcmVxdWlyZSgnLi9faW5pdENsb25lQnlUYWcnKSxcbiAgICBpbml0Q2xvbmVPYmplY3QgPSByZXF1aXJlKCcuL19pbml0Q2xvbmVPYmplY3QnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNNYXAgPSByZXF1aXJlKCcuL2lzTWFwJyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgaXNTZXQgPSByZXF1aXJlKCcuL2lzU2V0JyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIGNsb25pbmcuICovXG52YXIgQ0xPTkVfREVFUF9GTEFHID0gMSxcbiAgICBDTE9ORV9GTEFUX0ZMQUcgPSAyLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICBzeW1ib2xUYWcgPSAnW29iamVjdCBTeW1ib2xdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgc3VwcG9ydGVkIGJ5IGBfLmNsb25lYC4gKi9cbnZhciBjbG9uZWFibGVUYWdzID0ge307XG5jbG9uZWFibGVUYWdzW2FyZ3NUYWddID0gY2xvbmVhYmxlVGFnc1thcnJheVRhZ10gPVxuY2xvbmVhYmxlVGFnc1thcnJheUJ1ZmZlclRhZ10gPSBjbG9uZWFibGVUYWdzW2RhdGFWaWV3VGFnXSA9XG5jbG9uZWFibGVUYWdzW2Jvb2xUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRlVGFnXSA9XG5jbG9uZWFibGVUYWdzW2Zsb2F0MzJUYWddID0gY2xvbmVhYmxlVGFnc1tmbG9hdDY0VGFnXSA9XG5jbG9uZWFibGVUYWdzW2ludDhUYWddID0gY2xvbmVhYmxlVGFnc1tpbnQxNlRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQzMlRhZ10gPSBjbG9uZWFibGVUYWdzW21hcFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tudW1iZXJUYWddID0gY2xvbmVhYmxlVGFnc1tvYmplY3RUYWddID1cbmNsb25lYWJsZVRhZ3NbcmVnZXhwVGFnXSA9IGNsb25lYWJsZVRhZ3Nbc2V0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3N0cmluZ1RhZ10gPSBjbG9uZWFibGVUYWdzW3N5bWJvbFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50OFRhZ10gPSBjbG9uZWFibGVUYWdzW3VpbnQ4Q2xhbXBlZFRhZ10gPVxuY2xvbmVhYmxlVGFnc1t1aW50MTZUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbmNsb25lYWJsZVRhZ3NbZXJyb3JUYWddID0gY2xvbmVhYmxlVGFnc1tmdW5jVGFnXSA9XG5jbG9uZWFibGVUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uY2xvbmVgIGFuZCBgXy5jbG9uZURlZXBgIHdoaWNoIHRyYWNrc1xuICogdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBEZWVwIGNsb25lXG4gKiAgMiAtIEZsYXR0ZW4gaW5oZXJpdGVkIHByb3BlcnRpZXNcbiAqICA0IC0gQ2xvbmUgc3ltYm9sc1xuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY2xvbmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBba2V5XSBUaGUga2V5IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIHBhcmVudCBvYmplY3Qgb2YgYHZhbHVlYC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBhbmQgdGhlaXIgY2xvbmUgY291bnRlcnBhcnRzLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGNsb25lZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUNsb25lKHZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIG9iamVjdCwgc3RhY2spIHtcbiAgdmFyIHJlc3VsdCxcbiAgICAgIGlzRGVlcCA9IGJpdG1hc2sgJiBDTE9ORV9ERUVQX0ZMQUcsXG4gICAgICBpc0ZsYXQgPSBiaXRtYXNrICYgQ0xPTkVfRkxBVF9GTEFHLFxuICAgICAgaXNGdWxsID0gYml0bWFzayAmIENMT05FX1NZTUJPTFNfRkxBRztcblxuICBpZiAoY3VzdG9taXplcikge1xuICAgIHJlc3VsdCA9IG9iamVjdCA/IGN1c3RvbWl6ZXIodmFsdWUsIGtleSwgb2JqZWN0LCBzdGFjaykgOiBjdXN0b21pemVyKHZhbHVlKTtcbiAgfVxuICBpZiAocmVzdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciBpc0FyciA9IGlzQXJyYXkodmFsdWUpO1xuICBpZiAoaXNBcnIpIHtcbiAgICByZXN1bHQgPSBpbml0Q2xvbmVBcnJheSh2YWx1ZSk7XG4gICAgaWYgKCFpc0RlZXApIHtcbiAgICAgIHJldHVybiBjb3B5QXJyYXkodmFsdWUsIHJlc3VsdCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciB0YWcgPSBnZXRUYWcodmFsdWUpLFxuICAgICAgICBpc0Z1bmMgPSB0YWcgPT0gZnVuY1RhZyB8fCB0YWcgPT0gZ2VuVGFnO1xuXG4gICAgaWYgKGlzQnVmZmVyKHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGNsb25lQnVmZmVyKHZhbHVlLCBpc0RlZXApO1xuICAgIH1cbiAgICBpZiAodGFnID09IG9iamVjdFRhZyB8fCB0YWcgPT0gYXJnc1RhZyB8fCAoaXNGdW5jICYmICFvYmplY3QpKSB7XG4gICAgICByZXN1bHQgPSAoaXNGbGF0IHx8IGlzRnVuYykgPyB7fSA6IGluaXRDbG9uZU9iamVjdCh2YWx1ZSk7XG4gICAgICBpZiAoIWlzRGVlcCkge1xuICAgICAgICByZXR1cm4gaXNGbGF0XG4gICAgICAgICAgPyBjb3B5U3ltYm9sc0luKHZhbHVlLCBiYXNlQXNzaWduSW4ocmVzdWx0LCB2YWx1ZSkpXG4gICAgICAgICAgOiBjb3B5U3ltYm9scyh2YWx1ZSwgYmFzZUFzc2lnbihyZXN1bHQsIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghY2xvbmVhYmxlVGFnc1t0YWddKSB7XG4gICAgICAgIHJldHVybiBvYmplY3QgPyB2YWx1ZSA6IHt9O1xuICAgICAgfVxuICAgICAgcmVzdWx0ID0gaW5pdENsb25lQnlUYWcodmFsdWUsIHRhZywgaXNEZWVwKTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgZm9yIGNpcmN1bGFyIHJlZmVyZW5jZXMgYW5kIHJldHVybiBpdHMgY29ycmVzcG9uZGluZyBjbG9uZS5cbiAgc3RhY2sgfHwgKHN0YWNrID0gbmV3IFN0YWNrKTtcbiAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQodmFsdWUpO1xuICBpZiAoc3RhY2tlZCkge1xuICAgIHJldHVybiBzdGFja2VkO1xuICB9XG4gIHN0YWNrLnNldCh2YWx1ZSwgcmVzdWx0KTtcblxuICBpZiAoaXNTZXQodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSkge1xuICAgICAgcmVzdWx0LmFkZChiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN1YlZhbHVlLCB2YWx1ZSwgc3RhY2spKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmIChpc01hcCh2YWx1ZSkpIHtcbiAgICB2YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICAgIHJlc3VsdC5zZXQoa2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH1cblxuICB2YXIga2V5c0Z1bmMgPSBpc0Z1bGxcbiAgICA/IChpc0ZsYXQgPyBnZXRBbGxLZXlzSW4gOiBnZXRBbGxLZXlzKVxuICAgIDogKGlzRmxhdCA/IGtleXNJbiA6IGtleXMpO1xuXG4gIHZhciBwcm9wcyA9IGlzQXJyID8gdW5kZWZpbmVkIDoga2V5c0Z1bmModmFsdWUpO1xuICBhcnJheUVhY2gocHJvcHMgfHwgdmFsdWUsIGZ1bmN0aW9uKHN1YlZhbHVlLCBrZXkpIHtcbiAgICBpZiAocHJvcHMpIHtcbiAgICAgIGtleSA9IHN1YlZhbHVlO1xuICAgICAgc3ViVmFsdWUgPSB2YWx1ZVtrZXldO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBwb3B1bGF0ZSBjbG9uZSAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGFzc2lnblZhbHVlKHJlc3VsdCwga2V5LCBiYXNlQ2xvbmUoc3ViVmFsdWUsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGtleSwgdmFsdWUsIHN0YWNrKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VDbG9uZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0Q3JlYXRlID0gT2JqZWN0LmNyZWF0ZTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5jcmVhdGVgIHdpdGhvdXQgc3VwcG9ydCBmb3IgYXNzaWduaW5nXG4gKiBwcm9wZXJ0aWVzIHRvIHRoZSBjcmVhdGVkIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHByb3RvIFRoZSBvYmplY3QgdG8gaW5oZXJpdCBmcm9tLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xudmFyIGJhc2VDcmVhdGUgPSAoZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9uIG9iamVjdCgpIHt9XG4gIHJldHVybiBmdW5jdGlvbihwcm90bykge1xuICAgIGlmICghaXNPYmplY3QocHJvdG8pKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGlmIChvYmplY3RDcmVhdGUpIHtcbiAgICAgIHJldHVybiBvYmplY3RDcmVhdGUocHJvdG8pO1xuICAgIH1cbiAgICBvYmplY3QucHJvdG90eXBlID0gcHJvdG87XG4gICAgdmFyIHJlc3VsdCA9IG5ldyBvYmplY3Q7XG4gICAgb2JqZWN0LnByb3RvdHlwZSA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlQ3JlYXRlO1xuIiwidmFyIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgY3JlYXRlQmFzZUVhY2ggPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRWFjaCcpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvckVhY2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICovXG52YXIgYmFzZUVhY2ggPSBjcmVhdGVCYXNlRWFjaChiYXNlRm9yT3duKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRWFjaDtcbiIsInZhciBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBtZXRob2RzIGxpa2UgYF8ubWF4YCBhbmQgYF8ubWluYCB3aGljaCBhY2NlcHRzIGFcbiAqIGBjb21wYXJhdG9yYCB0byBkZXRlcm1pbmUgdGhlIGV4dHJlbXVtIHZhbHVlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGl0ZXJhdGVlIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvbXBhcmF0b3IgVGhlIGNvbXBhcmF0b3IgdXNlZCB0byBjb21wYXJlIHZhbHVlcy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBleHRyZW11bSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUV4dHJlbXVtKGFycmF5LCBpdGVyYXRlZSwgY29tcGFyYXRvcikge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgY3VycmVudCA9IGl0ZXJhdGVlKHZhbHVlKTtcblxuICAgIGlmIChjdXJyZW50ICE9IG51bGwgJiYgKGNvbXB1dGVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChjdXJyZW50ID09PSBjdXJyZW50ICYmICFpc1N5bWJvbChjdXJyZW50KSlcbiAgICAgICAgICA6IGNvbXBhcmF0b3IoY3VycmVudCwgY29tcHV0ZWQpXG4gICAgICAgICkpIHtcbiAgICAgIHZhciBjb21wdXRlZCA9IGN1cnJlbnQsXG4gICAgICAgICAgcmVzdWx0ID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUV4dHJlbXVtO1xuIiwidmFyIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5maWx0ZXJgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbHRlcihjb2xsZWN0aW9uLCBwcmVkaWNhdGUpIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwgaW5kZXgsIGNvbGxlY3Rpb24pIHtcbiAgICBpZiAocHJlZGljYXRlKHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbikpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGaWx0ZXI7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZpbmRJbmRleGAgYW5kIGBfLmZpbmRMYXN0SW5kZXhgIHdpdGhvdXRcbiAqIHN1cHBvcnQgZm9yIGl0ZXJhdGVlIHNob3J0aGFuZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgsIGZyb21SaWdodCkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaW5kZXggPSBmcm9tSW5kZXggKyAoZnJvbVJpZ2h0ID8gMSA6IC0xKTtcblxuICB3aGlsZSAoKGZyb21SaWdodCA/IGluZGV4LS0gOiArK2luZGV4IDwgbGVuZ3RoKSkge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpKSB7XG4gICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRmluZEluZGV4O1xuIiwidmFyIGFycmF5UHVzaCA9IHJlcXVpcmUoJy4vX2FycmF5UHVzaCcpLFxuICAgIGlzRmxhdHRlbmFibGUgPSByZXF1aXJlKCcuL19pc0ZsYXR0ZW5hYmxlJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmxhdHRlbmAgd2l0aCBzdXBwb3J0IGZvciByZXN0cmljdGluZyBmbGF0dGVuaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gZmxhdHRlbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBkZXB0aCBUaGUgbWF4aW11bSByZWN1cnNpb24gZGVwdGguXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtwcmVkaWNhdGU9aXNGbGF0dGVuYWJsZV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzU3RyaWN0XSBSZXN0cmljdCB0byB2YWx1ZXMgdGhhdCBwYXNzIGBwcmVkaWNhdGVgIGNoZWNrcy5cbiAqIEBwYXJhbSB7QXJyYXl9IFtyZXN1bHQ9W11dIFRoZSBpbml0aWFsIHJlc3VsdCB2YWx1ZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGZsYXR0ZW5lZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZUZsYXR0ZW4oYXJyYXksIGRlcHRoLCBwcmVkaWNhdGUsIGlzU3RyaWN0LCByZXN1bHQpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgcHJlZGljYXRlIHx8IChwcmVkaWNhdGUgPSBpc0ZsYXR0ZW5hYmxlKTtcbiAgcmVzdWx0IHx8IChyZXN1bHQgPSBbXSk7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKGRlcHRoID4gMCAmJiBwcmVkaWNhdGUodmFsdWUpKSB7XG4gICAgICBpZiAoZGVwdGggPiAxKSB7XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZsYXR0ZW4gYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgICAgIGJhc2VGbGF0dGVuKHZhbHVlLCBkZXB0aCAtIDEsIHByZWRpY2F0ZSwgaXNTdHJpY3QsIHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcnJheVB1c2gocmVzdWx0LCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaXNTdHJpY3QpIHtcbiAgICAgIHJlc3VsdFtyZXN1bHQubGVuZ3RoXSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VGbGF0dGVuO1xuIiwidmFyIGNyZWF0ZUJhc2VGb3IgPSByZXF1aXJlKCcuL19jcmVhdGVCYXNlRm9yJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGJhc2VGb3JPd25gIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYG9iamVjdGBcbiAqIHByb3BlcnRpZXMgcmV0dXJuZWQgYnkgYGtleXNGdW5jYCBhbmQgaW52b2tlcyBgaXRlcmF0ZWVgIGZvciBlYWNoIHByb3BlcnR5LlxuICogSXRlcmF0ZWUgZnVuY3Rpb25zIG1heSBleGl0IGl0ZXJhdGlvbiBlYXJseSBieSBleHBsaWNpdGx5IHJldHVybmluZyBgZmFsc2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG52YXIgYmFzZUZvciA9IGNyZWF0ZUJhc2VGb3IoKTtcblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlRm9yO1xuIiwidmFyIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmZvck93bmAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VGb3JPd24ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGJhc2VGb3Iob2JqZWN0LCBpdGVyYXRlZSwga2V5cyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUZvck93bjtcbiIsInZhciBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmdldGAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWZhdWx0IHZhbHVlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSByZXNvbHZlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldChvYmplY3QsIHBhdGgpIHtcbiAgcGF0aCA9IGNhc3RQYXRoKHBhdGgsIG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gMCxcbiAgICAgIGxlbmd0aCA9IHBhdGgubGVuZ3RoO1xuXG4gIHdoaWxlIChvYmplY3QgIT0gbnVsbCAmJiBpbmRleCA8IGxlbmd0aCkge1xuICAgIG9iamVjdCA9IG9iamVjdFt0b0tleShwYXRoW2luZGV4KytdKV07XG4gIH1cbiAgcmV0dXJuIChpbmRleCAmJiBpbmRleCA9PSBsZW5ndGgpID8gb2JqZWN0IDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXQ7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRBbGxLZXlzYCBhbmQgYGdldEFsbEtleXNJbmAgd2hpY2ggdXNlc1xuICogYGtleXNGdW5jYCBhbmQgYHN5bWJvbHNGdW5jYCB0byBnZXQgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kXG4gKiBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBrZXlzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBrZXlzIG9mIGBvYmplY3RgLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3ltYm9sc0Z1bmMgVGhlIGZ1bmN0aW9uIHRvIGdldCB0aGUgc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRBbGxLZXlzKG9iamVjdCwga2V5c0Z1bmMsIHN5bWJvbHNGdW5jKSB7XG4gIHZhciByZXN1bHQgPSBrZXlzRnVuYyhvYmplY3QpO1xuICByZXR1cm4gaXNBcnJheShvYmplY3QpID8gcmVzdWx0IDogYXJyYXlQdXNoKHJlc3VsdCwgc3ltYm9sc0Z1bmMob2JqZWN0KSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUdldEFsbEtleXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgZ2V0UmF3VGFnID0gcmVxdWlyZSgnLi9fZ2V0UmF3VGFnJyksXG4gICAgb2JqZWN0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19vYmplY3RUb1N0cmluZycpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcbiAgICB1bmRlZmluZWRUYWcgPSAnW29iamVjdCBVbmRlZmluZWRdJztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ltVG9TdHJpbmdUYWcgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldFRhZ2Agd2l0aG91dCBmYWxsYmFja3MgZm9yIGJ1Z2d5IGVudmlyb25tZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG5mdW5jdGlvbiBiYXNlR2V0VGFnKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRUYWcgOiBudWxsVGFnO1xuICB9XG4gIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZhbHVlKSlcbiAgICA/IGdldFJhd1RhZyh2YWx1ZSlcbiAgICA6IG9iamVjdFRvU3RyaW5nKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR2V0VGFnO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5ndGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGdyZWF0ZXIgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUd0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPiBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlR3Q7XG4iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmhhc2Agd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gW29iamVjdF0gVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBrZXkgVGhlIGtleSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUhhcyhvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUhhcztcbiIsIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaGFzSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgZGVlcCBwYXRocy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30ga2V5IFRoZSBrZXkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VIYXNJbihvYmplY3QsIGtleSkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYga2V5IGluIE9iamVjdChvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VIYXNJbjtcbiIsInZhciBiYXNlRmluZEluZGV4ID0gcmVxdWlyZSgnLi9fYmFzZUZpbmRJbmRleCcpLFxuICAgIGJhc2VJc05hTiA9IHJlcXVpcmUoJy4vX2Jhc2VJc05hTicpLFxuICAgIHN0cmljdEluZGV4T2YgPSByZXF1aXJlKCcuL19zdHJpY3RJbmRleE9mJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaW5kZXhPZmAgd2l0aG91dCBgZnJvbUluZGV4YCBib3VuZHMgY2hlY2tzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFRoZSBpbmRleCB0byBzZWFyY2ggZnJvbS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBtYXRjaGVkIHZhbHVlLCBlbHNlIGAtMWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWVcbiAgICA/IHN0cmljdEluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpXG4gICAgOiBiYXNlRmluZEluZGV4KGFycmF5LCBiYXNlSXNOYU4sIGZyb21JbmRleCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUluZGV4T2Y7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0FyZ3VtZW50cztcbiIsInZhciBiYXNlSXNFcXVhbERlZXAgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbERlZXAnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzRXF1YWxgIHdoaWNoIHN1cHBvcnRzIHBhcnRpYWwgY29tcGFyaXNvbnNcbiAqIGFuZCB0cmFja3MgdHJhdmVyc2VkIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0geyp9IG90aGVyIFRoZSBvdGhlciB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtib29sZWFufSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLlxuICogIDEgLSBVbm9yZGVyZWQgY29tcGFyaXNvblxuICogIDIgLSBQYXJ0aWFsIGNvbXBhcmlzb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBgdmFsdWVgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNFcXVhbCh2YWx1ZSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmICh2YWx1ZSA9PT0gb3RoZXIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodmFsdWUgPT0gbnVsbCB8fCBvdGhlciA9PSBudWxsIHx8ICghaXNPYmplY3RMaWtlKHZhbHVlKSAmJiAhaXNPYmplY3RMaWtlKG90aGVyKSkpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IHZhbHVlICYmIG90aGVyICE9PSBvdGhlcjtcbiAgfVxuICByZXR1cm4gYmFzZUlzRXF1YWxEZWVwKHZhbHVlLCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgYmFzZUlzRXF1YWwsIHN0YWNrKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNFcXVhbDtcbiIsInZhciBTdGFjayA9IHJlcXVpcmUoJy4vX1N0YWNrJyksXG4gICAgZXF1YWxBcnJheXMgPSByZXF1aXJlKCcuL19lcXVhbEFycmF5cycpLFxuICAgIGVxdWFsQnlUYWcgPSByZXF1aXJlKCcuL19lcXVhbEJ5VGFnJyksXG4gICAgZXF1YWxPYmplY3RzID0gcmVxdWlyZSgnLi9fZXF1YWxPYmplY3RzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbGAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBjb21wYXJpc29ucyBhbmQgdHJhY2tzIHRyYXZlcnNlZCBvYmplY3RzIGVuYWJsaW5nIG9iamVjdHMgd2l0aCBjaXJjdWxhclxuICogcmVmZXJlbmNlcyB0byBiZSBjb21wYXJlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIGBvYmplY3RgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG9iamVjdHMgYXJlIGVxdWl2YWxlbnQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRXF1YWxEZWVwKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIG9iaklzQXJyID0gaXNBcnJheShvYmplY3QpLFxuICAgICAgb3RoSXNBcnIgPSBpc0FycmF5KG90aGVyKSxcbiAgICAgIG9ialRhZyA9IG9iaklzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob2JqZWN0KSxcbiAgICAgIG90aFRhZyA9IG90aElzQXJyID8gYXJyYXlUYWcgOiBnZXRUYWcob3RoZXIpO1xuXG4gIG9ialRhZyA9IG9ialRhZyA9PSBhcmdzVGFnID8gb2JqZWN0VGFnIDogb2JqVGFnO1xuICBvdGhUYWcgPSBvdGhUYWcgPT0gYXJnc1RhZyA/IG9iamVjdFRhZyA6IG90aFRhZztcblxuICB2YXIgb2JqSXNPYmogPSBvYmpUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgb3RoSXNPYmogPSBvdGhUYWcgPT0gb2JqZWN0VGFnLFxuICAgICAgaXNTYW1lVGFnID0gb2JqVGFnID09IG90aFRhZztcblxuICBpZiAoaXNTYW1lVGFnICYmIGlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICBpZiAoIWlzQnVmZmVyKG90aGVyKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBvYmpJc0FyciA9IHRydWU7XG4gICAgb2JqSXNPYmogPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNTYW1lVGFnICYmICFvYmpJc09iaikge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgcmV0dXJuIChvYmpJc0FyciB8fCBpc1R5cGVkQXJyYXkob2JqZWN0KSlcbiAgICAgID8gZXF1YWxBcnJheXMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaylcbiAgICAgIDogZXF1YWxCeVRhZyhvYmplY3QsIG90aGVyLCBvYmpUYWcsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xuICB9XG4gIGlmICghKGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRykpIHtcbiAgICB2YXIgb2JqSXNXcmFwcGVkID0gb2JqSXNPYmogJiYgaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsICdfX3dyYXBwZWRfXycpLFxuICAgICAgICBvdGhJc1dyYXBwZWQgPSBvdGhJc09iaiAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKG90aGVyLCAnX193cmFwcGVkX18nKTtcblxuICAgIGlmIChvYmpJc1dyYXBwZWQgfHwgb3RoSXNXcmFwcGVkKSB7XG4gICAgICB2YXIgb2JqVW53cmFwcGVkID0gb2JqSXNXcmFwcGVkID8gb2JqZWN0LnZhbHVlKCkgOiBvYmplY3QsXG4gICAgICAgICAgb3RoVW53cmFwcGVkID0gb3RoSXNXcmFwcGVkID8gb3RoZXIudmFsdWUoKSA6IG90aGVyO1xuXG4gICAgICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICAgICAgcmV0dXJuIGVxdWFsRnVuYyhvYmpVbndyYXBwZWQsIG90aFVud3JhcHBlZCwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spO1xuICAgIH1cbiAgfVxuICBpZiAoIWlzU2FtZVRhZykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBzdGFjayB8fCAoc3RhY2sgPSBuZXcgU3RhY2spO1xuICByZXR1cm4gZXF1YWxPYmplY3RzKG9iamVjdCwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc0VxdWFsRGVlcDtcbiIsInZhciBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNNYXBgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc01hcCh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBnZXRUYWcodmFsdWUpID09IG1hcFRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNNYXA7XG4iLCJ2YXIgU3RhY2sgPSByZXF1aXJlKCcuL19TdGFjaycpLFxuICAgIGJhc2VJc0VxdWFsID0gcmVxdWlyZSgnLi9fYmFzZUlzRXF1YWwnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxLFxuICAgIENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcgPSAyO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWF0Y2hgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHBhcmFtIHtBcnJheX0gbWF0Y2hEYXRhIFRoZSBwcm9wZXJ0eSBuYW1lcywgdmFsdWVzLCBhbmQgY29tcGFyZSBmbGFncyB0byBtYXRjaC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBvYmplY3RgIGlzIGEgbWF0Y2gsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSwgY3VzdG9taXplcikge1xuICB2YXIgaW5kZXggPSBtYXRjaERhdGEubGVuZ3RoLFxuICAgICAgbGVuZ3RoID0gaW5kZXgsXG4gICAgICBub0N1c3RvbWl6ZXIgPSAhY3VzdG9taXplcjtcblxuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gIWxlbmd0aDtcbiAgfVxuICBvYmplY3QgPSBPYmplY3Qob2JqZWN0KTtcbiAgd2hpbGUgKGluZGV4LS0pIHtcbiAgICB2YXIgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgaWYgKChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSlcbiAgICAgICAgICA/IGRhdGFbMV0gIT09IG9iamVjdFtkYXRhWzBdXVxuICAgICAgICAgIDogIShkYXRhWzBdIGluIG9iamVjdClcbiAgICAgICAgKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgZGF0YSA9IG1hdGNoRGF0YVtpbmRleF07XG4gICAgdmFyIGtleSA9IGRhdGFbMF0sXG4gICAgICAgIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIHNyY1ZhbHVlID0gZGF0YVsxXTtcblxuICAgIGlmIChub0N1c3RvbWl6ZXIgJiYgZGF0YVsyXSkge1xuICAgICAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBzdGFjayA9IG5ldyBTdGFjaztcbiAgICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICAgIHZhciByZXN1bHQgPSBjdXN0b21pemVyKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QsIHNvdXJjZSwgc3RhY2spO1xuICAgICAgfVxuICAgICAgaWYgKCEocmVzdWx0ID09PSB1bmRlZmluZWRcbiAgICAgICAgICAgID8gYmFzZUlzRXF1YWwoc3JjVmFsdWUsIG9ialZhbHVlLCBDT01QQVJFX1BBUlRJQUxfRkxBRyB8IENPTVBBUkVfVU5PUkRFUkVEX0ZMQUcsIGN1c3RvbWl6ZXIsIHN0YWNrKVxuICAgICAgICAgICAgOiByZXN1bHRcbiAgICAgICAgICApKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzTWF0Y2g7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmFOYCB3aXRob3V0IHN1cHBvcnQgZm9yIG51bWJlciBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGBOYU5gLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hTih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT09IHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc05hTjtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNNYXNrZWQgPSByZXF1aXJlKCcuL19pc01hc2tlZCcpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIHRvU291cmNlID0gcmVxdWlyZSgnLi9fdG9Tb3VyY2UnKTtcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlSXNOYXRpdmU7XG4iLCJ2YXIgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZUlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFyZ3NUYWcgPSAnW29iamVjdCBBcmd1bWVudHNdJyxcbiAgICBhcnJheVRhZyA9ICdbb2JqZWN0IEFycmF5XScsXG4gICAgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIGVycm9yVGFnID0gJ1tvYmplY3QgRXJyb3JdJyxcbiAgICBmdW5jVGFnID0gJ1tvYmplY3QgRnVuY3Rpb25dJyxcbiAgICBtYXBUYWcgPSAnW29iamVjdCBNYXBdJyxcbiAgICBudW1iZXJUYWcgPSAnW29iamVjdCBOdW1iZXJdJyxcbiAgICBvYmplY3RUYWcgPSAnW29iamVjdCBPYmplY3RdJyxcbiAgICByZWdleHBUYWcgPSAnW29iamVjdCBSZWdFeHBdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqIFVzZWQgdG8gaWRlbnRpZnkgYHRvU3RyaW5nVGFnYCB2YWx1ZXMgb2YgdHlwZWQgYXJyYXlzLiAqL1xudmFyIHR5cGVkQXJyYXlUYWdzID0ge307XG50eXBlZEFycmF5VGFnc1tmbG9hdDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Zsb2F0NjRUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDhUYWddID0gdHlwZWRBcnJheVRhZ3NbaW50MTZUYWddID1cbnR5cGVkQXJyYXlUYWdzW2ludDMyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQ4VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50OENsYW1wZWRUYWddID0gdHlwZWRBcnJheVRhZ3NbdWludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1t1aW50MzJUYWddID0gdHJ1ZTtcbnR5cGVkQXJyYXlUYWdzW2FyZ3NUYWddID0gdHlwZWRBcnJheVRhZ3NbYXJyYXlUYWddID1cbnR5cGVkQXJyYXlUYWdzW2FycmF5QnVmZmVyVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Jvb2xUYWddID1cbnR5cGVkQXJyYXlUYWdzW2RhdGFWaWV3VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2RhdGVUYWddID1cbnR5cGVkQXJyYXlUYWdzW2Vycm9yVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2Z1bmNUYWddID1cbnR5cGVkQXJyYXlUYWdzW21hcFRhZ10gPSB0eXBlZEFycmF5VGFnc1tudW1iZXJUYWddID1cbnR5cGVkQXJyYXlUYWdzW29iamVjdFRhZ10gPSB0eXBlZEFycmF5VGFnc1tyZWdleHBUYWddID1cbnR5cGVkQXJyYXlUYWdzW3NldFRhZ10gPSB0eXBlZEFycmF5VGFnc1tzdHJpbmdUYWddID1cbnR5cGVkQXJyYXlUYWdzW3dlYWtNYXBUYWddID0gZmFsc2U7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNUeXBlZEFycmF5YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHR5cGVkIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc1R5cGVkQXJyYXkodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiZcbiAgICBpc0xlbmd0aCh2YWx1ZS5sZW5ndGgpICYmICEhdHlwZWRBcnJheVRhZ3NbYmFzZUdldFRhZyh2YWx1ZSldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJc1R5cGVkQXJyYXk7XG4iLCJ2YXIgYmFzZU1hdGNoZXMgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlcycpLFxuICAgIGJhc2VNYXRjaGVzUHJvcGVydHkgPSByZXF1aXJlKCcuL19iYXNlTWF0Y2hlc1Byb3BlcnR5JyksXG4gICAgaWRlbnRpdHkgPSByZXF1aXJlKCcuL2lkZW50aXR5JyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIHByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLml0ZXJhdGVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSBbdmFsdWU9Xy5pZGVudGl0eV0gVGhlIHZhbHVlIHRvIGNvbnZlcnQgdG8gYW4gaXRlcmF0ZWUuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGl0ZXJhdGVlLlxuICovXG5mdW5jdGlvbiBiYXNlSXRlcmF0ZWUodmFsdWUpIHtcbiAgLy8gRG9uJ3Qgc3RvcmUgdGhlIGB0eXBlb2ZgIHJlc3VsdCBpbiBhIHZhcmlhYmxlIHRvIGF2b2lkIGEgSklUIGJ1ZyBpbiBTYWZhcmkgOS5cbiAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTYwMzQgZm9yIG1vcmUgZGV0YWlscy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGlkZW50aXR5O1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gYmFzZU1hdGNoZXNQcm9wZXJ0eSh2YWx1ZVswXSwgdmFsdWVbMV0pXG4gICAgICA6IGJhc2VNYXRjaGVzKHZhbHVlKTtcbiAgfVxuICByZXR1cm4gcHJvcGVydHkodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VJdGVyYXRlZTtcbiIsInZhciBpc1Byb3RvdHlwZSA9IHJlcXVpcmUoJy4vX2lzUHJvdG90eXBlJyksXG4gICAgbmF0aXZlS2V5cyA9IHJlcXVpcmUoJy4vX25hdGl2ZUtleXMnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzKG9iamVjdCkge1xuICBpZiAoIWlzUHJvdG90eXBlKG9iamVjdCkpIHtcbiAgICByZXR1cm4gbmF0aXZlS2V5cyhvYmplY3QpO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgZm9yICh2YXIga2V5IGluIE9iamVjdChvYmplY3QpKSB7XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpICYmIGtleSAhPSAnY29uc3RydWN0b3InKSB7XG4gICAgICByZXN1bHQucHVzaChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VLZXlzO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBuYXRpdmVLZXlzSW4gPSByZXF1aXJlKCcuL19uYXRpdmVLZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5rZXlzSW5gIHdoaWNoIGRvZXNuJ3QgdHJlYXQgc3BhcnNlIGFycmF5cyBhcyBkZW5zZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gYmFzZUtleXNJbihvYmplY3QpIHtcbiAgaWYgKCFpc09iamVjdChvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXNJbihvYmplY3QpO1xuICB9XG4gIHZhciBpc1Byb3RvID0gaXNQcm90b3R5cGUob2JqZWN0KSxcbiAgICAgIHJlc3VsdCA9IFtdO1xuXG4gIGZvciAodmFyIGtleSBpbiBvYmplY3QpIHtcbiAgICBpZiAoIShrZXkgPT0gJ2NvbnN0cnVjdG9yJyAmJiAoaXNQcm90byB8fCAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlS2V5c0luO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5sdGAgd2hpY2ggZG9lc24ndCBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGxlc3MgdGhhbiBgb3RoZXJgLFxuICogIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUx0KHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPCBvdGhlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTHQ7XG4iLCJ2YXIgYmFzZUVhY2ggPSByZXF1aXJlKCcuL19iYXNlRWFjaCcpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLm1hcGAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgbWFwcGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiBiYXNlTWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gaXNBcnJheUxpa2UoY29sbGVjdGlvbikgPyBBcnJheShjb2xsZWN0aW9uLmxlbmd0aCkgOiBbXTtcblxuICBiYXNlRWFjaChjb2xsZWN0aW9uLCBmdW5jdGlvbih2YWx1ZSwga2V5LCBjb2xsZWN0aW9uKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gaXRlcmF0ZWUodmFsdWUsIGtleSwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VNYXA7XG4iLCJ2YXIgYmFzZUlzTWF0Y2ggPSByZXF1aXJlKCcuL19iYXNlSXNNYXRjaCcpLFxuICAgIGdldE1hdGNoRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hdGNoRGF0YScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzYCB3aGljaCBkb2Vzbid0IGNsb25lIGBzb3VyY2VgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3Qgb2YgcHJvcGVydHkgdmFsdWVzIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXMoc291cmNlKSB7XG4gIHZhciBtYXRjaERhdGEgPSBnZXRNYXRjaERhdGEoc291cmNlKTtcbiAgaWYgKG1hdGNoRGF0YS5sZW5ndGggPT0gMSAmJiBtYXRjaERhdGFbMF1bMl0pIHtcbiAgICByZXR1cm4gbWF0Y2hlc1N0cmljdENvbXBhcmFibGUobWF0Y2hEYXRhWzBdWzBdLCBtYXRjaERhdGFbMF1bMV0pO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09PSBzb3VyY2UgfHwgYmFzZUlzTWF0Y2gob2JqZWN0LCBzb3VyY2UsIG1hdGNoRGF0YSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU1hdGNoZXM7XG4iLCJ2YXIgYmFzZUlzRXF1YWwgPSByZXF1aXJlKCcuL19iYXNlSXNFcXVhbCcpLFxuICAgIGdldCA9IHJlcXVpcmUoJy4vZ2V0JyksXG4gICAgaGFzSW4gPSByZXF1aXJlKCcuL2hhc0luJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIGlzU3RyaWN0Q29tcGFyYWJsZSA9IHJlcXVpcmUoJy4vX2lzU3RyaWN0Q29tcGFyYWJsZScpLFxuICAgIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlID0gcmVxdWlyZSgnLi9fbWF0Y2hlc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgYml0bWFza3MgZm9yIHZhbHVlIGNvbXBhcmlzb25zLiAqL1xudmFyIENPTVBBUkVfUEFSVElBTF9GTEFHID0gMSxcbiAgICBDT01QQVJFX1VOT1JERVJFRF9GTEFHID0gMjtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5tYXRjaGVzUHJvcGVydHlgIHdoaWNoIGRvZXNuJ3QgY2xvbmUgYHNyY1ZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gc3JjVmFsdWUgVGhlIHZhbHVlIHRvIG1hdGNoLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgc3BlYyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZU1hdGNoZXNQcm9wZXJ0eShwYXRoLCBzcmNWYWx1ZSkge1xuICBpZiAoaXNLZXkocGF0aCkgJiYgaXNTdHJpY3RDb21wYXJhYmxlKHNyY1ZhbHVlKSkge1xuICAgIHJldHVybiBtYXRjaGVzU3RyaWN0Q29tcGFyYWJsZSh0b0tleShwYXRoKSwgc3JjVmFsdWUpO1xuICB9XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QpIHtcbiAgICB2YXIgb2JqVmFsdWUgPSBnZXQob2JqZWN0LCBwYXRoKTtcbiAgICByZXR1cm4gKG9ialZhbHVlID09PSB1bmRlZmluZWQgJiYgb2JqVmFsdWUgPT09IHNyY1ZhbHVlKVxuICAgICAgPyBoYXNJbihvYmplY3QsIHBhdGgpXG4gICAgICA6IGJhc2VJc0VxdWFsKHNyY1ZhbHVlLCBvYmpWYWx1ZSwgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgfCBDT01QQVJFX1VOT1JERVJFRF9GTEFHKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWF0Y2hlc1Byb3BlcnR5O1xuIiwidmFyIFN0YWNrID0gcmVxdWlyZSgnLi9fU3RhY2snKSxcbiAgICBhc3NpZ25NZXJnZVZhbHVlID0gcmVxdWlyZSgnLi9fYXNzaWduTWVyZ2VWYWx1ZScpLFxuICAgIGJhc2VGb3IgPSByZXF1aXJlKCcuL19iYXNlRm9yJyksXG4gICAgYmFzZU1lcmdlRGVlcCA9IHJlcXVpcmUoJy4vX2Jhc2VNZXJnZURlZXAnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpLFxuICAgIHNhZmVHZXQgPSByZXF1aXJlKCcuL19zYWZlR2V0Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ubWVyZ2VgIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbY3VzdG9taXplcl0gVGhlIGZ1bmN0aW9uIHRvIGN1c3RvbWl6ZSBtZXJnZWQgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IFtzdGFja10gVHJhY2tzIHRyYXZlcnNlZCBzb3VyY2UgdmFsdWVzIGFuZCB0aGVpciBtZXJnZWRcbiAqICBjb3VudGVycGFydHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VNZXJnZShvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIGlmIChvYmplY3QgPT09IHNvdXJjZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBiYXNlRm9yKHNvdXJjZSwgZnVuY3Rpb24oc3JjVmFsdWUsIGtleSkge1xuICAgIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gICAgaWYgKGlzT2JqZWN0KHNyY1ZhbHVlKSkge1xuICAgICAgYmFzZU1lcmdlRGVlcChvYmplY3QsIHNvdXJjZSwga2V5LCBzcmNJbmRleCwgYmFzZU1lcmdlLCBjdXN0b21pemVyLCBzdGFjayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdmFyIG5ld1ZhbHVlID0gY3VzdG9taXplclxuICAgICAgICA/IGN1c3RvbWl6ZXIoc2FmZUdldChvYmplY3QsIGtleSksIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgICAgfVxuICAgICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfSwga2V5c0luKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2U7XG4iLCJ2YXIgYXNzaWduTWVyZ2VWYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnbk1lcmdlVmFsdWUnKSxcbiAgICBjbG9uZUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQnVmZmVyJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5JyksXG4gICAgY29weUFycmF5ID0gcmVxdWlyZSgnLi9fY29weUFycmF5JyksXG4gICAgaW5pdENsb25lT2JqZWN0ID0gcmVxdWlyZSgnLi9faW5pdENsb25lT2JqZWN0JyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlT2JqZWN0ID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZU9iamVjdCcpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzRnVuY3Rpb24gPSByZXF1aXJlKCcuL2lzRnVuY3Rpb24nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi9pc1BsYWluT2JqZWN0JyksXG4gICAgaXNUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9pc1R5cGVkQXJyYXknKSxcbiAgICBzYWZlR2V0ID0gcmVxdWlyZSgnLi9fc2FmZUdldCcpLFxuICAgIHRvUGxhaW5PYmplY3QgPSByZXF1aXJlKCcuL3RvUGxhaW5PYmplY3QnKTtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VNZXJnZWAgZm9yIGFycmF5cyBhbmQgb2JqZWN0cyB3aGljaCBwZXJmb3Jtc1xuICogZGVlcCBtZXJnZXMgYW5kIHRyYWNrcyB0cmF2ZXJzZWQgb2JqZWN0cyBlbmFibGluZyBvYmplY3RzIHdpdGggY2lyY3VsYXJcbiAqIHJlZmVyZW5jZXMgdG8gYmUgbWVyZ2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBkZXN0aW5hdGlvbiBvYmplY3QuXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBtZXJnZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcmNJbmRleCBUaGUgaW5kZXggb2YgYHNvdXJjZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBtZXJnZUZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1lcmdlIHZhbHVlcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGFzc2lnbmVkIHZhbHVlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbc3RhY2tdIFRyYWNrcyB0cmF2ZXJzZWQgc291cmNlIHZhbHVlcyBhbmQgdGhlaXIgbWVyZ2VkXG4gKiAgY291bnRlcnBhcnRzLlxuICovXG5mdW5jdGlvbiBiYXNlTWVyZ2VEZWVwKG9iamVjdCwgc291cmNlLCBrZXksIHNyY0luZGV4LCBtZXJnZUZ1bmMsIGN1c3RvbWl6ZXIsIHN0YWNrKSB7XG4gIHZhciBvYmpWYWx1ZSA9IHNhZmVHZXQob2JqZWN0LCBrZXkpLFxuICAgICAgc3JjVmFsdWUgPSBzYWZlR2V0KHNvdXJjZSwga2V5KSxcbiAgICAgIHN0YWNrZWQgPSBzdGFjay5nZXQoc3JjVmFsdWUpO1xuXG4gIGlmIChzdGFja2VkKSB7XG4gICAgYXNzaWduTWVyZ2VWYWx1ZShvYmplY3QsIGtleSwgc3RhY2tlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICA/IGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlLCAoa2V5ICsgJycpLCBvYmplY3QsIHNvdXJjZSwgc3RhY2spXG4gICAgOiB1bmRlZmluZWQ7XG5cbiAgdmFyIGlzQ29tbW9uID0gbmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcblxuICBpZiAoaXNDb21tb24pIHtcbiAgICB2YXIgaXNBcnIgPSBpc0FycmF5KHNyY1ZhbHVlKSxcbiAgICAgICAgaXNCdWZmID0gIWlzQXJyICYmIGlzQnVmZmVyKHNyY1ZhbHVlKSxcbiAgICAgICAgaXNUeXBlZCA9ICFpc0FyciAmJiAhaXNCdWZmICYmIGlzVHlwZWRBcnJheShzcmNWYWx1ZSk7XG5cbiAgICBuZXdWYWx1ZSA9IHNyY1ZhbHVlO1xuICAgIGlmIChpc0FyciB8fCBpc0J1ZmYgfHwgaXNUeXBlZCkge1xuICAgICAgaWYgKGlzQXJyYXkob2JqVmFsdWUpKSB7XG4gICAgICAgIG5ld1ZhbHVlID0gb2JqVmFsdWU7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChpc0FycmF5TGlrZU9iamVjdChvYmpWYWx1ZSkpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBjb3B5QXJyYXkob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNCdWZmKSB7XG4gICAgICAgIGlzQ29tbW9uID0gZmFsc2U7XG4gICAgICAgIG5ld1ZhbHVlID0gY2xvbmVCdWZmZXIoc3JjVmFsdWUsIHRydWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoaXNUeXBlZCkge1xuICAgICAgICBpc0NvbW1vbiA9IGZhbHNlO1xuICAgICAgICBuZXdWYWx1ZSA9IGNsb25lVHlwZWRBcnJheShzcmNWYWx1ZSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgbmV3VmFsdWUgPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoaXNQbGFpbk9iamVjdChzcmNWYWx1ZSkgfHwgaXNBcmd1bWVudHMoc3JjVmFsdWUpKSB7XG4gICAgICBuZXdWYWx1ZSA9IG9ialZhbHVlO1xuICAgICAgaWYgKGlzQXJndW1lbnRzKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IHRvUGxhaW5PYmplY3Qob2JqVmFsdWUpO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIWlzT2JqZWN0KG9ialZhbHVlKSB8fCBpc0Z1bmN0aW9uKG9ialZhbHVlKSkge1xuICAgICAgICBuZXdWYWx1ZSA9IGluaXRDbG9uZU9iamVjdChzcmNWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgaWYgKGlzQ29tbW9uKSB7XG4gICAgLy8gUmVjdXJzaXZlbHkgbWVyZ2Ugb2JqZWN0cyBhbmQgYXJyYXlzIChzdXNjZXB0aWJsZSB0byBjYWxsIHN0YWNrIGxpbWl0cykuXG4gICAgc3RhY2suc2V0KHNyY1ZhbHVlLCBuZXdWYWx1ZSk7XG4gICAgbWVyZ2VGdW5jKG5ld1ZhbHVlLCBzcmNWYWx1ZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIsIHN0YWNrKTtcbiAgICBzdGFja1snZGVsZXRlJ10oc3JjVmFsdWUpO1xuICB9XG4gIGFzc2lnbk1lcmdlVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlTWVyZ2VEZWVwO1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGJhc2VNYXAgPSByZXF1aXJlKCcuL19iYXNlTWFwJyksXG4gICAgYmFzZVNvcnRCeSA9IHJlcXVpcmUoJy4vX2Jhc2VTb3J0QnknKSxcbiAgICBiYXNlVW5hcnkgPSByZXF1aXJlKCcuL19iYXNlVW5hcnknKSxcbiAgICBjb21wYXJlTXVsdGlwbGUgPSByZXF1aXJlKCcuL19jb21wYXJlTXVsdGlwbGUnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ub3JkZXJCeWAgd2l0aG91dCBwYXJhbSBndWFyZHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb25bXXxPYmplY3RbXXxzdHJpbmdbXX0gaXRlcmF0ZWVzIFRoZSBpdGVyYXRlZXMgdG8gc29ydCBieS5cbiAqIEBwYXJhbSB7c3RyaW5nW119IG9yZGVycyBUaGUgc29ydCBvcmRlcnMgb2YgYGl0ZXJhdGVlc2AuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGl0ZXJhdGVlcywgb3JkZXJzKSB7XG4gIGlmIChpdGVyYXRlZXMubGVuZ3RoKSB7XG4gICAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBmdW5jdGlvbihpdGVyYXRlZSkge1xuICAgICAgaWYgKGlzQXJyYXkoaXRlcmF0ZWUpKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiBiYXNlR2V0KHZhbHVlLCBpdGVyYXRlZS5sZW5ndGggPT09IDEgPyBpdGVyYXRlZVswXSA6IGl0ZXJhdGVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGl0ZXJhdGVlO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGl0ZXJhdGVlcyA9IFtpZGVudGl0eV07XG4gIH1cblxuICB2YXIgaW5kZXggPSAtMTtcbiAgaXRlcmF0ZWVzID0gYXJyYXlNYXAoaXRlcmF0ZWVzLCBiYXNlVW5hcnkoYmFzZUl0ZXJhdGVlKSk7XG5cbiAgdmFyIHJlc3VsdCA9IGJhc2VNYXAoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGtleSwgY29sbGVjdGlvbikge1xuICAgIHZhciBjcml0ZXJpYSA9IGFycmF5TWFwKGl0ZXJhdGVlcywgZnVuY3Rpb24oaXRlcmF0ZWUpIHtcbiAgICAgIHJldHVybiBpdGVyYXRlZSh2YWx1ZSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHsgJ2NyaXRlcmlhJzogY3JpdGVyaWEsICdpbmRleCc6ICsraW5kZXgsICd2YWx1ZSc6IHZhbHVlIH07XG4gIH0pO1xuXG4gIHJldHVybiBiYXNlU29ydEJ5KHJlc3VsdCwgZnVuY3Rpb24ob2JqZWN0LCBvdGhlcikge1xuICAgIHJldHVybiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZU9yZGVyQnk7XG4iLCJ2YXIgYmFzZVBpY2tCeSA9IHJlcXVpcmUoJy4vX2Jhc2VQaWNrQnknKSxcbiAgICBoYXNJbiA9IHJlcXVpcmUoJy4vaGFzSW4nKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5waWNrYCB3aXRob3V0IHN1cHBvcnQgZm9yIGluZGl2aWR1YWxcbiAqIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBiYXNlUGljayhvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBiYXNlUGlja0J5KG9iamVjdCwgcGF0aHMsIGZ1bmN0aW9uKHZhbHVlLCBwYXRoKSB7XG4gICAgcmV0dXJuIGhhc0luKG9iamVjdCwgcGF0aCk7XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrO1xuIiwidmFyIGJhc2VHZXQgPSByZXF1aXJlKCcuL19iYXNlR2V0JyksXG4gICAgYmFzZVNldCA9IHJlcXVpcmUoJy4vX2Jhc2VTZXQnKSxcbiAgICBjYXN0UGF0aCA9IHJlcXVpcmUoJy4vX2Nhc3RQYXRoJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgIGBfLnBpY2tCeWAgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBzb3VyY2Ugb2JqZWN0LlxuICogQHBhcmFtIHtzdHJpbmdbXX0gcGF0aHMgVGhlIHByb3BlcnR5IHBhdGhzIHRvIHBpY2suXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIHByb3BlcnR5LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVBpY2tCeShvYmplY3QsIHBhdGhzLCBwcmVkaWNhdGUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBwYXRocy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBwYXRoID0gcGF0aHNbaW5kZXhdLFxuICAgICAgICB2YWx1ZSA9IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcblxuICAgIGlmIChwcmVkaWNhdGUodmFsdWUsIHBhdGgpKSB7XG4gICAgICBiYXNlU2V0KHJlc3VsdCwgY2FzdFBhdGgocGF0aCwgb2JqZWN0KSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQaWNrQnk7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnByb3BlcnR5YCB3aXRob3V0IHN1cHBvcnQgZm9yIGRlZXAgcGF0aHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eShrZXkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VQcm9wZXJ0eTtcbiIsInZhciBiYXNlR2V0ID0gcmVxdWlyZSgnLi9fYmFzZUdldCcpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVByb3BlcnR5YCB3aGljaCBzdXBwb3J0cyBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYWNjZXNzb3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGJhc2VQcm9wZXJ0eURlZXAocGF0aCkge1xuICByZXR1cm4gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUHJvcGVydHlEZWVwO1xuIiwiLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUNlaWwgPSBNYXRoLmNlaWwsXG4gICAgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucmFuZ2VgIGFuZCBgXy5yYW5nZVJpZ2h0YCB3aGljaCBkb2Vzbid0XG4gKiBjb2VyY2UgYXJndW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RlcCBUaGUgdmFsdWUgdG8gaW5jcmVtZW50IG9yIGRlY3JlbWVudCBieS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSByYW5nZSBvZiBudW1iZXJzLlxuICovXG5mdW5jdGlvbiBiYXNlUmFuZ2Uoc3RhcnQsIGVuZCwgc3RlcCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KG5hdGl2ZUNlaWwoKGVuZCAtIHN0YXJ0KSAvIChzdGVwIHx8IDEpKSwgMCksXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIHJlc3VsdFtmcm9tUmlnaHQgPyBsZW5ndGggOiArK2luZGV4XSA9IHN0YXJ0O1xuICAgIHN0YXJ0ICs9IHN0ZXA7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmFuZ2U7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlZHVjZWAgYW5kIGBfLnJlZHVjZVJpZ2h0YCwgd2l0aG91dCBzdXBwb3J0XG4gKiBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcywgd2hpY2ggaXRlcmF0ZXMgb3ZlciBgY29sbGVjdGlvbmAgdXNpbmcgYGVhY2hGdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gYWNjdW11bGF0b3IgVGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaXRBY2N1bSBTcGVjaWZ5IHVzaW5nIHRoZSBmaXJzdCBvciBsYXN0IGVsZW1lbnQgb2ZcbiAqICBgY29sbGVjdGlvbmAgYXMgdGhlIGluaXRpYWwgdmFsdWUuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGBjb2xsZWN0aW9uYC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlZHVjZShjb2xsZWN0aW9uLCBpdGVyYXRlZSwgYWNjdW11bGF0b3IsIGluaXRBY2N1bSwgZWFjaEZ1bmMpIHtcbiAgZWFjaEZ1bmMoY29sbGVjdGlvbiwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBjb2xsZWN0aW9uKSB7XG4gICAgYWNjdW11bGF0b3IgPSBpbml0QWNjdW1cbiAgICAgID8gKGluaXRBY2N1bSA9IGZhbHNlLCB2YWx1ZSlcbiAgICAgIDogaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgY29sbGVjdGlvbik7XG4gIH0pO1xuICByZXR1cm4gYWNjdW11bGF0b3I7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVJlZHVjZTtcbiIsInZhciBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnJlc3RgIHdoaWNoIGRvZXNuJ3QgdmFsaWRhdGUgb3IgY29lcmNlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlUmVzdChmdW5jLCBzdGFydCkge1xuICByZXR1cm4gc2V0VG9TdHJpbmcob3ZlclJlc3QoZnVuYywgc3RhcnQsIGlkZW50aXR5KSwgZnVuYyArICcnKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlUmVzdDtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgY2FzdFBhdGggPSByZXF1aXJlKCcuL19jYXN0UGF0aCcpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0JyksXG4gICAgdG9LZXkgPSByZXF1aXJlKCcuL190b0tleScpO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnNldGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCBvZiB0aGUgcHJvcGVydHkgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgcGF0aCBjcmVhdGlvbi5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTZXQob2JqZWN0LCBwYXRoLCB2YWx1ZSwgY3VzdG9taXplcikge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gb2JqZWN0O1xuICB9XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICBsYXN0SW5kZXggPSBsZW5ndGggLSAxLFxuICAgICAgbmVzdGVkID0gb2JqZWN0O1xuXG4gIHdoaWxlIChuZXN0ZWQgIT0gbnVsbCAmJiArK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHRvS2V5KHBhdGhbaW5kZXhdKSxcbiAgICAgICAgbmV3VmFsdWUgPSB2YWx1ZTtcblxuICAgIGlmIChrZXkgPT09ICdfX3Byb3RvX18nIHx8IGtleSA9PT0gJ2NvbnN0cnVjdG9yJyB8fCBrZXkgPT09ICdwcm90b3R5cGUnKSB7XG4gICAgICByZXR1cm4gb2JqZWN0O1xuICAgIH1cblxuICAgIGlmIChpbmRleCAhPSBsYXN0SW5kZXgpIHtcbiAgICAgIHZhciBvYmpWYWx1ZSA9IG5lc3RlZFtrZXldO1xuICAgICAgbmV3VmFsdWUgPSBjdXN0b21pemVyID8gY3VzdG9taXplcihvYmpWYWx1ZSwga2V5LCBuZXN0ZWQpIDogdW5kZWZpbmVkO1xuICAgICAgaWYgKG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbmV3VmFsdWUgPSBpc09iamVjdChvYmpWYWx1ZSlcbiAgICAgICAgICA/IG9ialZhbHVlXG4gICAgICAgICAgOiAoaXNJbmRleChwYXRoW2luZGV4ICsgMV0pID8gW10gOiB7fSk7XG4gICAgICB9XG4gICAgfVxuICAgIGFzc2lnblZhbHVlKG5lc3RlZCwga2V5LCBuZXdWYWx1ZSk7XG4gICAgbmVzdGVkID0gbmVzdGVkW2tleV07XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU2V0O1xuIiwidmFyIGNvbnN0YW50ID0gcmVxdWlyZSgnLi9jb25zdGFudCcpLFxuICAgIGRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9fZGVmaW5lUHJvcGVydHknKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgc2V0VG9TdHJpbmdgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaG90IGxvb3Agc2hvcnRpbmcuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgYmFzZVNldFRvU3RyaW5nID0gIWRlZmluZVByb3BlcnR5ID8gaWRlbnRpdHkgOiBmdW5jdGlvbihmdW5jLCBzdHJpbmcpIHtcbiAgcmV0dXJuIGRlZmluZVByb3BlcnR5KGZ1bmMsICd0b1N0cmluZycsIHtcbiAgICAnY29uZmlndXJhYmxlJzogdHJ1ZSxcbiAgICAnZW51bWVyYWJsZSc6IGZhbHNlLFxuICAgICd2YWx1ZSc6IGNvbnN0YW50KHN0cmluZyksXG4gICAgJ3dyaXRhYmxlJzogdHJ1ZVxuICB9KTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVNldFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zb3J0QnlgIHdoaWNoIHVzZXMgYGNvbXBhcmVyYCB0byBkZWZpbmUgdGhlXG4gKiBzb3J0IG9yZGVyIG9mIGBhcnJheWAgYW5kIHJlcGxhY2VzIGNyaXRlcmlhIG9iamVjdHMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nXG4gKiB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBzb3J0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY29tcGFyZXIgVGhlIGZ1bmN0aW9uIHRvIGRlZmluZSBzb3J0IG9yZGVyLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VTb3J0QnkoYXJyYXksIGNvbXBhcmVyKSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgYXJyYXkuc29ydChjb21wYXJlcik7XG4gIHdoaWxlIChsZW5ndGgtLSkge1xuICAgIGFycmF5W2xlbmd0aF0gPSBhcnJheVtsZW5ndGhdLnZhbHVlO1xuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlU29ydEJ5O1xuIiwiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50aW1lc2Agd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZSBzaG9ydGhhbmRzXG4gKiBvciBtYXggYXJyYXkgbGVuZ3RoIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtudW1iZXJ9IG4gVGhlIG51bWJlciBvZiB0aW1lcyB0byBpbnZva2UgYGl0ZXJhdGVlYC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGl0ZXJhdGVlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VUaW1lcyhuLCBpdGVyYXRlZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IEFycmF5KG4pO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbikge1xuICAgIHJlc3VsdFtpbmRleF0gPSBpdGVyYXRlZShpbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVGltZXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgYXJyYXlNYXAgPSByZXF1aXJlKCcuL19hcnJheU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVG9TdHJpbmc7XG4iLCIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVVuYXJ5O1xuIiwidmFyIFNldENhY2hlID0gcmVxdWlyZSgnLi9fU2V0Q2FjaGUnKSxcbiAgICBhcnJheUluY2x1ZGVzID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlcycpLFxuICAgIGFycmF5SW5jbHVkZXNXaXRoID0gcmVxdWlyZSgnLi9fYXJyYXlJbmNsdWRlc1dpdGgnKSxcbiAgICBjYWNoZUhhcyA9IHJlcXVpcmUoJy4vX2NhY2hlSGFzJyksXG4gICAgY3JlYXRlU2V0ID0gcmVxdWlyZSgnLi9fY3JlYXRlU2V0JyksXG4gICAgc2V0VG9BcnJheSA9IHJlcXVpcmUoJy4vX3NldFRvQXJyYXknKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy51bmlxQnlgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWVdIFRoZSBpdGVyYXRlZSBpbnZva2VkIHBlciBlbGVtZW50LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2NvbXBhcmF0b3JdIFRoZSBjb21wYXJhdG9yIGludm9rZWQgcGVyIGVsZW1lbnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBkdXBsaWNhdGUgZnJlZSBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYmFzZVVuaXEoYXJyYXksIGl0ZXJhdGVlLCBjb21wYXJhdG9yKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgaW5jbHVkZXMgPSBhcnJheUluY2x1ZGVzLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoLFxuICAgICAgaXNDb21tb24gPSB0cnVlLFxuICAgICAgcmVzdWx0ID0gW10sXG4gICAgICBzZWVuID0gcmVzdWx0O1xuXG4gIGlmIChjb21wYXJhdG9yKSB7XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGFycmF5SW5jbHVkZXNXaXRoO1xuICB9XG4gIGVsc2UgaWYgKGxlbmd0aCA+PSBMQVJHRV9BUlJBWV9TSVpFKSB7XG4gICAgdmFyIHNldCA9IGl0ZXJhdGVlID8gbnVsbCA6IGNyZWF0ZVNldChhcnJheSk7XG4gICAgaWYgKHNldCkge1xuICAgICAgcmV0dXJuIHNldFRvQXJyYXkoc2V0KTtcbiAgICB9XG4gICAgaXNDb21tb24gPSBmYWxzZTtcbiAgICBpbmNsdWRlcyA9IGNhY2hlSGFzO1xuICAgIHNlZW4gPSBuZXcgU2V0Q2FjaGU7XG4gIH1cbiAgZWxzZSB7XG4gICAgc2VlbiA9IGl0ZXJhdGVlID8gW10gOiByZXN1bHQ7XG4gIH1cbiAgb3V0ZXI6XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIHZhbHVlID0gYXJyYXlbaW5kZXhdLFxuICAgICAgICBjb21wdXRlZCA9IGl0ZXJhdGVlID8gaXRlcmF0ZWUodmFsdWUpIDogdmFsdWU7XG5cbiAgICB2YWx1ZSA9IChjb21wYXJhdG9yIHx8IHZhbHVlICE9PSAwKSA/IHZhbHVlIDogMDtcbiAgICBpZiAoaXNDb21tb24gJiYgY29tcHV0ZWQgPT09IGNvbXB1dGVkKSB7XG4gICAgICB2YXIgc2VlbkluZGV4ID0gc2Vlbi5sZW5ndGg7XG4gICAgICB3aGlsZSAoc2VlbkluZGV4LS0pIHtcbiAgICAgICAgaWYgKHNlZW5bc2VlbkluZGV4XSA9PT0gY29tcHV0ZWQpIHtcbiAgICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGl0ZXJhdGVlKSB7XG4gICAgICAgIHNlZW4ucHVzaChjb21wdXRlZCk7XG4gICAgICB9XG4gICAgICByZXN1bHQucHVzaCh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKCFpbmNsdWRlcyhzZWVuLCBjb21wdXRlZCwgY29tcGFyYXRvcikpIHtcbiAgICAgIGlmIChzZWVuICE9PSByZXN1bHQpIHtcbiAgICAgICAgc2Vlbi5wdXNoKGNvbXB1dGVkKTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdC5wdXNoKHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBiYXNlVW5pcTtcbiIsInZhciBhcnJheU1hcCA9IHJlcXVpcmUoJy4vX2FycmF5TWFwJyk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VWYWx1ZXM7XG4iLCIvKipcbiAqIFRoaXMgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy56aXBPYmplY3RgIHdoaWNoIGFzc2lnbnMgdmFsdWVzIHVzaW5nIGBhc3NpZ25GdW5jYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IGlkZW50aWZpZXJzLlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBhc3NpZ25GdW5jIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gYmFzZVppcE9iamVjdChwcm9wcywgdmFsdWVzLCBhc3NpZ25GdW5jKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoLFxuICAgICAgdmFsc0xlbmd0aCA9IHZhbHVlcy5sZW5ndGgsXG4gICAgICByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciB2YWx1ZSA9IGluZGV4IDwgdmFsc0xlbmd0aCA/IHZhbHVlc1tpbmRleF0gOiB1bmRlZmluZWQ7XG4gICAgYXNzaWduRnVuYyhyZXN1bHQsIHByb3BzW2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYmFzZVppcE9iamVjdDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGEgYGNhY2hlYCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gY2FjaGUgVGhlIGNhY2hlIHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGNhY2hlSGFzKGNhY2hlLCBrZXkpIHtcbiAgcmV0dXJuIGNhY2hlLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhY2hlSGFzO1xuIiwidmFyIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYGlkZW50aXR5YCBpZiBpdCdzIG5vdCBhIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIGNhc3QgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNhc3RGdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdmdW5jdGlvbicgPyB2YWx1ZSA6IGlkZW50aXR5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RGdW5jdGlvbjtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHN0cmluZ1RvUGF0aCA9IHJlcXVpcmUoJy4vX3N0cmluZ1RvUGF0aCcpLFxuICAgIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKipcbiAqIENhc3RzIGB2YWx1ZWAgdG8gYSBwYXRoIGFycmF5IGlmIGl0J3Mgbm90IG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5IGtleXMgb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNhc3QgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2FzdFBhdGgodmFsdWUsIG9iamVjdCkge1xuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGlzS2V5KHZhbHVlLCBvYmplY3QpID8gW3ZhbHVlXSA6IHN0cmluZ1RvUGF0aCh0b1N0cmluZyh2YWx1ZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNhc3RQYXRoO1xuIiwidmFyIFVpbnQ4QXJyYXkgPSByZXF1aXJlKCcuL19VaW50OEFycmF5Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBhcnJheUJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXlCdWZmZXJ9IGFycmF5QnVmZmVyIFRoZSBhcnJheSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7QXJyYXlCdWZmZXJ9IFJldHVybnMgdGhlIGNsb25lZCBhcnJheSBidWZmZXIuXG4gKi9cbmZ1bmN0aW9uIGNsb25lQXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyBhcnJheUJ1ZmZlci5jb25zdHJ1Y3RvcihhcnJheUJ1ZmZlci5ieXRlTGVuZ3RoKTtcbiAgbmV3IFVpbnQ4QXJyYXkocmVzdWx0KS5zZXQobmV3IFVpbnQ4QXJyYXkoYXJyYXlCdWZmZXIpKTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZUFycmF5QnVmZmVyO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkLFxuICAgIGFsbG9jVW5zYWZlID0gQnVmZmVyID8gQnVmZmVyLmFsbG9jVW5zYWZlIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiAgYGJ1ZmZlcmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QnVmZmVyfSBidWZmZXIgVGhlIGJ1ZmZlciB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUJ1ZmZlcihidWZmZXIsIGlzRGVlcCkge1xuICBpZiAoaXNEZWVwKSB7XG4gICAgcmV0dXJuIGJ1ZmZlci5zbGljZSgpO1xuICB9XG4gIHZhciBsZW5ndGggPSBidWZmZXIubGVuZ3RoLFxuICAgICAgcmVzdWx0ID0gYWxsb2NVbnNhZmUgPyBhbGxvY1Vuc2FmZShsZW5ndGgpIDogbmV3IGJ1ZmZlci5jb25zdHJ1Y3RvcihsZW5ndGgpO1xuXG4gIGJ1ZmZlci5jb3B5KHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVCdWZmZXI7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgYGRhdGFWaWV3YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IGRhdGFWaWV3IFRoZSBkYXRhIHZpZXcgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY2xvbmVkIGRhdGEgdmlldy5cbiAqL1xuZnVuY3Rpb24gY2xvbmVEYXRhVmlldyhkYXRhVmlldywgaXNEZWVwKSB7XG4gIHZhciBidWZmZXIgPSBpc0RlZXAgPyBjbG9uZUFycmF5QnVmZmVyKGRhdGFWaWV3LmJ1ZmZlcikgOiBkYXRhVmlldy5idWZmZXI7XG4gIHJldHVybiBuZXcgZGF0YVZpZXcuY29uc3RydWN0b3IoYnVmZmVyLCBkYXRhVmlldy5ieXRlT2Zmc2V0LCBkYXRhVmlldy5ieXRlTGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZURhdGFWaWV3O1xuIiwiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZVJlZ0V4cDtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIHRoZSBgc3ltYm9sYCBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzeW1ib2wgVGhlIHN5bWJvbCBvYmplY3QgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgc3ltYm9sIG9iamVjdC5cbiAqL1xuZnVuY3Rpb24gY2xvbmVTeW1ib2woc3ltYm9sKSB7XG4gIHJldHVybiBzeW1ib2xWYWx1ZU9mID8gT2JqZWN0KHN5bWJvbFZhbHVlT2YuY2FsbChzeW1ib2wpKSA6IHt9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lU3ltYm9sO1xuIiwidmFyIGNsb25lQXJyYXlCdWZmZXIgPSByZXF1aXJlKCcuL19jbG9uZUFycmF5QnVmZmVyJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGB0eXBlZEFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHR5cGVkQXJyYXkgVGhlIHR5cGVkIGFycmF5IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCB0eXBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gY2xvbmVUeXBlZEFycmF5KHR5cGVkQXJyYXksIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcih0eXBlZEFycmF5LmJ1ZmZlcikgOiB0eXBlZEFycmF5LmJ1ZmZlcjtcbiAgcmV0dXJuIG5ldyB0eXBlZEFycmF5LmNvbnN0cnVjdG9yKGJ1ZmZlciwgdHlwZWRBcnJheS5ieXRlT2Zmc2V0LCB0eXBlZEFycmF5Lmxlbmd0aCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2xvbmVUeXBlZEFycmF5O1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKipcbiAqIENvbXBhcmVzIHZhbHVlcyB0byBzb3J0IHRoZW0gaW4gYXNjZW5kaW5nIG9yZGVyLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHNvcnQgb3JkZXIgaW5kaWNhdG9yIGZvciBgdmFsdWVgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlQXNjZW5kaW5nKHZhbHVlLCBvdGhlcikge1xuICBpZiAodmFsdWUgIT09IG90aGVyKSB7XG4gICAgdmFyIHZhbElzRGVmaW5lZCA9IHZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgICAgIHZhbElzTnVsbCA9IHZhbHVlID09PSBudWxsLFxuICAgICAgICB2YWxJc1JlZmxleGl2ZSA9IHZhbHVlID09PSB2YWx1ZSxcbiAgICAgICAgdmFsSXNTeW1ib2wgPSBpc1N5bWJvbCh2YWx1ZSk7XG5cbiAgICB2YXIgb3RoSXNEZWZpbmVkID0gb3RoZXIgIT09IHVuZGVmaW5lZCxcbiAgICAgICAgb3RoSXNOdWxsID0gb3RoZXIgPT09IG51bGwsXG4gICAgICAgIG90aElzUmVmbGV4aXZlID0gb3RoZXIgPT09IG90aGVyLFxuICAgICAgICBvdGhJc1N5bWJvbCA9IGlzU3ltYm9sKG90aGVyKTtcblxuICAgIGlmICgoIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wgJiYgIXZhbElzU3ltYm9sICYmIHZhbHVlID4gb3RoZXIpIHx8XG4gICAgICAgICh2YWxJc1N5bWJvbCAmJiBvdGhJc0RlZmluZWQgJiYgb3RoSXNSZWZsZXhpdmUgJiYgIW90aElzTnVsbCAmJiAhb3RoSXNTeW1ib2wpIHx8XG4gICAgICAgICh2YWxJc051bGwgJiYgb3RoSXNEZWZpbmVkICYmIG90aElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAoIXZhbElzRGVmaW5lZCAmJiBvdGhJc1JlZmxleGl2ZSkgfHxcbiAgICAgICAgIXZhbElzUmVmbGV4aXZlKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9XG4gICAgaWYgKCghdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCAmJiAhb3RoSXNTeW1ib2wgJiYgdmFsdWUgPCBvdGhlcikgfHxcbiAgICAgICAgKG90aElzU3ltYm9sICYmIHZhbElzRGVmaW5lZCAmJiB2YWxJc1JlZmxleGl2ZSAmJiAhdmFsSXNOdWxsICYmICF2YWxJc1N5bWJvbCkgfHxcbiAgICAgICAgKG90aElzTnVsbCAmJiB2YWxJc0RlZmluZWQgJiYgdmFsSXNSZWZsZXhpdmUpIHx8XG4gICAgICAgICghb3RoSXNEZWZpbmVkICYmIHZhbElzUmVmbGV4aXZlKSB8fFxuICAgICAgICAhb3RoSXNSZWZsZXhpdmUpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29tcGFyZUFzY2VuZGluZztcbiIsInZhciBjb21wYXJlQXNjZW5kaW5nID0gcmVxdWlyZSgnLi9fY29tcGFyZUFzY2VuZGluZycpO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8ub3JkZXJCeWAgdG8gY29tcGFyZSBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGEgdmFsdWUgdG8gYW5vdGhlclxuICogYW5kIHN0YWJsZSBzb3J0IHRoZW0uXG4gKlxuICogSWYgYG9yZGVyc2AgaXMgdW5zcGVjaWZpZWQsIGFsbCB2YWx1ZXMgYXJlIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIuIE90aGVyd2lzZSxcbiAqIHNwZWNpZnkgYW4gb3JkZXIgb2YgXCJkZXNjXCIgZm9yIGRlc2NlbmRpbmcgb3IgXCJhc2NcIiBmb3IgYXNjZW5kaW5nIHNvcnQgb3JkZXJcbiAqIG9mIGNvcnJlc3BvbmRpbmcgdmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBvdGhlciBUaGUgb3RoZXIgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW5bXXxzdHJpbmdbXX0gb3JkZXJzIFRoZSBvcmRlciB0byBzb3J0IGJ5IGZvciBlYWNoIHByb3BlcnR5LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc29ydCBvcmRlciBpbmRpY2F0b3IgZm9yIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb21wYXJlTXVsdGlwbGUob2JqZWN0LCBvdGhlciwgb3JkZXJzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgb2JqQ3JpdGVyaWEgPSBvYmplY3QuY3JpdGVyaWEsXG4gICAgICBvdGhDcml0ZXJpYSA9IG90aGVyLmNyaXRlcmlhLFxuICAgICAgbGVuZ3RoID0gb2JqQ3JpdGVyaWEubGVuZ3RoLFxuICAgICAgb3JkZXJzTGVuZ3RoID0gb3JkZXJzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciByZXN1bHQgPSBjb21wYXJlQXNjZW5kaW5nKG9iakNyaXRlcmlhW2luZGV4XSwgb3RoQ3JpdGVyaWFbaW5kZXhdKTtcbiAgICBpZiAocmVzdWx0KSB7XG4gICAgICBpZiAoaW5kZXggPj0gb3JkZXJzTGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgICB2YXIgb3JkZXIgPSBvcmRlcnNbaW5kZXhdO1xuICAgICAgcmV0dXJuIHJlc3VsdCAqIChvcmRlciA9PSAnZGVzYycgPyAtMSA6IDEpO1xuICAgIH1cbiAgfVxuICAvLyBGaXhlcyBhbiBgQXJyYXkjc29ydGAgYnVnIGluIHRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgYXBwbGljYXRpb25zXG4gIC8vIHRoYXQgY2F1c2VzIGl0LCB1bmRlciBjZXJ0YWluIGNpcmN1bXN0YW5jZXMsIHRvIHByb3ZpZGUgdGhlIHNhbWUgdmFsdWUgZm9yXG4gIC8vIGBvYmplY3RgIGFuZCBgb3RoZXJgLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2phc2hrZW5hcy91bmRlcnNjb3JlL3B1bGwvMTI0N1xuICAvLyBmb3IgbW9yZSBkZXRhaWxzLlxuICAvL1xuICAvLyBUaGlzIGFsc28gZW5zdXJlcyBhIHN0YWJsZSBzb3J0IGluIFY4IGFuZCBvdGhlciBlbmdpbmVzLlxuICAvLyBTZWUgaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9OTAgZm9yIG1vcmUgZGV0YWlscy5cbiAgcmV0dXJuIG9iamVjdC5pbmRleCAtIG90aGVyLmluZGV4O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbXBhcmVNdWx0aXBsZTtcbiIsIi8qKlxuICogQ29waWVzIHRoZSB2YWx1ZXMgb2YgYHNvdXJjZWAgdG8gYGFycmF5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc291cmNlIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyBmcm9tLlxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5PVtdXSBUaGUgYXJyYXkgdG8gY29weSB2YWx1ZXMgdG8uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gY29weUFycmF5KHNvdXJjZSwgYXJyYXkpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoO1xuXG4gIGFycmF5IHx8IChhcnJheSA9IEFycmF5KGxlbmd0aCkpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W2luZGV4XSA9IHNvdXJjZVtpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlBcnJheTtcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZUFzc2lnblZhbHVlID0gcmVxdWlyZSgnLi9fYmFzZUFzc2lnblZhbHVlJyk7XG5cbi8qKlxuICogQ29waWVzIHByb3BlcnRpZXMgb2YgYHNvdXJjZWAgdG8gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzb3VyY2UgVGhlIG9iamVjdCB0byBjb3B5IHByb3BlcnRpZXMgZnJvbS5cbiAqIEBwYXJhbSB7QXJyYXl9IHByb3BzIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycyB0byBjb3B5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIHRvLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29waWVkIHZhbHVlcy5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGNvcHlPYmplY3Qoc291cmNlLCBwcm9wcywgb2JqZWN0LCBjdXN0b21pemVyKSB7XG4gIHZhciBpc05ldyA9ICFvYmplY3Q7XG4gIG9iamVjdCB8fCAob2JqZWN0ID0ge30pO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcHJvcHMubGVuZ3RoO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGtleSA9IHByb3BzW2luZGV4XTtcblxuICAgIHZhciBuZXdWYWx1ZSA9IGN1c3RvbWl6ZXJcbiAgICAgID8gY3VzdG9taXplcihvYmplY3Rba2V5XSwgc291cmNlW2tleV0sIGtleSwgb2JqZWN0LCBzb3VyY2UpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBuZXdWYWx1ZSA9IHNvdXJjZVtrZXldO1xuICAgIH1cbiAgICBpZiAoaXNOZXcpIHtcbiAgICAgIGJhc2VBc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhc3NpZ25WYWx1ZShvYmplY3QsIGtleSwgbmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gb2JqZWN0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlPYmplY3Q7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzID0gcmVxdWlyZSgnLi9fZ2V0U3ltYm9scycpO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY29weVN5bWJvbHM7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBnZXRTeW1ib2xzSW4gPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzSW4nKTtcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvcHlTeW1ib2xzSW47XG4iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG92ZXJyZWFjaGluZyBjb3JlLWpzIHNoaW1zLiAqL1xudmFyIGNvcmVKc0RhdGEgPSByb290WydfX2NvcmUtanNfc2hhcmVkX18nXTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb3JlSnNEYXRhO1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIGxpa2UgYF8uYXNzaWduYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gYXNzaWduZXIgVGhlIGZ1bmN0aW9uIHRvIGFzc2lnbiB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhc3NpZ25lciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQXNzaWduZXIoYXNzaWduZXIpIHtcbiAgcmV0dXJuIGJhc2VSZXN0KGZ1bmN0aW9uKG9iamVjdCwgc291cmNlcykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aCxcbiAgICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA+IDEgPyBzb3VyY2VzW2xlbmd0aCAtIDFdIDogdW5kZWZpbmVkLFxuICAgICAgICBndWFyZCA9IGxlbmd0aCA+IDIgPyBzb3VyY2VzWzJdIDogdW5kZWZpbmVkO1xuXG4gICAgY3VzdG9taXplciA9IChhc3NpZ25lci5sZW5ndGggPiAzICYmIHR5cGVvZiBjdXN0b21pemVyID09ICdmdW5jdGlvbicpXG4gICAgICA/IChsZW5ndGgtLSwgY3VzdG9taXplcilcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgICAgY3VzdG9taXplciA9IGxlbmd0aCA8IDMgPyB1bmRlZmluZWQgOiBjdXN0b21pemVyO1xuICAgICAgbGVuZ3RoID0gMTtcbiAgICB9XG4gICAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gICAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgYXNzaWduZXIob2JqZWN0LCBzb3VyY2UsIGluZGV4LCBjdXN0b21pemVyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQXNzaWduZXI7XG4iLCJ2YXIgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGBiYXNlRWFjaGAgb3IgYGJhc2VFYWNoUmlnaHRgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlYWNoRnVuYyBUaGUgZnVuY3Rpb24gdG8gaXRlcmF0ZSBvdmVyIGEgY29sbGVjdGlvbi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYmFzZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlQmFzZUVhY2goZWFjaEZ1bmMsIGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gY29sbGVjdGlvbjtcbiAgICB9XG4gICAgaWYgKCFpc0FycmF5TGlrZShjb2xsZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIGVhY2hGdW5jKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKTtcbiAgICB9XG4gICAgdmFyIGxlbmd0aCA9IGNvbGxlY3Rpb24ubGVuZ3RoLFxuICAgICAgICBpbmRleCA9IGZyb21SaWdodCA/IGxlbmd0aCA6IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcblxuICAgIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgICBpZiAoaXRlcmF0ZWUoaXRlcmFibGVbaW5kZXhdLCBpbmRleCwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbGxlY3Rpb247XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlQmFzZUVhY2g7XG4iLCIvKipcbiAqIENyZWF0ZXMgYSBiYXNlIGZ1bmN0aW9uIGZvciBtZXRob2RzIGxpa2UgYF8uZm9ySW5gIGFuZCBgXy5mb3JPd25gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtmcm9tUmlnaHRdIFNwZWNpZnkgaXRlcmF0aW5nIGZyb20gcmlnaHQgdG8gbGVmdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGJhc2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VGb3IoZnJvbVJpZ2h0KSB7XG4gIHJldHVybiBmdW5jdGlvbihvYmplY3QsIGl0ZXJhdGVlLCBrZXlzRnVuYykge1xuICAgIHZhciBpbmRleCA9IC0xLFxuICAgICAgICBpdGVyYWJsZSA9IE9iamVjdChvYmplY3QpLFxuICAgICAgICBwcm9wcyA9IGtleXNGdW5jKG9iamVjdCksXG4gICAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlIChsZW5ndGgtLSkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW2Zyb21SaWdodCA/IGxlbmd0aCA6ICsraW5kZXhdO1xuICAgICAgaWYgKGl0ZXJhdGVlKGl0ZXJhYmxlW2tleV0sIGtleSwgaXRlcmFibGUpID09PSBmYWxzZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9iamVjdDtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVCYXNlRm9yO1xuIiwidmFyIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGtleXMgPSByZXF1aXJlKCcuL2tleXMnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgYF8uZmluZGAgb3IgYF8uZmluZExhc3RgIGZ1bmN0aW9uLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmaW5kSW5kZXhGdW5jIFRoZSBmdW5jdGlvbiB0byBmaW5kIHRoZSBjb2xsZWN0aW9uIGluZGV4LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZmluZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlRmluZChmaW5kSW5kZXhGdW5jKSB7XG4gIHJldHVybiBmdW5jdGlvbihjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCkge1xuICAgIHZhciBpdGVyYWJsZSA9IE9iamVjdChjb2xsZWN0aW9uKTtcbiAgICBpZiAoIWlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgICB2YXIgaXRlcmF0ZWUgPSBiYXNlSXRlcmF0ZWUocHJlZGljYXRlLCAzKTtcbiAgICAgIGNvbGxlY3Rpb24gPSBrZXlzKGNvbGxlY3Rpb24pO1xuICAgICAgcHJlZGljYXRlID0gZnVuY3Rpb24oa2V5KSB7IHJldHVybiBpdGVyYXRlZShpdGVyYWJsZVtrZXldLCBrZXksIGl0ZXJhYmxlKTsgfTtcbiAgICB9XG4gICAgdmFyIGluZGV4ID0gZmluZEluZGV4RnVuYyhjb2xsZWN0aW9uLCBwcmVkaWNhdGUsIGZyb21JbmRleCk7XG4gICAgcmV0dXJuIGluZGV4ID4gLTEgPyBpdGVyYWJsZVtpdGVyYXRlZSA/IGNvbGxlY3Rpb25baW5kZXhdIDogaW5kZXhdIDogdW5kZWZpbmVkO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZUZpbmQ7XG4iLCJ2YXIgYmFzZVJhbmdlID0gcmVxdWlyZSgnLi9fYmFzZVJhbmdlJyksXG4gICAgaXNJdGVyYXRlZUNhbGwgPSByZXF1aXJlKCcuL19pc0l0ZXJhdGVlQ2FsbCcpLFxuICAgIHRvRmluaXRlID0gcmVxdWlyZSgnLi90b0Zpbml0ZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBgXy5yYW5nZWAgb3IgYF8ucmFuZ2VSaWdodGAgZnVuY3Rpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2Zyb21SaWdodF0gU3BlY2lmeSBpdGVyYXRpbmcgZnJvbSByaWdodCB0byBsZWZ0LlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgcmFuZ2UgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJhbmdlKGZyb21SaWdodCkge1xuICByZXR1cm4gZnVuY3Rpb24oc3RhcnQsIGVuZCwgc3RlcCkge1xuICAgIGlmIChzdGVwICYmIHR5cGVvZiBzdGVwICE9ICdudW1iZXInICYmIGlzSXRlcmF0ZWVDYWxsKHN0YXJ0LCBlbmQsIHN0ZXApKSB7XG4gICAgICBlbmQgPSBzdGVwID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvLyBFbnN1cmUgdGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gICAgc3RhcnQgPSB0b0Zpbml0ZShzdGFydCk7XG4gICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgZW5kID0gdG9GaW5pdGUoZW5kKTtcbiAgICB9XG4gICAgc3RlcCA9IHN0ZXAgPT09IHVuZGVmaW5lZCA/IChzdGFydCA8IGVuZCA/IDEgOiAtMSkgOiB0b0Zpbml0ZShzdGVwKTtcbiAgICByZXR1cm4gYmFzZVJhbmdlKHN0YXJ0LCBlbmQsIHN0ZXAsIGZyb21SaWdodCk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlUmFuZ2U7XG4iLCJ2YXIgU2V0ID0gcmVxdWlyZSgnLi9fU2V0JyksXG4gICAgbm9vcCA9IHJlcXVpcmUoJy4vbm9vcCcpLFxuICAgIHNldFRvQXJyYXkgPSByZXF1aXJlKCcuL19zZXRUb0FycmF5Jyk7XG5cbi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIElORklOSVRZID0gMSAvIDA7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHNldCBvYmplY3Qgb2YgYHZhbHVlc2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IHZhbHVlcyBUaGUgdmFsdWVzIHRvIGFkZCB0byB0aGUgc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IHNldC5cbiAqL1xudmFyIGNyZWF0ZVNldCA9ICEoU2V0ICYmICgxIC8gc2V0VG9BcnJheShuZXcgU2V0KFssLTBdKSlbMV0pID09IElORklOSVRZKSA/IG5vb3AgOiBmdW5jdGlvbih2YWx1ZXMpIHtcbiAgcmV0dXJuIG5ldyBTZXQodmFsdWVzKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlU2V0O1xuIiwidmFyIGdldE5hdGl2ZSA9IHJlcXVpcmUoJy4vX2dldE5hdGl2ZScpO1xuXG52YXIgZGVmaW5lUHJvcGVydHkgPSAoZnVuY3Rpb24oKSB7XG4gIHRyeSB7XG4gICAgdmFyIGZ1bmMgPSBnZXROYXRpdmUoT2JqZWN0LCAnZGVmaW5lUHJvcGVydHknKTtcbiAgICBmdW5jKHt9LCAnJywge30pO1xuICAgIHJldHVybiBmdW5jO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBkZWZpbmVQcm9wZXJ0eTtcbiIsInZhciBTZXRDYWNoZSA9IHJlcXVpcmUoJy4vX1NldENhY2hlJyksXG4gICAgYXJyYXlTb21lID0gcmVxdWlyZSgnLi9fYXJyYXlTb21lJyksXG4gICAgY2FjaGVIYXMgPSByZXF1aXJlKCcuL19jYWNoZUhhcycpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBhcnJheXMgd2l0aCBzdXBwb3J0IGZvclxuICogcGFydGlhbCBkZWVwIGNvbXBhcmlzb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7QXJyYXl9IG90aGVyIFRoZSBvdGhlciBhcnJheSB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgYXJyYXlgIGFuZCBgb3RoZXJgIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGFycmF5cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbEFycmF5cyhhcnJheSwgb3RoZXIsIGJpdG1hc2ssIGN1c3RvbWl6ZXIsIGVxdWFsRnVuYywgc3RhY2spIHtcbiAgdmFyIGlzUGFydGlhbCA9IGJpdG1hc2sgJiBDT01QQVJFX1BBUlRJQUxfRkxBRyxcbiAgICAgIGFyckxlbmd0aCA9IGFycmF5Lmxlbmd0aCxcbiAgICAgIG90aExlbmd0aCA9IG90aGVyLmxlbmd0aDtcblxuICBpZiAoYXJyTGVuZ3RoICE9IG90aExlbmd0aCAmJiAhKGlzUGFydGlhbCAmJiBvdGhMZW5ndGggPiBhcnJMZW5ndGgpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIENoZWNrIHRoYXQgY3ljbGljIHZhbHVlcyBhcmUgZXF1YWwuXG4gIHZhciBhcnJTdGFja2VkID0gc3RhY2suZ2V0KGFycmF5KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAoYXJyU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIGFyclN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBhcnJheTtcbiAgfVxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIHJlc3VsdCA9IHRydWUsXG4gICAgICBzZWVuID0gKGJpdG1hc2sgJiBDT01QQVJFX1VOT1JERVJFRF9GTEFHKSA/IG5ldyBTZXRDYWNoZSA6IHVuZGVmaW5lZDtcblxuICBzdGFjay5zZXQoYXJyYXksIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBhcnJheSk7XG5cbiAgLy8gSWdub3JlIG5vbi1pbmRleCBwcm9wZXJ0aWVzLlxuICB3aGlsZSAoKytpbmRleCA8IGFyckxlbmd0aCkge1xuICAgIHZhciBhcnJWYWx1ZSA9IGFycmF5W2luZGV4XSxcbiAgICAgICAgb3RoVmFsdWUgPSBvdGhlcltpbmRleF07XG5cbiAgICBpZiAoY3VzdG9taXplcikge1xuICAgICAgdmFyIGNvbXBhcmVkID0gaXNQYXJ0aWFsXG4gICAgICAgID8gY3VzdG9taXplcihvdGhWYWx1ZSwgYXJyVmFsdWUsIGluZGV4LCBvdGhlciwgYXJyYXksIHN0YWNrKVxuICAgICAgICA6IGN1c3RvbWl6ZXIoYXJyVmFsdWUsIG90aFZhbHVlLCBpbmRleCwgYXJyYXksIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIGlmIChjb21wYXJlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoY29tcGFyZWQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIGFycmF5cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmIChzZWVuKSB7XG4gICAgICBpZiAoIWFycmF5U29tZShvdGhlciwgZnVuY3Rpb24ob3RoVmFsdWUsIG90aEluZGV4KSB7XG4gICAgICAgICAgICBpZiAoIWNhY2hlSGFzKHNlZW4sIG90aEluZGV4KSAmJlxuICAgICAgICAgICAgICAgIChhcnJWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKSkge1xuICAgICAgICAgICAgICByZXR1cm4gc2Vlbi5wdXNoKG90aEluZGV4KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghKFxuICAgICAgICAgIGFyclZhbHVlID09PSBvdGhWYWx1ZSB8fFxuICAgICAgICAgICAgZXF1YWxGdW5jKGFyclZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spXG4gICAgICAgICkpIHtcbiAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHN0YWNrWydkZWxldGUnXShhcnJheSk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxBcnJheXM7XG4iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9sJyksXG4gICAgVWludDhBcnJheSA9IHJlcXVpcmUoJy4vX1VpbnQ4QXJyYXknKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBlcXVhbEFycmF5cyA9IHJlcXVpcmUoJy4vX2VxdWFsQXJyYXlzJyksXG4gICAgbWFwVG9BcnJheSA9IHJlcXVpcmUoJy4vX21hcFRvQXJyYXknKSxcbiAgICBzZXRUb0FycmF5ID0gcmVxdWlyZSgnLi9fc2V0VG9BcnJheScpO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciB2YWx1ZSBjb21wYXJpc29ucy4gKi9cbnZhciBDT01QQVJFX1BBUlRJQUxfRkxBRyA9IDEsXG4gICAgQ09NUEFSRV9VTk9SREVSRURfRkxBRyA9IDI7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFZhbHVlT2YgPSBzeW1ib2xQcm90byA/IHN5bWJvbFByb3RvLnZhbHVlT2YgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlSXNFcXVhbERlZXBgIGZvciBjb21wYXJpbmcgb2JqZWN0cyBvZlxuICogdGhlIHNhbWUgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNvbXBhcmluZyB2YWx1ZXMgd2l0aCB0YWdzIG9mXG4gKiBgQm9vbGVhbmAsIGBEYXRlYCwgYEVycm9yYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNvbXBhcmUuXG4gKiBAcGFyYW0ge09iamVjdH0gb3RoZXIgVGhlIG90aGVyIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0cyB0byBjb21wYXJlLlxuICogQHBhcmFtIHtudW1iZXJ9IGJpdG1hc2sgVGhlIGJpdG1hc2sgZmxhZ3MuIFNlZSBgYmFzZUlzRXF1YWxgIGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjdXN0b21pemVyIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgY29tcGFyaXNvbnMuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBlcXVhbEZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRldGVybWluZSBlcXVpdmFsZW50cyBvZiB2YWx1ZXMuXG4gKiBAcGFyYW0ge09iamVjdH0gc3RhY2sgVHJhY2tzIHRyYXZlcnNlZCBgb2JqZWN0YCBhbmQgYG90aGVyYCBvYmplY3RzLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBvYmplY3RzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGVxdWFsQnlUYWcob2JqZWN0LCBvdGhlciwgdGFnLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBkYXRhVmlld1RhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAob2JqZWN0LmJ5dGVPZmZzZXQgIT0gb3RoZXIuYnl0ZU9mZnNldCkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgb2JqZWN0ID0gb2JqZWN0LmJ1ZmZlcjtcbiAgICAgIG90aGVyID0gb3RoZXIuYnVmZmVyO1xuXG4gICAgY2FzZSBhcnJheUJ1ZmZlclRhZzpcbiAgICAgIGlmICgob2JqZWN0LmJ5dGVMZW5ndGggIT0gb3RoZXIuYnl0ZUxlbmd0aCkgfHxcbiAgICAgICAgICAhZXF1YWxGdW5jKG5ldyBVaW50OEFycmF5KG9iamVjdCksIG5ldyBVaW50OEFycmF5KG90aGVyKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG5cbiAgICBjYXNlIGJvb2xUYWc6XG4gICAgY2FzZSBkYXRlVGFnOlxuICAgIGNhc2UgbnVtYmVyVGFnOlxuICAgICAgLy8gQ29lcmNlIGJvb2xlYW5zIHRvIGAxYCBvciBgMGAgYW5kIGRhdGVzIHRvIG1pbGxpc2Vjb25kcy5cbiAgICAgIC8vIEludmFsaWQgZGF0ZXMgYXJlIGNvZXJjZWQgdG8gYE5hTmAuXG4gICAgICByZXR1cm4gZXEoK29iamVjdCwgK290aGVyKTtcblxuICAgIGNhc2UgZXJyb3JUYWc6XG4gICAgICByZXR1cm4gb2JqZWN0Lm5hbWUgPT0gb3RoZXIubmFtZSAmJiBvYmplY3QubWVzc2FnZSA9PSBvdGhlci5tZXNzYWdlO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICAvLyBDb2VyY2UgcmVnZXhlcyB0byBzdHJpbmdzIGFuZCB0cmVhdCBzdHJpbmdzLCBwcmltaXRpdmVzIGFuZCBvYmplY3RzLFxuICAgICAgLy8gYXMgZXF1YWwuIFNlZSBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtcmVnZXhwLnByb3RvdHlwZS50b3N0cmluZ1xuICAgICAgLy8gZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIHJldHVybiBvYmplY3QgPT0gKG90aGVyICsgJycpO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICB2YXIgY29udmVydCA9IG1hcFRvQXJyYXk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHZhciBpc1BhcnRpYWwgPSBiaXRtYXNrICYgQ09NUEFSRV9QQVJUSUFMX0ZMQUc7XG4gICAgICBjb252ZXJ0IHx8IChjb252ZXJ0ID0gc2V0VG9BcnJheSk7XG5cbiAgICAgIGlmIChvYmplY3Quc2l6ZSAhPSBvdGhlci5zaXplICYmICFpc1BhcnRpYWwpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgLy8gQXNzdW1lIGN5Y2xpYyB2YWx1ZXMgYXJlIGVxdWFsLlxuICAgICAgdmFyIHN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgICAgIGlmIChzdGFja2VkKSB7XG4gICAgICAgIHJldHVybiBzdGFja2VkID09IG90aGVyO1xuICAgICAgfVxuICAgICAgYml0bWFzayB8PSBDT01QQVJFX1VOT1JERVJFRF9GTEFHO1xuXG4gICAgICAvLyBSZWN1cnNpdmVseSBjb21wYXJlIG9iamVjdHMgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICAgIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgICAgIHZhciByZXN1bHQgPSBlcXVhbEFycmF5cyhjb252ZXJ0KG9iamVjdCksIGNvbnZlcnQob3RoZXIpLCBiaXRtYXNrLCBjdXN0b21pemVyLCBlcXVhbEZ1bmMsIHN0YWNrKTtcbiAgICAgIHN0YWNrWydkZWxldGUnXShvYmplY3QpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgaWYgKHN5bWJvbFZhbHVlT2YpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbFZhbHVlT2YuY2FsbChvYmplY3QpID09IHN5bWJvbFZhbHVlT2YuY2FsbChvdGhlcik7XG4gICAgICB9XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxdWFsQnlUYWc7XG4iLCJ2YXIgZ2V0QWxsS2V5cyA9IHJlcXVpcmUoJy4vX2dldEFsbEtleXMnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgdmFsdWUgY29tcGFyaXNvbnMuICovXG52YXIgQ09NUEFSRV9QQVJUSUFMX0ZMQUcgPSAxO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUlzRXF1YWxEZWVwYCBmb3Igb2JqZWN0cyB3aXRoIHN1cHBvcnQgZm9yXG4gKiBwYXJ0aWFsIGRlZXAgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjb21wYXJlLlxuICogQHBhcmFtIHtPYmplY3R9IG90aGVyIFRoZSBvdGhlciBvYmplY3QgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiaXRtYXNrIFRoZSBiaXRtYXNrIGZsYWdzLiBTZWUgYGJhc2VJc0VxdWFsYCBmb3IgbW9yZSBkZXRhaWxzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY3VzdG9taXplciBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvbXBhcmlzb25zLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gZXF1YWxGdW5jIFRoZSBmdW5jdGlvbiB0byBkZXRlcm1pbmUgZXF1aXZhbGVudHMgb2YgdmFsdWVzLlxuICogQHBhcmFtIHtPYmplY3R9IHN0YWNrIFRyYWNrcyB0cmF2ZXJzZWQgYG9iamVjdGAgYW5kIGBvdGhlcmAgb2JqZWN0cy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgb2JqZWN0cyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBlcXVhbE9iamVjdHMob2JqZWN0LCBvdGhlciwgYml0bWFzaywgY3VzdG9taXplciwgZXF1YWxGdW5jLCBzdGFjaykge1xuICB2YXIgaXNQYXJ0aWFsID0gYml0bWFzayAmIENPTVBBUkVfUEFSVElBTF9GTEFHLFxuICAgICAgb2JqUHJvcHMgPSBnZXRBbGxLZXlzKG9iamVjdCksXG4gICAgICBvYmpMZW5ndGggPSBvYmpQcm9wcy5sZW5ndGgsXG4gICAgICBvdGhQcm9wcyA9IGdldEFsbEtleXMob3RoZXIpLFxuICAgICAgb3RoTGVuZ3RoID0gb3RoUHJvcHMubGVuZ3RoO1xuXG4gIGlmIChvYmpMZW5ndGggIT0gb3RoTGVuZ3RoICYmICFpc1BhcnRpYWwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIGluZGV4ID0gb2JqTGVuZ3RoO1xuICB3aGlsZSAoaW5kZXgtLSkge1xuICAgIHZhciBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgaWYgKCEoaXNQYXJ0aWFsID8ga2V5IGluIG90aGVyIDogaGFzT3duUHJvcGVydHkuY2FsbChvdGhlciwga2V5KSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgdGhhdCBjeWNsaWMgdmFsdWVzIGFyZSBlcXVhbC5cbiAgdmFyIG9ialN0YWNrZWQgPSBzdGFjay5nZXQob2JqZWN0KTtcbiAgdmFyIG90aFN0YWNrZWQgPSBzdGFjay5nZXQob3RoZXIpO1xuICBpZiAob2JqU3RhY2tlZCAmJiBvdGhTdGFja2VkKSB7XG4gICAgcmV0dXJuIG9ialN0YWNrZWQgPT0gb3RoZXIgJiYgb3RoU3RhY2tlZCA9PSBvYmplY3Q7XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHRydWU7XG4gIHN0YWNrLnNldChvYmplY3QsIG90aGVyKTtcbiAgc3RhY2suc2V0KG90aGVyLCBvYmplY3QpO1xuXG4gIHZhciBza2lwQ3RvciA9IGlzUGFydGlhbDtcbiAgd2hpbGUgKCsraW5kZXggPCBvYmpMZW5ndGgpIHtcbiAgICBrZXkgPSBvYmpQcm9wc1tpbmRleF07XG4gICAgdmFyIG9ialZhbHVlID0gb2JqZWN0W2tleV0sXG4gICAgICAgIG90aFZhbHVlID0gb3RoZXJba2V5XTtcblxuICAgIGlmIChjdXN0b21pemVyKSB7XG4gICAgICB2YXIgY29tcGFyZWQgPSBpc1BhcnRpYWxcbiAgICAgICAgPyBjdXN0b21pemVyKG90aFZhbHVlLCBvYmpWYWx1ZSwga2V5LCBvdGhlciwgb2JqZWN0LCBzdGFjaylcbiAgICAgICAgOiBjdXN0b21pemVyKG9ialZhbHVlLCBvdGhWYWx1ZSwga2V5LCBvYmplY3QsIG90aGVyLCBzdGFjayk7XG4gICAgfVxuICAgIC8vIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgb2JqZWN0cyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIGlmICghKGNvbXBhcmVkID09PSB1bmRlZmluZWRcbiAgICAgICAgICA/IChvYmpWYWx1ZSA9PT0gb3RoVmFsdWUgfHwgZXF1YWxGdW5jKG9ialZhbHVlLCBvdGhWYWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwgc3RhY2spKVxuICAgICAgICAgIDogY29tcGFyZWRcbiAgICAgICAgKSkge1xuICAgICAgcmVzdWx0ID0gZmFsc2U7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgc2tpcEN0b3IgfHwgKHNraXBDdG9yID0ga2V5ID09ICdjb25zdHJ1Y3RvcicpO1xuICB9XG4gIGlmIChyZXN1bHQgJiYgIXNraXBDdG9yKSB7XG4gICAgdmFyIG9iakN0b3IgPSBvYmplY3QuY29uc3RydWN0b3IsXG4gICAgICAgIG90aEN0b3IgPSBvdGhlci5jb25zdHJ1Y3RvcjtcblxuICAgIC8vIE5vbiBgT2JqZWN0YCBvYmplY3QgaW5zdGFuY2VzIHdpdGggZGlmZmVyZW50IGNvbnN0cnVjdG9ycyBhcmUgbm90IGVxdWFsLlxuICAgIGlmIChvYmpDdG9yICE9IG90aEN0b3IgJiZcbiAgICAgICAgKCdjb25zdHJ1Y3RvcicgaW4gb2JqZWN0ICYmICdjb25zdHJ1Y3RvcicgaW4gb3RoZXIpICYmXG4gICAgICAgICEodHlwZW9mIG9iakN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBvYmpDdG9yIGluc3RhbmNlb2Ygb2JqQ3RvciAmJlxuICAgICAgICAgIHR5cGVvZiBvdGhDdG9yID09ICdmdW5jdGlvbicgJiYgb3RoQ3RvciBpbnN0YW5jZW9mIG90aEN0b3IpKSB7XG4gICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgc3RhY2tbJ2RlbGV0ZSddKG9iamVjdCk7XG4gIHN0YWNrWydkZWxldGUnXShvdGhlcik7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXF1YWxPYmplY3RzO1xuIiwidmFyIGZsYXR0ZW4gPSByZXF1aXJlKCcuL2ZsYXR0ZW4nKSxcbiAgICBvdmVyUmVzdCA9IHJlcXVpcmUoJy4vX292ZXJSZXN0JyksXG4gICAgc2V0VG9TdHJpbmcgPSByZXF1aXJlKCcuL19zZXRUb1N0cmluZycpO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZVJlc3RgIHdoaWNoIGZsYXR0ZW5zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGZsYXRSZXN0KGZ1bmMpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHVuZGVmaW5lZCwgZmxhdHRlbiksIGZ1bmMgKyAnJyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmxhdFJlc3Q7XG4iLCIvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGdsb2JhbGAgZnJvbSBOb2RlLmpzLiAqL1xudmFyIGZyZWVHbG9iYWwgPSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09PSBPYmplY3QgJiYgZ2xvYmFsO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZyZWVHbG9iYWw7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHMgPSByZXF1aXJlKCcuL19nZXRTeW1ib2xzJyksXG4gICAga2V5cyA9IHJlcXVpcmUoJy4va2V5cycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2Ygb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMgYW5kIHN5bWJvbHMuXG4gKi9cbmZ1bmN0aW9uIGdldEFsbEtleXMob2JqZWN0KSB7XG4gIHJldHVybiBiYXNlR2V0QWxsS2V5cyhvYmplY3QsIGtleXMsIGdldFN5bWJvbHMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFsbEtleXM7XG4iLCJ2YXIgYmFzZUdldEFsbEtleXMgPSByZXF1aXJlKCcuL19iYXNlR2V0QWxsS2V5cycpLFxuICAgIGdldFN5bWJvbHNJbiA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHNJbicpLFxuICAgIGtleXNJbiA9IHJlcXVpcmUoJy4va2V5c0luJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0QWxsS2V5c0luO1xuIiwidmFyIGlzS2V5YWJsZSA9IHJlcXVpcmUoJy4vX2lzS2V5YWJsZScpO1xuXG4vKipcbiAqIEdldHMgdGhlIGRhdGEgZm9yIGBtYXBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gbWFwIFRoZSBtYXAgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSByZWZlcmVuY2Uga2V5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1hcCBkYXRhLlxuICovXG5mdW5jdGlvbiBnZXRNYXBEYXRhKG1hcCwga2V5KSB7XG4gIHZhciBkYXRhID0gbWFwLl9fZGF0YV9fO1xuICByZXR1cm4gaXNLZXlhYmxlKGtleSlcbiAgICA/IGRhdGFbdHlwZW9mIGtleSA9PSAnc3RyaW5nJyA/ICdzdHJpbmcnIDogJ2hhc2gnXVxuICAgIDogZGF0YS5tYXA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TWFwRGF0YTtcbiIsInZhciBpc1N0cmljdENvbXBhcmFibGUgPSByZXF1aXJlKCcuL19pc1N0cmljdENvbXBhcmFibGUnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgcHJvcGVydHkgbmFtZXMsIHZhbHVlcywgYW5kIGNvbXBhcmUgZmxhZ3Mgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbWF0Y2ggZGF0YSBvZiBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gZ2V0TWF0Y2hEYXRhKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0ga2V5cyhvYmplY3QpLFxuICAgICAgbGVuZ3RoID0gcmVzdWx0Lmxlbmd0aDtcblxuICB3aGlsZSAobGVuZ3RoLS0pIHtcbiAgICB2YXIga2V5ID0gcmVzdWx0W2xlbmd0aF0sXG4gICAgICAgIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICByZXN1bHRbbGVuZ3RoXSA9IFtrZXksIHZhbHVlLCBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpXTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldE1hdGNoRGF0YTtcbiIsInZhciBiYXNlSXNOYXRpdmUgPSByZXF1aXJlKCcuL19iYXNlSXNOYXRpdmUnKSxcbiAgICBnZXRWYWx1ZSA9IHJlcXVpcmUoJy4vX2dldFZhbHVlJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgbmF0aXZlIGZ1bmN0aW9uIGF0IGBrZXlgIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIG1ldGhvZCB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZnVuY3Rpb24gaWYgaXQncyBuYXRpdmUsIGVsc2UgYHVuZGVmaW5lZGAuXG4gKi9cbmZ1bmN0aW9uIGdldE5hdGl2ZShvYmplY3QsIGtleSkge1xuICB2YXIgdmFsdWUgPSBnZXRWYWx1ZShvYmplY3QsIGtleSk7XG4gIHJldHVybiBiYXNlSXNOYXRpdmUodmFsdWUpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmF0aXZlO1xuIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFByb3RvdHlwZTtcbiIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcbiIsInZhciBhcnJheUZpbHRlciA9IHJlcXVpcmUoJy4vX2FycmF5RmlsdGVyJyksXG4gICAgc3R1YkFycmF5ID0gcmVxdWlyZSgnLi9zdHViQXJyYXknKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgcHJvcGVydHlJc0VudW1lcmFibGUgPSBvYmplY3RQcm90by5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUdldFN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHMgPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICBpZiAob2JqZWN0ID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG4gIHJldHVybiBhcnJheUZpbHRlcihuYXRpdmVHZXRTeW1ib2xzKG9iamVjdCksIGZ1bmN0aW9uKHN5bWJvbCkge1xuICAgIHJldHVybiBwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKG9iamVjdCwgc3ltYm9sKTtcbiAgfSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHM7XG4iLCJ2YXIgYXJyYXlQdXNoID0gcmVxdWlyZSgnLi9fYXJyYXlQdXNoJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgZ2V0U3ltYm9scyA9IHJlcXVpcmUoJy4vX2dldFN5bWJvbHMnKSxcbiAgICBzdHViQXJyYXkgPSByZXF1aXJlKCcuL3N0dWJBcnJheScpO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlR2V0U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzSW4gPSAhbmF0aXZlR2V0U3ltYm9scyA/IHN0dWJBcnJheSA6IGZ1bmN0aW9uKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHdoaWxlIChvYmplY3QpIHtcbiAgICBhcnJheVB1c2gocmVzdWx0LCBnZXRTeW1ib2xzKG9iamVjdCkpO1xuICAgIG9iamVjdCA9IGdldFByb3RvdHlwZShvYmplY3QpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFN5bWJvbHNJbjtcbiIsInZhciBEYXRhVmlldyA9IHJlcXVpcmUoJy4vX0RhdGFWaWV3JyksXG4gICAgTWFwID0gcmVxdWlyZSgnLi9fTWFwJyksXG4gICAgUHJvbWlzZSA9IHJlcXVpcmUoJy4vX1Byb21pc2UnKSxcbiAgICBTZXQgPSByZXF1aXJlKCcuL19TZXQnKSxcbiAgICBXZWFrTWFwID0gcmVxdWlyZSgnLi9fV2Vha01hcCcpLFxuICAgIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgdG9Tb3VyY2UgPSByZXF1aXJlKCcuL190b1NvdXJjZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcHJvbWlzZVRhZyA9ICdbb2JqZWN0IFByb21pc2VdJyxcbiAgICBzZXRUYWcgPSAnW29iamVjdCBTZXRdJyxcbiAgICB3ZWFrTWFwVGFnID0gJ1tvYmplY3QgV2Vha01hcF0nO1xuXG52YXIgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWFwcywgc2V0cywgYW5kIHdlYWttYXBzLiAqL1xudmFyIGRhdGFWaWV3Q3RvclN0cmluZyA9IHRvU291cmNlKERhdGFWaWV3KSxcbiAgICBtYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoTWFwKSxcbiAgICBwcm9taXNlQ3RvclN0cmluZyA9IHRvU291cmNlKFByb21pc2UpLFxuICAgIHNldEN0b3JTdHJpbmcgPSB0b1NvdXJjZShTZXQpLFxuICAgIHdlYWtNYXBDdG9yU3RyaW5nID0gdG9Tb3VyY2UoV2Vha01hcCk7XG5cbi8qKlxuICogR2V0cyB0aGUgYHRvU3RyaW5nVGFnYCBvZiBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbnZhciBnZXRUYWcgPSBiYXNlR2V0VGFnO1xuXG4vLyBGYWxsYmFjayBmb3IgZGF0YSB2aWV3cywgbWFwcywgc2V0cywgYW5kIHdlYWsgbWFwcyBpbiBJRSAxMSBhbmQgcHJvbWlzZXMgaW4gTm9kZS5qcyA8IDYuXG5pZiAoKERhdGFWaWV3ICYmIGdldFRhZyhuZXcgRGF0YVZpZXcobmV3IEFycmF5QnVmZmVyKDEpKSkgIT0gZGF0YVZpZXdUYWcpIHx8XG4gICAgKE1hcCAmJiBnZXRUYWcobmV3IE1hcCkgIT0gbWFwVGFnKSB8fFxuICAgIChQcm9taXNlICYmIGdldFRhZyhQcm9taXNlLnJlc29sdmUoKSkgIT0gcHJvbWlzZVRhZykgfHxcbiAgICAoU2V0ICYmIGdldFRhZyhuZXcgU2V0KSAhPSBzZXRUYWcpIHx8XG4gICAgKFdlYWtNYXAgJiYgZ2V0VGFnKG5ldyBXZWFrTWFwKSAhPSB3ZWFrTWFwVGFnKSkge1xuICBnZXRUYWcgPSBmdW5jdGlvbih2YWx1ZSkge1xuICAgIHZhciByZXN1bHQgPSBiYXNlR2V0VGFnKHZhbHVlKSxcbiAgICAgICAgQ3RvciA9IHJlc3VsdCA9PSBvYmplY3RUYWcgPyB2YWx1ZS5jb25zdHJ1Y3RvciA6IHVuZGVmaW5lZCxcbiAgICAgICAgY3RvclN0cmluZyA9IEN0b3IgPyB0b1NvdXJjZShDdG9yKSA6ICcnO1xuXG4gICAgaWYgKGN0b3JTdHJpbmcpIHtcbiAgICAgIHN3aXRjaCAoY3RvclN0cmluZykge1xuICAgICAgICBjYXNlIGRhdGFWaWV3Q3RvclN0cmluZzogcmV0dXJuIGRhdGFWaWV3VGFnO1xuICAgICAgICBjYXNlIG1hcEN0b3JTdHJpbmc6IHJldHVybiBtYXBUYWc7XG4gICAgICAgIGNhc2UgcHJvbWlzZUN0b3JTdHJpbmc6IHJldHVybiBwcm9taXNlVGFnO1xuICAgICAgICBjYXNlIHNldEN0b3JTdHJpbmc6IHJldHVybiBzZXRUYWc7XG4gICAgICAgIGNhc2Ugd2Vha01hcEN0b3JTdHJpbmc6IHJldHVybiB3ZWFrTWFwVGFnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRhZztcbiIsIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFZhbHVlO1xuIiwidmFyIGNhc3RQYXRoID0gcmVxdWlyZSgnLi9fY2FzdFBhdGgnKSxcbiAgICBpc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vaXNBcmd1bWVudHMnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNJbmRleCA9IHJlcXVpcmUoJy4vX2lzSW5kZXgnKSxcbiAgICBpc0xlbmd0aCA9IHJlcXVpcmUoJy4vaXNMZW5ndGgnKSxcbiAgICB0b0tleSA9IHJlcXVpcmUoJy4vX3RvS2V5Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBleGlzdHMgb24gYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaGFzRnVuYyBUaGUgZnVuY3Rpb24gdG8gY2hlY2sgcHJvcGVydGllcy5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc1BhdGgob2JqZWN0LCBwYXRoLCBoYXNGdW5jKSB7XG4gIHBhdGggPSBjYXN0UGF0aChwYXRoLCBvYmplY3QpO1xuXG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gcGF0aC5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBmYWxzZTtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSB0b0tleShwYXRoW2luZGV4XSk7XG4gICAgaWYgKCEocmVzdWx0ID0gb2JqZWN0ICE9IG51bGwgJiYgaGFzRnVuYyhvYmplY3QsIGtleSkpKSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgb2JqZWN0ID0gb2JqZWN0W2tleV07XG4gIH1cbiAgaWYgKHJlc3VsdCB8fCArK2luZGV4ICE9IGxlbmd0aCkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgbGVuZ3RoID0gb2JqZWN0ID09IG51bGwgPyAwIDogb2JqZWN0Lmxlbmd0aDtcbiAgcmV0dXJuICEhbGVuZ3RoICYmIGlzTGVuZ3RoKGxlbmd0aCkgJiYgaXNJbmRleChrZXksIGxlbmd0aCkgJiZcbiAgICAoaXNBcnJheShvYmplY3QpIHx8IGlzQXJndW1lbnRzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc1BhdGg7XG4iLCIvKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2hhcmFjdGVyIGNsYXNzZXMuICovXG52YXIgcnNBc3RyYWxSYW5nZSA9ICdcXFxcdWQ4MDAtXFxcXHVkZmZmJyxcbiAgICByc0NvbWJvTWFya3NSYW5nZSA9ICdcXFxcdTAzMDAtXFxcXHUwMzZmJyxcbiAgICByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgPSAnXFxcXHVmZTIwLVxcXFx1ZmUyZicsXG4gICAgcnNDb21ib1N5bWJvbHNSYW5nZSA9ICdcXFxcdTIwZDAtXFxcXHUyMGZmJyxcbiAgICByc0NvbWJvUmFuZ2UgPSByc0NvbWJvTWFya3NSYW5nZSArIHJlQ29tYm9IYWxmTWFya3NSYW5nZSArIHJzQ29tYm9TeW1ib2xzUmFuZ2UsXG4gICAgcnNWYXJSYW5nZSA9ICdcXFxcdWZlMGVcXFxcdWZlMGYnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIHVuaWNvZGUgY2FwdHVyZSBncm91cHMuICovXG52YXIgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IHN0cmluZ3Mgd2l0aCBbemVyby13aWR0aCBqb2luZXJzIG9yIGNvZGUgcG9pbnRzIGZyb20gdGhlIGFzdHJhbCBwbGFuZXNdKGh0dHA6Ly9lZXYuZWUvYmxvZy8yMDE1LzA5LzEyL2RhcmstY29ybmVycy1vZi11bmljb2RlLykuICovXG52YXIgcmVIYXNVbmljb2RlID0gUmVnRXhwKCdbJyArIHJzWldKICsgcnNBc3RyYWxSYW5nZSAgKyByc0NvbWJvUmFuZ2UgKyByc1ZhclJhbmdlICsgJ10nKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHN0cmluZ2AgY29udGFpbnMgVW5pY29kZSBzeW1ib2xzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhIHN5bWJvbCBpcyBmb3VuZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBoYXNVbmljb2RlKHN0cmluZykge1xuICByZXR1cm4gcmVIYXNVbmljb2RlLnRlc3Qoc3RyaW5nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNVbmljb2RlO1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGhhc2guXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgSGFzaFxuICovXG5mdW5jdGlvbiBoYXNoQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuYXRpdmVDcmVhdGUgPyBuYXRpdmVDcmVhdGUobnVsbCkgOiB7fTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBoYXNoLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge09iamVjdH0gaGFzaCBUaGUgaGFzaCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaERlbGV0ZShrZXkpIHtcbiAgdmFyIHJlc3VsdCA9IHRoaXMuaGFzKGtleSkgJiYgZGVsZXRlIHRoaXMuX19kYXRhX19ba2V5XTtcbiAgdGhpcy5zaXplIC09IHJlc3VsdCA/IDEgOiAwO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhc2hEZWxldGU7XG4iLCJ2YXIgbmF0aXZlQ3JlYXRlID0gcmVxdWlyZSgnLi9fbmF0aXZlQ3JlYXRlJyk7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoYXNoR2V0O1xuIiwidmFyIG5hdGl2ZUNyZWF0ZSA9IHJlcXVpcmUoJy4vX25hdGl2ZUNyZWF0ZScpO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGhhc2ggdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hIYXMoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgcmV0dXJuIG5hdGl2ZUNyZWF0ZSA/IChkYXRhW2tleV0gIT09IHVuZGVmaW5lZCkgOiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGRhdGEsIGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaEhhcztcbiIsInZhciBuYXRpdmVDcmVhdGUgPSByZXF1aXJlKCcuL19uYXRpdmVDcmVhdGUnKTtcblxuLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIFNldHMgdGhlIGhhc2ggYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBoYXNoIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBoYXNoU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICB0aGlzLnNpemUgKz0gdGhpcy5oYXMoa2V5KSA/IDAgOiAxO1xuICBkYXRhW2tleV0gPSAobmF0aXZlQ3JlYXRlICYmIHZhbHVlID09PSB1bmRlZmluZWQpID8gSEFTSF9VTkRFRklORUQgOiB2YWx1ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzaFNldDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lQXJyYXk7XG4iLCJ2YXIgY2xvbmVBcnJheUJ1ZmZlciA9IHJlcXVpcmUoJy4vX2Nsb25lQXJyYXlCdWZmZXInKSxcbiAgICBjbG9uZURhdGFWaWV3ID0gcmVxdWlyZSgnLi9fY2xvbmVEYXRhVmlldycpLFxuICAgIGNsb25lUmVnRXhwID0gcmVxdWlyZSgnLi9fY2xvbmVSZWdFeHAnKSxcbiAgICBjbG9uZVN5bWJvbCA9IHJlcXVpcmUoJy4vX2Nsb25lU3ltYm9sJyksXG4gICAgY2xvbmVUeXBlZEFycmF5ID0gcmVxdWlyZSgnLi9fY2xvbmVUeXBlZEFycmF5Jyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXSc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXScsXG4gICAgZGF0YVZpZXdUYWcgPSAnW29iamVjdCBEYXRhVmlld10nLFxuICAgIGZsb2F0MzJUYWcgPSAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICBmbG9hdDY0VGFnID0gJ1tvYmplY3QgRmxvYXQ2NEFycmF5XScsXG4gICAgaW50OFRhZyA9ICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgIGludDE2VGFnID0gJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgIGludDMyVGFnID0gJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgIHVpbnQ4VGFnID0gJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgIHVpbnQ4Q2xhbXBlZFRhZyA9ICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgdWludDE2VGFnID0gJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICB1aW50MzJUYWcgPSAnW29iamVjdCBVaW50MzJBcnJheV0nO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZSBiYXNlZCBvbiBpdHMgYHRvU3RyaW5nVGFnYC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBmdW5jdGlvbiBvbmx5IHN1cHBvcnRzIGNsb25pbmcgdmFsdWVzIHdpdGggdGFncyBvZlxuICogYEJvb2xlYW5gLCBgRGF0ZWAsIGBFcnJvcmAsIGBNYXBgLCBgTnVtYmVyYCwgYFJlZ0V4cGAsIGBTZXRgLCBvciBgU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgYHRvU3RyaW5nVGFnYCBvZiB0aGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGluaXRpYWxpemVkIGNsb25lLlxuICovXG5mdW5jdGlvbiBpbml0Q2xvbmVCeVRhZyhvYmplY3QsIHRhZywgaXNEZWVwKSB7XG4gIHZhciBDdG9yID0gb2JqZWN0LmNvbnN0cnVjdG9yO1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgYXJyYXlCdWZmZXJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVBcnJheUJ1ZmZlcihvYmplY3QpO1xuXG4gICAgY2FzZSBib29sVGFnOlxuICAgIGNhc2UgZGF0ZVRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3Rvcigrb2JqZWN0KTtcblxuICAgIGNhc2UgZGF0YVZpZXdUYWc6XG4gICAgICByZXR1cm4gY2xvbmVEYXRhVmlldyhvYmplY3QsIGlzRGVlcCk7XG5cbiAgICBjYXNlIGZsb2F0MzJUYWc6IGNhc2UgZmxvYXQ2NFRhZzpcbiAgICBjYXNlIGludDhUYWc6IGNhc2UgaW50MTZUYWc6IGNhc2UgaW50MzJUYWc6XG4gICAgY2FzZSB1aW50OFRhZzogY2FzZSB1aW50OENsYW1wZWRUYWc6IGNhc2UgdWludDE2VGFnOiBjYXNlIHVpbnQzMlRhZzpcbiAgICAgIHJldHVybiBjbG9uZVR5cGVkQXJyYXkob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBtYXBUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3I7XG5cbiAgICBjYXNlIG51bWJlclRhZzpcbiAgICBjYXNlIHN0cmluZ1RhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcihvYmplY3QpO1xuXG4gICAgY2FzZSByZWdleHBUYWc6XG4gICAgICByZXR1cm4gY2xvbmVSZWdFeHAob2JqZWN0KTtcblxuICAgIGNhc2Ugc2V0VGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBzeW1ib2xUYWc6XG4gICAgICByZXR1cm4gY2xvbmVTeW1ib2wob2JqZWN0KTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluaXRDbG9uZUJ5VGFnO1xuIiwidmFyIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNQcm90b3R5cGUgPSByZXF1aXJlKCcuL19pc1Byb3RvdHlwZScpO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5pdENsb25lT2JqZWN0O1xuIiwidmFyIFN5bWJvbCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGlzQXJndW1lbnRzID0gcmVxdWlyZSgnLi9pc0FyZ3VtZW50cycpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgc3ByZWFkYWJsZVN5bWJvbCA9IFN5bWJvbCA/IFN5bWJvbC5pc0NvbmNhdFNwcmVhZGFibGUgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBmbGF0dGVuYWJsZSBgYXJndW1lbnRzYCBvYmplY3Qgb3IgYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgZmxhdHRlbmFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNGbGF0dGVuYWJsZSh2YWx1ZSkge1xuICByZXR1cm4gaXNBcnJheSh2YWx1ZSkgfHwgaXNBcmd1bWVudHModmFsdWUpIHx8XG4gICAgISEoc3ByZWFkYWJsZVN5bWJvbCAmJiB2YWx1ZSAmJiB2YWx1ZVtzcHJlYWRhYmxlU3ltYm9sXSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNGbGF0dGVuYWJsZTtcbiIsIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgdW5zaWduZWQgaW50ZWdlciB2YWx1ZXMuICovXG52YXIgcmVJc1VpbnQgPSAvXig/OjB8WzEtOV1cXGQqKSQvO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBpbmRleC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcGFyYW0ge251bWJlcn0gW2xlbmd0aD1NQVhfU0FGRV9JTlRFR0VSXSBUaGUgdXBwZXIgYm91bmRzIG9mIGEgdmFsaWQgaW5kZXguXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGluZGV4LCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSW5kZXgodmFsdWUsIGxlbmd0aCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgbGVuZ3RoID0gbGVuZ3RoID09IG51bGwgPyBNQVhfU0FGRV9JTlRFR0VSIDogbGVuZ3RoO1xuXG4gIHJldHVybiAhIWxlbmd0aCAmJlxuICAgICh0eXBlID09ICdudW1iZXInIHx8XG4gICAgICAodHlwZSAhPSAnc3ltYm9sJyAmJiByZUlzVWludC50ZXN0KHZhbHVlKSkpICYmXG4gICAgICAgICh2YWx1ZSA+IC0xICYmIHZhbHVlICUgMSA9PSAwICYmIHZhbHVlIDwgbGVuZ3RoKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0luZGV4O1xuIiwidmFyIGVxID0gcmVxdWlyZSgnLi9lcScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzSW5kZXggPSByZXF1aXJlKCcuL19pc0luZGV4JyksXG4gICAgaXNPYmplY3QgPSByZXF1aXJlKCcuL2lzT2JqZWN0Jyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBnaXZlbiBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIHZhbHVlIGFyZ3VtZW50LlxuICogQHBhcmFtIHsqfSBpbmRleCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIGluZGV4IG9yIGtleSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBwb3RlbnRpYWwgaXRlcmF0ZWUgb2JqZWN0IGFyZ3VtZW50LlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBhcmd1bWVudHMgYXJlIGZyb20gYW4gaXRlcmF0ZWUgY2FsbCxcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzSXRlcmF0ZWVDYWxsKHZhbHVlLCBpbmRleCwgb2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiBpbmRleDtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcidcbiAgICAgICAgPyAoaXNBcnJheUxpa2Uob2JqZWN0KSAmJiBpc0luZGV4KGluZGV4LCBvYmplY3QubGVuZ3RoKSlcbiAgICAgICAgOiAodHlwZSA9PSAnc3RyaW5nJyAmJiBpbmRleCBpbiBvYmplY3QpXG4gICAgICApIHtcbiAgICByZXR1cm4gZXEob2JqZWN0W2luZGV4XSwgdmFsdWUpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0l0ZXJhdGVlQ2FsbDtcbiIsInZhciBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNTeW1ib2wgPSByZXF1aXJlKCcuL2lzU3ltYm9sJyk7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIHByb3BlcnR5IG5hbWVzIHdpdGhpbiBwcm9wZXJ0eSBwYXRocy4gKi9cbnZhciByZUlzRGVlcFByb3AgPSAvXFwufFxcWyg/OlteW1xcXV0qfChbXCInXSkoPzooPyFcXDEpW15cXFxcXXxcXFxcLikqP1xcMSlcXF0vLFxuICAgIHJlSXNQbGFpblByb3AgPSAvXlxcdyokLztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHByb3BlcnR5IG5hbWUgYW5kIG5vdCBhIHByb3BlcnR5IHBhdGguXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBvYmplY3QgdG8gcXVlcnkga2V5cyBvbi5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcHJvcGVydHkgbmFtZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleSh2YWx1ZSwgb2JqZWN0KSB7XG4gIGlmIChpc0FycmF5KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgaWYgKHR5cGUgPT0gJ251bWJlcicgfHwgdHlwZSA9PSAnc3ltYm9sJyB8fCB0eXBlID09ICdib29sZWFuJyB8fFxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCBpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gcmVJc1BsYWluUHJvcC50ZXN0KHZhbHVlKSB8fCAhcmVJc0RlZXBQcm9wLnRlc3QodmFsdWUpIHx8XG4gICAgKG9iamVjdCAhPSBudWxsICYmIHZhbHVlIGluIE9iamVjdChvYmplY3QpKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleTtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUgZm9yIHVzZSBhcyB1bmlxdWUgb2JqZWN0IGtleS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0tleWFibGUodmFsdWUpIHtcbiAgdmFyIHR5cGUgPSB0eXBlb2YgdmFsdWU7XG4gIHJldHVybiAodHlwZSA9PSAnc3RyaW5nJyB8fCB0eXBlID09ICdudW1iZXInIHx8IHR5cGUgPT0gJ3N5bWJvbCcgfHwgdHlwZSA9PSAnYm9vbGVhbicpXG4gICAgPyAodmFsdWUgIT09ICdfX3Byb3RvX18nKVxuICAgIDogKHZhbHVlID09PSBudWxsKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0tleWFibGU7XG4iLCJ2YXIgY29yZUpzRGF0YSA9IHJlcXVpcmUoJy4vX2NvcmVKc0RhdGEnKTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1ldGhvZHMgbWFzcXVlcmFkaW5nIGFzIG5hdGl2ZS4gKi9cbnZhciBtYXNrU3JjS2V5ID0gKGZ1bmN0aW9uKCkge1xuICB2YXIgdWlkID0gL1teLl0rJC8uZXhlYyhjb3JlSnNEYXRhICYmIGNvcmVKc0RhdGEua2V5cyAmJiBjb3JlSnNEYXRhLmtleXMuSUVfUFJPVE8gfHwgJycpO1xuICByZXR1cm4gdWlkID8gKCdTeW1ib2woc3JjKV8xLicgKyB1aWQpIDogJyc7XG59KCkpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgZnVuY2AgaGFzIGl0cyBzb3VyY2UgbWFza2VkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgZnVuY2AgaXMgbWFza2VkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGlzTWFza2VkKGZ1bmMpIHtcbiAgcmV0dXJuICEhbWFza1NyY0tleSAmJiAobWFza1NyY0tleSBpbiBmdW5jKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc01hc2tlZDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGEgcHJvdG90eXBlIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHByb3RvdHlwZSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1Byb3RvdHlwZSh2YWx1ZSkge1xuICB2YXIgQ3RvciA9IHZhbHVlICYmIHZhbHVlLmNvbnN0cnVjdG9yLFxuICAgICAgcHJvdG8gPSAodHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yLnByb3RvdHlwZSkgfHwgb2JqZWN0UHJvdG87XG5cbiAgcmV0dXJuIHZhbHVlID09PSBwcm90bztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1Byb3RvdHlwZTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBzdWl0YWJsZSBmb3Igc3RyaWN0IGVxdWFsaXR5IGNvbXBhcmlzb25zLCBpLmUuIGA9PT1gLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlmIHN1aXRhYmxlIGZvciBzdHJpY3RcbiAqICBlcXVhbGl0eSBjb21wYXJpc29ucywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc1N0cmljdENvbXBhcmFibGUodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZSAmJiAhaXNPYmplY3QodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaWN0Q29tcGFyYWJsZTtcbiIsIi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbGlzdCBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBbXTtcbiAgdGhpcy5zaXplID0gMDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVDbGVhcjtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZURlbGV0ZTtcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaXN0IGNhY2hlIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlR2V0KGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIHJldHVybiBpbmRleCA8IDAgPyB1bmRlZmluZWQgOiBkYXRhW2luZGV4XVsxXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsaXN0Q2FjaGVHZXQ7XG4iLCJ2YXIgYXNzb2NJbmRleE9mID0gcmVxdWlyZSgnLi9fYXNzb2NJbmRleE9mJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgbGlzdCBjYWNoZSB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVIYXMoa2V5KSB7XG4gIHJldHVybiBhc3NvY0luZGV4T2YodGhpcy5fX2RhdGFfXywga2V5KSA+IC0xO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZUhhcztcbiIsInZhciBhc3NvY0luZGV4T2YgPSByZXF1aXJlKCcuL19hc3NvY0luZGV4T2YnKTtcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGxpc3RDYWNoZVNldDtcbiIsInZhciBIYXNoID0gcmVxdWlyZSgnLi9fSGFzaCcpLFxuICAgIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIG1hcC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUNsZWFyKCkge1xuICB0aGlzLnNpemUgPSAwO1xuICB0aGlzLl9fZGF0YV9fID0ge1xuICAgICdoYXNoJzogbmV3IEhhc2gsXG4gICAgJ21hcCc6IG5ldyAoTWFwIHx8IExpc3RDYWNoZSksXG4gICAgJ3N0cmluZyc6IG5ldyBIYXNoXG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVDbGVhcjtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBtYXAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGRlbGV0ZVxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHJlbW92ZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgZW50cnkgd2FzIHJlbW92ZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSlbJ2RlbGV0ZSddKGtleSk7XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZURlbGV0ZTtcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVHZXQ7XG4iLCJ2YXIgZ2V0TWFwRGF0YSA9IHJlcXVpcmUoJy4vX2dldE1hcERhdGEnKTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSBtYXAgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgZW50cnkgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYW4gZW50cnkgZm9yIGBrZXlgIGV4aXN0cywgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZUhhcyhrZXkpIHtcbiAgcmV0dXJuIGdldE1hcERhdGEodGhpcywga2V5KS5oYXMoa2V5KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXBDYWNoZUhhcztcbiIsInZhciBnZXRNYXBEYXRhID0gcmVxdWlyZSgnLi9fZ2V0TWFwRGF0YScpO1xuXG4vKipcbiAqIFNldHMgdGhlIG1hcCBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBtYXAgY2FjaGUgaW5zdGFuY2UuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlU2V0KGtleSwgdmFsdWUpIHtcbiAgdmFyIGRhdGEgPSBnZXRNYXBEYXRhKHRoaXMsIGtleSksXG4gICAgICBzaXplID0gZGF0YS5zaXplO1xuXG4gIGRhdGEuc2V0KGtleSwgdmFsdWUpO1xuICB0aGlzLnNpemUgKz0gZGF0YS5zaXplID09IHNpemUgPyAwIDogMTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwQ2FjaGVTZXQ7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBtYXBgIHRvIGl0cyBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBrZXktdmFsdWUgcGFpcnMuXG4gKi9cbmZ1bmN0aW9uIG1hcFRvQXJyYXkobWFwKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkobWFwLnNpemUpO1xuXG4gIG1hcC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAgICByZXN1bHRbKytpbmRleF0gPSBba2V5LCB2YWx1ZV07XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFRvQXJyYXk7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgbWF0Y2hlc1Byb3BlcnR5YCBmb3Igc291cmNlIHZhbHVlcyBzdWl0YWJsZVxuICogZm9yIHN0cmljdCBlcXVhbGl0eSBjb21wYXJpc29ucywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcGFyYW0geyp9IHNyY1ZhbHVlIFRoZSB2YWx1ZSB0byBtYXRjaC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNwZWMgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG1hdGNoZXNTdHJpY3RDb21wYXJhYmxlKGtleSwgc3JjVmFsdWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIGlmIChvYmplY3QgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gb2JqZWN0W2tleV0gPT09IHNyY1ZhbHVlICYmXG4gICAgICAoc3JjVmFsdWUgIT09IHVuZGVmaW5lZCB8fCAoa2V5IGluIE9iamVjdChvYmplY3QpKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWF0Y2hlc1N0cmljdENvbXBhcmFibGU7XG4iLCJ2YXIgbWVtb2l6ZSA9IHJlcXVpcmUoJy4vbWVtb2l6ZScpO1xuXG4vKiogVXNlZCBhcyB0aGUgbWF4aW11bSBtZW1vaXplIGNhY2hlIHNpemUuICovXG52YXIgTUFYX01FTU9JWkVfU0laRSA9IDUwMDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYF8ubWVtb2l6ZWAgd2hpY2ggY2xlYXJzIHRoZSBtZW1vaXplZCBmdW5jdGlvbidzXG4gKiBjYWNoZSB3aGVuIGl0IGV4Y2VlZHMgYE1BWF9NRU1PSVpFX1NJWkVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZUNhcHBlZChmdW5jKSB7XG4gIHZhciByZXN1bHQgPSBtZW1vaXplKGZ1bmMsIGZ1bmN0aW9uKGtleSkge1xuICAgIGlmIChjYWNoZS5zaXplID09PSBNQVhfTUVNT0laRV9TSVpFKSB7XG4gICAgICBjYWNoZS5jbGVhcigpO1xuICAgIH1cbiAgICByZXR1cm4ga2V5O1xuICB9KTtcblxuICB2YXIgY2FjaGUgPSByZXN1bHQuY2FjaGU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZUNhcHBlZDtcbiIsInZhciBnZXROYXRpdmUgPSByZXF1aXJlKCcuL19nZXROYXRpdmUnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIG5hdGl2ZUNyZWF0ZSA9IGdldE5hdGl2ZShPYmplY3QsICdjcmVhdGUnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVDcmVhdGU7XG4iLCJ2YXIgb3ZlckFyZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUtleXMgPSBvdmVyQXJnKE9iamVjdC5rZXlzLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5hdGl2ZUtleXM7XG4iLCIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBuYXRpdmVLZXlzSW47XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxubW9kdWxlLmV4cG9ydHMgPSBub2RlVXRpbDtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuIiwiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlckFyZztcbiIsInZhciBhcHBseSA9IHJlcXVpcmUoJy4vX2FwcGx5Jyk7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVNYXggPSBNYXRoLm1heDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VSZXN0YCB3aGljaCB0cmFuc2Zvcm1zIHRoZSByZXN0IGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBhcHBseSBhIHJlc3QgcGFyYW1ldGVyIHRvLlxuICogQHBhcmFtIHtudW1iZXJ9IFtzdGFydD1mdW5jLmxlbmd0aC0xXSBUaGUgc3RhcnQgcG9zaXRpb24gb2YgdGhlIHJlc3QgcGFyYW1ldGVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtIFRoZSByZXN0IGFycmF5IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyUmVzdChmdW5jLCBzdGFydCwgdHJhbnNmb3JtKSB7XG4gIHN0YXJ0ID0gbmF0aXZlTWF4KHN0YXJ0ID09PSB1bmRlZmluZWQgPyAoZnVuYy5sZW5ndGggLSAxKSA6IHN0YXJ0LCAwKTtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gYXJndW1lbnRzLFxuICAgICAgICBpbmRleCA9IC0xLFxuICAgICAgICBsZW5ndGggPSBuYXRpdmVNYXgoYXJncy5sZW5ndGggLSBzdGFydCwgMCksXG4gICAgICAgIGFycmF5ID0gQXJyYXkobGVuZ3RoKTtcblxuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBhcnJheVtpbmRleF0gPSBhcmdzW3N0YXJ0ICsgaW5kZXhdO1xuICAgIH1cbiAgICBpbmRleCA9IC0xO1xuICAgIHZhciBvdGhlckFyZ3MgPSBBcnJheShzdGFydCArIDEpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgc3RhcnQpIHtcbiAgICAgIG90aGVyQXJnc1tpbmRleF0gPSBhcmdzW2luZGV4XTtcbiAgICB9XG4gICAgb3RoZXJBcmdzW3N0YXJ0XSA9IHRyYW5zZm9ybShhcnJheSk7XG4gICAgcmV0dXJuIGFwcGx5KGZ1bmMsIHRoaXMsIG90aGVyQXJncyk7XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb3ZlclJlc3Q7XG4iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG4iLCIvKipcbiAqIEdldHMgdGhlIHZhbHVlIGF0IGBrZXlgLCB1bmxlc3MgYGtleWAgaXMgXCJfX3Byb3RvX19cIiBvciBcImNvbnN0cnVjdG9yXCIuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHByb3BlcnR5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzYWZlR2V0KG9iamVjdCwga2V5KSB7XG4gIGlmIChrZXkgPT09ICdjb25zdHJ1Y3RvcicgJiYgdHlwZW9mIG9iamVjdFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGtleSA9PSAnX19wcm90b19fJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJldHVybiBvYmplY3Rba2V5XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzYWZlR2V0O1xuIiwiLyoqIFVzZWQgdG8gc3RhbmQtaW4gZm9yIGB1bmRlZmluZWRgIGhhc2ggdmFsdWVzLiAqL1xudmFyIEhBU0hfVU5ERUZJTkVEID0gJ19fbG9kYXNoX2hhc2hfdW5kZWZpbmVkX18nO1xuXG4vKipcbiAqIEFkZHMgYHZhbHVlYCB0byB0aGUgYXJyYXkgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGFkZFxuICogQG1lbWJlck9mIFNldENhY2hlXG4gKiBAYWxpYXMgcHVzaFxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2FjaGUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc2V0Q2FjaGVBZGQodmFsdWUpIHtcbiAgdGhpcy5fX2RhdGFfXy5zZXQodmFsdWUsIEhBU0hfVU5ERUZJTkVEKTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVBZGQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGluIHRoZSBhcnJheSBjYWNoZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgU2V0Q2FjaGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNlYXJjaCBmb3IuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGZvdW5kLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHNldENhY2hlSGFzKHZhbHVlKSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0Q2FjaGVIYXM7XG4iLCIvKipcbiAqIENvbnZlcnRzIGBzZXRgIHRvIGFuIGFycmF5IG9mIGl0cyB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBzZXQgVGhlIHNldCB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSB2YWx1ZXMuXG4gKi9cbmZ1bmN0aW9uIHNldFRvQXJyYXkoc2V0KSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgcmVzdWx0ID0gQXJyYXkoc2V0LnNpemUpO1xuXG4gIHNldC5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmVzdWx0WysraW5kZXhdID0gdmFsdWU7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvQXJyYXk7XG4iLCJ2YXIgYmFzZVNldFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fYmFzZVNldFRvU3RyaW5nJyksXG4gICAgc2hvcnRPdXQgPSByZXF1aXJlKCcuL19zaG9ydE91dCcpO1xuXG4vKipcbiAqIFNldHMgdGhlIGB0b1N0cmluZ2AgbWV0aG9kIG9mIGBmdW5jYCB0byByZXR1cm4gYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHN0cmluZyBUaGUgYHRvU3RyaW5nYCByZXN1bHQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgYGZ1bmNgLlxuICovXG52YXIgc2V0VG9TdHJpbmcgPSBzaG9ydE91dChiYXNlU2V0VG9TdHJpbmcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNldFRvU3RyaW5nO1xuIiwiLyoqIFVzZWQgdG8gZGV0ZWN0IGhvdCBmdW5jdGlvbnMgYnkgbnVtYmVyIG9mIGNhbGxzIHdpdGhpbiBhIHNwYW4gb2YgbWlsbGlzZWNvbmRzLiAqL1xudmFyIEhPVF9DT1VOVCA9IDgwMCxcbiAgICBIT1RfU1BBTiA9IDE2O1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTm93ID0gRGF0ZS5ub3c7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQnbGwgc2hvcnQgb3V0IGFuZCBpbnZva2UgYGlkZW50aXR5YCBpbnN0ZWFkXG4gKiBvZiBgZnVuY2Agd2hlbiBpdCdzIGNhbGxlZCBgSE9UX0NPVU5UYCBvciBtb3JlIHRpbWVzIGluIGBIT1RfU1BBTmBcbiAqIG1pbGxpc2Vjb25kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gcmVzdHJpY3QuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBzaG9ydGFibGUgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIHNob3J0T3V0KGZ1bmMpIHtcbiAgdmFyIGNvdW50ID0gMCxcbiAgICAgIGxhc3RDYWxsZWQgPSAwO1xuXG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgc3RhbXAgPSBuYXRpdmVOb3coKSxcbiAgICAgICAgcmVtYWluaW5nID0gSE9UX1NQQU4gLSAoc3RhbXAgLSBsYXN0Q2FsbGVkKTtcblxuICAgIGxhc3RDYWxsZWQgPSBzdGFtcDtcbiAgICBpZiAocmVtYWluaW5nID4gMCkge1xuICAgICAgaWYgKCsrY291bnQgPj0gSE9UX0NPVU5UKSB7XG4gICAgICAgIHJldHVybiBhcmd1bWVudHNbMF07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvdW50ID0gMDtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmMuYXBwbHkodW5kZWZpbmVkLCBhcmd1bWVudHMpO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3J0T3V0O1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrQ2xlYXI7XG4iLCIvKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBzdGFjay5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBzdGFja0RlbGV0ZShrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fLFxuICAgICAgcmVzdWx0ID0gZGF0YVsnZGVsZXRlJ10oa2V5KTtcblxuICB0aGlzLnNpemUgPSBkYXRhLnNpemU7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tEZWxldGU7XG4iLCIvKipcbiAqIEdldHMgdGhlIHN0YWNrIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgU3RhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBzdGFja0dldChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGtleSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tHZXQ7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0YWNrSGFzO1xuIiwidmFyIExpc3RDYWNoZSA9IHJlcXVpcmUoJy4vX0xpc3RDYWNoZScpLFxuICAgIE1hcCA9IHJlcXVpcmUoJy4vX01hcCcpLFxuICAgIE1hcENhY2hlID0gcmVxdWlyZSgnLi9fTWFwQ2FjaGUnKTtcblxuLyoqIFVzZWQgYXMgdGhlIHNpemUgdG8gZW5hYmxlIGxhcmdlIGFycmF5IG9wdGltaXphdGlvbnMuICovXG52YXIgTEFSR0VfQVJSQVlfU0laRSA9IDIwMDtcblxuLyoqXG4gKiBTZXRzIHRoZSBzdGFjayBga2V5YCB0byBgdmFsdWVgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBzZXRcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBzdGFjayBjYWNoZSBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX187XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgTGlzdENhY2hlKSB7XG4gICAgdmFyIHBhaXJzID0gZGF0YS5fX2RhdGFfXztcbiAgICBpZiAoIU1hcCB8fCAocGFpcnMubGVuZ3RoIDwgTEFSR0VfQVJSQVlfU0laRSAtIDEpKSB7XG4gICAgICBwYWlycy5wdXNoKFtrZXksIHZhbHVlXSk7XG4gICAgICB0aGlzLnNpemUgPSArK2RhdGEuc2l6ZTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBNYXBDYWNoZShwYWlycyk7XG4gIH1cbiAgZGF0YS5zZXQoa2V5LCB2YWx1ZSk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RhY2tTZXQ7XG4iLCIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaWN0SW5kZXhPZjtcbiIsInZhciBhc2NpaVNpemUgPSByZXF1aXJlKCcuL19hc2NpaVNpemUnKSxcbiAgICBoYXNVbmljb2RlID0gcmVxdWlyZSgnLi9faGFzVW5pY29kZScpLFxuICAgIHVuaWNvZGVTaXplID0gcmVxdWlyZSgnLi9fdW5pY29kZVNpemUnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBudW1iZXIgb2Ygc3ltYm9scyBpbiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBzdHJpbmcgc2l6ZS5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nU2l6ZShzdHJpbmcpIHtcbiAgcmV0dXJuIGhhc1VuaWNvZGUoc3RyaW5nKVxuICAgID8gdW5pY29kZVNpemUoc3RyaW5nKVxuICAgIDogYXNjaWlTaXplKHN0cmluZyk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nU2l6ZTtcbiIsInZhciBtZW1vaXplQ2FwcGVkID0gcmVxdWlyZSgnLi9fbWVtb2l6ZUNhcHBlZCcpO1xuXG4vKiogVXNlZCB0byBtYXRjaCBwcm9wZXJ0eSBuYW1lcyB3aXRoaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVQcm9wTmFtZSA9IC9bXi5bXFxdXSt8XFxbKD86KC0/XFxkKyg/OlxcLlxcZCspPyl8KFtcIiddKSgoPzooPyFcXDIpW15cXFxcXXxcXFxcLikqPylcXDIpXFxdfCg/PSg/OlxcLnxcXFtcXF0pKD86XFwufFxcW1xcXXwkKSkvZztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggYmFja3NsYXNoZXMgaW4gcHJvcGVydHkgcGF0aHMuICovXG52YXIgcmVFc2NhcGVDaGFyID0gL1xcXFwoXFxcXCk/L2c7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYSBwcm9wZXJ0eSBwYXRoIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgcHJvcGVydHkgcGF0aCBhcnJheS5cbiAqL1xudmFyIHN0cmluZ1RvUGF0aCA9IG1lbW9pemVDYXBwZWQoZnVuY3Rpb24oc3RyaW5nKSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgaWYgKHN0cmluZy5jaGFyQ29kZUF0KDApID09PSA0NiAvKiAuICovKSB7XG4gICAgcmVzdWx0LnB1c2goJycpO1xuICB9XG4gIHN0cmluZy5yZXBsYWNlKHJlUHJvcE5hbWUsIGZ1bmN0aW9uKG1hdGNoLCBudW1iZXIsIHF1b3RlLCBzdWJTdHJpbmcpIHtcbiAgICByZXN1bHQucHVzaChxdW90ZSA/IHN1YlN0cmluZy5yZXBsYWNlKHJlRXNjYXBlQ2hhciwgJyQxJykgOiAobnVtYmVyIHx8IG1hdGNoKSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gc3RyaW5nVG9QYXRoO1xuIiwidmFyIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBJTkZJTklUWSA9IDEgLyAwO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBzdHJpbmcga2V5IGlmIGl0J3Mgbm90IGEgc3RyaW5nIG9yIHN5bWJvbC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtzdHJpbmd8c3ltYm9sfSBSZXR1cm5zIHRoZSBrZXkuXG4gKi9cbmZ1bmN0aW9uIHRvS2V5KHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b0tleTtcbiIsIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIHJlc29sdmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cbnZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYGZ1bmNgIHRvIGl0cyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHNvdXJjZSBjb2RlLlxuICovXG5mdW5jdGlvbiB0b1NvdXJjZShmdW5jKSB7XG4gIGlmIChmdW5jICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGZ1bmNUb1N0cmluZy5jYWxsKGZ1bmMpO1xuICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiAoZnVuYyArICcnKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0b1NvdXJjZTtcbiIsIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBhIFVuaWNvZGUgYHN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyBpbnNwZWN0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgc3RyaW5nIHNpemUuXG4gKi9cbmZ1bmN0aW9uIHVuaWNvZGVTaXplKHN0cmluZykge1xuICB2YXIgcmVzdWx0ID0gcmVVbmljb2RlLmxhc3RJbmRleCA9IDA7XG4gIHdoaWxlIChyZVVuaWNvZGUudGVzdChzdHJpbmcpKSB7XG4gICAgKytyZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB1bmljb2RlU2l6ZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzaGFsbG93IGNsb25lIG9mIGB2YWx1ZWAuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb24gdGhlXG4gKiBbc3RydWN0dXJlZCBjbG9uZSBhbGdvcml0aG1dKGh0dHBzOi8vbWRuLmlvL1N0cnVjdHVyZWRfY2xvbmVfYWxnb3JpdGhtKVxuICogYW5kIHN1cHBvcnRzIGNsb25pbmcgYXJyYXlzLCBhcnJheSBidWZmZXJzLCBib29sZWFucywgZGF0ZSBvYmplY3RzLCBtYXBzLFxuICogbnVtYmVycywgYE9iamVjdGAgb2JqZWN0cywgcmVnZXhlcywgc2V0cywgc3RyaW5ncywgc3ltYm9scywgYW5kIHR5cGVkXG4gKiBhcnJheXMuIFRoZSBvd24gZW51bWVyYWJsZSBwcm9wZXJ0aWVzIG9mIGBhcmd1bWVudHNgIG9iamVjdHMgYXJlIGNsb25lZFxuICogYXMgcGxhaW4gb2JqZWN0cy4gQW4gZW1wdHkgb2JqZWN0IGlzIHJldHVybmVkIGZvciB1bmNsb25lYWJsZSB2YWx1ZXMgc3VjaFxuICogYXMgZXJyb3Igb2JqZWN0cywgZnVuY3Rpb25zLCBET00gbm9kZXMsIGFuZCBXZWFrTWFwcy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lRGVlcFxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICdhJzogMSB9LCB7ICdiJzogMiB9XTtcbiAqXG4gKiB2YXIgc2hhbGxvdyA9IF8uY2xvbmUob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhzaGFsbG93WzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gY2xvbmUodmFsdWUpIHtcbiAgcmV0dXJuIGJhc2VDbG9uZSh2YWx1ZSwgQ0xPTkVfU1lNQk9MU19GTEFHKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjbG9uZTtcbiIsInZhciBiYXNlQ2xvbmUgPSByZXF1aXJlKCcuL19iYXNlQ2xvbmUnKTtcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNsb25lRGVlcDtcbiIsIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnN0YW50O1xuIiwidmFyIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBlcSA9IHJlcXVpcmUoJy4vZXEnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyksXG4gICAga2V5c0luID0gcmVxdWlyZSgnLi9rZXlzSW4nKTtcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBBc3NpZ25zIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnRpZXMgb2Ygc291cmNlXG4gKiBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzIHRoYXRcbiAqIHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuIFNvdXJjZSBvYmplY3RzIGFyZSBhcHBsaWVkIGZyb20gbGVmdCB0byByaWdodC5cbiAqIE9uY2UgYSBwcm9wZXJ0eSBpcyBzZXQsIGFkZGl0aW9uYWwgdmFsdWVzIG9mIHRoZSBzYW1lIHByb3BlcnR5IGFyZSBpZ25vcmVkLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBtdXRhdGVzIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIGRlc3RpbmF0aW9uIG9iamVjdC5cbiAqIEBwYXJhbSB7Li4uT2JqZWN0fSBbc291cmNlc10gVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5kZWZhdWx0c0RlZXBcbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZhdWx0cyh7ICdhJzogMSB9LCB7ICdiJzogMiB9LCB7ICdhJzogMyB9KTtcbiAqIC8vID0+IHsgJ2EnOiAxLCAnYic6IDIgfVxuICovXG52YXIgZGVmYXVsdHMgPSBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgb2JqZWN0ID0gT2JqZWN0KG9iamVjdCk7XG5cbiAgdmFyIGluZGV4ID0gLTE7XG4gIHZhciBsZW5ndGggPSBzb3VyY2VzLmxlbmd0aDtcbiAgdmFyIGd1YXJkID0gbGVuZ3RoID4gMiA/IHNvdXJjZXNbMl0gOiB1bmRlZmluZWQ7XG5cbiAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHNvdXJjZXNbMF0sIHNvdXJjZXNbMV0sIGd1YXJkKSkge1xuICAgIGxlbmd0aCA9IDE7XG4gIH1cblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBzb3VyY2UgPSBzb3VyY2VzW2luZGV4XTtcbiAgICB2YXIgcHJvcHMgPSBrZXlzSW4oc291cmNlKTtcbiAgICB2YXIgcHJvcHNJbmRleCA9IC0xO1xuICAgIHZhciBwcm9wc0xlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICAgIHdoaWxlICgrK3Byb3BzSW5kZXggPCBwcm9wc0xlbmd0aCkge1xuICAgICAgdmFyIGtleSA9IHByb3BzW3Byb3BzSW5kZXhdO1xuICAgICAgdmFyIHZhbHVlID0gb2JqZWN0W2tleV07XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgKGVxKHZhbHVlLCBvYmplY3RQcm90b1trZXldKSAmJiAhaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIGtleSkpKSB7XG4gICAgICAgIG9iamVjdFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9iamVjdDtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlZmF1bHRzO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZvckVhY2gnKTtcbiIsIi8qKlxuICogUGVyZm9ybXMgYVxuICogW2BTYW1lVmFsdWVaZXJvYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtc2FtZXZhbHVlemVybylcbiAqIGNvbXBhcmlzb24gYmV0d2VlbiB0d28gdmFsdWVzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVpdmFsZW50LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb21wYXJlLlxuICogQHBhcmFtIHsqfSBvdGhlciBUaGUgb3RoZXIgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgdmFsdWVzIGFyZSBlcXVpdmFsZW50LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICogdmFyIG90aGVyID0geyAnYSc6IDEgfTtcbiAqXG4gKiBfLmVxKG9iamVjdCwgb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKG9iamVjdCwgb3RoZXIpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKCdhJywgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmVxKCdhJywgT2JqZWN0KCdhJykpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmVxKE5hTiwgTmFOKTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gZXEodmFsdWUsIG90aGVyKSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gb3RoZXIgfHwgKHZhbHVlICE9PSB2YWx1ZSAmJiBvdGhlciAhPT0gb3RoZXIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVxO1xuIiwidmFyIGFycmF5RmlsdGVyID0gcmVxdWlyZSgnLi9fYXJyYXlGaWx0ZXInKSxcbiAgICBiYXNlRmlsdGVyID0gcmVxdWlyZSgnLi9fYmFzZUZpbHRlcicpLFxuICAgIGJhc2VJdGVyYXRlZSA9IHJlcXVpcmUoJy4vX2Jhc2VJdGVyYXRlZScpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBJdGVyYXRlcyBvdmVyIGVsZW1lbnRzIG9mIGBjb2xsZWN0aW9uYCwgcmV0dXJuaW5nIGFuIGFycmF5IG9mIGFsbCBlbGVtZW50c1xuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogKipOb3RlOioqIFVubGlrZSBgXy5yZW1vdmVgLCB0aGlzIG1ldGhvZCByZXR1cm5zIGEgbmV3IGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqIEBzZWUgXy5yZWplY3RcbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDAsICdhY3RpdmUnOiBmYWxzZSB9XG4gKiBdO1xuICpcbiAqIF8uZmlsdGVyKHVzZXJzLCBmdW5jdGlvbihvKSB7IHJldHVybiAhby5hY3RpdmU7IH0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc2AgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maWx0ZXIodXNlcnMsIHsgJ2FnZSc6IDM2LCAnYWN0aXZlJzogdHJ1ZSB9KTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnYmFybmV5J11cbiAqXG4gKiAvLyBUaGUgYF8ubWF0Y2hlc1Byb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLmZpbHRlcih1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgWydmcmVkJ11cbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmlsdGVyKHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbJ2Jhcm5leSddXG4gKlxuICogLy8gQ29tYmluaW5nIHNldmVyYWwgcHJlZGljYXRlcyB1c2luZyBgXy5vdmVyRXZlcnlgIG9yIGBfLm92ZXJTb21lYC5cbiAqIF8uZmlsdGVyKHVzZXJzLCBfLm92ZXJTb21lKFt7ICdhZ2UnOiAzNiB9LCBbJ2FnZScsIDQwXV0pKTtcbiAqIC8vID0+IG9iamVjdHMgZm9yIFsnZnJlZCcsICdiYXJuZXknXVxuICovXG5mdW5jdGlvbiBmaWx0ZXIoY29sbGVjdGlvbiwgcHJlZGljYXRlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5RmlsdGVyIDogYmFzZUZpbHRlcjtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZpbHRlcjtcbiIsInZhciBjcmVhdGVGaW5kID0gcmVxdWlyZSgnLi9fY3JlYXRlRmluZCcpLFxuICAgIGZpbmRJbmRleCA9IHJlcXVpcmUoJy4vZmluZEluZGV4Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAsIHJldHVybmluZyB0aGUgZmlyc3QgZWxlbWVudFxuICogYHByZWRpY2F0ZWAgcmV0dXJucyB0cnV0aHkgZm9yLiBUaGUgcHJlZGljYXRlIGlzIGludm9rZWQgd2l0aCB0aHJlZVxuICogYXJndW1lbnRzOiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcHJlZGljYXRlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0ge251bWJlcn0gW2Zyb21JbmRleD0wXSBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWF0Y2hlZCBlbGVtZW50LCBlbHNlIGB1bmRlZmluZWRgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSBbXG4gKiAgIHsgJ3VzZXInOiAnYmFybmV5JywgICdhZ2UnOiAzNiwgJ2FjdGl2ZSc6IHRydWUgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwLCAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEsICAnYWN0aXZlJzogdHJ1ZSB9XG4gKiBdO1xuICpcbiAqIF8uZmluZCh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2UgPCA0MDsgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdiYXJuZXknXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgeyAnYWdlJzogMSwgJ2FjdGl2ZSc6IHRydWUgfSk7XG4gKiAvLyA9PiBvYmplY3QgZm9yICdwZWJibGVzJ1xuICpcbiAqIC8vIFRoZSBgXy5tYXRjaGVzUHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgWydhY3RpdmUnLCBmYWxzZV0pO1xuICogLy8gPT4gb2JqZWN0IGZvciAnZnJlZCdcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZCh1c2VycywgJ2FjdGl2ZScpO1xuICogLy8gPT4gb2JqZWN0IGZvciAnYmFybmV5J1xuICovXG52YXIgZmluZCA9IGNyZWF0ZUZpbmQoZmluZEluZGV4KTtcblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kO1xuIiwidmFyIGJhc2VGaW5kSW5kZXggPSByZXF1aXJlKCcuL19iYXNlRmluZEluZGV4JyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi90b0ludGVnZXInKTtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZU1heCA9IE1hdGgubWF4O1xuXG4vKipcbiAqIFRoaXMgbWV0aG9kIGlzIGxpa2UgYF8uZmluZGAgZXhjZXB0IHRoYXQgaXQgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGBwcmVkaWNhdGVgIHJldHVybnMgdHJ1dGh5IGZvciBpbnN0ZWFkIG9mIHRoZSBlbGVtZW50IGl0c2VsZi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW3ByZWRpY2F0ZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtmcm9tSW5kZXg9MF0gVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZvdW5kIGVsZW1lbnQsIGVsc2UgYC0xYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScsICAnYWN0aXZlJzogZmFsc2UgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FjdGl2ZSc6IGZhbHNlIH0sXG4gKiAgIHsgJ3VzZXInOiAncGViYmxlcycsICdhY3RpdmUnOiB0cnVlIH1cbiAqIF07XG4gKlxuICogXy5maW5kSW5kZXgodXNlcnMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlciA9PSAnYmFybmV5JzsgfSk7XG4gKiAvLyA9PiAwXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCB7ICd1c2VyJzogJ2ZyZWQnLCAnYWN0aXZlJzogZmFsc2UgfSk7XG4gKiAvLyA9PiAxXG4gKlxuICogLy8gVGhlIGBfLm1hdGNoZXNQcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5maW5kSW5kZXgodXNlcnMsIFsnYWN0aXZlJywgZmFsc2VdKTtcbiAqIC8vID0+IDBcbiAqXG4gKiAvLyBUaGUgYF8ucHJvcGVydHlgIGl0ZXJhdGVlIHNob3J0aGFuZC5cbiAqIF8uZmluZEluZGV4KHVzZXJzLCAnYWN0aXZlJyk7XG4gKiAvLyA9PiAyXG4gKi9cbmZ1bmN0aW9uIGZpbmRJbmRleChhcnJheSwgcHJlZGljYXRlLCBmcm9tSW5kZXgpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoO1xuICBpZiAoIWxlbmd0aCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICB2YXIgaW5kZXggPSBmcm9tSW5kZXggPT0gbnVsbCA/IDAgOiB0b0ludGVnZXIoZnJvbUluZGV4KTtcbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIGluZGV4ID0gbmF0aXZlTWF4KGxlbmd0aCArIGluZGV4LCAwKTtcbiAgfVxuICByZXR1cm4gYmFzZUZpbmRJbmRleChhcnJheSwgYmFzZUl0ZXJhdGVlKHByZWRpY2F0ZSwgMyksIGluZGV4KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmaW5kSW5kZXg7XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpO1xuXG4vKipcbiAqIEZsYXR0ZW5zIGBhcnJheWAgYSBzaW5nbGUgbGV2ZWwgZGVlcC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQXJyYXlcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBmbGF0dGVuLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgZmxhdHRlbmVkIGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZsYXR0ZW4oWzEsIFsyLCBbMywgWzRdXSwgNV1dKTtcbiAqIC8vID0+IFsxLCAyLCBbMywgWzRdXSwgNV1cbiAqL1xuZnVuY3Rpb24gZmxhdHRlbihhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBiYXNlRmxhdHRlbihhcnJheSwgMSkgOiBbXTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VFYWNoID0gcmVxdWlyZSgnLi9fYmFzZUVhY2gnKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBlbGVtZW50cyBvZiBgY29sbGVjdGlvbmAgYW5kIGludm9rZXMgYGl0ZXJhdGVlYCBmb3IgZWFjaCBlbGVtZW50LlxuICogVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6ICh2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiAqKk5vdGU6KiogQXMgd2l0aCBvdGhlciBcIkNvbGxlY3Rpb25zXCIgbWV0aG9kcywgb2JqZWN0cyB3aXRoIGEgXCJsZW5ndGhcIlxuICogcHJvcGVydHkgYXJlIGl0ZXJhdGVkIGxpa2UgYXJyYXlzLiBUbyBhdm9pZCB0aGlzIGJlaGF2aW9yIHVzZSBgXy5mb3JJbmBcbiAqIG9yIGBfLmZvck93bmAgZm9yIG9iamVjdCBpdGVyYXRpb24uXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGFsaWFzIGVhY2hcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheXxPYmplY3R9IFJldHVybnMgYGNvbGxlY3Rpb25gLlxuICogQHNlZSBfLmZvckVhY2hSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmZvckVhY2goWzEsIDJdLCBmdW5jdGlvbih2YWx1ZSkge1xuICogICBjb25zb2xlLmxvZyh2YWx1ZSk7XG4gKiB9KTtcbiAqIC8vID0+IExvZ3MgYDFgIHRoZW4gYDJgLlxuICpcbiAqIF8uZm9yRWFjaCh7ICdhJzogMSwgJ2InOiAyIH0sIGZ1bmN0aW9uKHZhbHVlLCBrZXkpIHtcbiAqICAgY29uc29sZS5sb2coa2V5KTtcbiAqIH0pO1xuICogLy8gPT4gTG9ncyAnYScgdGhlbiAnYicgKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZCkuXG4gKi9cbmZ1bmN0aW9uIGZvckVhY2goY29sbGVjdGlvbiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGZ1bmMgPSBpc0FycmF5KGNvbGxlY3Rpb24pID8gYXJyYXlFYWNoIDogYmFzZUVhY2g7XG4gIHJldHVybiBmdW5jKGNvbGxlY3Rpb24sIGNhc3RGdW5jdGlvbihpdGVyYXRlZSkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2g7XG4iLCJ2YXIgYmFzZUZvciA9IHJlcXVpcmUoJy4vX2Jhc2VGb3InKSxcbiAgICBjYXN0RnVuY3Rpb24gPSByZXF1aXJlKCcuL19jYXN0RnVuY3Rpb24nKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgb3duIGFuZCBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBhblxuICogb2JqZWN0IGFuZCBpbnZva2VzIGBpdGVyYXRlZWAgZm9yIGVhY2ggcHJvcGVydHkuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkXG4gKiB3aXRoIHRocmVlIGFyZ3VtZW50czogKHZhbHVlLCBrZXksIG9iamVjdCkuIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdFxuICogaXRlcmF0aW9uIGVhcmx5IGJ5IGV4cGxpY2l0bHkgcmV0dXJuaW5nIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjMuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5mb3JJblJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8uZm9ySW4obmV3IEZvbywgZnVuY3Rpb24odmFsdWUsIGtleSkge1xuICogICBjb25zb2xlLmxvZyhrZXkpO1xuICogfSk7XG4gKiAvLyA9PiBMb2dzICdhJywgJ2InLCB0aGVuICdjJyAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKS5cbiAqL1xuZnVuY3Rpb24gZm9ySW4ob2JqZWN0LCBpdGVyYXRlZSkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGxcbiAgICA/IG9iamVjdFxuICAgIDogYmFzZUZvcihvYmplY3QsIGNhc3RGdW5jdGlvbihpdGVyYXRlZSksIGtleXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9ySW47XG4iLCJ2YXIgYmFzZUdldCA9IHJlcXVpcmUoJy4vX2Jhc2VHZXQnKTtcblxuLyoqXG4gKiBHZXRzIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYG9iamVjdGAuIElmIHRoZSByZXNvbHZlZCB2YWx1ZSBpc1xuICogYHVuZGVmaW5lZGAsIHRoZSBgZGVmYXVsdFZhbHVlYCBpcyByZXR1cm5lZCBpbiBpdHMgcGxhY2UuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjcuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheXxzdHJpbmd9IHBhdGggVGhlIHBhdGggb2YgdGhlIHByb3BlcnR5IHRvIGdldC5cbiAqIEBwYXJhbSB7Kn0gW2RlZmF1bHRWYWx1ZV0gVGhlIHZhbHVlIHJldHVybmVkIGZvciBgdW5kZWZpbmVkYCByZXNvbHZlZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcmVzb2x2ZWQgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogW3sgJ2InOiB7ICdjJzogMyB9IH1dIH07XG4gKlxuICogXy5nZXQob2JqZWN0LCAnYVswXS5iLmMnKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsIFsnYScsICcwJywgJ2InLCAnYyddKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLmdldChvYmplY3QsICdhLmIuYycsICdkZWZhdWx0Jyk7XG4gKiAvLyA9PiAnZGVmYXVsdCdcbiAqL1xuZnVuY3Rpb24gZ2V0KG9iamVjdCwgcGF0aCwgZGVmYXVsdFZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IGJhc2VHZXQob2JqZWN0LCBwYXRoKTtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldDtcbiIsInZhciBiYXNlSGFzID0gcmVxdWlyZSgnLi9fYmFzZUhhcycpLFxuICAgIGhhc1BhdGggPSByZXF1aXJlKCcuL19oYXNQYXRoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBwYXRoYCBpcyBhIGRpcmVjdCBwcm9wZXJ0eSBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge0FycmF5fHN0cmluZ30gcGF0aCBUaGUgcGF0aCB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgcGF0aGAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogeyAnYic6IDIgfSB9O1xuICogdmFyIG90aGVyID0gXy5jcmVhdGUoeyAnYSc6IF8uY3JlYXRlKHsgJ2InOiAyIH0pIH0pO1xuICpcbiAqIF8uaGFzKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsICdhLmInKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhcyhvYmplY3QsIFsnYScsICdiJ10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzKG90aGVyLCAnYScpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaGFzKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXMpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGhhcztcbiIsInZhciBiYXNlSGFzSW4gPSByZXF1aXJlKCcuL19iYXNlSGFzSW4nKSxcbiAgICBoYXNQYXRoID0gcmVxdWlyZSgnLi9faGFzUGF0aCcpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgcGF0aGAgaXMgYSBkaXJlY3Qgb3IgaW5oZXJpdGVkIHByb3BlcnR5IG9mIGBvYmplY3RgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBwYXRoYCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IF8uY3JlYXRlKHsgJ2EnOiBfLmNyZWF0ZSh7ICdiJzogMiB9KSB9KTtcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2EuYicpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaGFzSW4ob2JqZWN0LCBbJ2EnLCAnYiddKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmhhc0luKG9iamVjdCwgJ2InKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGhhc0luKG9iamVjdCwgcGF0aCkge1xuICByZXR1cm4gb2JqZWN0ICE9IG51bGwgJiYgaGFzUGF0aChvYmplY3QsIHBhdGgsIGJhc2VIYXNJbik7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaGFzSW47XG4iLCIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50IGl0IHJlY2VpdmVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIEFueSB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIGB2YWx1ZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3QgPSB7ICdhJzogMSB9O1xuICpcbiAqIGNvbnNvbGUubG9nKF8uaWRlbnRpdHkob2JqZWN0KSA9PT0gb2JqZWN0KTtcbiAqIC8vID0+IHRydWVcbiAqL1xuZnVuY3Rpb24gaWRlbnRpdHkodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlkZW50aXR5O1xuIiwidmFyIGJhc2VJc0FyZ3VtZW50cyA9IHJlcXVpcmUoJy4vX2Jhc2VJc0FyZ3VtZW50cycpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJndW1lbnRzO1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGFuIGBBcnJheWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheShkb2N1bWVudC5ib2R5LmNoaWxkcmVuKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0FycmF5KF8ubm9vcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXk7XG5cbm1vZHVsZS5leHBvcnRzID0gaXNBcnJheTtcbiIsInZhciBpc0Z1bmN0aW9uID0gcmVxdWlyZSgnLi9pc0Z1bmN0aW9uJyksXG4gICAgaXNMZW5ndGggPSByZXF1aXJlKCcuL2lzTGVuZ3RoJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYXJyYXktbGlrZS4gQSB2YWx1ZSBpcyBjb25zaWRlcmVkIGFycmF5LWxpa2UgaWYgaXQnc1xuICogbm90IGEgZnVuY3Rpb24gYW5kIGhhcyBhIGB2YWx1ZS5sZW5ndGhgIHRoYXQncyBhbiBpbnRlZ2VyIGdyZWF0ZXIgdGhhbiBvclxuICogZXF1YWwgdG8gYDBgIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE51bWJlci5NQVhfU0FGRV9JTlRFR0VSYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQXJyYXlMaWtlKGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIGlzTGVuZ3RoKHZhbHVlLmxlbmd0aCkgJiYgIWlzRnVuY3Rpb24odmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzQXJyYXlMaWtlO1xuIiwidmFyIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5pc0FycmF5TGlrZWAgZXhjZXB0IHRoYXQgaXQgYWxzbyBjaGVja3MgaWYgYHZhbHVlYFxuICogaXMgYW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGFycmF5LWxpa2Ugb2JqZWN0LFxuICogIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZU9iamVjdCgnYWJjJyk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNBcnJheUxpa2VPYmplY3QoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGlzQXJyYXlMaWtlKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0FycmF5TGlrZU9iamVjdDtcbiIsInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpLFxuICAgIHN0dWJGYWxzZSA9IHJlcXVpcmUoJy4vc3R1YkZhbHNlJyk7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZXhwb3J0c2AuICovXG52YXIgZnJlZUV4cG9ydHMgPSB0eXBlb2YgZXhwb3J0cyA9PSAnb2JqZWN0JyAmJiBleHBvcnRzICYmICFleHBvcnRzLm5vZGVUeXBlICYmIGV4cG9ydHM7XG5cbi8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgbW9kdWxlYC4gKi9cbnZhciBmcmVlTW9kdWxlID0gZnJlZUV4cG9ydHMgJiYgdHlwZW9mIG1vZHVsZSA9PSAnb2JqZWN0JyAmJiBtb2R1bGUgJiYgIW1vZHVsZS5ub2RlVHlwZSAmJiBtb2R1bGU7XG5cbi8qKiBEZXRlY3QgdGhlIHBvcHVsYXIgQ29tbW9uSlMgZXh0ZW5zaW9uIGBtb2R1bGUuZXhwb3J0c2AuICovXG52YXIgbW9kdWxlRXhwb3J0cyA9IGZyZWVNb2R1bGUgJiYgZnJlZU1vZHVsZS5leHBvcnRzID09PSBmcmVlRXhwb3J0cztcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG52YXIgQnVmZmVyID0gbW9kdWxlRXhwb3J0cyA/IHJvb3QuQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlSXNCdWZmZXIgPSBCdWZmZXIgPyBCdWZmZXIuaXNCdWZmZXIgOiB1bmRlZmluZWQ7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgQnVmZmVyKDIpKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQnVmZmVyKG5ldyBVaW50OEFycmF5KDIpKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0J1ZmZlciA9IG5hdGl2ZUlzQnVmZmVyIHx8IHN0dWJGYWxzZTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc0J1ZmZlcjtcbiIsInZhciBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgZ2V0VGFnID0gcmVxdWlyZSgnLi9fZ2V0VGFnJyksXG4gICAgaXNBcmd1bWVudHMgPSByZXF1aXJlKCcuL2lzQXJndW1lbnRzJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpLFxuICAgIGlzQnVmZmVyID0gcmVxdWlyZSgnLi9pc0J1ZmZlcicpLFxuICAgIGlzUHJvdG90eXBlID0gcmVxdWlyZSgnLi9faXNQcm90b3R5cGUnKSxcbiAgICBpc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL2lzVHlwZWRBcnJheScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gZW1wdHkgb2JqZWN0LCBjb2xsZWN0aW9uLCBtYXAsIG9yIHNldC5cbiAqXG4gKiBPYmplY3RzIGFyZSBjb25zaWRlcmVkIGVtcHR5IGlmIHRoZXkgaGF2ZSBubyBvd24gZW51bWVyYWJsZSBzdHJpbmcga2V5ZWRcbiAqIHByb3BlcnRpZXMuXG4gKlxuICogQXJyYXktbGlrZSB2YWx1ZXMgc3VjaCBhcyBgYXJndW1lbnRzYCBvYmplY3RzLCBhcnJheXMsIGJ1ZmZlcnMsIHN0cmluZ3MsIG9yXG4gKiBqUXVlcnktbGlrZSBjb2xsZWN0aW9ucyBhcmUgY29uc2lkZXJlZCBlbXB0eSBpZiB0aGV5IGhhdmUgYSBgbGVuZ3RoYCBvZiBgMGAuXG4gKiBTaW1pbGFybHksIG1hcHMgYW5kIHNldHMgYXJlIGNvbnNpZGVyZWQgZW1wdHkgaWYgdGhleSBoYXZlIGEgYHNpemVgIG9mIGAwYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBlbXB0eSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzRW1wdHkobnVsbCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0VtcHR5KHRydWUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFbXB0eSgxKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRW1wdHkoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0VtcHR5KHsgJ2EnOiAxIH0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFbXB0eSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpc0FycmF5TGlrZSh2YWx1ZSkgJiZcbiAgICAgIChpc0FycmF5KHZhbHVlKSB8fCB0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlLnNwbGljZSA9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgIGlzQnVmZmVyKHZhbHVlKSB8fCBpc1R5cGVkQXJyYXkodmFsdWUpIHx8IGlzQXJndW1lbnRzKHZhbHVlKSkpIHtcbiAgICByZXR1cm4gIXZhbHVlLmxlbmd0aDtcbiAgfVxuICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKTtcbiAgaWYgKHRhZyA9PSBtYXBUYWcgfHwgdGFnID09IHNldFRhZykge1xuICAgIHJldHVybiAhdmFsdWUuc2l6ZTtcbiAgfVxuICBpZiAoaXNQcm90b3R5cGUodmFsdWUpKSB7XG4gICAgcmV0dXJuICFiYXNlS2V5cyh2YWx1ZSkubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBrZXkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzRW1wdHk7XG4iLCJ2YXIgYmFzZUdldFRhZyA9IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIGFzeW5jVGFnID0gJ1tvYmplY3QgQXN5bmNGdW5jdGlvbl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgcHJveHlUYWcgPSAnW29iamVjdCBQcm94eV0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRnVuY3Rpb25gIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIGZ1bmN0aW9uLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNGdW5jdGlvbihfKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzRnVuY3Rpb24oL2FiYy8pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGdW5jdGlvbih2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICAvLyBUaGUgdXNlIG9mIGBPYmplY3QjdG9TdHJpbmdgIGF2b2lkcyBpc3N1ZXMgd2l0aCB0aGUgYHR5cGVvZmAgb3BlcmF0b3JcbiAgLy8gaW4gU2FmYXJpIDkgd2hpY2ggcmV0dXJucyAnb2JqZWN0JyBmb3IgdHlwZWQgYXJyYXlzIGFuZCBvdGhlciBjb25zdHJ1Y3RvcnMuXG4gIHZhciB0YWcgPSBiYXNlR2V0VGFnKHZhbHVlKTtcbiAgcmV0dXJuIHRhZyA9PSBmdW5jVGFnIHx8IHRhZyA9PSBnZW5UYWcgfHwgdGFnID09IGFzeW5jVGFnIHx8IHRhZyA9PSBwcm94eVRhZztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0Z1bmN0aW9uO1xuIiwiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGxlbmd0aC5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgbG9vc2VseSBiYXNlZCBvblxuICogW2BUb0xlbmd0aGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvbGVuZ3RoKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHZhbGlkIGxlbmd0aCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTGVuZ3RoKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNMZW5ndGgoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNMZW5ndGgoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKCczJyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlbmd0aCh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmXG4gICAgdmFsdWUgPiAtMSAmJiB2YWx1ZSAlIDEgPT0gMCAmJiB2YWx1ZSA8PSBNQVhfU0FGRV9JTlRFR0VSO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTGVuZ3RoO1xuIiwidmFyIGJhc2VJc01hcCA9IHJlcXVpcmUoJy4vX2Jhc2VJc01hcCcpLFxuICAgIGJhc2VVbmFyeSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmFyeScpLFxuICAgIG5vZGVVdGlsID0gcmVxdWlyZSgnLi9fbm9kZVV0aWwnKTtcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNNYXAgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc01hcDtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYE1hcGAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgbWFwLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNNYXAobmV3IE1hcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc01hcChuZXcgV2Vha01hcCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNNYXAgPSBub2RlSXNNYXAgPyBiYXNlVW5hcnkobm9kZUlzTWFwKSA6IGJhc2VJc01hcDtcblxubW9kdWxlLmV4cG9ydHMgPSBpc01hcDtcbiIsIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgdGhlXG4gKiBbbGFuZ3VhZ2UgdHlwZV0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLWVjbWFzY3JpcHQtbGFuZ3VhZ2UtdHlwZXMpXG4gKiBvZiBgT2JqZWN0YC4gKGUuZy4gYXJyYXlzLCBmdW5jdGlvbnMsIG9iamVjdHMsIHJlZ2V4ZXMsIGBuZXcgTnVtYmVyKDApYCwgYW5kIGBuZXcgU3RyaW5nKCcnKWApXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNPYmplY3Qoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KF8ubm9vcCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiAodHlwZSA9PSAnb2JqZWN0JyB8fCB0eXBlID09ICdmdW5jdGlvbicpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0O1xuIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFuZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVjdCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG4iLCJ2YXIgYmFzZUlzU2V0ID0gcmVxdWlyZSgnLi9fYmFzZUlzU2V0JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU2V0O1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNBcnJheSA9IHJlcXVpcmUoJy4vaXNBcnJheScpLFxuICAgIGlzT2JqZWN0TGlrZSA9IHJlcXVpcmUoJy4vaXNPYmplY3RMaWtlJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBzdHJpbmdUYWcgPSAnW29iamVjdCBTdHJpbmddJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBjbGFzc2lmaWVkIGFzIGEgYFN0cmluZ2AgcHJpbWl0aXZlIG9yIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHN0cmluZywgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU3RyaW5nKCdhYmMnKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3RyaW5nKDEpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJyB8fFxuICAgICghaXNBcnJheSh2YWx1ZSkgJiYgaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzdHJpbmdUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3RyaW5nO1xuIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgaXNPYmplY3RMaWtlID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzU3ltYm9sO1xuIiwidmFyIGJhc2VJc1R5cGVkQXJyYXkgPSByZXF1aXJlKCcuL19iYXNlSXNUeXBlZEFycmF5JyksXG4gICAgYmFzZVVuYXJ5ID0gcmVxdWlyZSgnLi9fYmFzZVVuYXJ5JyksXG4gICAgbm9kZVV0aWwgPSByZXF1aXJlKCcuL19ub2RlVXRpbCcpO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxubW9kdWxlLmV4cG9ydHMgPSBpc1R5cGVkQXJyYXk7XG4iLCIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNVbmRlZmluZWQ7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5cyA9IHJlcXVpcmUoJy4vX2Jhc2VLZXlzJyksXG4gICAgaXNBcnJheUxpa2UgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuIFNlZSB0aGVcbiAqIFtFUyBzcGVjXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qua2V5cylcbiAqIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InXSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIF8ua2V5cygnaGknKTtcbiAqIC8vID0+IFsnMCcsICcxJ11cbiAqL1xuZnVuY3Rpb24ga2V5cyhvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCkgOiBiYXNlS2V5cyhvYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGtleXM7XG4iLCJ2YXIgYXJyYXlMaWtlS2V5cyA9IHJlcXVpcmUoJy4vX2FycmF5TGlrZUtleXMnKSxcbiAgICBiYXNlS2V5c0luID0gcmVxdWlyZSgnLi9fYmFzZUtleXNJbicpLFxuICAgIGlzQXJyYXlMaWtlID0gcmVxdWlyZSgnLi9pc0FycmF5TGlrZScpO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBhbmQgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgYG9iamVjdGAuXG4gKlxuICogKipOb3RlOioqIE5vbi1vYmplY3QgdmFsdWVzIGFyZSBjb2VyY2VkIHRvIG9iamVjdHMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5rZXlzSW4obmV3IEZvbyk7XG4gKiAvLyA9PiBbJ2EnLCAnYicsICdjJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24ga2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gaXNBcnJheUxpa2Uob2JqZWN0KSA/IGFycmF5TGlrZUtleXMob2JqZWN0LCB0cnVlKSA6IGJhc2VLZXlzSW4ob2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBrZXlzSW47XG4iLCIvKipcbiAqIEdldHMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIHF1ZXJ5LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGxhc3QgZWxlbWVudCBvZiBgYXJyYXlgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmxhc3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gbGFzdChhcnJheSkge1xuICB2YXIgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG4gIHJldHVybiBsZW5ndGggPyBhcnJheVtsZW5ndGggLSAxXSA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsYXN0O1xuIiwidmFyIGFycmF5TWFwID0gcmVxdWlyZSgnLi9fYXJyYXlNYXAnKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTWFwID0gcmVxdWlyZSgnLi9fYmFzZU1hcCcpLFxuICAgIGlzQXJyYXkgPSByZXF1aXJlKCcuL2lzQXJyYXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHZhbHVlcyBieSBydW5uaW5nIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydVxuICogYGl0ZXJhdGVlYC4gVGhlIGl0ZXJhdGVlIGlzIGludm9rZWQgd2l0aCB0aHJlZSBhcmd1bWVudHM6XG4gKiAodmFsdWUsIGluZGV4fGtleSwgY29sbGVjdGlvbikuXG4gKlxuICogTWFueSBsb2Rhc2ggbWV0aG9kcyBhcmUgZ3VhcmRlZCB0byB3b3JrIGFzIGl0ZXJhdGVlcyBmb3IgbWV0aG9kcyBsaWtlXG4gKiBgXy5ldmVyeWAsIGBfLmZpbHRlcmAsIGBfLm1hcGAsIGBfLm1hcFZhbHVlc2AsIGBfLnJlamVjdGAsIGFuZCBgXy5zb21lYC5cbiAqXG4gKiBUaGUgZ3VhcmRlZCBtZXRob2RzIGFyZTpcbiAqIGBhcnlgLCBgY2h1bmtgLCBgY3VycnlgLCBgY3VycnlSaWdodGAsIGBkcm9wYCwgYGRyb3BSaWdodGAsIGBldmVyeWAsXG4gKiBgZmlsbGAsIGBpbnZlcnRgLCBgcGFyc2VJbnRgLCBgcmFuZG9tYCwgYHJhbmdlYCwgYHJhbmdlUmlnaHRgLCBgcmVwZWF0YCxcbiAqIGBzYW1wbGVTaXplYCwgYHNsaWNlYCwgYHNvbWVgLCBgc29ydEJ5YCwgYHNwbGl0YCwgYHRha2VgLCBgdGFrZVJpZ2h0YCxcbiAqIGB0ZW1wbGF0ZWAsIGB0cmltYCwgYHRyaW1FbmRgLCBgdHJpbVN0YXJ0YCwgYW5kIGB3b3Jkc2BcbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgQ29sbGVjdGlvblxuICogQHBhcmFtIHtBcnJheXxPYmplY3R9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBtYXBwZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIHNxdWFyZShuKSB7XG4gKiAgIHJldHVybiBuICogbjtcbiAqIH1cbiAqXG4gKiBfLm1hcChbNCwgOF0sIHNxdWFyZSk7XG4gKiAvLyA9PiBbMTYsIDY0XVxuICpcbiAqIF8ubWFwKHsgJ2EnOiA0LCAnYic6IDggfSwgc3F1YXJlKTtcbiAqIC8vID0+IFsxNiwgNjRdIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKlxuICogdmFyIHVzZXJzID0gW1xuICogICB7ICd1c2VyJzogJ2Jhcm5leScgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJyB9XG4gKiBdO1xuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXAodXNlcnMsICd1c2VyJyk7XG4gKiAvLyA9PiBbJ2Jhcm5leScsICdmcmVkJ11cbiAqL1xuZnVuY3Rpb24gbWFwKGNvbGxlY3Rpb24sIGl0ZXJhdGVlKSB7XG4gIHZhciBmdW5jID0gaXNBcnJheShjb2xsZWN0aW9uKSA/IGFycmF5TWFwIDogYmFzZU1hcDtcbiAgcmV0dXJuIGZ1bmMoY29sbGVjdGlvbiwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAzKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gbWFwO1xuIiwidmFyIGJhc2VBc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Jhc2VBc3NpZ25WYWx1ZScpLFxuICAgIGJhc2VGb3JPd24gPSByZXF1aXJlKCcuL19iYXNlRm9yT3duJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBrZXlzIGFzIGBvYmplY3RgIGFuZCB2YWx1ZXMgZ2VuZXJhdGVkXG4gKiBieSBydW5uaW5nIGVhY2ggb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IG9mIGBvYmplY3RgIHRocnVcbiAqIGBpdGVyYXRlZWAuIFRoZSBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggdGhyZWUgYXJndW1lbnRzOlxuICogKHZhbHVlLCBrZXksIG9iamVjdCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBvYmplY3QuXG4gKiBAc2VlIF8ubWFwS2V5c1xuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgdXNlcnMgPSB7XG4gKiAgICdmcmVkJzogICAgeyAndXNlcic6ICdmcmVkJywgICAgJ2FnZSc6IDQwIH0sXG4gKiAgICdwZWJibGVzJzogeyAndXNlcic6ICdwZWJibGVzJywgJ2FnZSc6IDEgfVxuICogfTtcbiAqXG4gKiBfLm1hcFZhbHVlcyh1c2VycywgZnVuY3Rpb24obykgeyByZXR1cm4gby5hZ2U7IH0pO1xuICogLy8gPT4geyAnZnJlZCc6IDQwLCAncGViYmxlcyc6IDEgfSAoaXRlcmF0aW9uIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkKVxuICpcbiAqIC8vIFRoZSBgXy5wcm9wZXJ0eWAgaXRlcmF0ZWUgc2hvcnRoYW5kLlxuICogXy5tYXBWYWx1ZXModXNlcnMsICdhZ2UnKTtcbiAqIC8vID0+IHsgJ2ZyZWQnOiA0MCwgJ3BlYmJsZXMnOiAxIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gbWFwVmFsdWVzKG9iamVjdCwgaXRlcmF0ZWUpIHtcbiAgdmFyIHJlc3VsdCA9IHt9O1xuICBpdGVyYXRlZSA9IGJhc2VJdGVyYXRlZShpdGVyYXRlZSwgMyk7XG5cbiAgYmFzZUZvck93bihvYmplY3QsIGZ1bmN0aW9uKHZhbHVlLCBrZXksIG9iamVjdCkge1xuICAgIGJhc2VBc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgaXRlcmF0ZWUodmFsdWUsIGtleSwgb2JqZWN0KSk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1hcFZhbHVlcztcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlR3QgPSByZXF1aXJlKCcuL19iYXNlR3QnKSxcbiAgICBpZGVudGl0eSA9IHJlcXVpcmUoJy4vaWRlbnRpdHknKTtcblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgbWF4aW11bSB2YWx1ZSBvZiBgYXJyYXlgLiBJZiBgYXJyYXlgIGlzIGVtcHR5IG9yIGZhbHNleSxcbiAqIGB1bmRlZmluZWRgIGlzIHJldHVybmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBNYXRoXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIG1heGltdW0gdmFsdWUuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ubWF4KFs0LCAyLCA4LCA2XSk7XG4gKiAvLyA9PiA4XG4gKlxuICogXy5tYXgoW10pO1xuICogLy8gPT4gdW5kZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG1heChhcnJheSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgaWRlbnRpdHksIGJhc2VHdClcbiAgICA6IHVuZGVmaW5lZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtYXg7XG4iLCJ2YXIgTWFwQ2FjaGUgPSByZXF1aXJlKCcuL19NYXBDYWNoZScpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IG1lbW9pemVzIHRoZSByZXN1bHQgb2YgYGZ1bmNgLiBJZiBgcmVzb2x2ZXJgIGlzXG4gKiBwcm92aWRlZCwgaXQgZGV0ZXJtaW5lcyB0aGUgY2FjaGUga2V5IGZvciBzdG9yaW5nIHRoZSByZXN1bHQgYmFzZWQgb24gdGhlXG4gKiBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlIG1lbW9pemVkIGZ1bmN0aW9uLiBCeSBkZWZhdWx0LCB0aGUgZmlyc3QgYXJndW1lbnRcbiAqIHByb3ZpZGVkIHRvIHRoZSBtZW1vaXplZCBmdW5jdGlvbiBpcyB1c2VkIGFzIHRoZSBtYXAgY2FjaGUga2V5LiBUaGUgYGZ1bmNgXG4gKiBpcyBpbnZva2VkIHdpdGggdGhlIGB0aGlzYCBiaW5kaW5nIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogVGhlIGNhY2hlIGlzIGV4cG9zZWQgYXMgdGhlIGBjYWNoZWAgcHJvcGVydHkgb24gdGhlIG1lbW9pemVkXG4gKiBmdW5jdGlvbi4gSXRzIGNyZWF0aW9uIG1heSBiZSBjdXN0b21pemVkIGJ5IHJlcGxhY2luZyB0aGUgYF8ubWVtb2l6ZS5DYWNoZWBcbiAqIGNvbnN0cnVjdG9yIHdpdGggb25lIHdob3NlIGluc3RhbmNlcyBpbXBsZW1lbnQgdGhlXG4gKiBbYE1hcGBdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXByb3BlcnRpZXMtb2YtdGhlLW1hcC1wcm90b3R5cGUtb2JqZWN0KVxuICogbWV0aG9kIGludGVyZmFjZSBvZiBgY2xlYXJgLCBgZGVsZXRlYCwgYGdldGAsIGBoYXNgLCBhbmQgYHNldGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBoYXZlIGl0cyBvdXRwdXQgbWVtb2l6ZWQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbcmVzb2x2ZXJdIFRoZSBmdW5jdGlvbiB0byByZXNvbHZlIHRoZSBjYWNoZSBrZXkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBtZW1vaXplZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6IDIgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2MnOiAzLCAnZCc6IDQgfTtcbiAqXG4gKiB2YXIgdmFsdWVzID0gXy5tZW1vaXplKF8udmFsdWVzKTtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogdmFsdWVzKG90aGVyKTtcbiAqIC8vID0+IFszLCA0XVxuICpcbiAqIG9iamVjdC5hID0gMjtcbiAqIHZhbHVlcyhvYmplY3QpO1xuICogLy8gPT4gWzEsIDJdXG4gKlxuICogLy8gTW9kaWZ5IHRoZSByZXN1bHQgY2FjaGUuXG4gKiB2YWx1ZXMuY2FjaGUuc2V0KG9iamVjdCwgWydhJywgJ2InXSk7XG4gKiB2YWx1ZXMob2JqZWN0KTtcbiAqIC8vID0+IFsnYScsICdiJ11cbiAqXG4gKiAvLyBSZXBsYWNlIGBfLm1lbW9pemUuQ2FjaGVgLlxuICogXy5tZW1vaXplLkNhY2hlID0gV2Vha01hcDtcbiAqL1xuZnVuY3Rpb24gbWVtb2l6ZShmdW5jLCByZXNvbHZlcikge1xuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJyB8fCAocmVzb2x2ZXIgIT0gbnVsbCAmJiB0eXBlb2YgcmVzb2x2ZXIgIT0gJ2Z1bmN0aW9uJykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKEZVTkNfRVJST1JfVEVYVCk7XG4gIH1cbiAgdmFyIG1lbW9pemVkID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFyZ3MgPSBhcmd1bWVudHMsXG4gICAgICAgIGtleSA9IHJlc29sdmVyID8gcmVzb2x2ZXIuYXBwbHkodGhpcywgYXJncykgOiBhcmdzWzBdLFxuICAgICAgICBjYWNoZSA9IG1lbW9pemVkLmNhY2hlO1xuXG4gICAgaWYgKGNhY2hlLmhhcyhrZXkpKSB7XG4gICAgICByZXR1cm4gY2FjaGUuZ2V0KGtleSk7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSBmdW5jLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIG1lbW9pemVkLmNhY2hlID0gY2FjaGUuc2V0KGtleSwgcmVzdWx0KSB8fCBjYWNoZTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuICBtZW1vaXplZC5jYWNoZSA9IG5ldyAobWVtb2l6ZS5DYWNoZSB8fCBNYXBDYWNoZSk7XG4gIHJldHVybiBtZW1vaXplZDtcbn1cblxuLy8gRXhwb3NlIGBNYXBDYWNoZWAuXG5tZW1vaXplLkNhY2hlID0gTWFwQ2FjaGU7XG5cbm1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZTtcbiIsInZhciBiYXNlTWVyZ2UgPSByZXF1aXJlKCcuL19iYXNlTWVyZ2UnKSxcbiAgICBjcmVhdGVBc3NpZ25lciA9IHJlcXVpcmUoJy4vX2NyZWF0ZUFzc2lnbmVyJyk7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5hc3NpZ25gIGV4Y2VwdCB0aGF0IGl0IHJlY3Vyc2l2ZWx5IG1lcmdlcyBvd24gYW5kXG4gKiBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyBvZiBzb3VyY2Ugb2JqZWN0cyBpbnRvIHRoZVxuICogZGVzdGluYXRpb24gb2JqZWN0LiBTb3VyY2UgcHJvcGVydGllcyB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAgYXJlXG4gKiBza2lwcGVkIGlmIGEgZGVzdGluYXRpb24gdmFsdWUgZXhpc3RzLiBBcnJheSBhbmQgcGxhaW4gb2JqZWN0IHByb3BlcnRpZXNcbiAqIGFyZSBtZXJnZWQgcmVjdXJzaXZlbHkuIE90aGVyIG9iamVjdHMgYW5kIHZhbHVlIHR5cGVzIGFyZSBvdmVycmlkZGVuIGJ5XG4gKiBhc3NpZ25tZW50LiBTb3VyY2Ugb2JqZWN0cyBhcmUgYXBwbGllZCBmcm9tIGxlZnQgdG8gcmlnaHQuIFN1YnNlcXVlbnRcbiAqIHNvdXJjZXMgb3ZlcndyaXRlIHByb3BlcnR5IGFzc2lnbm1lbnRzIG9mIHByZXZpb3VzIHNvdXJjZXMuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIG11dGF0ZXMgYG9iamVjdGAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjUuMFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IFtzb3VyY2VzXSBUaGUgc291cmNlIG9iamVjdHMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0ge1xuICogICAnYSc6IFt7ICdiJzogMiB9LCB7ICdkJzogNCB9XVxuICogfTtcbiAqXG4gKiB2YXIgb3RoZXIgPSB7XG4gKiAgICdhJzogW3sgJ2MnOiAzIH0sIHsgJ2UnOiA1IH1dXG4gKiB9O1xuICpcbiAqIF8ubWVyZ2Uob2JqZWN0LCBvdGhlcik7XG4gKiAvLyA9PiB7ICdhJzogW3sgJ2InOiAyLCAnYyc6IDMgfSwgeyAnZCc6IDQsICdlJzogNSB9XSB9XG4gKi9cbnZhciBtZXJnZSA9IGNyZWF0ZUFzc2lnbmVyKGZ1bmN0aW9uKG9iamVjdCwgc291cmNlLCBzcmNJbmRleCkge1xuICBiYXNlTWVyZ2Uob2JqZWN0LCBzb3VyY2UsIHNyY0luZGV4KTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IG1lcmdlO1xuIiwidmFyIGJhc2VFeHRyZW11bSA9IHJlcXVpcmUoJy4vX2Jhc2VFeHRyZW11bScpLFxuICAgIGJhc2VMdCA9IHJlcXVpcmUoJy4vX2Jhc2VMdCcpLFxuICAgIGlkZW50aXR5ID0gcmVxdWlyZSgnLi9pZGVudGl0eScpO1xuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBtaW5pbXVtIHZhbHVlIG9mIGBhcnJheWAuIElmIGBhcnJheWAgaXMgZW1wdHkgb3IgZmFsc2V5LFxuICogYHVuZGVmaW5lZGAgaXMgcmV0dXJuZWQuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IE1hdGhcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5taW4oWzQsIDIsIDgsIDZdKTtcbiAqIC8vID0+IDJcbiAqXG4gKiBfLm1pbihbXSk7XG4gKiAvLyA9PiB1bmRlZmluZWRcbiAqL1xuZnVuY3Rpb24gbWluKGFycmF5KSB7XG4gIHJldHVybiAoYXJyYXkgJiYgYXJyYXkubGVuZ3RoKVxuICAgID8gYmFzZUV4dHJlbXVtKGFycmF5LCBpZGVudGl0eSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbjtcbiIsInZhciBiYXNlRXh0cmVtdW0gPSByZXF1aXJlKCcuL19iYXNlRXh0cmVtdW0nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBiYXNlTHQgPSByZXF1aXJlKCcuL19iYXNlTHQnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLm1pbmAgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyBgaXRlcmF0ZWVgIHdoaWNoIGlzXG4gKiBpbnZva2VkIGZvciBlYWNoIGVsZW1lbnQgaW4gYGFycmF5YCB0byBnZW5lcmF0ZSB0aGUgY3JpdGVyaW9uIGJ5IHdoaWNoXG4gKiB0aGUgdmFsdWUgaXMgcmFua2VkLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIG9uZSBhcmd1bWVudDogKHZhbHVlKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTWF0aFxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtpdGVyYXRlZT1fLmlkZW50aXR5XSBUaGUgaXRlcmF0ZWUgaW52b2tlZCBwZXIgZWxlbWVudC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBtaW5pbXVtIHZhbHVlLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0cyA9IFt7ICduJzogMSB9LCB7ICduJzogMiB9XTtcbiAqXG4gKiBfLm1pbkJ5KG9iamVjdHMsIGZ1bmN0aW9uKG8pIHsgcmV0dXJuIG8ubjsgfSk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKlxuICogLy8gVGhlIGBfLnByb3BlcnR5YCBpdGVyYXRlZSBzaG9ydGhhbmQuXG4gKiBfLm1pbkJ5KG9iamVjdHMsICduJyk7XG4gKiAvLyA9PiB7ICduJzogMSB9XG4gKi9cbmZ1bmN0aW9uIG1pbkJ5KGFycmF5LCBpdGVyYXRlZSkge1xuICByZXR1cm4gKGFycmF5ICYmIGFycmF5Lmxlbmd0aClcbiAgICA/IGJhc2VFeHRyZW11bShhcnJheSwgYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCAyKSwgYmFzZUx0KVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG1pbkJ5O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi4zLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5ub29wKTtcbiAqIC8vID0+IFt1bmRlZmluZWQsIHVuZGVmaW5lZF1cbiAqL1xuZnVuY3Rpb24gbm9vcCgpIHtcbiAgLy8gTm8gb3BlcmF0aW9uIHBlcmZvcm1lZC5cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBub29wO1xuIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290Jyk7XG5cbi8qKlxuICogR2V0cyB0aGUgdGltZXN0YW1wIG9mIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoYXQgaGF2ZSBlbGFwc2VkIHNpbmNlXG4gKiB0aGUgVW5peCBlcG9jaCAoMSBKYW51YXJ5IDE5NzAgMDA6MDA6MDAgVVRDKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDIuNC4wXG4gKiBAY2F0ZWdvcnkgRGF0ZVxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgdGltZXN0YW1wLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmRlZmVyKGZ1bmN0aW9uKHN0YW1wKSB7XG4gKiAgIGNvbnNvbGUubG9nKF8ubm93KCkgLSBzdGFtcCk7XG4gKiB9LCBfLm5vdygpKTtcbiAqIC8vID0+IExvZ3MgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaXQgdG9vayBmb3IgdGhlIGRlZmVycmVkIGludm9jYXRpb24uXG4gKi9cbnZhciBub3cgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIHJvb3QuRGF0ZS5ub3coKTtcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gbm93O1xuIiwidmFyIGJhc2VQaWNrID0gcmVxdWlyZSgnLi9fYmFzZVBpY2snKSxcbiAgICBmbGF0UmVzdCA9IHJlcXVpcmUoJy4vX2ZsYXRSZXN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBvYmplY3QgY29tcG9zZWQgb2YgdGhlIHBpY2tlZCBgb2JqZWN0YCBwcm9wZXJ0aWVzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHNvdXJjZSBvYmplY3QuXG4gKiBAcGFyYW0gey4uLihzdHJpbmd8c3RyaW5nW10pfSBbcGF0aHNdIFRoZSBwcm9wZXJ0eSBwYXRocyB0byBwaWNrLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbmV3IG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxLCAnYic6ICcyJywgJ2MnOiAzIH07XG4gKlxuICogXy5waWNrKG9iamVjdCwgWydhJywgJ2MnXSk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2MnOiAzIH1cbiAqL1xudmFyIHBpY2sgPSBmbGF0UmVzdChmdW5jdGlvbihvYmplY3QsIHBhdGhzKSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHt9IDogYmFzZVBpY2sob2JqZWN0LCBwYXRocyk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBwaWNrO1xuIiwidmFyIGJhc2VQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vX2Jhc2VQcm9wZXJ0eScpLFxuICAgIGJhc2VQcm9wZXJ0eURlZXAgPSByZXF1aXJlKCcuL19iYXNlUHJvcGVydHlEZWVwJyksXG4gICAgaXNLZXkgPSByZXF1aXJlKCcuL19pc0tleScpLFxuICAgIHRvS2V5ID0gcmVxdWlyZSgnLi9fdG9LZXknKTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBhdCBgcGF0aGAgb2YgYSBnaXZlbiBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7QXJyYXl8c3RyaW5nfSBwYXRoIFRoZSBwYXRoIG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdHMgPSBbXG4gKiAgIHsgJ2EnOiB7ICdiJzogMiB9IH0sXG4gKiAgIHsgJ2EnOiB7ICdiJzogMSB9IH1cbiAqIF07XG4gKlxuICogXy5tYXAob2JqZWN0cywgXy5wcm9wZXJ0eSgnYS5iJykpO1xuICogLy8gPT4gWzIsIDFdXG4gKlxuICogXy5tYXAoXy5zb3J0Qnkob2JqZWN0cywgXy5wcm9wZXJ0eShbJ2EnLCAnYiddKSksICdhLmInKTtcbiAqIC8vID0+IFsxLCAyXVxuICovXG5mdW5jdGlvbiBwcm9wZXJ0eShwYXRoKSB7XG4gIHJldHVybiBpc0tleShwYXRoKSA/IGJhc2VQcm9wZXJ0eSh0b0tleShwYXRoKSkgOiBiYXNlUHJvcGVydHlEZWVwKHBhdGgpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHByb3BlcnR5O1xuIiwidmFyIGNyZWF0ZVJhbmdlID0gcmVxdWlyZSgnLi9fY3JlYXRlUmFuZ2UnKTtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG51bWJlcnMgKHBvc2l0aXZlIGFuZC9vciBuZWdhdGl2ZSkgcHJvZ3Jlc3NpbmcgZnJvbVxuICogYHN0YXJ0YCB1cCB0bywgYnV0IG5vdCBpbmNsdWRpbmcsIGBlbmRgLiBBIHN0ZXAgb2YgYC0xYCBpcyB1c2VkIGlmIGEgbmVnYXRpdmVcbiAqIGBzdGFydGAgaXMgc3BlY2lmaWVkIHdpdGhvdXQgYW4gYGVuZGAgb3IgYHN0ZXBgLiBJZiBgZW5kYCBpcyBub3Qgc3BlY2lmaWVkLFxuICogaXQncyBzZXQgdG8gYHN0YXJ0YCB3aXRoIGBzdGFydGAgdGhlbiBzZXQgdG8gYDBgLlxuICpcbiAqICoqTm90ZToqKiBKYXZhU2NyaXB0IGZvbGxvd3MgdGhlIElFRUUtNzU0IHN0YW5kYXJkIGZvciByZXNvbHZpbmdcbiAqIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGljaCBjYW4gcHJvZHVjZSB1bmV4cGVjdGVkIHJlc3VsdHMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9MF0gVGhlIHN0YXJ0IG9mIHRoZSByYW5nZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBlbmQgVGhlIGVuZCBvZiB0aGUgcmFuZ2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0ZXA9MV0gVGhlIHZhbHVlIHRvIGluY3JlbWVudCBvciBkZWNyZW1lbnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIHJhbmdlIG9mIG51bWJlcnMuXG4gKiBAc2VlIF8uaW5SYW5nZSwgXy5yYW5nZVJpZ2h0XG4gKiBAZXhhbXBsZVxuICpcbiAqIF8ucmFuZ2UoNCk7XG4gKiAvLyA9PiBbMCwgMSwgMiwgM11cbiAqXG4gKiBfLnJhbmdlKC00KTtcbiAqIC8vID0+IFswLCAtMSwgLTIsIC0zXVxuICpcbiAqIF8ucmFuZ2UoMSwgNSk7XG4gKiAvLyA9PiBbMSwgMiwgMywgNF1cbiAqXG4gKiBfLnJhbmdlKDAsIDIwLCA1KTtcbiAqIC8vID0+IFswLCA1LCAxMCwgMTVdXG4gKlxuICogXy5yYW5nZSgwLCAtNCwgLTEpO1xuICogLy8gPT4gWzAsIC0xLCAtMiwgLTNdXG4gKlxuICogXy5yYW5nZSgxLCA0LCAwKTtcbiAqIC8vID0+IFsxLCAxLCAxXVxuICpcbiAqIF8ucmFuZ2UoMCk7XG4gKiAvLyA9PiBbXVxuICovXG52YXIgcmFuZ2UgPSBjcmVhdGVSYW5nZSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJhbmdlO1xuIiwidmFyIGFycmF5UmVkdWNlID0gcmVxdWlyZSgnLi9fYXJyYXlSZWR1Y2UnKSxcbiAgICBiYXNlRWFjaCA9IHJlcXVpcmUoJy4vX2Jhc2VFYWNoJyksXG4gICAgYmFzZUl0ZXJhdGVlID0gcmVxdWlyZSgnLi9fYmFzZUl0ZXJhdGVlJyksXG4gICAgYmFzZVJlZHVjZSA9IHJlcXVpcmUoJy4vX2Jhc2VSZWR1Y2UnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5Jyk7XG5cbi8qKlxuICogUmVkdWNlcyBgY29sbGVjdGlvbmAgdG8gYSB2YWx1ZSB3aGljaCBpcyB0aGUgYWNjdW11bGF0ZWQgcmVzdWx0IG9mIHJ1bm5pbmdcbiAqIGVhY2ggZWxlbWVudCBpbiBgY29sbGVjdGlvbmAgdGhydSBgaXRlcmF0ZWVgLCB3aGVyZSBlYWNoIHN1Y2Nlc3NpdmVcbiAqIGludm9jYXRpb24gaXMgc3VwcGxpZWQgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgcHJldmlvdXMuIElmIGBhY2N1bXVsYXRvcmBcbiAqIGlzIG5vdCBnaXZlbiwgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYGNvbGxlY3Rpb25gIGlzIHVzZWQgYXMgdGhlIGluaXRpYWxcbiAqIHZhbHVlLiBUaGUgaXRlcmF0ZWUgaXMgaW52b2tlZCB3aXRoIGZvdXIgYXJndW1lbnRzOlxuICogKGFjY3VtdWxhdG9yLCB2YWx1ZSwgaW5kZXh8a2V5LCBjb2xsZWN0aW9uKS5cbiAqXG4gKiBNYW55IGxvZGFzaCBtZXRob2RzIGFyZSBndWFyZGVkIHRvIHdvcmsgYXMgaXRlcmF0ZWVzIGZvciBtZXRob2RzIGxpa2VcbiAqIGBfLnJlZHVjZWAsIGBfLnJlZHVjZVJpZ2h0YCwgYW5kIGBfLnRyYW5zZm9ybWAuXG4gKlxuICogVGhlIGd1YXJkZWQgbWV0aG9kcyBhcmU6XG4gKiBgYXNzaWduYCwgYGRlZmF1bHRzYCwgYGRlZmF1bHRzRGVlcGAsIGBpbmNsdWRlc2AsIGBtZXJnZWAsIGBvcmRlckJ5YCxcbiAqIGFuZCBgc29ydEJ5YFxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdH0gY29sbGVjdGlvbiBUaGUgY29sbGVjdGlvbiB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBbaXRlcmF0ZWU9Xy5pZGVudGl0eV0gVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7Kn0gW2FjY3VtdWxhdG9yXSBUaGUgaW5pdGlhbCB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBzZWUgXy5yZWR1Y2VSaWdodFxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnJlZHVjZShbMSwgMl0sIGZ1bmN0aW9uKHN1bSwgbikge1xuICogICByZXR1cm4gc3VtICsgbjtcbiAqIH0sIDApO1xuICogLy8gPT4gM1xuICpcbiAqIF8ucmVkdWNlKHsgJ2EnOiAxLCAnYic6IDIsICdjJzogMSB9LCBmdW5jdGlvbihyZXN1bHQsIHZhbHVlLCBrZXkpIHtcbiAqICAgKHJlc3VsdFt2YWx1ZV0gfHwgKHJlc3VsdFt2YWx1ZV0gPSBbXSkpLnB1c2goa2V5KTtcbiAqICAgcmV0dXJuIHJlc3VsdDtcbiAqIH0sIHt9KTtcbiAqIC8vID0+IHsgJzEnOiBbJ2EnLCAnYyddLCAnMic6IFsnYiddIH0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqL1xuZnVuY3Rpb24gcmVkdWNlKGNvbGxlY3Rpb24sIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgZnVuYyA9IGlzQXJyYXkoY29sbGVjdGlvbikgPyBhcnJheVJlZHVjZSA6IGJhc2VSZWR1Y2UsXG4gICAgICBpbml0QWNjdW0gPSBhcmd1bWVudHMubGVuZ3RoIDwgMztcblxuICByZXR1cm4gZnVuYyhjb2xsZWN0aW9uLCBiYXNlSXRlcmF0ZWUoaXRlcmF0ZWUsIDQpLCBhY2N1bXVsYXRvciwgaW5pdEFjY3VtLCBiYXNlRWFjaCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gcmVkdWNlO1xuIiwidmFyIGJhc2VLZXlzID0gcmVxdWlyZSgnLi9fYmFzZUtleXMnKSxcbiAgICBnZXRUYWcgPSByZXF1aXJlKCcuL19nZXRUYWcnKSxcbiAgICBpc0FycmF5TGlrZSA9IHJlcXVpcmUoJy4vaXNBcnJheUxpa2UnKSxcbiAgICBpc1N0cmluZyA9IHJlcXVpcmUoJy4vaXNTdHJpbmcnKSxcbiAgICBzdHJpbmdTaXplID0gcmVxdWlyZSgnLi9fc3RyaW5nU2l6ZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XSc7XG5cbi8qKlxuICogR2V0cyB0aGUgc2l6ZSBvZiBgY29sbGVjdGlvbmAgYnkgcmV0dXJuaW5nIGl0cyBsZW5ndGggZm9yIGFycmF5LWxpa2VcbiAqIHZhbHVlcyBvciB0aGUgbnVtYmVyIG9mIG93biBlbnVtZXJhYmxlIHN0cmluZyBrZXllZCBwcm9wZXJ0aWVzIGZvciBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBDb2xsZWN0aW9uXG4gKiBAcGFyYW0ge0FycmF5fE9iamVjdHxzdHJpbmd9IGNvbGxlY3Rpb24gVGhlIGNvbGxlY3Rpb24gdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbGxlY3Rpb24gc2l6ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5zaXplKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAzXG4gKlxuICogXy5zaXplKHsgJ2EnOiAxLCAnYic6IDIgfSk7XG4gKiAvLyA9PiAyXG4gKlxuICogXy5zaXplKCdwZWJibGVzJyk7XG4gKiAvLyA9PiA3XG4gKi9cbmZ1bmN0aW9uIHNpemUoY29sbGVjdGlvbikge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgaWYgKGlzQXJyYXlMaWtlKGNvbGxlY3Rpb24pKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKGNvbGxlY3Rpb24pID8gc3RyaW5nU2l6ZShjb2xsZWN0aW9uKSA6IGNvbGxlY3Rpb24ubGVuZ3RoO1xuICB9XG4gIHZhciB0YWcgPSBnZXRUYWcoY29sbGVjdGlvbik7XG4gIGlmICh0YWcgPT0gbWFwVGFnIHx8IHRhZyA9PSBzZXRUYWcpIHtcbiAgICByZXR1cm4gY29sbGVjdGlvbi5zaXplO1xuICB9XG4gIHJldHVybiBiYXNlS2V5cyhjb2xsZWN0aW9uKS5sZW5ndGg7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2l6ZTtcbiIsInZhciBiYXNlRmxhdHRlbiA9IHJlcXVpcmUoJy4vX2Jhc2VGbGF0dGVuJyksXG4gICAgYmFzZU9yZGVyQnkgPSByZXF1aXJlKCcuL19iYXNlT3JkZXJCeScpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBpc0l0ZXJhdGVlQ2FsbCA9IHJlcXVpcmUoJy4vX2lzSXRlcmF0ZWVDYWxsJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBlbGVtZW50cywgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciBieSB0aGUgcmVzdWx0cyBvZlxuICogcnVubmluZyBlYWNoIGVsZW1lbnQgaW4gYSBjb2xsZWN0aW9uIHRocnUgZWFjaCBpdGVyYXRlZS4gVGhpcyBtZXRob2RcbiAqIHBlcmZvcm1zIGEgc3RhYmxlIHNvcnQsIHRoYXQgaXMsIGl0IHByZXNlcnZlcyB0aGUgb3JpZ2luYWwgc29ydCBvcmRlciBvZlxuICogZXF1YWwgZWxlbWVudHMuIFRoZSBpdGVyYXRlZXMgYXJlIGludm9rZWQgd2l0aCBvbmUgYXJndW1lbnQ6ICh2YWx1ZSkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IENvbGxlY3Rpb25cbiAqIEBwYXJhbSB7QXJyYXl8T2JqZWN0fSBjb2xsZWN0aW9uIFRoZSBjb2xsZWN0aW9uIHRvIGl0ZXJhdGUgb3Zlci5cbiAqIEBwYXJhbSB7Li4uKEZ1bmN0aW9ufEZ1bmN0aW9uW10pfSBbaXRlcmF0ZWVzPVtfLmlkZW50aXR5XV1cbiAqICBUaGUgaXRlcmF0ZWVzIHRvIHNvcnQgYnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBzb3J0ZWQgYXJyYXkuXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciB1c2VycyA9IFtcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogNDggfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzYgfSxcbiAqICAgeyAndXNlcic6ICdmcmVkJywgICAnYWdlJzogMzAgfSxcbiAqICAgeyAndXNlcic6ICdiYXJuZXknLCAnYWdlJzogMzQgfVxuICogXTtcbiAqXG4gKiBfLnNvcnRCeSh1c2VycywgW2Z1bmN0aW9uKG8pIHsgcmV0dXJuIG8udXNlcjsgfV0pO1xuICogLy8gPT4gb2JqZWN0cyBmb3IgW1snYmFybmV5JywgMzZdLCBbJ2Jhcm5leScsIDM0XSwgWydmcmVkJywgNDhdLCBbJ2ZyZWQnLCAzMF1dXG4gKlxuICogXy5zb3J0QnkodXNlcnMsIFsndXNlcicsICdhZ2UnXSk7XG4gKiAvLyA9PiBvYmplY3RzIGZvciBbWydiYXJuZXknLCAzNF0sIFsnYmFybmV5JywgMzZdLCBbJ2ZyZWQnLCAzMF0sIFsnZnJlZCcsIDQ4XV1cbiAqL1xudmFyIHNvcnRCeSA9IGJhc2VSZXN0KGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGl0ZXJhdGVlcykge1xuICBpZiAoY29sbGVjdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHZhciBsZW5ndGggPSBpdGVyYXRlZXMubGVuZ3RoO1xuICBpZiAobGVuZ3RoID4gMSAmJiBpc0l0ZXJhdGVlQ2FsbChjb2xsZWN0aW9uLCBpdGVyYXRlZXNbMF0sIGl0ZXJhdGVlc1sxXSkpIHtcbiAgICBpdGVyYXRlZXMgPSBbXTtcbiAgfSBlbHNlIGlmIChsZW5ndGggPiAyICYmIGlzSXRlcmF0ZWVDYWxsKGl0ZXJhdGVlc1swXSwgaXRlcmF0ZWVzWzFdLCBpdGVyYXRlZXNbMl0pKSB7XG4gICAgaXRlcmF0ZWVzID0gW2l0ZXJhdGVlc1swXV07XG4gIH1cbiAgcmV0dXJuIGJhc2VPcmRlckJ5KGNvbGxlY3Rpb24sIGJhc2VGbGF0dGVuKGl0ZXJhdGVlcywgMSksIFtdKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHNvcnRCeTtcbiIsIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc3R1YkFycmF5O1xuIiwiLyoqXG4gKiBUaGlzIG1ldGhvZCByZXR1cm5zIGBmYWxzZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjEzLjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRpbWVzKDIsIF8uc3R1YkZhbHNlKTtcbiAqIC8vID0+IFtmYWxzZSwgZmFsc2VdXG4gKi9cbmZ1bmN0aW9uIHN0dWJGYWxzZSgpIHtcbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0dWJGYWxzZTtcbiIsInZhciB0b051bWJlciA9IHJlcXVpcmUoJy4vdG9OdW1iZXInKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9GaW5pdGU7XG4iLCJ2YXIgdG9GaW5pdGUgPSByZXF1aXJlKCcuL3RvRmluaXRlJyk7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhbiBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBsb29zZWx5IGJhc2VkIG9uXG4gKiBbYFRvSW50ZWdlcmBdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgY29udmVydGVkIGludGVnZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9JbnRlZ2VyKDMuMik7XG4gKiAvLyA9PiAzXG4gKlxuICogXy50b0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiAwXG4gKlxuICogXy50b0ludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gMS43OTc2OTMxMzQ4NjIzMTU3ZSszMDhcbiAqXG4gKiBfLnRvSW50ZWdlcignMy4yJyk7XG4gKiAvLyA9PiAzXG4gKi9cbmZ1bmN0aW9uIHRvSW50ZWdlcih2YWx1ZSkge1xuICB2YXIgcmVzdWx0ID0gdG9GaW5pdGUodmFsdWUpLFxuICAgICAgcmVtYWluZGVyID0gcmVzdWx0ICUgMTtcblxuICByZXR1cm4gcmVzdWx0ID09PSByZXN1bHQgPyAocmVtYWluZGVyID8gcmVzdWx0IC0gcmVtYWluZGVyIDogcmVzdWx0KSA6IDA7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9JbnRlZ2VyO1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzU3ltYm9sID0gcmVxdWlyZSgnLi9pc1N5bWJvbCcpO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBOQU4gPSAwIC8gMDtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZS4gKi9cbnZhciByZVRyaW0gPSAvXlxccyt8XFxzKyQvZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGJhZCBzaWduZWQgaGV4YWRlY2ltYWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmFkSGV4ID0gL15bLStdMHhbMC05YS1mXSskL2k7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiaW5hcnkgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzQmluYXJ5ID0gL14wYlswMV0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb2N0YWwgc3RyaW5nIHZhbHVlcy4gKi9cbnZhciByZUlzT2N0YWwgPSAvXjBvWzAtN10rJC9pO1xuXG4vKiogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgd2l0aG91dCBhIGRlcGVuZGVuY3kgb24gYHJvb3RgLiAqL1xudmFyIGZyZWVQYXJzZUludCA9IHBhcnNlSW50O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBudW1iZXIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHByb2Nlc3MuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9OdW1iZXIoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9OdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvTnVtYmVyKEluZmluaXR5KTtcbiAqIC8vID0+IEluZmluaXR5XG4gKlxuICogXy50b051bWJlcignMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9OdW1iZXIodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNTeW1ib2wodmFsdWUpKSB7XG4gICAgcmV0dXJuIE5BTjtcbiAgfVxuICBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgdmFyIG90aGVyID0gdHlwZW9mIHZhbHVlLnZhbHVlT2YgPT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLnZhbHVlT2YoKSA6IHZhbHVlO1xuICAgIHZhbHVlID0gaXNPYmplY3Qob3RoZXIpID8gKG90aGVyICsgJycpIDogb3RoZXI7XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogK3ZhbHVlO1xuICB9XG4gIHZhbHVlID0gdmFsdWUucmVwbGFjZShyZVRyaW0sICcnKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iLCJ2YXIgY29weU9iamVjdCA9IHJlcXVpcmUoJy4vX2NvcHlPYmplY3QnKSxcbiAgICBrZXlzSW4gPSByZXF1aXJlKCcuL2tleXNJbicpO1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBwbGFpbiBvYmplY3QgZmxhdHRlbmluZyBpbmhlcml0ZWQgZW51bWVyYWJsZSBzdHJpbmdcbiAqIGtleWVkIHByb3BlcnRpZXMgb2YgYHZhbHVlYCB0byBvd24gcHJvcGVydGllcyBvZiB0aGUgcGxhaW4gb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgY29udmVydGVkIHBsYWluIG9iamVjdC5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy5hc3NpZ24oeyAnYSc6IDEgfSwgbmV3IEZvbyk7XG4gKiAvLyA9PiB7ICdhJzogMSwgJ2InOiAyIH1cbiAqXG4gKiBfLmFzc2lnbih7ICdhJzogMSB9LCBfLnRvUGxhaW5PYmplY3QobmV3IEZvbykpO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiwgJ2MnOiAzIH1cbiAqL1xuZnVuY3Rpb24gdG9QbGFpbk9iamVjdCh2YWx1ZSkge1xuICByZXR1cm4gY29weU9iamVjdCh2YWx1ZSwga2V5c0luKHZhbHVlKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9QbGFpbk9iamVjdDtcbiIsInZhciBiYXNlVG9TdHJpbmcgPSByZXF1aXJlKCcuL19iYXNlVG9TdHJpbmcnKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nLiBBbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgZm9yIGBudWxsYFxuICogYW5kIGB1bmRlZmluZWRgIHZhbHVlcy4gVGhlIHNpZ24gb2YgYC0wYCBpcyBwcmVzZXJ2ZWQuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvU3RyaW5nKG51bGwpO1xuICogLy8gPT4gJydcbiAqXG4gKiBfLnRvU3RyaW5nKC0wKTtcbiAqIC8vID0+ICctMCdcbiAqXG4gKiBfLnRvU3RyaW5nKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiAnMSwyLDMnXG4gKi9cbmZ1bmN0aW9uIHRvU3RyaW5nKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJycgOiBiYXNlVG9TdHJpbmcodmFsdWUpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHRvU3RyaW5nO1xuIiwidmFyIGFycmF5RWFjaCA9IHJlcXVpcmUoJy4vX2FycmF5RWFjaCcpLFxuICAgIGJhc2VDcmVhdGUgPSByZXF1aXJlKCcuL19iYXNlQ3JlYXRlJyksXG4gICAgYmFzZUZvck93biA9IHJlcXVpcmUoJy4vX2Jhc2VGb3JPd24nKSxcbiAgICBiYXNlSXRlcmF0ZWUgPSByZXF1aXJlKCcuL19iYXNlSXRlcmF0ZWUnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcuL19nZXRQcm90b3R5cGUnKSxcbiAgICBpc0FycmF5ID0gcmVxdWlyZSgnLi9pc0FycmF5JyksXG4gICAgaXNCdWZmZXIgPSByZXF1aXJlKCcuL2lzQnVmZmVyJyksXG4gICAgaXNGdW5jdGlvbiA9IHJlcXVpcmUoJy4vaXNGdW5jdGlvbicpLFxuICAgIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9pc09iamVjdCcpLFxuICAgIGlzVHlwZWRBcnJheSA9IHJlcXVpcmUoJy4vaXNUeXBlZEFycmF5Jyk7XG5cbi8qKlxuICogQW4gYWx0ZXJuYXRpdmUgdG8gYF8ucmVkdWNlYDsgdGhpcyBtZXRob2QgdHJhbnNmb3JtcyBgb2JqZWN0YCB0byBhIG5ld1xuICogYGFjY3VtdWxhdG9yYCBvYmplY3Qgd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiBydW5uaW5nIGVhY2ggb2YgaXRzIG93blxuICogZW51bWVyYWJsZSBzdHJpbmcga2V5ZWQgcHJvcGVydGllcyB0aHJ1IGBpdGVyYXRlZWAsIHdpdGggZWFjaCBpbnZvY2F0aW9uXG4gKiBwb3RlbnRpYWxseSBtdXRhdGluZyB0aGUgYGFjY3VtdWxhdG9yYCBvYmplY3QuIElmIGBhY2N1bXVsYXRvcmAgaXMgbm90XG4gKiBwcm92aWRlZCwgYSBuZXcgb2JqZWN0IHdpdGggdGhlIHNhbWUgYFtbUHJvdG90eXBlXV1gIHdpbGwgYmUgdXNlZC4gVGhlXG4gKiBpdGVyYXRlZSBpcyBpbnZva2VkIHdpdGggZm91ciBhcmd1bWVudHM6IChhY2N1bXVsYXRvciwgdmFsdWUsIGtleSwgb2JqZWN0KS5cbiAqIEl0ZXJhdGVlIGZ1bmN0aW9ucyBtYXkgZXhpdCBpdGVyYXRpb24gZWFybHkgYnkgZXhwbGljaXRseSByZXR1cm5pbmcgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDEuMy4wXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2l0ZXJhdGVlPV8uaWRlbnRpdHldIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcGFyYW0geyp9IFthY2N1bXVsYXRvcl0gVGhlIGN1c3RvbSBhY2N1bXVsYXRvciB2YWx1ZS5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBhY2N1bXVsYXRlZCB2YWx1ZS5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50cmFuc2Zvcm0oWzIsIDMsIDRdLCBmdW5jdGlvbihyZXN1bHQsIG4pIHtcbiAqICAgcmVzdWx0LnB1c2gobiAqPSBuKTtcbiAqICAgcmV0dXJuIG4gJSAyID09IDA7XG4gKiB9LCBbXSk7XG4gKiAvLyA9PiBbNCwgOV1cbiAqXG4gKiBfLnRyYW5zZm9ybSh7ICdhJzogMSwgJ2InOiAyLCAnYyc6IDEgfSwgZnVuY3Rpb24ocmVzdWx0LCB2YWx1ZSwga2V5KSB7XG4gKiAgIChyZXN1bHRbdmFsdWVdIHx8IChyZXN1bHRbdmFsdWVdID0gW10pKS5wdXNoKGtleSk7XG4gKiB9LCB7fSk7XG4gKiAvLyA9PiB7ICcxJzogWydhJywgJ2MnXSwgJzInOiBbJ2InXSB9XG4gKi9cbmZ1bmN0aW9uIHRyYW5zZm9ybShvYmplY3QsIGl0ZXJhdGVlLCBhY2N1bXVsYXRvcikge1xuICB2YXIgaXNBcnIgPSBpc0FycmF5KG9iamVjdCksXG4gICAgICBpc0Fyckxpa2UgPSBpc0FyciB8fCBpc0J1ZmZlcihvYmplY3QpIHx8IGlzVHlwZWRBcnJheShvYmplY3QpO1xuXG4gIGl0ZXJhdGVlID0gYmFzZUl0ZXJhdGVlKGl0ZXJhdGVlLCA0KTtcbiAgaWYgKGFjY3VtdWxhdG9yID09IG51bGwpIHtcbiAgICB2YXIgQ3RvciA9IG9iamVjdCAmJiBvYmplY3QuY29uc3RydWN0b3I7XG4gICAgaWYgKGlzQXJyTGlrZSkge1xuICAgICAgYWNjdW11bGF0b3IgPSBpc0FyciA/IG5ldyBDdG9yIDogW107XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICAgIGFjY3VtdWxhdG9yID0gaXNGdW5jdGlvbihDdG9yKSA/IGJhc2VDcmVhdGUoZ2V0UHJvdG90eXBlKG9iamVjdCkpIDoge307XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgYWNjdW11bGF0b3IgPSB7fTtcbiAgICB9XG4gIH1cbiAgKGlzQXJyTGlrZSA/IGFycmF5RWFjaCA6IGJhc2VGb3JPd24pKG9iamVjdCwgZnVuY3Rpb24odmFsdWUsIGluZGV4LCBvYmplY3QpIHtcbiAgICByZXR1cm4gaXRlcmF0ZWUoYWNjdW11bGF0b3IsIHZhbHVlLCBpbmRleCwgb2JqZWN0KTtcbiAgfSk7XG4gIHJldHVybiBhY2N1bXVsYXRvcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmFuc2Zvcm07XG4iLCJ2YXIgYmFzZUZsYXR0ZW4gPSByZXF1aXJlKCcuL19iYXNlRmxhdHRlbicpLFxuICAgIGJhc2VSZXN0ID0gcmVxdWlyZSgnLi9fYmFzZVJlc3QnKSxcbiAgICBiYXNlVW5pcSA9IHJlcXVpcmUoJy4vX2Jhc2VVbmlxJyksXG4gICAgaXNBcnJheUxpa2VPYmplY3QgPSByZXF1aXJlKCcuL2lzQXJyYXlMaWtlT2JqZWN0Jyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB1bmlxdWUgdmFsdWVzLCBpbiBvcmRlciwgZnJvbSBhbGwgZ2l2ZW4gYXJyYXlzIHVzaW5nXG4gKiBbYFNhbWVWYWx1ZVplcm9gXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1zYW1ldmFsdWV6ZXJvKVxuICogZm9yIGVxdWFsaXR5IGNvbXBhcmlzb25zLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBBcnJheVxuICogQHBhcmFtIHsuLi5BcnJheX0gW2FycmF5c10gVGhlIGFycmF5cyB0byBpbnNwZWN0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBuZXcgYXJyYXkgb2YgY29tYmluZWQgdmFsdWVzLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnVuaW9uKFsyXSwgWzEsIDJdKTtcbiAqIC8vID0+IFsyLCAxXVxuICovXG52YXIgdW5pb24gPSBiYXNlUmVzdChmdW5jdGlvbihhcnJheXMpIHtcbiAgcmV0dXJuIGJhc2VVbmlxKGJhc2VGbGF0dGVuKGFycmF5cywgMSwgaXNBcnJheUxpa2VPYmplY3QsIHRydWUpKTtcbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHVuaW9uO1xuIiwidmFyIHRvU3RyaW5nID0gcmVxdWlyZSgnLi90b1N0cmluZycpO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzLiAqL1xudmFyIGlkQ291bnRlciA9IDA7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgdW5pcXVlIElELiBJZiBgcHJlZml4YCBpcyBnaXZlbiwgdGhlIElEIGlzIGFwcGVuZGVkIHRvIGl0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0ge3N0cmluZ30gW3ByZWZpeD0nJ10gVGhlIHZhbHVlIHRvIHByZWZpeCB0aGUgSUQgd2l0aC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHVuaXF1ZSBJRC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy51bmlxdWVJZCgnY29udGFjdF8nKTtcbiAqIC8vID0+ICdjb250YWN0XzEwNCdcbiAqXG4gKiBfLnVuaXF1ZUlkKCk7XG4gKiAvLyA9PiAnMTA1J1xuICovXG5mdW5jdGlvbiB1bmlxdWVJZChwcmVmaXgpIHtcbiAgdmFyIGlkID0gKytpZENvdW50ZXI7XG4gIHJldHVybiB0b1N0cmluZyhwcmVmaXgpICsgaWQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdW5pcXVlSWQ7XG4iLCJ2YXIgYmFzZVZhbHVlcyA9IHJlcXVpcmUoJy4vX2Jhc2VWYWx1ZXMnKSxcbiAgICBrZXlzID0gcmVxdWlyZSgnLi9rZXlzJyk7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiB0aGUgb3duIGVudW1lcmFibGUgc3RyaW5nIGtleWVkIHByb3BlcnR5IHZhbHVlcyBvZiBgb2JqZWN0YC5cbiAqXG4gKiAqKk5vdGU6KiogTm9uLW9iamVjdCB2YWx1ZXMgYXJlIGNvZXJjZWQgdG8gb2JqZWN0cy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgT2JqZWN0XG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IHZhbHVlcy5cbiAqIEBleGFtcGxlXG4gKlxuICogZnVuY3Rpb24gRm9vKCkge1xuICogICB0aGlzLmEgPSAxO1xuICogICB0aGlzLmIgPSAyO1xuICogfVxuICpcbiAqIEZvby5wcm90b3R5cGUuYyA9IDM7XG4gKlxuICogXy52YWx1ZXMobmV3IEZvbyk7XG4gKiAvLyA9PiBbMSwgMl0gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLnZhbHVlcygnaGknKTtcbiAqIC8vID0+IFsnaCcsICdpJ11cbiAqL1xuZnVuY3Rpb24gdmFsdWVzKG9iamVjdCkge1xuICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyBbXSA6IGJhc2VWYWx1ZXMob2JqZWN0LCBrZXlzKG9iamVjdCkpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbHVlcztcbiIsInZhciBhc3NpZ25WYWx1ZSA9IHJlcXVpcmUoJy4vX2Fzc2lnblZhbHVlJyksXG4gICAgYmFzZVppcE9iamVjdCA9IHJlcXVpcmUoJy4vX2Jhc2VaaXBPYmplY3QnKTtcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmZyb21QYWlyc2AgZXhjZXB0IHRoYXQgaXQgYWNjZXB0cyB0d28gYXJyYXlzLFxuICogb25lIG9mIHByb3BlcnR5IGlkZW50aWZpZXJzIGFuZCBvbmUgb2YgY29ycmVzcG9uZGluZyB2YWx1ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjQuMFxuICogQGNhdGVnb3J5IEFycmF5XG4gKiBAcGFyYW0ge0FycmF5fSBbcHJvcHM9W11dIFRoZSBwcm9wZXJ0eSBpZGVudGlmaWVycy5cbiAqIEBwYXJhbSB7QXJyYXl9IFt2YWx1ZXM9W11dIFRoZSBwcm9wZXJ0eSB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnppcE9iamVjdChbJ2EnLCAnYiddLCBbMSwgMl0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbmZ1bmN0aW9uIHppcE9iamVjdChwcm9wcywgdmFsdWVzKSB7XG4gIHJldHVybiBiYXNlWmlwT2JqZWN0KHByb3BzIHx8IFtdLCB2YWx1ZXMgfHwgW10sIGFzc2lnblZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB6aXBPYmplY3Q7XG4iLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRpZiAoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcblx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcblx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1bHRcblx0XHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgXCJsb2FkZWRcIiwge1xuXHRcdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRcdGdldDogZnVuY3Rpb24oKSB7XG5cdFx0XHRcdHJldHVybiBtb2R1bGUubDtcblx0XHRcdH1cblx0XHR9KTtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobW9kdWxlLCBcImlkXCIsIHtcblx0XHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0XHRnZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0XHRyZXR1cm4gbW9kdWxlLmk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XG5cdH1cblx0cmV0dXJuIG1vZHVsZTtcbn07XG4iLCIvLyBTaW1wbGUsIGludGVybmFsIE9iamVjdC5hc3NpZ24oKSBwb2x5ZmlsbCBmb3Igb3B0aW9ucyBvYmplY3RzIGV0Yy5cblxubW9kdWxlLmV4cG9ydHMgPSBPYmplY3QuYXNzaWduICE9IG51bGwgPyBPYmplY3QuYXNzaWduLmJpbmQoIE9iamVjdCApIDogZnVuY3Rpb24oIHRndCwgLi4uc3JjcyApe1xuICBzcmNzLmZvckVhY2goIHNyYyA9PiB7XG4gICAgT2JqZWN0LmtleXMoIHNyYyApLmZvckVhY2goIGsgPT4gdGd0W2tdID0gc3JjW2tdICk7XG4gIH0gKTtcblxuICByZXR1cm4gdGd0O1xufTtcbiIsImxldCBkZWZhdWx0cyA9IHtcbiAgLy8gZGFncmUgYWxnbyBvcHRpb25zLCB1c2VzIGRlZmF1bHQgdmFsdWUgb24gdW5kZWZpbmVkXG4gIG5vZGVTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIGVkZ2VTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBlZGdlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtTZXA6IHVuZGVmaW5lZCwgLy8gdGhlIHNlcGFyYXRpb24gYmV0d2VlbiBhZGphY2VudCBub2RlcyBpbiB0aGUgc2FtZSByYW5rXG4gIHJhbmtEaXI6IHVuZGVmaW5lZCwgLy8gJ1RCJyBmb3IgdG9wIHRvIGJvdHRvbSBmbG93LCAnTFInIGZvciBsZWZ0IHRvIHJpZ2h0LFxuICByYW5rZXI6ICB1bmRlZmluZWQsIC8vIFR5cGUgb2YgYWxnb3JpdGhtIHRvIGFzc2lnbnMgYSByYW5rIHRvIGVhY2ggbm9kZSBpbiB0aGUgaW5wdXQgZ3JhcGguXG4gICAgICAgICAgICAgICAgICAgICAgLy8gUG9zc2libGUgdmFsdWVzOiBuZXR3b3JrLXNpbXBsZXgsIHRpZ2h0LXRyZWUgb3IgbG9uZ2VzdC1wYXRoXG4gIG1pbkxlbjogZnVuY3Rpb24oIGVkZ2UgKXsgcmV0dXJuIDE7IH0sIC8vIG51bWJlciBvZiByYW5rcyB0byBrZWVwIGJldHdlZW4gdGhlIHNvdXJjZSBhbmQgdGFyZ2V0IG9mIHRoZSBlZGdlXG4gIGVkZ2VXZWlnaHQ6IGZ1bmN0aW9uKCBlZGdlICl7IHJldHVybiAxOyB9LCAvLyBoaWdoZXIgd2VpZ2h0IGVkZ2VzIGFyZSBnZW5lcmFsbHkgbWFkZSBzaG9ydGVyIGFuZCBzdHJhaWdodGVyIHRoYW4gbG93ZXIgd2VpZ2h0IGVkZ2VzXG5cbiAgLy8gZ2VuZXJhbCBsYXlvdXQgb3B0aW9uc1xuICBmaXQ6IHRydWUsIC8vIHdoZXRoZXIgdG8gZml0IHRvIHZpZXdwb3J0XG4gIHBhZGRpbmc6IDMwLCAvLyBmaXQgcGFkZGluZ1xuICBzcGFjaW5nRmFjdG9yOiB1bmRlZmluZWQsIC8vIEFwcGxpZXMgYSBtdWx0aXBsaWNhdGl2ZSBmYWN0b3IgKD4wKSB0byBleHBhbmQgb3IgY29tcHJlc3MgdGhlIG92ZXJhbGwgYXJlYSB0aGF0IHRoZSBub2RlcyB0YWtlIHVwXG4gIG5vZGVEaW1lbnNpb25zSW5jbHVkZUxhYmVsczogZmFsc2UsIC8vIHdoZXRoZXIgbGFiZWxzIHNob3VsZCBiZSBpbmNsdWRlZCBpbiBkZXRlcm1pbmluZyB0aGUgc3BhY2UgdXNlZCBieSBhIG5vZGVcbiAgYW5pbWF0ZTogZmFsc2UsIC8vIHdoZXRoZXIgdG8gdHJhbnNpdGlvbiB0aGUgbm9kZSBwb3NpdGlvbnNcbiAgYW5pbWF0ZUZpbHRlcjogZnVuY3Rpb24oIG5vZGUsIGkgKXsgcmV0dXJuIHRydWU7IH0sIC8vIHdoZXRoZXIgdG8gYW5pbWF0ZSBzcGVjaWZpYyBub2RlcyB3aGVuIGFuaW1hdGlvbiBpcyBvbjsgbm9uLWFuaW1hdGVkIG5vZGVzIGltbWVkaWF0ZWx5IGdvIHRvIHRoZWlyIGZpbmFsIHBvc2l0aW9uc1xuICBhbmltYXRpb25EdXJhdGlvbjogNTAwLCAvLyBkdXJhdGlvbiBvZiBhbmltYXRpb24gaW4gbXMgaWYgZW5hYmxlZFxuICBhbmltYXRpb25FYXNpbmc6IHVuZGVmaW5lZCwgLy8gZWFzaW5nIG9mIGFuaW1hdGlvbiBpZiBlbmFibGVkXG4gIGJvdW5kaW5nQm94OiB1bmRlZmluZWQsIC8vIGNvbnN0cmFpbiBsYXlvdXQgYm91bmRzOyB7IHgxLCB5MSwgeDIsIHkyIH0gb3IgeyB4MSwgeTEsIHcsIGggfVxuICB0cmFuc2Zvcm06IGZ1bmN0aW9uKCBub2RlLCBwb3MgKXsgcmV0dXJuIHBvczsgfSwgLy8gYSBmdW5jdGlvbiB0aGF0IGFwcGxpZXMgYSB0cmFuc2Zvcm0gdG8gdGhlIGZpbmFsIG5vZGUgcG9zaXRpb25cbiAgcmVhZHk6IGZ1bmN0aW9uKCl7fSwgLy8gb24gbGF5b3V0cmVhZHlcbiAgc3RvcDogZnVuY3Rpb24oKXt9IC8vIG9uIGxheW91dHN0b3Bcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gZGVmYXVsdHM7XG4iLCJjb25zdCBpbXBsID0gcmVxdWlyZSgnLi9sYXlvdXQnKTtcblxuLy8gcmVnaXN0ZXJzIHRoZSBleHRlbnNpb24gb24gYSBjeXRvc2NhcGUgbGliIHJlZlxubGV0IHJlZ2lzdGVyID0gZnVuY3Rpb24oIGN5dG9zY2FwZSApe1xuICBpZiggIWN5dG9zY2FwZSApeyByZXR1cm47IH0gLy8gY2FuJ3QgcmVnaXN0ZXIgaWYgY3l0b3NjYXBlIHVuc3BlY2lmaWVkXG5cbiAgY3l0b3NjYXBlKCAnbGF5b3V0JywgJ2RhZ3JlJywgaW1wbCApOyAvLyByZWdpc3RlciB3aXRoIGN5dG9zY2FwZS5qc1xufTtcblxuaWYoIHR5cGVvZiBjeXRvc2NhcGUgIT09ICd1bmRlZmluZWQnICl7IC8vIGV4cG9zZSB0byBnbG9iYWwgY3l0b3NjYXBlIChpLmUuIHdpbmRvdy5jeXRvc2NhcGUpXG4gIHJlZ2lzdGVyKCBjeXRvc2NhcGUgKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSByZWdpc3RlcjtcbiIsImNvbnN0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbihvKXsgcmV0dXJuIHR5cGVvZiBvID09PSAnZnVuY3Rpb24nOyB9O1xuY29uc3QgZGVmYXVsdHMgPSByZXF1aXJlKCcuL2RlZmF1bHRzJyk7XG5jb25zdCBhc3NpZ24gPSByZXF1aXJlKCcuL2Fzc2lnbicpO1xuY29uc3QgZGFncmUgPSByZXF1aXJlKCdkYWdyZScpO1xuXG4vLyBjb25zdHJ1Y3RvclxuLy8gb3B0aW9ucyA6IG9iamVjdCBjb250YWluaW5nIGxheW91dCBvcHRpb25zXG5mdW5jdGlvbiBEYWdyZUxheW91dCggb3B0aW9ucyApe1xuICB0aGlzLm9wdGlvbnMgPSBhc3NpZ24oIHt9LCBkZWZhdWx0cywgb3B0aW9ucyApO1xufVxuXG4vLyBydW5zIHRoZSBsYXlvdXRcbkRhZ3JlTGF5b3V0LnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbigpe1xuICBsZXQgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgbGV0IGxheW91dCA9IHRoaXM7XG5cbiAgbGV0IGN5ID0gb3B0aW9ucy5jeTsgLy8gY3kgaXMgYXV0b21hdGljYWxseSBwb3B1bGF0ZWQgZm9yIHVzIGluIHRoZSBjb25zdHJ1Y3RvclxuICBsZXQgZWxlcyA9IG9wdGlvbnMuZWxlcztcblxuICBsZXQgZ2V0VmFsID0gZnVuY3Rpb24oIGVsZSwgdmFsICl7XG4gICAgcmV0dXJuIGlzRnVuY3Rpb24odmFsKSA/IHZhbC5hcHBseSggZWxlLCBbIGVsZSBdICkgOiB2YWw7XG4gIH07XG5cbiAgbGV0IGJiID0gb3B0aW9ucy5ib3VuZGluZ0JveCB8fCB7IHgxOiAwLCB5MTogMCwgdzogY3kud2lkdGgoKSwgaDogY3kuaGVpZ2h0KCkgfTtcbiAgaWYoIGJiLngyID09PSB1bmRlZmluZWQgKXsgYmIueDIgPSBiYi54MSArIGJiLnc7IH1cbiAgaWYoIGJiLncgPT09IHVuZGVmaW5lZCApeyBiYi53ID0gYmIueDIgLSBiYi54MTsgfVxuICBpZiggYmIueTIgPT09IHVuZGVmaW5lZCApeyBiYi55MiA9IGJiLnkxICsgYmIuaDsgfVxuICBpZiggYmIuaCA9PT0gdW5kZWZpbmVkICl7IGJiLmggPSBiYi55MiAtIGJiLnkxOyB9XG5cbiAgbGV0IGcgPSBuZXcgZGFncmUuZ3JhcGhsaWIuR3JhcGgoe1xuICAgIG11bHRpZ3JhcGg6IHRydWUsXG4gICAgY29tcG91bmQ6IHRydWVcbiAgfSk7XG5cbiAgbGV0IGdPYmogPSB7fTtcbiAgbGV0IHNldEdPYmogPSBmdW5jdGlvbiggbmFtZSwgdmFsICl7XG4gICAgaWYoIHZhbCAhPSBudWxsICl7XG4gICAgICBnT2JqWyBuYW1lIF0gPSB2YWw7XG4gICAgfVxuICB9O1xuXG4gIHNldEdPYmooICdub2Rlc2VwJywgb3B0aW9ucy5ub2RlU2VwICk7XG4gIHNldEdPYmooICdlZGdlc2VwJywgb3B0aW9ucy5lZGdlU2VwICk7XG4gIHNldEdPYmooICdyYW5rc2VwJywgb3B0aW9ucy5yYW5rU2VwICk7XG4gIHNldEdPYmooICdyYW5rZGlyJywgb3B0aW9ucy5yYW5rRGlyICk7XG4gIHNldEdPYmooICdyYW5rZXInLCBvcHRpb25zLnJhbmtlciApO1xuXG4gIGcuc2V0R3JhcGgoIGdPYmogKTtcblxuICBnLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKSB7IHJldHVybiB7fTsgfSk7XG4gIGcuc2V0RGVmYXVsdE5vZGVMYWJlbChmdW5jdGlvbigpIHsgcmV0dXJuIHt9OyB9KTtcblxuICAvLyBhZGQgbm9kZXMgdG8gZGFncmVcbiAgbGV0IG5vZGVzID0gZWxlcy5ub2RlcygpO1xuICBmb3IoIGxldCBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrICl7XG4gICAgbGV0IG5vZGUgPSBub2Rlc1tpXTtcbiAgICBsZXQgbmJiID0gbm9kZS5sYXlvdXREaW1lbnNpb25zKCBvcHRpb25zICk7XG5cbiAgICBnLnNldE5vZGUoIG5vZGUuaWQoKSwge1xuICAgICAgd2lkdGg6IG5iYi53LFxuICAgICAgaGVpZ2h0OiBuYmIuaCxcbiAgICAgIG5hbWU6IG5vZGUuaWQoKVxuICAgIH0gKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKCBnLm5vZGUobm9kZS5pZCgpKSApO1xuICB9XG5cbiAgLy8gc2V0IGNvbXBvdW5kIHBhcmVudHNcbiAgZm9yKCBsZXQgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKyApe1xuICAgIGxldCBub2RlID0gbm9kZXNbaV07XG5cbiAgICBpZiggbm9kZS5pc0NoaWxkKCkgKXtcbiAgICAgIGcuc2V0UGFyZW50KCBub2RlLmlkKCksIG5vZGUucGFyZW50KCkuaWQoKSApO1xuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCBlZGdlcyB0byBkYWdyZVxuICBsZXQgZWRnZXMgPSBlbGVzLmVkZ2VzKCkuc3RkRmlsdGVyKGZ1bmN0aW9uKCBlZGdlICl7XG4gICAgcmV0dXJuICFlZGdlLnNvdXJjZSgpLmlzUGFyZW50KCkgJiYgIWVkZ2UudGFyZ2V0KCkuaXNQYXJlbnQoKTsgLy8gZGFncmUgY2FuJ3QgaGFuZGxlIGVkZ2VzIG9uIGNvbXBvdW5kIG5vZGVzXG4gIH0pO1xuICBmb3IoIGxldCBpID0gMDsgaSA8IGVkZ2VzLmxlbmd0aDsgaSsrICl7XG4gICAgbGV0IGVkZ2UgPSBlZGdlc1tpXTtcblxuICAgIGcuc2V0RWRnZSggZWRnZS5zb3VyY2UoKS5pZCgpLCBlZGdlLnRhcmdldCgpLmlkKCksIHtcbiAgICAgIG1pbmxlbjogZ2V0VmFsKCBlZGdlLCBvcHRpb25zLm1pbkxlbiApLFxuICAgICAgd2VpZ2h0OiBnZXRWYWwoIGVkZ2UsIG9wdGlvbnMuZWRnZVdlaWdodCApLFxuICAgICAgbmFtZTogZWRnZS5pZCgpXG4gICAgfSwgZWRnZS5pZCgpICk7XG5cbiAgICAvLyBjb25zb2xlLmxvZyggZy5lZGdlKGVkZ2Uuc291cmNlKCkuaWQoKSwgZWRnZS50YXJnZXQoKS5pZCgpLCBlZGdlLmlkKCkpICk7XG4gIH1cblxuICBkYWdyZS5sYXlvdXQoIGcgKTtcblxuICBsZXQgZ05vZGVJZHMgPSBnLm5vZGVzKCk7XG4gIGZvciggbGV0IGkgPSAwOyBpIDwgZ05vZGVJZHMubGVuZ3RoOyBpKysgKXtcbiAgICBsZXQgaWQgPSBnTm9kZUlkc1tpXTtcbiAgICBsZXQgbiA9IGcubm9kZSggaWQgKTtcblxuICAgIGN5LmdldEVsZW1lbnRCeUlkKGlkKS5zY3JhdGNoKCkuZGFncmUgPSBuO1xuICB9XG5cbiAgbGV0IGRhZ3JlQkI7XG5cbiAgaWYoIG9wdGlvbnMuYm91bmRpbmdCb3ggKXtcbiAgICBkYWdyZUJCID0geyB4MTogSW5maW5pdHksIHgyOiAtSW5maW5pdHksIHkxOiBJbmZpbml0eSwgeTI6IC1JbmZpbml0eSB9O1xuICAgIG5vZGVzLmZvckVhY2goZnVuY3Rpb24oIG5vZGUgKXtcbiAgICAgIGxldCBkTW9kZWwgPSBub2RlLnNjcmF0Y2goKS5kYWdyZTtcblxuICAgICAgZGFncmVCQi54MSA9IE1hdGgubWluKCBkYWdyZUJCLngxLCBkTW9kZWwueCApO1xuICAgICAgZGFncmVCQi54MiA9IE1hdGgubWF4KCBkYWdyZUJCLngyLCBkTW9kZWwueCApO1xuXG4gICAgICBkYWdyZUJCLnkxID0gTWF0aC5taW4oIGRhZ3JlQkIueTEsIGRNb2RlbC55ICk7XG4gICAgICBkYWdyZUJCLnkyID0gTWF0aC5tYXgoIGRhZ3JlQkIueTIsIGRNb2RlbC55ICk7XG4gICAgfSk7XG5cbiAgICBkYWdyZUJCLncgPSBkYWdyZUJCLngyIC0gZGFncmVCQi54MTtcbiAgICBkYWdyZUJCLmggPSBkYWdyZUJCLnkyIC0gZGFncmVCQi55MTtcbiAgfSBlbHNlIHtcbiAgICBkYWdyZUJCID0gYmI7XG4gIH1cblxuICBsZXQgY29uc3RyYWluUG9zID0gZnVuY3Rpb24oIHAgKXtcbiAgICBpZiggb3B0aW9ucy5ib3VuZGluZ0JveCApe1xuICAgICAgbGV0IHhQY3QgPSBkYWdyZUJCLncgPT09IDAgPyAwIDogKHAueCAtIGRhZ3JlQkIueDEpIC8gZGFncmVCQi53O1xuICAgICAgbGV0IHlQY3QgPSBkYWdyZUJCLmggPT09IDAgPyAwIDogKHAueSAtIGRhZ3JlQkIueTEpIC8gZGFncmVCQi5oO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB4OiBiYi54MSArIHhQY3QgKiBiYi53LFxuICAgICAgICB5OiBiYi55MSArIHlQY3QgKiBiYi5oXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gIH07XG5cbiAgbm9kZXMubGF5b3V0UG9zaXRpb25zKGxheW91dCwgb3B0aW9ucywgZnVuY3Rpb24oIGVsZSApe1xuICAgIGVsZSA9IHR5cGVvZiBlbGUgPT09IFwib2JqZWN0XCIgPyBlbGUgOiB0aGlzO1xuICAgIGxldCBkTW9kZWwgPSBlbGUuc2NyYXRjaCgpLmRhZ3JlO1xuXG4gICAgcmV0dXJuIGNvbnN0cmFpblBvcyh7XG4gICAgICB4OiBkTW9kZWwueCxcbiAgICAgIHk6IGRNb2RlbC55XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzOyAvLyBjaGFpbmluZ1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYWdyZUxheW91dDtcbiJdLCJzb3VyY2VSb290IjoiIn0= diff --git a/html/gui/lib/cytoscape/cytoscape.esm.js b/html/gui/lib/cytoscape/cytoscape.esm.js deleted file mode 100644 index 8a12c40eb3..0000000000 --- a/html/gui/lib/cytoscape/cytoscape.esm.js +++ /dev/null @@ -1,31608 +0,0 @@ -/** - * Copyright (c) 2016-2020, The Cytoscape Consortium. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the “Software”), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is furnished to do - * so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -import util from 'lodash.debounce'; -import Heap from 'heap'; - -function _typeof(obj) { - if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { - _typeof = function (obj) { - return typeof obj; - }; - } else { - _typeof = function (obj) { - return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; - }; - } - - return _typeof(obj); -} - -function _classCallCheck(instance, Constructor) { - if (!(instance instanceof Constructor)) { - throw new TypeError("Cannot call a class as a function"); - } -} - -function _defineProperties(target, props) { - for (var i = 0; i < props.length; i++) { - var descriptor = props[i]; - descriptor.enumerable = descriptor.enumerable || false; - descriptor.configurable = true; - if ("value" in descriptor) descriptor.writable = true; - Object.defineProperty(target, descriptor.key, descriptor); - } -} - -function _createClass(Constructor, protoProps, staticProps) { - if (protoProps) _defineProperties(Constructor.prototype, protoProps); - if (staticProps) _defineProperties(Constructor, staticProps); - return Constructor; -} - -function _defineProperty(obj, key, value) { - if (key in obj) { - Object.defineProperty(obj, key, { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } else { - obj[key] = value; - } - - return obj; -} - -function _slicedToArray(arr, i) { - return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); -} - -function _arrayWithHoles(arr) { - if (Array.isArray(arr)) return arr; -} - -function _iterableToArrayLimit(arr, i) { - var _arr = []; - var _n = true; - var _d = false; - var _e = undefined; - - try { - for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { - _arr.push(_s.value); - - if (i && _arr.length === i) break; - } - } catch (err) { - _d = true; - _e = err; - } finally { - try { - if (!_n && _i["return"] != null) _i["return"](); - } finally { - if (_d) throw _e; - } - } - - return _arr; -} - -function _nonIterableRest() { - throw new TypeError("Invalid attempt to destructure non-iterable instance"); -} - -var window$1 = typeof window === 'undefined' ? null : window; // eslint-disable-line no-undef - -var navigator = window$1 ? window$1.navigator : null; -var document$1 = window$1 ? window$1.document : null; - -var typeofstr = _typeof(''); - -var typeofobj = _typeof({}); - -var typeoffn = _typeof(function () {}); - -var typeofhtmlele = typeof HTMLElement === "undefined" ? "undefined" : _typeof(HTMLElement); - -var instanceStr = function instanceStr(obj) { - return obj && obj.instanceString && fn(obj.instanceString) ? obj.instanceString() : null; -}; - -var string = function string(obj) { - return obj != null && _typeof(obj) == typeofstr; -}; -var fn = function fn(obj) { - return obj != null && _typeof(obj) === typeoffn; -}; -var array = function array(obj) { - return !elementOrCollection(obj) && (Array.isArray ? Array.isArray(obj) : obj != null && obj instanceof Array); -}; -var plainObject = function plainObject(obj) { - return obj != null && _typeof(obj) === typeofobj && !array(obj) && obj.constructor === Object; -}; -var object = function object(obj) { - return obj != null && _typeof(obj) === typeofobj; -}; -var number = function number(obj) { - return obj != null && _typeof(obj) === _typeof(1) && !isNaN(obj); -}; -var integer = function integer(obj) { - return number(obj) && Math.floor(obj) === obj; -}; -var htmlElement = function htmlElement(obj) { - if ('undefined' === typeofhtmlele) { - return undefined; - } else { - return null != obj && obj instanceof HTMLElement; - } -}; -var elementOrCollection = function elementOrCollection(obj) { - return element(obj) || collection(obj); -}; -var element = function element(obj) { - return instanceStr(obj) === 'collection' && obj._private.single; -}; -var collection = function collection(obj) { - return instanceStr(obj) === 'collection' && !obj._private.single; -}; -var core = function core(obj) { - return instanceStr(obj) === 'core'; -}; -var stylesheet = function stylesheet(obj) { - return instanceStr(obj) === 'stylesheet'; -}; -var event = function event(obj) { - return instanceStr(obj) === 'event'; -}; -var emptyString = function emptyString(obj) { - if (obj === undefined || obj === null) { - // null is empty - return true; - } else if (obj === '' || obj.match(/^\s+$/)) { - return true; // empty string is empty - } - - return false; // otherwise, we don't know what we've got -}; -var domElement = function domElement(obj) { - if (typeof HTMLElement === 'undefined') { - return false; // we're not in a browser so it doesn't matter - } else { - return obj instanceof HTMLElement; - } -}; -var boundingBox = function boundingBox(obj) { - return plainObject(obj) && number(obj.x1) && number(obj.x2) && number(obj.y1) && number(obj.y2); -}; -var promise = function promise(obj) { - return object(obj) && fn(obj.then); -}; -var ms = function ms() { - return navigator && navigator.userAgent.match(/msie|trident|edge/i); -}; // probably a better way to detect this... - -var memoize = function memoize(fn, keyFn) { - if (!keyFn) { - keyFn = function keyFn() { - if (arguments.length === 1) { - return arguments[0]; - } else if (arguments.length === 0) { - return 'undefined'; - } - - var args = []; - - for (var i = 0; i < arguments.length; i++) { - args.push(arguments[i]); - } - - return args.join('$'); - }; - } - - var memoizedFn = function memoizedFn() { - var self = this; - var args = arguments; - var ret; - var k = keyFn.apply(self, args); - var cache = memoizedFn.cache; - - if (!(ret = cache[k])) { - ret = cache[k] = fn.apply(self, args); - } - - return ret; - }; - - memoizedFn.cache = {}; - return memoizedFn; -}; - -var camel2dash = memoize(function (str) { - return str.replace(/([A-Z])/g, function (v) { - return '-' + v.toLowerCase(); - }); -}); -var dash2camel = memoize(function (str) { - return str.replace(/(-\w)/g, function (v) { - return v[1].toUpperCase(); - }); -}); -var prependCamel = memoize(function (prefix, str) { - return prefix + str[0].toUpperCase() + str.substring(1); -}, function (prefix, str) { - return prefix + '$' + str; -}); -var capitalize = function capitalize(str) { - if (emptyString(str)) { - return str; - } - - return str.charAt(0).toUpperCase() + str.substring(1); -}; - -var number$1 = '(?:[-+]?(?:(?:\\d+|\\d*\\.\\d+)(?:[Ee][+-]?\\d+)?))'; -var rgba = 'rgb[a]?\\((' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)\\s*,\\s*(' + number$1 + '[%]?)(?:\\s*,\\s*(' + number$1 + '))?\\)'; -var rgbaNoBackRefs = 'rgb[a]?\\((?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)\\s*,\\s*(?:' + number$1 + '[%]?)(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; -var hsla = 'hsl[a]?\\((' + number$1 + ')\\s*,\\s*(' + number$1 + '[%])\\s*,\\s*(' + number$1 + '[%])(?:\\s*,\\s*(' + number$1 + '))?\\)'; -var hslaNoBackRefs = 'hsl[a]?\\((?:' + number$1 + ')\\s*,\\s*(?:' + number$1 + '[%])\\s*,\\s*(?:' + number$1 + '[%])(?:\\s*,\\s*(?:' + number$1 + '))?\\)'; -var hex3 = '\\#[0-9a-fA-F]{3}'; -var hex6 = '\\#[0-9a-fA-F]{6}'; - -var ascending = function ascending(a, b) { - if (a < b) { - return -1; - } else if (a > b) { - return 1; - } else { - return 0; - } -}; -var descending = function descending(a, b) { - return -1 * ascending(a, b); -}; - -var extend = Object.assign != null ? Object.assign.bind(Object) : function (tgt) { - var args = arguments; - - for (var i = 1; i < args.length; i++) { - var obj = args[i]; - - if (obj == null) { - continue; - } - - var keys = Object.keys(obj); - - for (var j = 0; j < keys.length; j++) { - var k = keys[j]; - tgt[k] = obj[k]; - } - } - - return tgt; -}; - -var hex2tuple = function hex2tuple(hex) { - if (!(hex.length === 4 || hex.length === 7) || hex[0] !== '#') { - return; - } - - var shortHex = hex.length === 4; - var r, g, b; - var base = 16; - - if (shortHex) { - r = parseInt(hex[1] + hex[1], base); - g = parseInt(hex[2] + hex[2], base); - b = parseInt(hex[3] + hex[3], base); - } else { - r = parseInt(hex[1] + hex[2], base); - g = parseInt(hex[3] + hex[4], base); - b = parseInt(hex[5] + hex[6], base); - } - - return [r, g, b]; -}; // get [r, g, b, a] from hsl(0, 0, 0) or hsla(0, 0, 0, 0) - -var hsl2tuple = function hsl2tuple(hsl) { - var ret; - var h, s, l, a, r, g, b; - - function hue2rgb(p, q, t) { - if (t < 0) t += 1; - if (t > 1) t -= 1; - if (t < 1 / 6) return p + (q - p) * 6 * t; - if (t < 1 / 2) return q; - if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; - return p; - } - - var m = new RegExp('^' + hsla + '$').exec(hsl); - - if (m) { - // get hue - h = parseInt(m[1]); - - if (h < 0) { - h = (360 - -1 * h % 360) % 360; - } else if (h > 360) { - h = h % 360; - } - - h /= 360; // normalise on [0, 1] - - s = parseFloat(m[2]); - - if (s < 0 || s > 100) { - return; - } // saturation is [0, 100] - - - s = s / 100; // normalise on [0, 1] - - l = parseFloat(m[3]); - - if (l < 0 || l > 100) { - return; - } // lightness is [0, 100] - - - l = l / 100; // normalise on [0, 1] - - a = m[4]; - - if (a !== undefined) { - a = parseFloat(a); - - if (a < 0 || a > 1) { - return; - } // alpha is [0, 1] - - } // now, convert to rgb - // code from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript - - - if (s === 0) { - r = g = b = Math.round(l * 255); // achromatic - } else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = Math.round(255 * hue2rgb(p, q, h + 1 / 3)); - g = Math.round(255 * hue2rgb(p, q, h)); - b = Math.round(255 * hue2rgb(p, q, h - 1 / 3)); - } - - ret = [r, g, b, a]; - } - - return ret; -}; // get [r, g, b, a] from rgb(0, 0, 0) or rgba(0, 0, 0, 0) - -var rgb2tuple = function rgb2tuple(rgb) { - var ret; - var m = new RegExp('^' + rgba + '$').exec(rgb); - - if (m) { - ret = []; - var isPct = []; - - for (var i = 1; i <= 3; i++) { - var channel = m[i]; - - if (channel[channel.length - 1] === '%') { - isPct[i] = true; - } - - channel = parseFloat(channel); - - if (isPct[i]) { - channel = channel / 100 * 255; // normalise to [0, 255] - } - - if (channel < 0 || channel > 255) { - return; - } // invalid channel value - - - ret.push(Math.floor(channel)); - } - - var atLeastOneIsPct = isPct[1] || isPct[2] || isPct[3]; - var allArePct = isPct[1] && isPct[2] && isPct[3]; - - if (atLeastOneIsPct && !allArePct) { - return; - } // must all be percent values if one is - - - var alpha = m[4]; - - if (alpha !== undefined) { - alpha = parseFloat(alpha); - - if (alpha < 0 || alpha > 1) { - return; - } // invalid alpha value - - - ret.push(alpha); - } - } - - return ret; -}; -var colorname2tuple = function colorname2tuple(color) { - return colors[color.toLowerCase()]; -}; -var color2tuple = function color2tuple(color) { - return (array(color) ? color : null) || colorname2tuple(color) || hex2tuple(color) || rgb2tuple(color) || hsl2tuple(color); -}; -var colors = { - // special colour names - transparent: [0, 0, 0, 0], - // NB alpha === 0 - // regular colours - aliceblue: [240, 248, 255], - antiquewhite: [250, 235, 215], - aqua: [0, 255, 255], - aquamarine: [127, 255, 212], - azure: [240, 255, 255], - beige: [245, 245, 220], - bisque: [255, 228, 196], - black: [0, 0, 0], - blanchedalmond: [255, 235, 205], - blue: [0, 0, 255], - blueviolet: [138, 43, 226], - brown: [165, 42, 42], - burlywood: [222, 184, 135], - cadetblue: [95, 158, 160], - chartreuse: [127, 255, 0], - chocolate: [210, 105, 30], - coral: [255, 127, 80], - cornflowerblue: [100, 149, 237], - cornsilk: [255, 248, 220], - crimson: [220, 20, 60], - cyan: [0, 255, 255], - darkblue: [0, 0, 139], - darkcyan: [0, 139, 139], - darkgoldenrod: [184, 134, 11], - darkgray: [169, 169, 169], - darkgreen: [0, 100, 0], - darkgrey: [169, 169, 169], - darkkhaki: [189, 183, 107], - darkmagenta: [139, 0, 139], - darkolivegreen: [85, 107, 47], - darkorange: [255, 140, 0], - darkorchid: [153, 50, 204], - darkred: [139, 0, 0], - darksalmon: [233, 150, 122], - darkseagreen: [143, 188, 143], - darkslateblue: [72, 61, 139], - darkslategray: [47, 79, 79], - darkslategrey: [47, 79, 79], - darkturquoise: [0, 206, 209], - darkviolet: [148, 0, 211], - deeppink: [255, 20, 147], - deepskyblue: [0, 191, 255], - dimgray: [105, 105, 105], - dimgrey: [105, 105, 105], - dodgerblue: [30, 144, 255], - firebrick: [178, 34, 34], - floralwhite: [255, 250, 240], - forestgreen: [34, 139, 34], - fuchsia: [255, 0, 255], - gainsboro: [220, 220, 220], - ghostwhite: [248, 248, 255], - gold: [255, 215, 0], - goldenrod: [218, 165, 32], - gray: [128, 128, 128], - grey: [128, 128, 128], - green: [0, 128, 0], - greenyellow: [173, 255, 47], - honeydew: [240, 255, 240], - hotpink: [255, 105, 180], - indianred: [205, 92, 92], - indigo: [75, 0, 130], - ivory: [255, 255, 240], - khaki: [240, 230, 140], - lavender: [230, 230, 250], - lavenderblush: [255, 240, 245], - lawngreen: [124, 252, 0], - lemonchiffon: [255, 250, 205], - lightblue: [173, 216, 230], - lightcoral: [240, 128, 128], - lightcyan: [224, 255, 255], - lightgoldenrodyellow: [250, 250, 210], - lightgray: [211, 211, 211], - lightgreen: [144, 238, 144], - lightgrey: [211, 211, 211], - lightpink: [255, 182, 193], - lightsalmon: [255, 160, 122], - lightseagreen: [32, 178, 170], - lightskyblue: [135, 206, 250], - lightslategray: [119, 136, 153], - lightslategrey: [119, 136, 153], - lightsteelblue: [176, 196, 222], - lightyellow: [255, 255, 224], - lime: [0, 255, 0], - limegreen: [50, 205, 50], - linen: [250, 240, 230], - magenta: [255, 0, 255], - maroon: [128, 0, 0], - mediumaquamarine: [102, 205, 170], - mediumblue: [0, 0, 205], - mediumorchid: [186, 85, 211], - mediumpurple: [147, 112, 219], - mediumseagreen: [60, 179, 113], - mediumslateblue: [123, 104, 238], - mediumspringgreen: [0, 250, 154], - mediumturquoise: [72, 209, 204], - mediumvioletred: [199, 21, 133], - midnightblue: [25, 25, 112], - mintcream: [245, 255, 250], - mistyrose: [255, 228, 225], - moccasin: [255, 228, 181], - navajowhite: [255, 222, 173], - navy: [0, 0, 128], - oldlace: [253, 245, 230], - olive: [128, 128, 0], - olivedrab: [107, 142, 35], - orange: [255, 165, 0], - orangered: [255, 69, 0], - orchid: [218, 112, 214], - palegoldenrod: [238, 232, 170], - palegreen: [152, 251, 152], - paleturquoise: [175, 238, 238], - palevioletred: [219, 112, 147], - papayawhip: [255, 239, 213], - peachpuff: [255, 218, 185], - peru: [205, 133, 63], - pink: [255, 192, 203], - plum: [221, 160, 221], - powderblue: [176, 224, 230], - purple: [128, 0, 128], - red: [255, 0, 0], - rosybrown: [188, 143, 143], - royalblue: [65, 105, 225], - saddlebrown: [139, 69, 19], - salmon: [250, 128, 114], - sandybrown: [244, 164, 96], - seagreen: [46, 139, 87], - seashell: [255, 245, 238], - sienna: [160, 82, 45], - silver: [192, 192, 192], - skyblue: [135, 206, 235], - slateblue: [106, 90, 205], - slategray: [112, 128, 144], - slategrey: [112, 128, 144], - snow: [255, 250, 250], - springgreen: [0, 255, 127], - steelblue: [70, 130, 180], - tan: [210, 180, 140], - teal: [0, 128, 128], - thistle: [216, 191, 216], - tomato: [255, 99, 71], - turquoise: [64, 224, 208], - violet: [238, 130, 238], - wheat: [245, 222, 179], - white: [255, 255, 255], - whitesmoke: [245, 245, 245], - yellow: [255, 255, 0], - yellowgreen: [154, 205, 50] -}; - -var setMap = function setMap(options) { - var obj = options.map; - var keys = options.keys; - var l = keys.length; - - for (var i = 0; i < l; i++) { - var key = keys[i]; - - if (plainObject(key)) { - throw Error('Tried to set map with object key'); - } - - if (i < keys.length - 1) { - // extend the map if necessary - if (obj[key] == null) { - obj[key] = {}; - } - - obj = obj[key]; - } else { - // set the value - obj[key] = options.value; - } - } -}; // gets the value in a map even if it's not built in places - -var getMap = function getMap(options) { - var obj = options.map; - var keys = options.keys; - var l = keys.length; - - for (var i = 0; i < l; i++) { - var key = keys[i]; - - if (plainObject(key)) { - throw Error('Tried to get map with object key'); - } - - obj = obj[key]; - - if (obj == null) { - return obj; - } - } - - return obj; -}; // deletes the entry in the map - -var performance = window$1 ? window$1.performance : null; -var pnow = performance && performance.now ? function () { - return performance.now(); -} : function () { - return Date.now(); -}; - -var raf = function () { - if (window$1) { - if (window$1.requestAnimationFrame) { - return function (fn) { - window$1.requestAnimationFrame(fn); - }; - } else if (window$1.mozRequestAnimationFrame) { - return function (fn) { - window$1.mozRequestAnimationFrame(fn); - }; - } else if (window$1.webkitRequestAnimationFrame) { - return function (fn) { - window$1.webkitRequestAnimationFrame(fn); - }; - } else if (window$1.msRequestAnimationFrame) { - return function (fn) { - window$1.msRequestAnimationFrame(fn); - }; - } - } - - return function (fn) { - if (fn) { - setTimeout(function () { - fn(pnow()); - }, 1000 / 60); - } - }; -}(); - -var requestAnimationFrame = function requestAnimationFrame(fn) { - return raf(fn); -}; -var performanceNow = pnow; - -var DEFAULT_HASH_SEED = 9261; -var K = 65599; // 37 also works pretty well - -var DEFAULT_HASH_SEED_ALT = 5381; -var hashIterableInts = function hashIterableInts(iterator) { - var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; - // sdbm/string-hash - var hash = seed; - var entry; - - for (;;) { - entry = iterator.next(); - - if (entry.done) { - break; - } - - hash = hash * K + entry.value | 0; - } - - return hash; -}; -var hashInt = function hashInt(num) { - var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED; - // sdbm/string-hash - return seed * K + num | 0; -}; -var hashIntAlt = function hashIntAlt(num) { - var seed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_HASH_SEED_ALT; - // djb2/string-hash - return (seed << 5) + seed + num | 0; -}; -var combineHashes = function combineHashes(hash1, hash2) { - return hash1 * 0x200000 + hash2; -}; -var combineHashesArray = function combineHashesArray(hashes) { - return hashes[0] * 0x200000 + hashes[1]; -}; -var hashArrays = function hashArrays(hashes1, hashes2) { - return [hashInt(hashes1[0], hashes2[0]), hashIntAlt(hashes1[1], hashes2[1])]; -}; -var hashIntsArray = function hashIntsArray(ints, seed) { - var entry = { - value: 0, - done: false - }; - var i = 0; - var length = ints.length; - var iterator = { - next: function next() { - if (i < length) { - entry.value = ints[i++]; - } else { - entry.done = true; - } - - return entry; - } - }; - return hashIterableInts(iterator, seed); -}; -var hashString = function hashString(str, seed) { - var entry = { - value: 0, - done: false - }; - var i = 0; - var length = str.length; - var iterator = { - next: function next() { - if (i < length) { - entry.value = str.charCodeAt(i++); - } else { - entry.done = true; - } - - return entry; - } - }; - return hashIterableInts(iterator, seed); -}; -var hashStrings = function hashStrings() { - return hashStringsArray(arguments); -}; -var hashStringsArray = function hashStringsArray(strs) { - var hash; - - for (var i = 0; i < strs.length; i++) { - var str = strs[i]; - - if (i === 0) { - hash = hashString(str); - } else { - hash = hashString(str, hash); - } - } - - return hash; -}; - -/*global console */ -var warningsEnabled = true; -var warnSupported = console.warn != null; // eslint-disable-line no-console - -var traceSupported = console.trace != null; // eslint-disable-line no-console - -var MAX_INT = Number.MAX_SAFE_INTEGER || 9007199254740991; -var trueify = function trueify() { - return true; -}; -var falsify = function falsify() { - return false; -}; -var zeroify = function zeroify() { - return 0; -}; -var noop = function noop() {}; -var error = function error(msg) { - throw new Error(msg); -}; -var warnings = function warnings(enabled) { - if (enabled !== undefined) { - warningsEnabled = !!enabled; - } else { - return warningsEnabled; - } -}; -var warn = function warn(msg) { - /* eslint-disable no-console */ - if (!warnings()) { - return; - } - - if (warnSupported) { - console.warn(msg); - } else { - console.log(msg); - - if (traceSupported) { - console.trace(); - } - } -}; -/* eslint-enable */ - -var clone = function clone(obj) { - return extend({}, obj); -}; // gets a shallow copy of the argument - -var copy = function copy(obj) { - if (obj == null) { - return obj; - } - - if (array(obj)) { - return obj.slice(); - } else if (plainObject(obj)) { - return clone(obj); - } else { - return obj; - } -}; -var copyArray = function copyArray(arr) { - return arr.slice(); -}; -var uuid = function uuid(a, b -/* placeholders */ -) { - for ( // loop :) - b = a = ''; // b - result , a - numeric letiable - a++ < 36; // - b += a * 51 & 52 // if "a" is not 9 or 14 or 19 or 24 - ? // return a random number or 4 - (a ^ 15 // if "a" is not 15 - ? // genetate a random number from 0 to 15 - 8 ^ Math.random() * (a ^ 20 ? 16 : 4) // unless "a" is 20, in which case a random number from 8 to 11 - : 4 // otherwise 4 - ).toString(16) : '-' // in other cases (if "a" is 9,14,19,24) insert "-" - ) { - } - - return b; -}; -var _staticEmptyObject = {}; -var staticEmptyObject = function staticEmptyObject() { - return _staticEmptyObject; -}; -var defaults = function defaults(_defaults) { - var keys = Object.keys(_defaults); - return function (opts) { - var filledOpts = {}; - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - var optVal = opts == null ? undefined : opts[key]; - filledOpts[key] = optVal === undefined ? _defaults[key] : optVal; - } - - return filledOpts; - }; -}; -var removeFromArray = function removeFromArray(arr, ele, manyCopies) { - for (var i = arr.length; i >= 0; i--) { - if (arr[i] === ele) { - arr.splice(i, 1); - - if (!manyCopies) { - break; - } - } - } -}; -var clearArray = function clearArray(arr) { - arr.splice(0, arr.length); -}; -var push = function push(arr, otherArr) { - for (var i = 0; i < otherArr.length; i++) { - var el = otherArr[i]; - arr.push(el); - } -}; -var getPrefixedProperty = function getPrefixedProperty(obj, propName, prefix) { - if (prefix) { - propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth - } - - return obj[propName]; -}; -var setPrefixedProperty = function setPrefixedProperty(obj, propName, prefix, value) { - if (prefix) { - propName = prependCamel(prefix, propName); // e.g. (labelWidth, source) => sourceLabelWidth - } - - obj[propName] = value; -}; - -/* global Map */ -var ObjectMap = -/*#__PURE__*/ -function () { - function ObjectMap() { - _classCallCheck(this, ObjectMap); - - this._obj = {}; - } - - _createClass(ObjectMap, [{ - key: "set", - value: function set(key, val) { - this._obj[key] = val; - return this; - } - }, { - key: "delete", - value: function _delete(key) { - this._obj[key] = undefined; - return this; - } - }, { - key: "clear", - value: function clear() { - this._obj = {}; - } - }, { - key: "has", - value: function has(key) { - return this._obj[key] !== undefined; - } - }, { - key: "get", - value: function get(key) { - return this._obj[key]; - } - }]); - - return ObjectMap; -}(); - -var Map$1 = typeof Map !== 'undefined' ? Map : ObjectMap; - -/* global Set */ -var undef = "undefined" ; - -var ObjectSet = -/*#__PURE__*/ -function () { - function ObjectSet(arrayOrObjectSet) { - _classCallCheck(this, ObjectSet); - - this._obj = Object.create(null); - this.size = 0; - - if (arrayOrObjectSet != null) { - var arr; - - if (arrayOrObjectSet.instanceString != null && arrayOrObjectSet.instanceString() === this.instanceString()) { - arr = arrayOrObjectSet.toArray(); - } else { - arr = arrayOrObjectSet; - } - - for (var i = 0; i < arr.length; i++) { - this.add(arr[i]); - } - } - } - - _createClass(ObjectSet, [{ - key: "instanceString", - value: function instanceString() { - return 'set'; - } - }, { - key: "add", - value: function add(val) { - var o = this._obj; - - if (o[val] !== 1) { - o[val] = 1; - this.size++; - } - } - }, { - key: "delete", - value: function _delete(val) { - var o = this._obj; - - if (o[val] === 1) { - o[val] = 0; - this.size--; - } - } - }, { - key: "clear", - value: function clear() { - this._obj = Object.create(null); - } - }, { - key: "has", - value: function has(val) { - return this._obj[val] === 1; - } - }, { - key: "toArray", - value: function toArray() { - var _this = this; - - return Object.keys(this._obj).filter(function (key) { - return _this.has(key); - }); - } - }, { - key: "forEach", - value: function forEach(callback, thisArg) { - return this.toArray().forEach(callback, thisArg); - } - }]); - - return ObjectSet; -}(); - -var Set$1 = (typeof Set === "undefined" ? "undefined" : _typeof(Set)) !== undef ? Set : ObjectSet; - -var Element = function Element(cy, params) { - var restore = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - - if (cy === undefined || params === undefined || !core(cy)) { - error('An element must have a core reference and parameters set'); - return; - } - - var group = params.group; // try to automatically infer the group if unspecified - - if (group == null) { - if (params.data && params.data.source != null && params.data.target != null) { - group = 'edges'; - } else { - group = 'nodes'; - } - } // validate group - - - if (group !== 'nodes' && group !== 'edges') { - error('An element must be of type `nodes` or `edges`; you specified `' + group + '`'); - return; - } // make the element array-like, just like a collection - - - this.length = 1; - this[0] = this; // NOTE: when something is added here, add also to ele.json() - - var _p = this._private = { - cy: cy, - single: true, - // indicates this is an element - data: params.data || {}, - // data object - position: params.position || { - x: 0, - y: 0 - }, - // (x, y) position pair - autoWidth: undefined, - // width and height of nodes calculated by the renderer when set to special 'auto' value - autoHeight: undefined, - autoPadding: undefined, - compoundBoundsClean: false, - // whether the compound dimensions need to be recalculated the next time dimensions are read - listeners: [], - // array of bound listeners - group: group, - // string; 'nodes' or 'edges' - style: {}, - // properties as set by the style - rstyle: {}, - // properties for style sent from the renderer to the core - styleCxts: [], - // applied style contexts from the styler - styleKeys: {}, - // per-group keys of style property values - removed: true, - // whether it's inside the vis; true if removed (set true here since we call restore) - selected: params.selected ? true : false, - // whether it's selected - selectable: params.selectable === undefined ? true : params.selectable ? true : false, - // whether it's selectable - locked: params.locked ? true : false, - // whether the element is locked (cannot be moved) - grabbed: false, - // whether the element is grabbed by the mouse; renderer sets this privately - grabbable: params.grabbable === undefined ? true : params.grabbable ? true : false, - // whether the element can be grabbed - pannable: params.pannable === undefined ? group === 'edges' ? true : false : params.pannable ? true : false, - // whether the element has passthrough panning enabled - active: false, - // whether the element is active from user interaction - classes: new Set$1(), - // map ( className => true ) - animation: { - // object for currently-running animations - current: [], - queue: [] - }, - rscratch: {}, - // object in which the renderer can store information - scratch: params.scratch || {}, - // scratch objects - edges: [], - // array of connected edges - children: [], - // array of children - parent: null, - // parent ref - traversalCache: {}, - // cache of output of traversal functions - backgrounding: false, - // whether background images are loading - bbCache: null, - // cache of the current bounding box - bbCacheShift: { - x: 0, - y: 0 - }, - // shift applied to cached bb to be applied on next get - bodyBounds: null, - // bounds cache of element body, w/o overlay - overlayBounds: null, - // bounds cache of element body, including overlay - labelBounds: { - // bounds cache of labels - all: null, - source: null, - target: null, - main: null - }, - arrowBounds: { - // bounds cache of edge arrows - source: null, - target: null, - 'mid-source': null, - 'mid-target': null - } - }; - - if (_p.position.x == null) { - _p.position.x = 0; - } - - if (_p.position.y == null) { - _p.position.y = 0; - } // renderedPosition overrides if specified - - - if (params.renderedPosition) { - var rpos = params.renderedPosition; - var pan = cy.pan(); - var zoom = cy.zoom(); - _p.position = { - x: (rpos.x - pan.x) / zoom, - y: (rpos.y - pan.y) / zoom - }; - } - - var classes = []; - - if (array(params.classes)) { - classes = params.classes; - } else if (string(params.classes)) { - classes = params.classes.split(/\s+/); - } - - for (var i = 0, l = classes.length; i < l; i++) { - var cls = classes[i]; - - if (!cls || cls === '') { - continue; - } - - _p.classes.add(cls); - } - - this.createEmitter(); - var bypass = params.style || params.css; - - if (bypass) { - warn('Setting a `style` bypass at element creation is deprecated'); - this.style(bypass); - } - - if (restore === undefined || restore) { - this.restore(); - } -}; - -var defineSearch = function defineSearch(params) { - params = { - bfs: params.bfs || !params.dfs, - dfs: params.dfs || !params.bfs - }; // from pseudocode on wikipedia - - return function searchFn(roots, fn$1, directed) { - var options; - - if (plainObject(roots) && !elementOrCollection(roots)) { - options = roots; - roots = options.roots || options.root; - fn$1 = options.visit; - directed = options.directed; - } - - directed = arguments.length === 2 && !fn(fn$1) ? fn$1 : directed; - fn$1 = fn(fn$1) ? fn$1 : function () {}; - var cy = this._private.cy; - var v = roots = string(roots) ? this.filter(roots) : roots; - var Q = []; - var connectedNodes = []; - var connectedBy = {}; - var id2depth = {}; - var V = {}; - var j = 0; - var found; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; // enqueue v - - - for (var i = 0; i < v.length; i++) { - var vi = v[i]; - var viId = vi.id(); - - if (vi.isNode()) { - Q.unshift(vi); - - if (params.bfs) { - V[viId] = true; - connectedNodes.push(vi); - } - - id2depth[viId] = 0; - } - } - - var _loop2 = function _loop2() { - var v = params.bfs ? Q.shift() : Q.pop(); - var vId = v.id(); - - if (params.dfs) { - if (V[vId]) { - return "continue"; - } - - V[vId] = true; - connectedNodes.push(v); - } - - var depth = id2depth[vId]; - var prevEdge = connectedBy[vId]; - var src = prevEdge != null ? prevEdge.source() : null; - var tgt = prevEdge != null ? prevEdge.target() : null; - var prevNode = prevEdge == null ? undefined : v.same(src) ? tgt[0] : src[0]; - var ret = void 0; - ret = fn$1(v, prevEdge, prevNode, j++, depth); - - if (ret === true) { - found = v; - return "break"; - } - - if (ret === false) { - return "break"; - } - - var vwEdges = v.connectedEdges().filter(function (e) { - return (!directed || e.source().same(v)) && edges.has(e); - }); - - for (var _i2 = 0; _i2 < vwEdges.length; _i2++) { - var e = vwEdges[_i2]; - var w = e.connectedNodes().filter(function (n) { - return !n.same(v) && nodes.has(n); - }); - var wId = w.id(); - - if (w.length !== 0 && !V[wId]) { - w = w[0]; - Q.push(w); - - if (params.bfs) { - V[wId] = true; - connectedNodes.push(w); - } - - connectedBy[wId] = e; - id2depth[wId] = id2depth[vId] + 1; - } - } - }; - - _loop: while (Q.length !== 0) { - var _ret = _loop2(); - - switch (_ret) { - case "continue": - continue; - - case "break": - break _loop; - } - } - - var connectedEles = cy.collection(); - - for (var _i = 0; _i < connectedNodes.length; _i++) { - var node = connectedNodes[_i]; - var edge = connectedBy[node.id()]; - - if (edge != null) { - connectedEles.push(edge); - } - - connectedEles.push(node); - } - - return { - path: cy.collection(connectedEles), - found: cy.collection(found) - }; - }; -}; // search, spanning trees, etc - - -var elesfn = { - breadthFirstSearch: defineSearch({ - bfs: true - }), - depthFirstSearch: defineSearch({ - dfs: true - }) -}; // nice, short mathemathical alias - -elesfn.bfs = elesfn.breadthFirstSearch; -elesfn.dfs = elesfn.depthFirstSearch; - -var dijkstraDefaults = defaults({ - root: null, - weight: function weight(edge) { - return 1; - }, - directed: false -}); -var elesfn$1 = { - dijkstra: function dijkstra(options) { - if (!plainObject(options)) { - var args = arguments; - options = { - root: args[0], - weight: args[1], - directed: args[2] - }; - } - - var _dijkstraDefaults = dijkstraDefaults(options), - root = _dijkstraDefaults.root, - weight = _dijkstraDefaults.weight, - directed = _dijkstraDefaults.directed; - - var eles = this; - var weightFn = weight; - var source = string(root) ? this.filter(root)[0] : root[0]; - var dist = {}; - var prev = {}; - var knownDist = {}; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - edges.unmergeBy(function (ele) { - return ele.isLoop(); - }); - - var getDist = function getDist(node) { - return dist[node.id()]; - }; - - var setDist = function setDist(node, d) { - dist[node.id()] = d; - Q.updateItem(node); - }; - - var Q = new Heap(function (a, b) { - return getDist(a) - getDist(b); - }); - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - dist[node.id()] = node.same(source) ? 0 : Infinity; - Q.push(node); - } - - var distBetween = function distBetween(u, v) { - var uvs = (directed ? u.edgesTo(v) : u.edgesWith(v)).intersect(edges); - var smallestDistance = Infinity; - var smallestEdge; - - for (var _i = 0; _i < uvs.length; _i++) { - var edge = uvs[_i]; - - var _weight = weightFn(edge); - - if (_weight < smallestDistance || !smallestEdge) { - smallestDistance = _weight; - smallestEdge = edge; - } - } - - return { - edge: smallestEdge, - dist: smallestDistance - }; - }; - - while (Q.size() > 0) { - var u = Q.pop(); - var smalletsDist = getDist(u); - var uid = u.id(); - knownDist[uid] = smalletsDist; - - if (smalletsDist === Infinity) { - continue; - } - - var neighbors = u.neighborhood().intersect(nodes); - - for (var _i2 = 0; _i2 < neighbors.length; _i2++) { - var v = neighbors[_i2]; - var vid = v.id(); - var vDist = distBetween(u, v); - var alt = smalletsDist + vDist.dist; - - if (alt < getDist(v)) { - setDist(v, alt); - prev[vid] = { - node: u, - edge: vDist.edge - }; - } - } // for - - } // while - - - return { - distanceTo: function distanceTo(node) { - var target = string(node) ? nodes.filter(node)[0] : node[0]; - return knownDist[target.id()]; - }, - pathTo: function pathTo(node) { - var target = string(node) ? nodes.filter(node)[0] : node[0]; - var S = []; - var u = target; - var uid = u.id(); - - if (target.length > 0) { - S.unshift(target); - - while (prev[uid]) { - var p = prev[uid]; - S.unshift(p.edge); - S.unshift(p.node); - u = p.node; - uid = u.id(); - } - } - - return eles.spawn(S); - } - }; - } -}; - -var elesfn$2 = { - // kruskal's algorithm (finds min spanning tree, assuming undirected graph) - // implemented from pseudocode from wikipedia - kruskal: function kruskal(weightFn) { - weightFn = weightFn || function (edge) { - return 1; - }; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - var numNodes = nodes.length; - var forest = new Array(numNodes); - var A = nodes; // assumes byGroup() creates new collections that can be safely mutated - - var findSetIndex = function findSetIndex(ele) { - for (var i = 0; i < forest.length; i++) { - var eles = forest[i]; - - if (eles.has(ele)) { - return i; - } - } - }; // start with one forest per node - - - for (var i = 0; i < numNodes; i++) { - forest[i] = this.spawn(nodes[i]); - } - - var S = edges.sort(function (a, b) { - return weightFn(a) - weightFn(b); - }); - - for (var _i = 0; _i < S.length; _i++) { - var edge = S[_i]; - var u = edge.source()[0]; - var v = edge.target()[0]; - var setUIndex = findSetIndex(u); - var setVIndex = findSetIndex(v); - var setU = forest[setUIndex]; - var setV = forest[setVIndex]; - - if (setUIndex !== setVIndex) { - A.merge(edge); // combine forests for u and v - - setU.merge(setV); - forest.splice(setVIndex, 1); - } - } - - return A; - } -}; - -var aStarDefaults = defaults({ - root: null, - goal: null, - weight: function weight(edge) { - return 1; - }, - heuristic: function heuristic(edge) { - return 0; - }, - directed: false -}); -var elesfn$3 = { - // Implemented from pseudocode from wikipedia - aStar: function aStar(options) { - var cy = this.cy(); - - var _aStarDefaults = aStarDefaults(options), - root = _aStarDefaults.root, - goal = _aStarDefaults.goal, - heuristic = _aStarDefaults.heuristic, - directed = _aStarDefaults.directed, - weight = _aStarDefaults.weight; - - root = cy.collection(root)[0]; - goal = cy.collection(goal)[0]; - var sid = root.id(); - var tid = goal.id(); - var gScore = {}; - var fScore = {}; - var closedSetIds = {}; - var openSet = new Heap(function (a, b) { - return fScore[a.id()] - fScore[b.id()]; - }); - var openSetIds = new Set$1(); - var cameFrom = {}; - var cameFromEdge = {}; - - var addToOpenSet = function addToOpenSet(ele, id) { - openSet.push(ele); - openSetIds.add(id); - }; - - var cMin, cMinId; - - var popFromOpenSet = function popFromOpenSet() { - cMin = openSet.pop(); - cMinId = cMin.id(); - openSetIds["delete"](cMinId); - }; - - var isInOpenSet = function isInOpenSet(id) { - return openSetIds.has(id); - }; - - addToOpenSet(root, sid); - gScore[sid] = 0; - fScore[sid] = heuristic(root); // Counter - - var steps = 0; // Main loop - - while (openSet.size() > 0) { - popFromOpenSet(); - steps++; // If we've found our goal, then we are done - - if (cMinId === tid) { - var path = []; - var pathNode = goal; - var pathNodeId = tid; - var pathEdge = cameFromEdge[pathNodeId]; - - for (;;) { - path.unshift(pathNode); - - if (pathEdge != null) { - path.unshift(pathEdge); - } - - pathNode = cameFrom[pathNodeId]; - - if (pathNode == null) { - break; - } - - pathNodeId = pathNode.id(); - pathEdge = cameFromEdge[pathNodeId]; - } - - return { - found: true, - distance: gScore[cMinId], - path: this.spawn(path), - steps: steps - }; - } // Add cMin to processed nodes - - - closedSetIds[cMinId] = true; // Update scores for neighbors of cMin - // Take into account if graph is directed or not - - var vwEdges = cMin._private.edges; - - for (var i = 0; i < vwEdges.length; i++) { - var e = vwEdges[i]; // edge must be in set of calling eles - - if (!this.hasElementWithId(e.id())) { - continue; - } // cMin must be the source of edge if directed - - - if (directed && e.data('source') !== cMinId) { - continue; - } - - var wSrc = e.source(); - var wTgt = e.target(); - var w = wSrc.id() !== cMinId ? wSrc : wTgt; - var wid = w.id(); // node must be in set of calling eles - - if (!this.hasElementWithId(wid)) { - continue; - } // if node is in closedSet, ignore it - - - if (closedSetIds[wid]) { - continue; - } // New tentative score for node w - - - var tempScore = gScore[cMinId] + weight(e); // Update gScore for node w if: - // w not present in openSet - // OR - // tentative gScore is less than previous value - // w not in openSet - - if (!isInOpenSet(wid)) { - gScore[wid] = tempScore; - fScore[wid] = tempScore + heuristic(w); - addToOpenSet(w, wid); - cameFrom[wid] = cMin; - cameFromEdge[wid] = e; - continue; - } // w already in openSet, but with greater gScore - - - if (tempScore < gScore[wid]) { - gScore[wid] = tempScore; - fScore[wid] = tempScore + heuristic(w); - cameFrom[wid] = cMin; - } - } // End of neighbors update - - } // End of main loop - // If we've reached here, then we've not reached our goal - - - return { - found: false, - distance: undefined, - path: undefined, - steps: steps - }; - } -}; // elesfn - -var floydWarshallDefaults = defaults({ - weight: function weight(edge) { - return 1; - }, - directed: false -}); -var elesfn$4 = { - // Implemented from pseudocode from wikipedia - floydWarshall: function floydWarshall(options) { - var cy = this.cy(); - - var _floydWarshallDefault = floydWarshallDefaults(options), - weight = _floydWarshallDefault.weight, - directed = _floydWarshallDefault.directed; - - var weightFn = weight; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - var N = nodes.length; - var Nsq = N * N; - - var indexOf = function indexOf(node) { - return nodes.indexOf(node); - }; - - var atIndex = function atIndex(i) { - return nodes[i]; - }; // Initialize distance matrix - - - var dist = new Array(Nsq); - - for (var n = 0; n < Nsq; n++) { - var j = n % N; - var i = (n - j) / N; - - if (i === j) { - dist[n] = 0; - } else { - dist[n] = Infinity; - } - } // Initialize matrix used for path reconstruction - // Initialize distance matrix - - - var next = new Array(Nsq); - var edgeNext = new Array(Nsq); // Process edges - - for (var _i = 0; _i < edges.length; _i++) { - var edge = edges[_i]; - var src = edge.source()[0]; - var tgt = edge.target()[0]; - - if (src === tgt) { - continue; - } // exclude loops - - - var s = indexOf(src); - var t = indexOf(tgt); - var st = s * N + t; // source to target index - - var _weight = weightFn(edge); // Check if already process another edge between same 2 nodes - - - if (dist[st] > _weight) { - dist[st] = _weight; - next[st] = t; - edgeNext[st] = edge; - } // If undirected graph, process 'reversed' edge - - - if (!directed) { - var ts = t * N + s; // target to source index - - if (!directed && dist[ts] > _weight) { - dist[ts] = _weight; - next[ts] = s; - edgeNext[ts] = edge; - } - } - } // Main loop - - - for (var k = 0; k < N; k++) { - for (var _i2 = 0; _i2 < N; _i2++) { - var ik = _i2 * N + k; - - for (var _j = 0; _j < N; _j++) { - var ij = _i2 * N + _j; - var kj = k * N + _j; - - if (dist[ik] + dist[kj] < dist[ij]) { - dist[ij] = dist[ik] + dist[kj]; - next[ij] = next[ik]; - } - } - } - } - - var getArgEle = function getArgEle(ele) { - return (string(ele) ? cy.filter(ele) : ele)[0]; - }; - - var indexOfArgEle = function indexOfArgEle(ele) { - return indexOf(getArgEle(ele)); - }; - - var res = { - distance: function distance(from, to) { - var i = indexOfArgEle(from); - var j = indexOfArgEle(to); - return dist[i * N + j]; - }, - path: function path(from, to) { - var i = indexOfArgEle(from); - var j = indexOfArgEle(to); - var fromNode = atIndex(i); - - if (i === j) { - return fromNode.collection(); - } - - if (next[i * N + j] == null) { - return cy.collection(); - } - - var path = cy.collection(); - var prev = i; - var edge; - path.merge(fromNode); - - while (i !== j) { - prev = i; - i = next[i * N + j]; - edge = edgeNext[prev * N + i]; - path.merge(edge); - path.merge(atIndex(i)); - } - - return path; - } - }; - return res; - } // floydWarshall - -}; // elesfn - -var bellmanFordDefaults = defaults({ - weight: function weight(edge) { - return 1; - }, - directed: false, - root: null -}); -var elesfn$5 = { - // Implemented from pseudocode from wikipedia - bellmanFord: function bellmanFord(options) { - var _this = this; - - var _bellmanFordDefaults = bellmanFordDefaults(options), - weight = _bellmanFordDefaults.weight, - directed = _bellmanFordDefaults.directed, - root = _bellmanFordDefaults.root; - - var weightFn = weight; - var eles = this; - var cy = this.cy(); - - var _this$byGroup = this.byGroup(), - edges = _this$byGroup.edges, - nodes = _this$byGroup.nodes; - - var numNodes = nodes.length; - var infoMap = new Map$1(); - var hasNegativeWeightCycle = false; - var negativeWeightCycles = []; - root = cy.collection(root)[0]; // in case selector passed - - edges.unmergeBy(function (edge) { - return edge.isLoop(); - }); - var numEdges = edges.length; - - var getInfo = function getInfo(node) { - var obj = infoMap.get(node.id()); - - if (!obj) { - obj = {}; - infoMap.set(node.id(), obj); - } - - return obj; - }; - - var getNodeFromTo = function getNodeFromTo(to) { - return (string(to) ? cy.$(to) : to)[0]; - }; - - var distanceTo = function distanceTo(to) { - return getInfo(getNodeFromTo(to)).dist; - }; - - var pathTo = function pathTo(to) { - var thisStart = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : root; - var end = getNodeFromTo(to); - var path = []; - var node = end; - - for (;;) { - if (node == null) { - return _this.spawn(); - } - - var _getInfo = getInfo(node), - edge = _getInfo.edge, - pred = _getInfo.pred; - - path.unshift(node[0]); - - if (node.same(thisStart) && path.length > 0) { - break; - } - - if (edge != null) { - path.unshift(edge); - } - - node = pred; - } - - return eles.spawn(path); - }; // Initializations { dist, pred, edge } - - - for (var i = 0; i < numNodes; i++) { - var node = nodes[i]; - var info = getInfo(node); - - if (node.same(root)) { - info.dist = 0; - } else { - info.dist = Infinity; - } - - info.pred = null; - info.edge = null; - } // Edges relaxation - - - var replacedEdge = false; - - var checkForEdgeReplacement = function checkForEdgeReplacement(node1, node2, edge, info1, info2, weight) { - var dist = info1.dist + weight; - - if (dist < info2.dist && !edge.same(info1.edge)) { - info2.dist = dist; - info2.pred = node1; - info2.edge = edge; - replacedEdge = true; - } - }; - - for (var _i = 1; _i < numNodes; _i++) { - replacedEdge = false; - - for (var e = 0; e < numEdges; e++) { - var edge = edges[e]; - var src = edge.source(); - var tgt = edge.target(); - - var _weight = weightFn(edge); - - var srcInfo = getInfo(src); - var tgtInfo = getInfo(tgt); - checkForEdgeReplacement(src, tgt, edge, srcInfo, tgtInfo, _weight); // If undirected graph, we need to take into account the 'reverse' edge - - if (!directed) { - checkForEdgeReplacement(tgt, src, edge, tgtInfo, srcInfo, _weight); - } - } - - if (!replacedEdge) { - break; - } - } - - if (replacedEdge) { - // Check for negative weight cycles - for (var _e = 0; _e < numEdges; _e++) { - var _edge = edges[_e]; - - var _src = _edge.source(); - - var _tgt = _edge.target(); - - var _weight2 = weightFn(_edge); - - var srcDist = getInfo(_src).dist; - var tgtDist = getInfo(_tgt).dist; - - if (srcDist + _weight2 < tgtDist || !directed && tgtDist + _weight2 < srcDist) { - warn('Graph contains a negative weight cycle for Bellman-Ford'); - hasNegativeWeightCycle = true; - break; - } - } - } - - return { - distanceTo: distanceTo, - pathTo: pathTo, - hasNegativeWeightCycle: hasNegativeWeightCycle, - negativeWeightCycles: negativeWeightCycles - }; - } // bellmanFord - -}; // elesfn - -var sqrt2 = Math.sqrt(2); // Function which colapses 2 (meta) nodes into one -// Updates the remaining edge lists -// Receives as a paramater the edge which causes the collapse - -var collapse = function collapse(edgeIndex, nodeMap, remainingEdges) { - if (remainingEdges.length === 0) { - error("Karger-Stein must be run on a connected (sub)graph"); - } - - var edgeInfo = remainingEdges[edgeIndex]; - var sourceIn = edgeInfo[1]; - var targetIn = edgeInfo[2]; - var partition1 = nodeMap[sourceIn]; - var partition2 = nodeMap[targetIn]; - var newEdges = remainingEdges; // re-use array - // Delete all edges between partition1 and partition2 - - for (var i = newEdges.length - 1; i >= 0; i--) { - var edge = newEdges[i]; - var src = edge[1]; - var tgt = edge[2]; - - if (nodeMap[src] === partition1 && nodeMap[tgt] === partition2 || nodeMap[src] === partition2 && nodeMap[tgt] === partition1) { - newEdges.splice(i, 1); - } - } // All edges pointing to partition2 should now point to partition1 - - - for (var _i = 0; _i < newEdges.length; _i++) { - var _edge = newEdges[_i]; - - if (_edge[1] === partition2) { - // Check source - newEdges[_i] = _edge.slice(); // copy - - newEdges[_i][1] = partition1; - } else if (_edge[2] === partition2) { - // Check target - newEdges[_i] = _edge.slice(); // copy - - newEdges[_i][2] = partition1; - } - } // Move all nodes from partition2 to partition1 - - - for (var _i2 = 0; _i2 < nodeMap.length; _i2++) { - if (nodeMap[_i2] === partition2) { - nodeMap[_i2] = partition1; - } - } - - return newEdges; -}; // Contracts a graph until we reach a certain number of meta nodes - - -var contractUntil = function contractUntil(metaNodeMap, remainingEdges, size, sizeLimit) { - while (size > sizeLimit) { - // Choose an edge randomly - var edgeIndex = Math.floor(Math.random() * remainingEdges.length); // Collapse graph based on edge - - remainingEdges = collapse(edgeIndex, metaNodeMap, remainingEdges); - size--; - } - - return remainingEdges; -}; - -var elesfn$6 = { - // Computes the minimum cut of an undirected graph - // Returns the correct answer with high probability - kargerStein: function kargerStein() { - var _this = this; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - edges.unmergeBy(function (edge) { - return edge.isLoop(); - }); - var numNodes = nodes.length; - var numEdges = edges.length; - var numIter = Math.ceil(Math.pow(Math.log(numNodes) / Math.LN2, 2)); - var stopSize = Math.floor(numNodes / sqrt2); - - if (numNodes < 2) { - error('At least 2 nodes are required for Karger-Stein algorithm'); - return undefined; - } // Now store edge destination as indexes - // Format for each edge (edge index, source node index, target node index) - - - var edgeIndexes = []; - - for (var i = 0; i < numEdges; i++) { - var e = edges[i]; - edgeIndexes.push([i, nodes.indexOf(e.source()), nodes.indexOf(e.target())]); - } // We will store the best cut found here - - - var minCutSize = Infinity; - var minCutEdgeIndexes = []; - var minCutNodeMap = new Array(numNodes); // Initial meta node partition - - var metaNodeMap = new Array(numNodes); - var metaNodeMap2 = new Array(numNodes); - - var copyNodesMap = function copyNodesMap(from, to) { - for (var _i3 = 0; _i3 < numNodes; _i3++) { - to[_i3] = from[_i3]; - } - }; // Main loop - - - for (var iter = 0; iter <= numIter; iter++) { - // Reset meta node partition - for (var _i4 = 0; _i4 < numNodes; _i4++) { - metaNodeMap[_i4] = _i4; - } // Contract until stop point (stopSize nodes) - - - var edgesState = contractUntil(metaNodeMap, edgeIndexes.slice(), numNodes, stopSize); - var edgesState2 = edgesState.slice(); // copy - // Create a copy of the colapsed nodes state - - copyNodesMap(metaNodeMap, metaNodeMap2); // Run 2 iterations starting in the stop state - - var res1 = contractUntil(metaNodeMap, edgesState, stopSize, 2); - var res2 = contractUntil(metaNodeMap2, edgesState2, stopSize, 2); // Is any of the 2 results the best cut so far? - - if (res1.length <= res2.length && res1.length < minCutSize) { - minCutSize = res1.length; - minCutEdgeIndexes = res1; - copyNodesMap(metaNodeMap, minCutNodeMap); - } else if (res2.length <= res1.length && res2.length < minCutSize) { - minCutSize = res2.length; - minCutEdgeIndexes = res2; - copyNodesMap(metaNodeMap2, minCutNodeMap); - } - } // end of main loop - // Construct result - - - var cut = this.spawn(minCutEdgeIndexes.map(function (e) { - return edges[e[0]]; - })); - var partition1 = this.spawn(); - var partition2 = this.spawn(); // traverse metaNodeMap for best cut - - var witnessNodePartition = minCutNodeMap[0]; - - for (var _i5 = 0; _i5 < minCutNodeMap.length; _i5++) { - var partitionId = minCutNodeMap[_i5]; - var node = nodes[_i5]; - - if (partitionId === witnessNodePartition) { - partition1.merge(node); - } else { - partition2.merge(node); - } - } // construct components corresponding to each disjoint subset of nodes - - - var constructComponent = function constructComponent(subset) { - var component = _this.spawn(); - - subset.forEach(function (node) { - component.merge(node); - node.connectedEdges().forEach(function (edge) { - // ensure edge is within calling collection and edge is not in cut - if (_this.contains(edge) && !cut.contains(edge)) { - component.merge(edge); - } - }); - }); - return component; - }; - - var components = [constructComponent(partition1), constructComponent(partition2)]; - var ret = { - cut: cut, - components: components, - // n.b. partitions are included to be compatible with the old api spec - // (could be removed in a future major version) - partition1: partition1, - partition2: partition2 - }; - return ret; - } -}; // elesfn - -var copyPosition = function copyPosition(p) { - return { - x: p.x, - y: p.y - }; -}; -var modelToRenderedPosition = function modelToRenderedPosition(p, zoom, pan) { - return { - x: p.x * zoom + pan.x, - y: p.y * zoom + pan.y - }; -}; -var renderedToModelPosition = function renderedToModelPosition(p, zoom, pan) { - return { - x: (p.x - pan.x) / zoom, - y: (p.y - pan.y) / zoom - }; -}; -var array2point = function array2point(arr) { - return { - x: arr[0], - y: arr[1] - }; -}; -var min = function min(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var min = Infinity; - - for (var i = begin; i < end; i++) { - var val = arr[i]; - - if (isFinite(val)) { - min = Math.min(val, min); - } - } - - return min; -}; -var max = function max(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var max = -Infinity; - - for (var i = begin; i < end; i++) { - var val = arr[i]; - - if (isFinite(val)) { - max = Math.max(val, max); - } - } - - return max; -}; -var mean = function mean(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var total = 0; - var n = 0; - - for (var i = begin; i < end; i++) { - var val = arr[i]; - - if (isFinite(val)) { - total += val; - n++; - } - } - - return total / n; -}; -var median = function median(arr) { - var begin = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : arr.length; - var copy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var sort = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var includeHoles = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - - if (copy) { - arr = arr.slice(begin, end); - } else { - if (end < arr.length) { - arr.splice(end, arr.length - end); - } - - if (begin > 0) { - arr.splice(0, begin); - } - } // all non finite (e.g. Infinity, NaN) elements must be -Infinity so they go to the start - - - var off = 0; // offset from non-finite values - - for (var i = arr.length - 1; i >= 0; i--) { - var v = arr[i]; - - if (includeHoles) { - if (!isFinite(v)) { - arr[i] = -Infinity; - off++; - } - } else { - // just remove it if we don't want to consider holes - arr.splice(i, 1); - } - } - - if (sort) { - arr.sort(function (a, b) { - return a - b; - }); // requires copy = true if you don't want to change the orig - } - - var len = arr.length; - var mid = Math.floor(len / 2); - - if (len % 2 !== 0) { - return arr[mid + 1 + off]; - } else { - return (arr[mid - 1 + off] + arr[mid + off]) / 2; - } -}; -var deg2rad = function deg2rad(deg) { - return Math.PI * deg / 180; -}; -var getAngleFromDisp = function getAngleFromDisp(dispX, dispY) { - return Math.atan2(dispY, dispX) - Math.PI / 2; -}; -var log2 = Math.log2 || function (n) { - return Math.log(n) / Math.log(2); -}; -var signum = function signum(x) { - if (x > 0) { - return 1; - } else if (x < 0) { - return -1; - } else { - return 0; - } -}; -var dist = function dist(p1, p2) { - return Math.sqrt(sqdist(p1, p2)); -}; -var sqdist = function sqdist(p1, p2) { - var dx = p2.x - p1.x; - var dy = p2.y - p1.y; - return dx * dx + dy * dy; -}; -var inPlaceSumNormalize = function inPlaceSumNormalize(v) { - var length = v.length; // First, get sum of all elements - - var total = 0; - - for (var i = 0; i < length; i++) { - total += v[i]; - } // Now, divide each by the sum of all elements - - - for (var _i = 0; _i < length; _i++) { - v[_i] = v[_i] / total; - } - - return v; -}; - -var qbezierAt = function qbezierAt(p0, p1, p2, t) { - return (1 - t) * (1 - t) * p0 + 2 * (1 - t) * t * p1 + t * t * p2; -}; -var qbezierPtAt = function qbezierPtAt(p0, p1, p2, t) { - return { - x: qbezierAt(p0.x, p1.x, p2.x, t), - y: qbezierAt(p0.y, p1.y, p2.y, t) - }; -}; -var lineAt = function lineAt(p0, p1, t, d) { - var vec = { - x: p1.x - p0.x, - y: p1.y - p0.y - }; - var vecDist = dist(p0, p1); - var normVec = { - x: vec.x / vecDist, - y: vec.y / vecDist - }; - t = t == null ? 0 : t; - d = d != null ? d : t * vecDist; - return { - x: p0.x + normVec.x * d, - y: p0.y + normVec.y * d - }; -}; -var bound = function bound(min, val, max) { - return Math.max(min, Math.min(max, val)); -}; // makes a full bb (x1, y1, x2, y2, w, h) from implicit params - -var makeBoundingBox = function makeBoundingBox(bb) { - if (bb == null) { - return { - x1: Infinity, - y1: Infinity, - x2: -Infinity, - y2: -Infinity, - w: 0, - h: 0 - }; - } else if (bb.x1 != null && bb.y1 != null) { - if (bb.x2 != null && bb.y2 != null && bb.x2 >= bb.x1 && bb.y2 >= bb.y1) { - return { - x1: bb.x1, - y1: bb.y1, - x2: bb.x2, - y2: bb.y2, - w: bb.x2 - bb.x1, - h: bb.y2 - bb.y1 - }; - } else if (bb.w != null && bb.h != null && bb.w >= 0 && bb.h >= 0) { - return { - x1: bb.x1, - y1: bb.y1, - x2: bb.x1 + bb.w, - y2: bb.y1 + bb.h, - w: bb.w, - h: bb.h - }; - } - } -}; -var copyBoundingBox = function copyBoundingBox(bb) { - return { - x1: bb.x1, - x2: bb.x2, - w: bb.w, - y1: bb.y1, - y2: bb.y2, - h: bb.h - }; -}; -var clearBoundingBox = function clearBoundingBox(bb) { - bb.x1 = Infinity; - bb.y1 = Infinity; - bb.x2 = -Infinity; - bb.y2 = -Infinity; - bb.w = 0; - bb.h = 0; -}; -var updateBoundingBox = function updateBoundingBox(bb1, bb2) { - // update bb1 with bb2 bounds - bb1.x1 = Math.min(bb1.x1, bb2.x1); - bb1.x2 = Math.max(bb1.x2, bb2.x2); - bb1.w = bb1.x2 - bb1.x1; - bb1.y1 = Math.min(bb1.y1, bb2.y1); - bb1.y2 = Math.max(bb1.y2, bb2.y2); - bb1.h = bb1.y2 - bb1.y1; -}; -var expandBoundingBoxByPoint = function expandBoundingBoxByPoint(bb, x, y) { - bb.x1 = Math.min(bb.x1, x); - bb.x2 = Math.max(bb.x2, x); - bb.w = bb.x2 - bb.x1; - bb.y1 = Math.min(bb.y1, y); - bb.y2 = Math.max(bb.y2, y); - bb.h = bb.y2 - bb.y1; -}; -var expandBoundingBox = function expandBoundingBox(bb) { - var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; - bb.x1 -= padding; - bb.x2 += padding; - bb.y1 -= padding; - bb.y2 += padding; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - return bb; -}; -var expandBoundingBoxSides = function expandBoundingBoxSides(bb) { - var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [0]; - var top, right, bottom, left; - - if (padding.length === 1) { - top = right = bottom = left = padding[0]; - } else if (padding.length === 2) { - top = bottom = padding[0]; - left = right = padding[1]; - } else if (padding.length === 4) { - var _padding = _slicedToArray(padding, 4); - - top = _padding[0]; - right = _padding[1]; - bottom = _padding[2]; - left = _padding[3]; - } - - bb.x1 -= left; - bb.x2 += right; - bb.y1 -= top; - bb.y2 += bottom; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - return bb; -}; - -var assignBoundingBox = function assignBoundingBox(bb1, bb2) { - bb1.x1 = bb2.x1; - bb1.y1 = bb2.y1; - bb1.x2 = bb2.x2; - bb1.y2 = bb2.y2; - bb1.w = bb1.x2 - bb1.x1; - bb1.h = bb1.y2 - bb1.y1; -}; -var assignShiftToBoundingBox = function assignShiftToBoundingBox(bb, delta) { - bb.x1 += delta.x; - bb.x2 += delta.x; - bb.y1 += delta.y; - bb.y2 += delta.y; -}; -var boundingBoxesIntersect = function boundingBoxesIntersect(bb1, bb2) { - // case: one bb to right of other - if (bb1.x1 > bb2.x2) { - return false; - } - - if (bb2.x1 > bb1.x2) { - return false; - } // case: one bb to left of other - - - if (bb1.x2 < bb2.x1) { - return false; - } - - if (bb2.x2 < bb1.x1) { - return false; - } // case: one bb above other - - - if (bb1.y2 < bb2.y1) { - return false; - } - - if (bb2.y2 < bb1.y1) { - return false; - } // case: one bb below other - - - if (bb1.y1 > bb2.y2) { - return false; - } - - if (bb2.y1 > bb1.y2) { - return false; - } // otherwise, must have some overlap - - - return true; -}; -var inBoundingBox = function inBoundingBox(bb, x, y) { - return bb.x1 <= x && x <= bb.x2 && bb.y1 <= y && y <= bb.y2; -}; -var pointInBoundingBox = function pointInBoundingBox(bb, pt) { - return inBoundingBox(bb, pt.x, pt.y); -}; -var boundingBoxInBoundingBox = function boundingBoxInBoundingBox(bb1, bb2) { - return inBoundingBox(bb1, bb2.x1, bb2.y1) && inBoundingBox(bb1, bb2.x2, bb2.y2); -}; -var roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) { - var cornerRadius = getRoundRectangleRadius(width, height); - var halfWidth = width / 2; - var halfHeight = height / 2; // Check intersections with straight line segments - - var straightLineIntersections; // Top segment, left to right - - { - var topStartX = nodeX - halfWidth + cornerRadius - padding; - var topStartY = nodeY - halfHeight - padding; - var topEndX = nodeX + halfWidth - cornerRadius + padding; - var topEndY = topStartY; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Right segment, top to bottom - - { - var rightStartX = nodeX + halfWidth + padding; - var rightStartY = nodeY - halfHeight + cornerRadius - padding; - var rightEndX = rightStartX; - var rightEndY = nodeY + halfHeight - cornerRadius + padding; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, rightStartX, rightStartY, rightEndX, rightEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Bottom segment, left to right - - { - var bottomStartX = nodeX - halfWidth + cornerRadius - padding; - var bottomStartY = nodeY + halfHeight + padding; - var bottomEndX = nodeX + halfWidth - cornerRadius + padding; - var bottomEndY = bottomStartY; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, bottomStartX, bottomStartY, bottomEndX, bottomEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Left segment, top to bottom - - { - var leftStartX = nodeX - halfWidth - padding; - var leftStartY = nodeY - halfHeight + cornerRadius - padding; - var leftEndX = leftStartX; - var leftEndY = nodeY + halfHeight - cornerRadius + padding; - straightLineIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, leftStartX, leftStartY, leftEndX, leftEndY, false); - - if (straightLineIntersections.length > 0) { - return straightLineIntersections; - } - } // Check intersections with arc segments - - var arcIntersections; // Top Left - - { - var topLeftCenterX = nodeX - halfWidth + cornerRadius; - var topLeftCenterY = nodeY - halfHeight + cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topLeftCenterX, topLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] <= topLeftCenterX && arcIntersections[1] <= topLeftCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } // Top Right - - { - var topRightCenterX = nodeX + halfWidth - cornerRadius; - var topRightCenterY = nodeY - halfHeight + cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, topRightCenterX, topRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] >= topRightCenterX && arcIntersections[1] <= topRightCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } // Bottom Right - - { - var bottomRightCenterX = nodeX + halfWidth - cornerRadius; - var bottomRightCenterY = nodeY + halfHeight - cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomRightCenterX, bottomRightCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] >= bottomRightCenterX && arcIntersections[1] >= bottomRightCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } // Bottom Left - - { - var bottomLeftCenterX = nodeX - halfWidth + cornerRadius; - var bottomLeftCenterY = nodeY + halfHeight - cornerRadius; - arcIntersections = intersectLineCircle(x, y, nodeX, nodeY, bottomLeftCenterX, bottomLeftCenterY, cornerRadius + padding); // Ensure the intersection is on the desired quarter of the circle - - if (arcIntersections.length > 0 && arcIntersections[0] <= bottomLeftCenterX && arcIntersections[1] >= bottomLeftCenterY) { - return [arcIntersections[0], arcIntersections[1]]; - } - } - return []; // if nothing -}; -var inLineVicinity = function inLineVicinity(x, y, lx1, ly1, lx2, ly2, tolerance) { - var t = tolerance; - var x1 = Math.min(lx1, lx2); - var x2 = Math.max(lx1, lx2); - var y1 = Math.min(ly1, ly2); - var y2 = Math.max(ly1, ly2); - return x1 - t <= x && x <= x2 + t && y1 - t <= y && y <= y2 + t; -}; -var inBezierVicinity = function inBezierVicinity(x, y, x1, y1, x2, y2, x3, y3, tolerance) { - var bb = { - x1: Math.min(x1, x3, x2) - tolerance, - x2: Math.max(x1, x3, x2) + tolerance, - y1: Math.min(y1, y3, y2) - tolerance, - y2: Math.max(y1, y3, y2) + tolerance - }; // if outside the rough bounding box for the bezier, then it can't be a hit - - if (x < bb.x1 || x > bb.x2 || y < bb.y1 || y > bb.y2) { - // console.log('bezier out of rough bb') - return false; - } else { - // console.log('do more expensive check'); - return true; - } -}; -var solveQuadratic = function solveQuadratic(a, b, c, val) { - c -= val; - var r = b * b - 4 * a * c; - - if (r < 0) { - return []; - } - - var sqrtR = Math.sqrt(r); - var denom = 2 * a; - var root1 = (-b + sqrtR) / denom; - var root2 = (-b - sqrtR) / denom; - return [root1, root2]; -}; -var solveCubic = function solveCubic(a, b, c, d, result) { - // Solves a cubic function, returns root in form [r1, i1, r2, i2, r3, i3], where - // r is the real component, i is the imaginary component - // An implementation of the Cardano method from the year 1545 - // http://en.wikipedia.org/wiki/Cubic_function#The_nature_of_the_roots - var epsilon = 0.00001; // avoid division by zero while keeping the overall expression close in value - - if (a === 0) { - a = epsilon; - } - - b /= a; - c /= a; - d /= a; - var discriminant, q, r, dum1, s, t, term1, r13; - q = (3.0 * c - b * b) / 9.0; - r = -(27.0 * d) + b * (9.0 * c - 2.0 * (b * b)); - r /= 54.0; - discriminant = q * q * q + r * r; - result[1] = 0; - term1 = b / 3.0; - - if (discriminant > 0) { - s = r + Math.sqrt(discriminant); - s = s < 0 ? -Math.pow(-s, 1.0 / 3.0) : Math.pow(s, 1.0 / 3.0); - t = r - Math.sqrt(discriminant); - t = t < 0 ? -Math.pow(-t, 1.0 / 3.0) : Math.pow(t, 1.0 / 3.0); - result[0] = -term1 + s + t; - term1 += (s + t) / 2.0; - result[4] = result[2] = -term1; - term1 = Math.sqrt(3.0) * (-t + s) / 2; - result[3] = term1; - result[5] = -term1; - return; - } - - result[5] = result[3] = 0; - - if (discriminant === 0) { - r13 = r < 0 ? -Math.pow(-r, 1.0 / 3.0) : Math.pow(r, 1.0 / 3.0); - result[0] = -term1 + 2.0 * r13; - result[4] = result[2] = -(r13 + term1); - return; - } - - q = -q; - dum1 = q * q * q; - dum1 = Math.acos(r / Math.sqrt(dum1)); - r13 = 2.0 * Math.sqrt(q); - result[0] = -term1 + r13 * Math.cos(dum1 / 3.0); - result[2] = -term1 + r13 * Math.cos((dum1 + 2.0 * Math.PI) / 3.0); - result[4] = -term1 + r13 * Math.cos((dum1 + 4.0 * Math.PI) / 3.0); - return; -}; -var sqdistToQuadraticBezier = function sqdistToQuadraticBezier(x, y, x1, y1, x2, y2, x3, y3) { - // Find minimum distance by using the minimum of the distance - // function between the given point and the curve - // This gives the coefficients of the resulting cubic equation - // whose roots tell us where a possible minimum is - // (Coefficients are divided by 4) - var a = 1.0 * x1 * x1 - 4 * x1 * x2 + 2 * x1 * x3 + 4 * x2 * x2 - 4 * x2 * x3 + x3 * x3 + y1 * y1 - 4 * y1 * y2 + 2 * y1 * y3 + 4 * y2 * y2 - 4 * y2 * y3 + y3 * y3; - var b = 1.0 * 9 * x1 * x2 - 3 * x1 * x1 - 3 * x1 * x3 - 6 * x2 * x2 + 3 * x2 * x3 + 9 * y1 * y2 - 3 * y1 * y1 - 3 * y1 * y3 - 6 * y2 * y2 + 3 * y2 * y3; - var c = 1.0 * 3 * x1 * x1 - 6 * x1 * x2 + x1 * x3 - x1 * x + 2 * x2 * x2 + 2 * x2 * x - x3 * x + 3 * y1 * y1 - 6 * y1 * y2 + y1 * y3 - y1 * y + 2 * y2 * y2 + 2 * y2 * y - y3 * y; - var d = 1.0 * x1 * x2 - x1 * x1 + x1 * x - x2 * x + y1 * y2 - y1 * y1 + y1 * y - y2 * y; // debug("coefficients: " + a / a + ", " + b / a + ", " + c / a + ", " + d / a); - - var roots = []; // Use the cubic solving algorithm - - solveCubic(a, b, c, d, roots); - var zeroThreshold = 0.0000001; - var params = []; - - for (var index = 0; index < 6; index += 2) { - if (Math.abs(roots[index + 1]) < zeroThreshold && roots[index] >= 0 && roots[index] <= 1.0) { - params.push(roots[index]); - } - } - - params.push(1.0); - params.push(0.0); - var minDistanceSquared = -1; - var curX, curY, distSquared; - - for (var i = 0; i < params.length; i++) { - curX = Math.pow(1.0 - params[i], 2.0) * x1 + 2.0 * (1 - params[i]) * params[i] * x2 + params[i] * params[i] * x3; - curY = Math.pow(1 - params[i], 2.0) * y1 + 2 * (1.0 - params[i]) * params[i] * y2 + params[i] * params[i] * y3; - distSquared = Math.pow(curX - x, 2) + Math.pow(curY - y, 2); // debug('distance for param ' + params[i] + ": " + Math.sqrt(distSquared)); - - if (minDistanceSquared >= 0) { - if (distSquared < minDistanceSquared) { - minDistanceSquared = distSquared; - } - } else { - minDistanceSquared = distSquared; - } - } - - return minDistanceSquared; -}; -var sqdistToFiniteLine = function sqdistToFiniteLine(x, y, x1, y1, x2, y2) { - var offset = [x - x1, y - y1]; - var line = [x2 - x1, y2 - y1]; - var lineSq = line[0] * line[0] + line[1] * line[1]; - var hypSq = offset[0] * offset[0] + offset[1] * offset[1]; - var dotProduct = offset[0] * line[0] + offset[1] * line[1]; - var adjSq = dotProduct * dotProduct / lineSq; - - if (dotProduct < 0) { - return hypSq; - } - - if (adjSq > lineSq) { - return (x - x2) * (x - x2) + (y - y2) * (y - y2); - } - - return hypSq - adjSq; -}; -var pointInsidePolygonPoints = function pointInsidePolygonPoints(x, y, points) { - var x1, y1, x2, y2; - var y3; // Intersect with vertical line through (x, y) - - var up = 0; // let down = 0; - - for (var i = 0; i < points.length / 2; i++) { - x1 = points[i * 2]; - y1 = points[i * 2 + 1]; - - if (i + 1 < points.length / 2) { - x2 = points[(i + 1) * 2]; - y2 = points[(i + 1) * 2 + 1]; - } else { - x2 = points[(i + 1 - points.length / 2) * 2]; - y2 = points[(i + 1 - points.length / 2) * 2 + 1]; - } - - if (x1 == x && x2 == x) ; else if (x1 >= x && x >= x2 || x1 <= x && x <= x2) { - y3 = (x - x1) / (x2 - x1) * (y2 - y1) + y1; - - if (y3 > y) { - up++; - } // if( y3 < y ){ - // down++; - // } - - } else { - continue; - } - } - - if (up % 2 === 0) { - return false; - } else { - return true; - } -}; -var pointInsidePolygon = function pointInsidePolygon(x, y, basePoints, centerX, centerY, width, height, direction, padding) { - var transformedPoints = new Array(basePoints.length); // Gives negative angle - - var angle; - - if (direction[0] != null) { - angle = Math.atan(direction[1] / direction[0]); - - if (direction[0] < 0) { - angle = angle + Math.PI / 2; - } else { - angle = -angle - Math.PI / 2; - } - } else { - angle = direction; - } - - var cos = Math.cos(-angle); - var sin = Math.sin(-angle); // console.log("base: " + basePoints); - - for (var i = 0; i < transformedPoints.length / 2; i++) { - transformedPoints[i * 2] = width / 2 * (basePoints[i * 2] * cos - basePoints[i * 2 + 1] * sin); - transformedPoints[i * 2 + 1] = height / 2 * (basePoints[i * 2 + 1] * cos + basePoints[i * 2] * sin); - transformedPoints[i * 2] += centerX; - transformedPoints[i * 2 + 1] += centerY; - } - - var points; - - if (padding > 0) { - var expandedLineSet = expandPolygon(transformedPoints, -padding); - points = joinLines(expandedLineSet); - } else { - points = transformedPoints; - } - - return pointInsidePolygonPoints(x, y, points); -}; -var pointInsideRoundPolygon = function pointInsideRoundPolygon(x, y, basePoints, centerX, centerY, width, height) { - var cutPolygonPoints = new Array(basePoints.length); - var halfW = width / 2; - var halfH = height / 2; - var cornerRadius = getRoundPolygonRadius(width, height); - var squaredCornerRadius = cornerRadius * cornerRadius; - - for (var i = 0; i < basePoints.length / 4; i++) { - var sourceUv = void 0, - destUv = void 0; - - if (i === 0) { - sourceUv = basePoints.length - 2; - } else { - sourceUv = i * 4 - 2; - } - - destUv = i * 4 + 2; - var px = centerX + halfW * basePoints[i * 4]; - var py = centerY + halfH * basePoints[i * 4 + 1]; - var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; - var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); - var cp0x = px - offset * basePoints[sourceUv]; - var cp0y = py - offset * basePoints[sourceUv + 1]; - var cp1x = px + offset * basePoints[destUv]; - var cp1y = py + offset * basePoints[destUv + 1]; - cutPolygonPoints[i * 4] = cp0x; - cutPolygonPoints[i * 4 + 1] = cp0y; - cutPolygonPoints[i * 4 + 2] = cp1x; - cutPolygonPoints[i * 4 + 3] = cp1y; - var orthx = basePoints[sourceUv + 1]; - var orthy = -basePoints[sourceUv]; - var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; - - if (cosAlpha < 0) { - orthx *= -1; - orthy *= -1; - } - - var cx = cp0x + orthx * cornerRadius; - var cy = cp0y + orthy * cornerRadius; - var squaredDistance = Math.pow(cx - x, 2) + Math.pow(cy - y, 2); - - if (squaredDistance <= squaredCornerRadius) { - return true; - } - } - - return pointInsidePolygonPoints(x, y, cutPolygonPoints); -}; -var joinLines = function joinLines(lineSet) { - var vertices = new Array(lineSet.length / 2); - var currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY; - var nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY; - - for (var i = 0; i < lineSet.length / 4; i++) { - currentLineStartX = lineSet[i * 4]; - currentLineStartY = lineSet[i * 4 + 1]; - currentLineEndX = lineSet[i * 4 + 2]; - currentLineEndY = lineSet[i * 4 + 3]; - - if (i < lineSet.length / 4 - 1) { - nextLineStartX = lineSet[(i + 1) * 4]; - nextLineStartY = lineSet[(i + 1) * 4 + 1]; - nextLineEndX = lineSet[(i + 1) * 4 + 2]; - nextLineEndY = lineSet[(i + 1) * 4 + 3]; - } else { - nextLineStartX = lineSet[0]; - nextLineStartY = lineSet[1]; - nextLineEndX = lineSet[2]; - nextLineEndY = lineSet[3]; - } - - var intersection = finiteLinesIntersect(currentLineStartX, currentLineStartY, currentLineEndX, currentLineEndY, nextLineStartX, nextLineStartY, nextLineEndX, nextLineEndY, true); - vertices[i * 2] = intersection[0]; - vertices[i * 2 + 1] = intersection[1]; - } - - return vertices; -}; -var expandPolygon = function expandPolygon(points, pad) { - var expandedLineSet = new Array(points.length * 2); - var currentPointX, currentPointY, nextPointX, nextPointY; - - for (var i = 0; i < points.length / 2; i++) { - currentPointX = points[i * 2]; - currentPointY = points[i * 2 + 1]; - - if (i < points.length / 2 - 1) { - nextPointX = points[(i + 1) * 2]; - nextPointY = points[(i + 1) * 2 + 1]; - } else { - nextPointX = points[0]; - nextPointY = points[1]; - } // Current line: [currentPointX, currentPointY] to [nextPointX, nextPointY] - // Assume CCW polygon winding - - - var offsetX = nextPointY - currentPointY; - var offsetY = -(nextPointX - currentPointX); // Normalize - - var offsetLength = Math.sqrt(offsetX * offsetX + offsetY * offsetY); - var normalizedOffsetX = offsetX / offsetLength; - var normalizedOffsetY = offsetY / offsetLength; - expandedLineSet[i * 4] = currentPointX + normalizedOffsetX * pad; - expandedLineSet[i * 4 + 1] = currentPointY + normalizedOffsetY * pad; - expandedLineSet[i * 4 + 2] = nextPointX + normalizedOffsetX * pad; - expandedLineSet[i * 4 + 3] = nextPointY + normalizedOffsetY * pad; - } - - return expandedLineSet; -}; -var intersectLineEllipse = function intersectLineEllipse(x, y, centerX, centerY, ellipseWradius, ellipseHradius) { - var dispX = centerX - x; - var dispY = centerY - y; - dispX /= ellipseWradius; - dispY /= ellipseHradius; - var len = Math.sqrt(dispX * dispX + dispY * dispY); - var newLength = len - 1; - - if (newLength < 0) { - return []; - } - - var lenProportion = newLength / len; - return [(centerX - x) * lenProportion + x, (centerY - y) * lenProportion + y]; -}; -var checkInEllipse = function checkInEllipse(x, y, width, height, centerX, centerY, padding) { - x -= centerX; - y -= centerY; - x /= width / 2 + padding; - y /= height / 2 + padding; - return x * x + y * y <= 1; -}; // Returns intersections of increasing distance from line's start point - -var intersectLineCircle = function intersectLineCircle(x1, y1, x2, y2, centerX, centerY, radius) { - // Calculate d, direction vector of line - var d = [x2 - x1, y2 - y1]; // Direction vector of line - - var f = [x1 - centerX, y1 - centerY]; - var a = d[0] * d[0] + d[1] * d[1]; - var b = 2 * (f[0] * d[0] + f[1] * d[1]); - var c = f[0] * f[0] + f[1] * f[1] - radius * radius; - var discriminant = b * b - 4 * a * c; - - if (discriminant < 0) { - return []; - } - - var t1 = (-b + Math.sqrt(discriminant)) / (2 * a); - var t2 = (-b - Math.sqrt(discriminant)) / (2 * a); - var tMin = Math.min(t1, t2); - var tMax = Math.max(t1, t2); - var inRangeParams = []; - - if (tMin >= 0 && tMin <= 1) { - inRangeParams.push(tMin); - } - - if (tMax >= 0 && tMax <= 1) { - inRangeParams.push(tMax); - } - - if (inRangeParams.length === 0) { - return []; - } - - var nearIntersectionX = inRangeParams[0] * d[0] + x1; - var nearIntersectionY = inRangeParams[0] * d[1] + y1; - - if (inRangeParams.length > 1) { - if (inRangeParams[0] == inRangeParams[1]) { - return [nearIntersectionX, nearIntersectionY]; - } else { - var farIntersectionX = inRangeParams[1] * d[0] + x1; - var farIntersectionY = inRangeParams[1] * d[1] + y1; - return [nearIntersectionX, nearIntersectionY, farIntersectionX, farIntersectionY]; - } - } else { - return [nearIntersectionX, nearIntersectionY]; - } -}; -var midOfThree = function midOfThree(a, b, c) { - if (b <= a && a <= c || c <= a && a <= b) { - return a; - } else if (a <= b && b <= c || c <= b && b <= a) { - return b; - } else { - return c; - } -}; // (x1,y1)=>(x2,y2) intersect with (x3,y3)=>(x4,y4) - -var finiteLinesIntersect = function finiteLinesIntersect(x1, y1, x2, y2, x3, y3, x4, y4, infiniteLines) { - var dx13 = x1 - x3; - var dx21 = x2 - x1; - var dx43 = x4 - x3; - var dy13 = y1 - y3; - var dy21 = y2 - y1; - var dy43 = y4 - y3; - var ua_t = dx43 * dy13 - dy43 * dx13; - var ub_t = dx21 * dy13 - dy21 * dx13; - var u_b = dy43 * dx21 - dx43 * dy21; - - if (u_b !== 0) { - var ua = ua_t / u_b; - var ub = ub_t / u_b; - var flptThreshold = 0.001; - - var _min = 0 - flptThreshold; - - var _max = 1 + flptThreshold; - - if (_min <= ua && ua <= _max && _min <= ub && ub <= _max) { - return [x1 + ua * dx21, y1 + ua * dy21]; - } else { - if (!infiniteLines) { - return []; - } else { - return [x1 + ua * dx21, y1 + ua * dy21]; - } - } - } else { - if (ua_t === 0 || ub_t === 0) { - // Parallel, coincident lines. Check if overlap - // Check endpoint of second line - if (midOfThree(x1, x2, x4) === x4) { - return [x4, y4]; - } // Check start point of second line - - - if (midOfThree(x1, x2, x3) === x3) { - return [x3, y3]; - } // Endpoint of first line - - - if (midOfThree(x3, x4, x2) === x2) { - return [x2, y2]; - } - - return []; - } else { - // Parallel, non-coincident - return []; - } - } -}; // math.polygonIntersectLine( x, y, basePoints, centerX, centerY, width, height, padding ) -// intersect a node polygon (pts transformed) -// -// math.polygonIntersectLine( x, y, basePoints, centerX, centerY ) -// intersect the points (no transform) - -var polygonIntersectLine = function polygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { - var intersections = []; - var intersection; - var transformedPoints = new Array(basePoints.length); - var doTransform = true; - - if (width == null) { - doTransform = false; - } - - var points; - - if (doTransform) { - for (var i = 0; i < transformedPoints.length / 2; i++) { - transformedPoints[i * 2] = basePoints[i * 2] * width + centerX; - transformedPoints[i * 2 + 1] = basePoints[i * 2 + 1] * height + centerY; - } - - if (padding > 0) { - var expandedLineSet = expandPolygon(transformedPoints, -padding); - points = joinLines(expandedLineSet); - } else { - points = transformedPoints; - } - } else { - points = basePoints; - } - - var currentX, currentY, nextX, nextY; - - for (var _i2 = 0; _i2 < points.length / 2; _i2++) { - currentX = points[_i2 * 2]; - currentY = points[_i2 * 2 + 1]; - - if (_i2 < points.length / 2 - 1) { - nextX = points[(_i2 + 1) * 2]; - nextY = points[(_i2 + 1) * 2 + 1]; - } else { - nextX = points[0]; - nextY = points[1]; - } - - intersection = finiteLinesIntersect(x, y, centerX, centerY, currentX, currentY, nextX, nextY); - - if (intersection.length !== 0) { - intersections.push(intersection[0], intersection[1]); - } - } - - return intersections; -}; -var roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, padding) { - var intersections = []; - var intersection; - var lines = new Array(basePoints.length); - var halfW = width / 2; - var halfH = height / 2; - var cornerRadius = getRoundPolygonRadius(width, height); - - for (var i = 0; i < basePoints.length / 4; i++) { - var sourceUv = void 0, - destUv = void 0; - - if (i === 0) { - sourceUv = basePoints.length - 2; - } else { - sourceUv = i * 4 - 2; - } - - destUv = i * 4 + 2; - var px = centerX + halfW * basePoints[i * 4]; - var py = centerY + halfH * basePoints[i * 4 + 1]; - var cosTheta = -basePoints[sourceUv] * basePoints[destUv] - basePoints[sourceUv + 1] * basePoints[destUv + 1]; - var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); - var cp0x = px - offset * basePoints[sourceUv]; - var cp0y = py - offset * basePoints[sourceUv + 1]; - var cp1x = px + offset * basePoints[destUv]; - var cp1y = py + offset * basePoints[destUv + 1]; - - if (i === 0) { - lines[basePoints.length - 2] = cp0x; - lines[basePoints.length - 1] = cp0y; - } else { - lines[i * 4 - 2] = cp0x; - lines[i * 4 - 1] = cp0y; - } - - lines[i * 4] = cp1x; - lines[i * 4 + 1] = cp1y; - var orthx = basePoints[sourceUv + 1]; - var orthy = -basePoints[sourceUv]; - var cosAlpha = orthx * basePoints[destUv] + orthy * basePoints[destUv + 1]; - - if (cosAlpha < 0) { - orthx *= -1; - orthy *= -1; - } - - var cx = cp0x + orthx * cornerRadius; - var cy = cp0y + orthy * cornerRadius; - intersection = intersectLineCircle(x, y, centerX, centerY, cx, cy, cornerRadius); - - if (intersection.length !== 0) { - intersections.push(intersection[0], intersection[1]); - } - } - - for (var _i3 = 0; _i3 < lines.length / 4; _i3++) { - intersection = finiteLinesIntersect(x, y, centerX, centerY, lines[_i3 * 4], lines[_i3 * 4 + 1], lines[_i3 * 4 + 2], lines[_i3 * 4 + 3], false); - - if (intersection.length !== 0) { - intersections.push(intersection[0], intersection[1]); - } - } - - if (intersections.length > 2) { - var lowestIntersection = [intersections[0], intersections[1]]; - var lowestSquaredDistance = Math.pow(lowestIntersection[0] - x, 2) + Math.pow(lowestIntersection[1] - y, 2); - - for (var _i4 = 1; _i4 < intersections.length / 2; _i4++) { - var squaredDistance = Math.pow(intersections[_i4 * 2] - x, 2) + Math.pow(intersections[_i4 * 2 + 1] - y, 2); - - if (squaredDistance <= lowestSquaredDistance) { - lowestIntersection[0] = intersections[_i4 * 2]; - lowestIntersection[1] = intersections[_i4 * 2 + 1]; - lowestSquaredDistance = squaredDistance; - } - } - - return lowestIntersection; - } - - return intersections; -}; -var shortenIntersection = function shortenIntersection(intersection, offset, amount) { - var disp = [intersection[0] - offset[0], intersection[1] - offset[1]]; - var length = Math.sqrt(disp[0] * disp[0] + disp[1] * disp[1]); - var lenRatio = (length - amount) / length; - - if (lenRatio < 0) { - lenRatio = 0.00001; - } - - return [offset[0] + lenRatio * disp[0], offset[1] + lenRatio * disp[1]]; -}; -var generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) { - var points = generateUnitNgonPoints(sides, rotationRadians); - points = fitPolygonToSquare(points); - return points; -}; -var fitPolygonToSquare = function fitPolygonToSquare(points) { - var x, y; - var sides = points.length / 2; - var minX = Infinity, - minY = Infinity, - maxX = -Infinity, - maxY = -Infinity; - - for (var i = 0; i < sides; i++) { - x = points[2 * i]; - y = points[2 * i + 1]; - minX = Math.min(minX, x); - maxX = Math.max(maxX, x); - minY = Math.min(minY, y); - maxY = Math.max(maxY, y); - } // stretch factors - - - var sx = 2 / (maxX - minX); - var sy = 2 / (maxY - minY); - - for (var _i5 = 0; _i5 < sides; _i5++) { - x = points[2 * _i5] = points[2 * _i5] * sx; - y = points[2 * _i5 + 1] = points[2 * _i5 + 1] * sy; - minX = Math.min(minX, x); - maxX = Math.max(maxX, x); - minY = Math.min(minY, y); - maxY = Math.max(maxY, y); - } - - if (minY < -1) { - for (var _i6 = 0; _i6 < sides; _i6++) { - y = points[2 * _i6 + 1] = points[2 * _i6 + 1] + (-1 - minY); - } - } - - return points; -}; -var generateUnitNgonPoints = function generateUnitNgonPoints(sides, rotationRadians) { - var increment = 1.0 / sides * 2 * Math.PI; - var startAngle = sides % 2 === 0 ? Math.PI / 2.0 + increment / 2.0 : Math.PI / 2.0; - startAngle += rotationRadians; - var points = new Array(sides * 2); - var currentAngle; - - for (var i = 0; i < sides; i++) { - currentAngle = i * increment + startAngle; - points[2 * i] = Math.cos(currentAngle); // x - - points[2 * i + 1] = Math.sin(-currentAngle); // y - } - - return points; -}; // Set the default radius, unless half of width or height is smaller than default - -var getRoundRectangleRadius = function getRoundRectangleRadius(width, height) { - return Math.min(width / 4, height / 4, 8); -}; // Set the default radius - -var getRoundPolygonRadius = function getRoundPolygonRadius(width, height) { - return Math.min(width / 10, height / 10, 8); -}; -var getCutRectangleCornerLength = function getCutRectangleCornerLength() { - return 8; -}; -var bezierPtsToQuadCoeff = function bezierPtsToQuadCoeff(p0, p1, p2) { - return [p0 - 2 * p1 + p2, 2 * (p1 - p0), p0]; -}; // get curve width, height, and control point position offsets as a percentage of node height / width - -var getBarrelCurveConstants = function getBarrelCurveConstants(width, height) { - return { - heightOffset: Math.min(15, 0.05 * height), - widthOffset: Math.min(100, 0.25 * width), - ctrlPtOffsetPct: 0.05 - }; -}; - -var pageRankDefaults = defaults({ - dampingFactor: 0.8, - precision: 0.000001, - iterations: 200, - weight: function weight(edge) { - return 1; - } -}); -var elesfn$7 = { - pageRank: function pageRank(options) { - var _pageRankDefaults = pageRankDefaults(options), - dampingFactor = _pageRankDefaults.dampingFactor, - precision = _pageRankDefaults.precision, - iterations = _pageRankDefaults.iterations, - weight = _pageRankDefaults.weight; - - var cy = this._private.cy; - - var _this$byGroup = this.byGroup(), - nodes = _this$byGroup.nodes, - edges = _this$byGroup.edges; - - var numNodes = nodes.length; - var numNodesSqd = numNodes * numNodes; - var numEdges = edges.length; // Construct transposed adjacency matrix - // First lets have a zeroed matrix of the right size - // We'll also keep track of the sum of each column - - var matrix = new Array(numNodesSqd); - var columnSum = new Array(numNodes); - var additionalProb = (1 - dampingFactor) / numNodes; // Create null matrix - - for (var i = 0; i < numNodes; i++) { - for (var j = 0; j < numNodes; j++) { - var n = i * numNodes + j; - matrix[n] = 0; - } - - columnSum[i] = 0; - } // Now, process edges - - - for (var _i = 0; _i < numEdges; _i++) { - var edge = edges[_i]; - var srcId = edge.data('source'); - var tgtId = edge.data('target'); // Don't include loops in the matrix - - if (srcId === tgtId) { - continue; - } - - var s = nodes.indexOfId(srcId); - var t = nodes.indexOfId(tgtId); - var w = weight(edge); - - var _n = t * numNodes + s; // Update matrix - - - matrix[_n] += w; // Update column sum - - columnSum[s] += w; - } // Add additional probability based on damping factor - // Also, take into account columns that have sum = 0 - - - var p = 1.0 / numNodes + additionalProb; // Shorthand - // Traverse matrix, column by column - - for (var _j = 0; _j < numNodes; _j++) { - if (columnSum[_j] === 0) { - // No 'links' out from node jth, assume equal probability for each possible node - for (var _i2 = 0; _i2 < numNodes; _i2++) { - var _n2 = _i2 * numNodes + _j; - - matrix[_n2] = p; - } - } else { - // Node jth has outgoing link, compute normalized probabilities - for (var _i3 = 0; _i3 < numNodes; _i3++) { - var _n3 = _i3 * numNodes + _j; - - matrix[_n3] = matrix[_n3] / columnSum[_j] + additionalProb; - } - } - } // Compute dominant eigenvector using power method - - - var eigenvector = new Array(numNodes); - var temp = new Array(numNodes); - var previous; // Start with a vector of all 1's - // Also, initialize a null vector which will be used as shorthand - - for (var _i4 = 0; _i4 < numNodes; _i4++) { - eigenvector[_i4] = 1; - } - - for (var iter = 0; iter < iterations; iter++) { - // Temp array with all 0's - for (var _i5 = 0; _i5 < numNodes; _i5++) { - temp[_i5] = 0; - } // Multiply matrix with previous result - - - for (var _i6 = 0; _i6 < numNodes; _i6++) { - for (var _j2 = 0; _j2 < numNodes; _j2++) { - var _n4 = _i6 * numNodes + _j2; - - temp[_i6] += matrix[_n4] * eigenvector[_j2]; - } - } - - inPlaceSumNormalize(temp); - previous = eigenvector; - eigenvector = temp; - temp = previous; - var diff = 0; // Compute difference (squared module) of both vectors - - for (var _i7 = 0; _i7 < numNodes; _i7++) { - var delta = previous[_i7] - eigenvector[_i7]; - diff += delta * delta; - } // If difference is less than the desired threshold, stop iterating - - - if (diff < precision) { - break; - } - } // Construct result - - - var res = { - rank: function rank(node) { - node = cy.collection(node)[0]; - return eigenvector[nodes.indexOf(node)]; - } - }; - return res; - } // pageRank - -}; // elesfn - -var defaults$1 = defaults({ - root: null, - weight: function weight(edge) { - return 1; - }, - directed: false, - alpha: 0 -}); -var elesfn$8 = { - degreeCentralityNormalized: function degreeCentralityNormalized(options) { - options = defaults$1(options); - var cy = this.cy(); - var nodes = this.nodes(); - var numNodes = nodes.length; - - if (!options.directed) { - var degrees = {}; - var maxDegree = 0; - - for (var i = 0; i < numNodes; i++) { - var node = nodes[i]; // add current node to the current options object and call degreeCentrality - - options.root = node; - var currDegree = this.degreeCentrality(options); - - if (maxDegree < currDegree.degree) { - maxDegree = currDegree.degree; - } - - degrees[node.id()] = currDegree.degree; - } - - return { - degree: function degree(node) { - if (maxDegree === 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node); - } - - return degrees[node.id()] / maxDegree; - } - }; - } else { - var indegrees = {}; - var outdegrees = {}; - var maxIndegree = 0; - var maxOutdegree = 0; - - for (var _i = 0; _i < numNodes; _i++) { - var _node = nodes[_i]; - - var id = _node.id(); // add current node to the current options object and call degreeCentrality - - - options.root = _node; - - var _currDegree = this.degreeCentrality(options); - - if (maxIndegree < _currDegree.indegree) maxIndegree = _currDegree.indegree; - if (maxOutdegree < _currDegree.outdegree) maxOutdegree = _currDegree.outdegree; - indegrees[id] = _currDegree.indegree; - outdegrees[id] = _currDegree.outdegree; - } - - return { - indegree: function indegree(node) { - if (maxIndegree == 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node); - } - - return indegrees[node.id()] / maxIndegree; - }, - outdegree: function outdegree(node) { - if (maxOutdegree === 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node); - } - - return outdegrees[node.id()] / maxOutdegree; - } - }; - } - }, - // degreeCentralityNormalized - // Implemented from the algorithm in Opsahl's paper - // "Node centrality in weighted networks: Generalizing degree and shortest paths" - // check the heading 2 "Degree" - degreeCentrality: function degreeCentrality(options) { - options = defaults$1(options); - var cy = this.cy(); - var callingEles = this; - var _options = options, - root = _options.root, - weight = _options.weight, - directed = _options.directed, - alpha = _options.alpha; - root = cy.collection(root)[0]; - - if (!directed) { - var connEdges = root.connectedEdges().intersection(callingEles); - var k = connEdges.length; - var s = 0; // Now, sum edge weights - - for (var i = 0; i < connEdges.length; i++) { - s += weight(connEdges[i]); - } - - return { - degree: Math.pow(k, 1 - alpha) * Math.pow(s, alpha) - }; - } else { - var edges = root.connectedEdges(); - var incoming = edges.filter(function (edge) { - return edge.target().same(root) && callingEles.has(edge); - }); - var outgoing = edges.filter(function (edge) { - return edge.source().same(root) && callingEles.has(edge); - }); - var k_in = incoming.length; - var k_out = outgoing.length; - var s_in = 0; - var s_out = 0; // Now, sum incoming edge weights - - for (var _i2 = 0; _i2 < incoming.length; _i2++) { - s_in += weight(incoming[_i2]); - } // Now, sum outgoing edge weights - - - for (var _i3 = 0; _i3 < outgoing.length; _i3++) { - s_out += weight(outgoing[_i3]); - } - - return { - indegree: Math.pow(k_in, 1 - alpha) * Math.pow(s_in, alpha), - outdegree: Math.pow(k_out, 1 - alpha) * Math.pow(s_out, alpha) - }; - } - } // degreeCentrality - -}; // elesfn -// nice, short mathemathical alias - -elesfn$8.dc = elesfn$8.degreeCentrality; -elesfn$8.dcn = elesfn$8.degreeCentralityNormalised = elesfn$8.degreeCentralityNormalized; - -var defaults$2 = defaults({ - harmonic: true, - weight: function weight() { - return 1; - }, - directed: false, - root: null -}); -var elesfn$9 = { - closenessCentralityNormalized: function closenessCentralityNormalized(options) { - var _defaults = defaults$2(options), - harmonic = _defaults.harmonic, - weight = _defaults.weight, - directed = _defaults.directed; - - var cy = this.cy(); - var closenesses = {}; - var maxCloseness = 0; - var nodes = this.nodes(); - var fw = this.floydWarshall({ - weight: weight, - directed: directed - }); // Compute closeness for every node and find the maximum closeness - - for (var i = 0; i < nodes.length; i++) { - var currCloseness = 0; - var node_i = nodes[i]; - - for (var j = 0; j < nodes.length; j++) { - if (i !== j) { - var d = fw.distance(node_i, nodes[j]); - - if (harmonic) { - currCloseness += 1 / d; - } else { - currCloseness += d; - } - } - } - - if (!harmonic) { - currCloseness = 1 / currCloseness; - } - - if (maxCloseness < currCloseness) { - maxCloseness = currCloseness; - } - - closenesses[node_i.id()] = currCloseness; - } - - return { - closeness: function closeness(node) { - if (maxCloseness == 0) { - return 0; - } - - if (string(node)) { - // from is a selector string - node = cy.filter(node)[0].id(); - } else { - // from is a node - node = node.id(); - } - - return closenesses[node] / maxCloseness; - } - }; - }, - // Implemented from pseudocode from wikipedia - closenessCentrality: function closenessCentrality(options) { - var _defaults2 = defaults$2(options), - root = _defaults2.root, - weight = _defaults2.weight, - directed = _defaults2.directed, - harmonic = _defaults2.harmonic; - - root = this.filter(root)[0]; // we need distance from this node to every other node - - var dijkstra = this.dijkstra({ - root: root, - weight: weight, - directed: directed - }); - var totalDistance = 0; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - var n = nodes[i]; - - if (!n.same(root)) { - var d = dijkstra.distanceTo(n); - - if (harmonic) { - totalDistance += 1 / d; - } else { - totalDistance += d; - } - } - } - - return harmonic ? totalDistance : 1 / totalDistance; - } // closenessCentrality - -}; // elesfn -// nice, short mathemathical alias - -elesfn$9.cc = elesfn$9.closenessCentrality; -elesfn$9.ccn = elesfn$9.closenessCentralityNormalised = elesfn$9.closenessCentralityNormalized; - -var defaults$3 = defaults({ - weight: null, - directed: false -}); -var elesfn$a = { - // Implemented from the algorithm in the paper "On Variants of Shortest-Path Betweenness Centrality and their Generic Computation" by Ulrik Brandes - betweennessCentrality: function betweennessCentrality(options) { - var _defaults = defaults$3(options), - directed = _defaults.directed, - weight = _defaults.weight; - - var weighted = weight != null; - var cy = this.cy(); // starting - - var V = this.nodes(); - var A = {}; - var _C = {}; - var max = 0; - var C = { - set: function set(key, val) { - _C[key] = val; - - if (val > max) { - max = val; - } - }, - get: function get(key) { - return _C[key]; - } - }; // A contains the neighborhoods of every node - - for (var i = 0; i < V.length; i++) { - var v = V[i]; - var vid = v.id(); - - if (directed) { - A[vid] = v.outgoers().nodes(); // get outgoers of every node - } else { - A[vid] = v.openNeighborhood().nodes(); // get neighbors of every node - } - - C.set(vid, 0); - } - - var _loop = function _loop(s) { - var sid = V[s].id(); - var S = []; // stack - - var P = {}; - var g = {}; - var d = {}; - var Q = new Heap(function (a, b) { - return d[a] - d[b]; - }); // queue - // init dictionaries - - for (var _i = 0; _i < V.length; _i++) { - var _vid = V[_i].id(); - - P[_vid] = []; - g[_vid] = 0; - d[_vid] = Infinity; - } - - g[sid] = 1; // sigma - - d[sid] = 0; // distance to s - - Q.push(sid); - - while (!Q.empty()) { - var _v = Q.pop(); - - S.push(_v); - - if (weighted) { - for (var j = 0; j < A[_v].length; j++) { - var w = A[_v][j]; - var vEle = cy.getElementById(_v); - var edge = void 0; - - if (vEle.edgesTo(w).length > 0) { - edge = vEle.edgesTo(w)[0]; - } else { - edge = w.edgesTo(vEle)[0]; - } - - var edgeWeight = weight(edge); - w = w.id(); - - if (d[w] > d[_v] + edgeWeight) { - d[w] = d[_v] + edgeWeight; - - if (Q.nodes.indexOf(w) < 0) { - //if w is not in Q - Q.push(w); - } else { - // update position if w is in Q - Q.updateItem(w); - } - - g[w] = 0; - P[w] = []; - } - - if (d[w] == d[_v] + edgeWeight) { - g[w] = g[w] + g[_v]; - P[w].push(_v); - } - } - } else { - for (var _j = 0; _j < A[_v].length; _j++) { - var _w = A[_v][_j].id(); - - if (d[_w] == Infinity) { - Q.push(_w); - d[_w] = d[_v] + 1; - } - - if (d[_w] == d[_v] + 1) { - g[_w] = g[_w] + g[_v]; - - P[_w].push(_v); - } - } - } - } - - var e = {}; - - for (var _i2 = 0; _i2 < V.length; _i2++) { - e[V[_i2].id()] = 0; - } - - while (S.length > 0) { - var _w2 = S.pop(); - - for (var _j2 = 0; _j2 < P[_w2].length; _j2++) { - var _v2 = P[_w2][_j2]; - e[_v2] = e[_v2] + g[_v2] / g[_w2] * (1 + e[_w2]); - } - - if (_w2 != V[s].id()) { - C.set(_w2, C.get(_w2) + e[_w2]); - } - } - }; - - for (var s = 0; s < V.length; s++) { - _loop(s); - } - - var ret = { - betweenness: function betweenness(node) { - var id = cy.collection(node).id(); - return C.get(id); - }, - betweennessNormalized: function betweennessNormalized(node) { - if (max == 0) { - return 0; - } - - var id = cy.collection(node).id(); - return C.get(id) / max; - } - }; // alias - - ret.betweennessNormalised = ret.betweennessNormalized; - return ret; - } // betweennessCentrality - -}; // elesfn -// nice, short mathemathical alias - -elesfn$a.bc = elesfn$a.betweennessCentrality; - -// Implemented by Zoe Xi @zoexi for GSOC 2016 -/* eslint-disable no-unused-vars */ - -var defaults$4 = defaults({ - expandFactor: 2, - // affects time of computation and cluster granularity to some extent: M * M - inflateFactor: 2, - // affects cluster granularity (the greater the value, the more clusters): M(i,j) / E(j) - multFactor: 1, - // optional self loops for each node. Use a neutral value to improve cluster computations. - maxIterations: 20, - // maximum number of iterations of the MCL algorithm in a single run - attributes: [// attributes/features used to group nodes, ie. similarity values between nodes - function (edge) { - return 1; - }] -}); -/* eslint-enable */ - -var setOptions = function setOptions(options) { - return defaults$4(options); -}; -/* eslint-enable */ - - -var getSimilarity = function getSimilarity(edge, attributes) { - var total = 0; - - for (var i = 0; i < attributes.length; i++) { - total += attributes[i](edge); - } - - return total; -}; - -var addLoops = function addLoops(M, n, val) { - for (var i = 0; i < n; i++) { - M[i * n + i] = val; - } -}; - -var normalize = function normalize(M, n) { - var sum; - - for (var col = 0; col < n; col++) { - sum = 0; - - for (var row = 0; row < n; row++) { - sum += M[row * n + col]; - } - - for (var _row = 0; _row < n; _row++) { - M[_row * n + col] = M[_row * n + col] / sum; - } - } -}; // TODO: blocked matrix multiplication? - - -var mmult = function mmult(A, B, n) { - var C = new Array(n * n); - - for (var i = 0; i < n; i++) { - for (var j = 0; j < n; j++) { - C[i * n + j] = 0; - } - - for (var k = 0; k < n; k++) { - for (var _j = 0; _j < n; _j++) { - C[i * n + _j] += A[i * n + k] * B[k * n + _j]; - } - } - } - - return C; -}; - -var expand = function expand(M, n, expandFactor -/** power **/ -) { - var _M = M.slice(0); - - for (var p = 1; p < expandFactor; p++) { - M = mmult(M, _M, n); - } - - return M; -}; - -var inflate = function inflate(M, n, inflateFactor -/** r **/ -) { - var _M = new Array(n * n); // M(i,j) ^ inflatePower - - - for (var i = 0; i < n * n; i++) { - _M[i] = Math.pow(M[i], inflateFactor); - } - - normalize(_M, n); - return _M; -}; - -var hasConverged = function hasConverged(M, _M, n2, roundFactor) { - // Check that both matrices have the same elements (i,j) - for (var i = 0; i < n2; i++) { - var v1 = Math.round(M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); // truncate to 'roundFactor' decimal places - - var v2 = Math.round(_M[i] * Math.pow(10, roundFactor)) / Math.pow(10, roundFactor); - - if (v1 !== v2) { - return false; - } - } - - return true; -}; - -var assign = function assign(M, n, nodes, cy) { - var clusters = []; - - for (var i = 0; i < n; i++) { - var cluster = []; - - for (var j = 0; j < n; j++) { - // Row-wise attractors and elements that they attract belong in same cluster - if (Math.round(M[i * n + j] * 1000) / 1000 > 0) { - cluster.push(nodes[j]); - } - } - - if (cluster.length !== 0) { - clusters.push(cy.collection(cluster)); - } - } - - return clusters; -}; - -var isDuplicate = function isDuplicate(c1, c2) { - for (var i = 0; i < c1.length; i++) { - if (!c2[i] || c1[i].id() !== c2[i].id()) { - return false; - } - } - - return true; -}; - -var removeDuplicates = function removeDuplicates(clusters) { - for (var i = 0; i < clusters.length; i++) { - for (var j = 0; j < clusters.length; j++) { - if (i != j && isDuplicate(clusters[i], clusters[j])) { - clusters.splice(j, 1); - } - } - } - - return clusters; -}; - -var markovClustering = function markovClustering(options) { - var nodes = this.nodes(); - var edges = this.edges(); - var cy = this.cy(); // Set parameters of algorithm: - - var opts = setOptions(options); // Map each node to its position in node array - - var id2position = {}; - - for (var i = 0; i < nodes.length; i++) { - id2position[nodes[i].id()] = i; - } // Generate stochastic matrix M from input graph G (should be symmetric/undirected) - - - var n = nodes.length, - n2 = n * n; - - var M = new Array(n2), - _M; - - for (var _i = 0; _i < n2; _i++) { - M[_i] = 0; - } - - for (var e = 0; e < edges.length; e++) { - var edge = edges[e]; - var _i2 = id2position[edge.source().id()]; - var j = id2position[edge.target().id()]; - var sim = getSimilarity(edge, opts.attributes); - M[_i2 * n + j] += sim; // G should be symmetric and undirected - - M[j * n + _i2] += sim; - } // Begin Markov cluster algorithm - // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonal - - - addLoops(M, n, opts.multFactor); // Step 2: M = normalize( M ); - - normalize(M, n); - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - isStillMoving = false; // Step 3: - - _M = expand(M, n, opts.expandFactor); // Step 4: - - M = inflate(_M, n, opts.inflateFactor); // Step 5: check to see if ~steady state has been reached - - if (!hasConverged(M, _M, n2, 4)) { - isStillMoving = true; - } - - iterations++; - } // Build clusters from matrix - - - var clusters = assign(M, n, nodes, cy); // Remove duplicate clusters due to symmetry of graph and M matrix - - clusters = removeDuplicates(clusters); - return clusters; -}; - -var markovClustering$1 = { - markovClustering: markovClustering, - mcl: markovClustering -}; - -// Common distance metrics for clustering algorithms - -var identity = function identity(x) { - return x; -}; - -var absDiff = function absDiff(p, q) { - return Math.abs(q - p); -}; - -var addAbsDiff = function addAbsDiff(total, p, q) { - return total + absDiff(p, q); -}; - -var addSquaredDiff = function addSquaredDiff(total, p, q) { - return total + Math.pow(q - p, 2); -}; - -var sqrt = function sqrt(x) { - return Math.sqrt(x); -}; - -var maxAbsDiff = function maxAbsDiff(currentMax, p, q) { - return Math.max(currentMax, absDiff(p, q)); -}; - -var getDistance = function getDistance(length, getP, getQ, init, visit) { - var post = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : identity; - var ret = init; - var p, q; - - for (var dim = 0; dim < length; dim++) { - p = getP(dim); - q = getQ(dim); - ret = visit(ret, p, q); - } - - return post(ret); -}; - -var distances = { - euclidean: function euclidean(length, getP, getQ) { - if (length >= 2) { - return getDistance(length, getP, getQ, 0, addSquaredDiff, sqrt); - } else { - // for single attr case, more efficient to avoid sqrt - return getDistance(length, getP, getQ, 0, addAbsDiff); - } - }, - squaredEuclidean: function squaredEuclidean(length, getP, getQ) { - return getDistance(length, getP, getQ, 0, addSquaredDiff); - }, - manhattan: function manhattan(length, getP, getQ) { - return getDistance(length, getP, getQ, 0, addAbsDiff); - }, - max: function max(length, getP, getQ) { - return getDistance(length, getP, getQ, -Infinity, maxAbsDiff); - } -}; // in case the user accidentally doesn't use camel case - -distances['squared-euclidean'] = distances['squaredEuclidean']; -distances['squaredeuclidean'] = distances['squaredEuclidean']; -function clusteringDistance (method, length, getP, getQ, nodeP, nodeQ) { - var impl; - - if (fn(method)) { - impl = method; - } else { - impl = distances[method] || distances.euclidean; - } - - if (length === 0 && fn(method)) { - return impl(nodeP, nodeQ); - } else { - return impl(length, getP, getQ, nodeP, nodeQ); - } -} - -var defaults$5 = defaults({ - k: 2, - m: 2, - sensitivityThreshold: 0.0001, - distance: 'euclidean', - maxIterations: 10, - attributes: [], - testMode: false, - testCentroids: null -}); - -var setOptions$1 = function setOptions(options) { - return defaults$5(options); -}; -/* eslint-enable */ - - -var getDist = function getDist(type, node, centroid, attributes, mode) { - var noNodeP = mode !== 'kMedoids'; - var getP = noNodeP ? function (i) { - return centroid[i]; - } : function (i) { - return attributes[i](centroid); - }; - - var getQ = function getQ(i) { - return attributes[i](node); - }; - - var nodeP = centroid; - var nodeQ = node; - return clusteringDistance(type, attributes.length, getP, getQ, nodeP, nodeQ); -}; - -var randomCentroids = function randomCentroids(nodes, k, attributes) { - var ndim = attributes.length; - var min = new Array(ndim); - var max = new Array(ndim); - var centroids = new Array(k); - var centroid = null; // Find min, max values for each attribute dimension - - for (var i = 0; i < ndim; i++) { - min[i] = nodes.min(attributes[i]).value; - max[i] = nodes.max(attributes[i]).value; - } // Build k centroids, each represented as an n-dim feature vector - - - for (var c = 0; c < k; c++) { - centroid = []; - - for (var _i = 0; _i < ndim; _i++) { - centroid[_i] = Math.random() * (max[_i] - min[_i]) + min[_i]; // random initial value - } - - centroids[c] = centroid; - } - - return centroids; -}; - -var classify = function classify(node, centroids, distance, attributes, type) { - var min = Infinity; - var index = 0; - - for (var i = 0; i < centroids.length; i++) { - var dist = getDist(distance, node, centroids[i], attributes, type); - - if (dist < min) { - min = dist; - index = i; - } - } - - return index; -}; - -var buildCluster = function buildCluster(centroid, nodes, assignment) { - var cluster = []; - var node = null; - - for (var n = 0; n < nodes.length; n++) { - node = nodes[n]; - - if (assignment[node.id()] === centroid) { - //console.log("Node " + node.id() + " is associated with medoid #: " + m); - cluster.push(node); - } - } - - return cluster; -}; - -var haveValuesConverged = function haveValuesConverged(v1, v2, sensitivityThreshold) { - return Math.abs(v2 - v1) <= sensitivityThreshold; -}; - -var haveMatricesConverged = function haveMatricesConverged(v1, v2, sensitivityThreshold) { - for (var i = 0; i < v1.length; i++) { - for (var j = 0; j < v1[i].length; j++) { - var diff = Math.abs(v1[i][j] - v2[i][j]); - - if (diff > sensitivityThreshold) { - return false; - } - } - } - - return true; -}; - -var seenBefore = function seenBefore(node, medoids, n) { - for (var i = 0; i < n; i++) { - if (node === medoids[i]) return true; - } - - return false; -}; - -var randomMedoids = function randomMedoids(nodes, k) { - var medoids = new Array(k); // For small data sets, the probability of medoid conflict is greater, - // so we need to check to see if we've already seen or chose this node before. - - if (nodes.length < 50) { - // Randomly select k medoids from the n nodes - for (var i = 0; i < k; i++) { - var node = nodes[Math.floor(Math.random() * nodes.length)]; // If we've already chosen this node to be a medoid, don't choose it again (for small data sets). - // Instead choose a different random node. - - while (seenBefore(node, medoids, i)) { - node = nodes[Math.floor(Math.random() * nodes.length)]; - } - - medoids[i] = node; - } - } else { - // Relatively large data set, so pretty safe to not check and just select random nodes - for (var _i2 = 0; _i2 < k; _i2++) { - medoids[_i2] = nodes[Math.floor(Math.random() * nodes.length)]; - } - } - - return medoids; -}; - -var findCost = function findCost(potentialNewMedoid, cluster, attributes) { - var cost = 0; - - for (var n = 0; n < cluster.length; n++) { - cost += getDist('manhattan', cluster[n], potentialNewMedoid, attributes, 'kMedoids'); - } - - return cost; -}; - -var kMeans = function kMeans(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var node = null; // Set parameters of algorithm: # of clusters, distance metric, etc. - - var opts = setOptions$1(options); // Begin k-means algorithm - - var clusters = new Array(opts.k); - var assignment = {}; - var centroids; // Step 1: Initialize centroid positions - - if (opts.testMode) { - if (typeof opts.testCentroids === 'number') { - centroids = randomCentroids(nodes, opts.k, opts.attributes); - } else if (_typeof(opts.testCentroids) === 'object') { - centroids = opts.testCentroids; - } else { - centroids = randomCentroids(nodes, opts.k, opts.attributes); - } - } else { - centroids = randomCentroids(nodes, opts.k, opts.attributes); - } - - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - // Step 2: Assign nodes to the nearest centroid - for (var n = 0; n < nodes.length; n++) { - node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # - - assignment[node.id()] = classify(node, centroids, opts.distance, opts.attributes, 'kMeans'); - } // Step 3: For each of the k clusters, update its centroid - - - isStillMoving = false; - - for (var c = 0; c < opts.k; c++) { - // Get all nodes that belong to this cluster - var cluster = buildCluster(c, nodes, assignment); - - if (cluster.length === 0) { - // If cluster is empty, break out early & move to next cluster - continue; - } // Update centroids by calculating avg of all nodes within the cluster. - - - var ndim = opts.attributes.length; - var centroid = centroids[c]; // [ dim_1, dim_2, dim_3, ... , dim_n ] - - var newCentroid = new Array(ndim); - var sum = new Array(ndim); - - for (var d = 0; d < ndim; d++) { - sum[d] = 0.0; - - for (var i = 0; i < cluster.length; i++) { - node = cluster[i]; - sum[d] += opts.attributes[d](node); - } - - newCentroid[d] = sum[d] / cluster.length; // Check to see if algorithm has converged, i.e. when centroids no longer change - - if (!haveValuesConverged(newCentroid[d], centroid[d], opts.sensitivityThreshold)) { - isStillMoving = true; - } - } - - centroids[c] = newCentroid; - clusters[c] = cy.collection(cluster); - } - - iterations++; - } - - return clusters; -}; - -var kMedoids = function kMedoids(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var node = null; - var opts = setOptions$1(options); // Begin k-medoids algorithm - - var clusters = new Array(opts.k); - var medoids; - var assignment = {}; - var curCost; - var minCosts = new Array(opts.k); // minimum cost configuration for each cluster - // Step 1: Initialize k medoids - - if (opts.testMode) { - if (typeof opts.testCentroids === 'number') ; else if (_typeof(opts.testCentroids) === 'object') { - medoids = opts.testCentroids; - } else { - medoids = randomMedoids(nodes, opts.k); - } - } else { - medoids = randomMedoids(nodes, opts.k); - } - - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - // Step 2: Assign nodes to the nearest medoid - for (var n = 0; n < nodes.length; n++) { - node = nodes[n]; // Determine which cluster this node belongs to: node id => cluster # - - assignment[node.id()] = classify(node, medoids, opts.distance, opts.attributes, 'kMedoids'); - } - - isStillMoving = false; // Step 3: For each medoid m, and for each node assciated with mediod m, - // select the node with the lowest configuration cost as new medoid. - - for (var m = 0; m < medoids.length; m++) { - // Get all nodes that belong to this medoid - var cluster = buildCluster(m, nodes, assignment); - - if (cluster.length === 0) { - // If cluster is empty, break out early & move to next cluster - continue; - } - - minCosts[m] = findCost(medoids[m], cluster, opts.attributes); // original cost - // Select different medoid if its configuration has the lowest cost - - for (var _n = 0; _n < cluster.length; _n++) { - curCost = findCost(cluster[_n], cluster, opts.attributes); - - if (curCost < minCosts[m]) { - minCosts[m] = curCost; - medoids[m] = cluster[_n]; - isStillMoving = true; - } - } - - clusters[m] = cy.collection(cluster); - } - - iterations++; - } - - return clusters; -}; - -var updateCentroids = function updateCentroids(centroids, nodes, U, weight, opts) { - var numerator, denominator; - - for (var n = 0; n < nodes.length; n++) { - for (var c = 0; c < centroids.length; c++) { - weight[n][c] = Math.pow(U[n][c], opts.m); - } - } - - for (var _c = 0; _c < centroids.length; _c++) { - for (var dim = 0; dim < opts.attributes.length; dim++) { - numerator = 0; - denominator = 0; - - for (var _n2 = 0; _n2 < nodes.length; _n2++) { - numerator += weight[_n2][_c] * opts.attributes[dim](nodes[_n2]); - denominator += weight[_n2][_c]; - } - - centroids[_c][dim] = numerator / denominator; - } - } -}; - -var updateMembership = function updateMembership(U, _U, centroids, nodes, opts) { - // Save previous step - for (var i = 0; i < U.length; i++) { - _U[i] = U[i].slice(); - } - - var sum, numerator, denominator; - var pow = 2 / (opts.m - 1); - - for (var c = 0; c < centroids.length; c++) { - for (var n = 0; n < nodes.length; n++) { - sum = 0; - - for (var k = 0; k < centroids.length; k++) { - // against all other centroids - numerator = getDist(opts.distance, nodes[n], centroids[c], opts.attributes, 'cmeans'); - denominator = getDist(opts.distance, nodes[n], centroids[k], opts.attributes, 'cmeans'); - sum += Math.pow(numerator / denominator, pow); - } - - U[n][c] = 1 / sum; - } - } -}; - -var assign$1 = function assign(nodes, U, opts, cy) { - var clusters = new Array(opts.k); - - for (var c = 0; c < clusters.length; c++) { - clusters[c] = []; - } - - var max; - var index; - - for (var n = 0; n < U.length; n++) { - // for each node (U is N x C matrix) - max = -Infinity; - index = -1; // Determine which cluster the node is most likely to belong in - - for (var _c2 = 0; _c2 < U[0].length; _c2++) { - if (U[n][_c2] > max) { - max = U[n][_c2]; - index = _c2; - } - } - - clusters[index].push(nodes[n]); - } // Turn every array into a collection of nodes - - - for (var _c3 = 0; _c3 < clusters.length; _c3++) { - clusters[_c3] = cy.collection(clusters[_c3]); - } - - return clusters; -}; - -var fuzzyCMeans = function fuzzyCMeans(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var opts = setOptions$1(options); // Begin fuzzy c-means algorithm - - var clusters; - var centroids; - var U; - - var _U; - - var weight; // Step 1: Initialize letiables. - - _U = new Array(nodes.length); - - for (var i = 0; i < nodes.length; i++) { - // N x C matrix - _U[i] = new Array(opts.k); - } - - U = new Array(nodes.length); - - for (var _i3 = 0; _i3 < nodes.length; _i3++) { - // N x C matrix - U[_i3] = new Array(opts.k); - } - - for (var _i4 = 0; _i4 < nodes.length; _i4++) { - var total = 0; - - for (var j = 0; j < opts.k; j++) { - U[_i4][j] = Math.random(); - total += U[_i4][j]; - } - - for (var _j = 0; _j < opts.k; _j++) { - U[_i4][_j] = U[_i4][_j] / total; - } - } - - centroids = new Array(opts.k); - - for (var _i5 = 0; _i5 < opts.k; _i5++) { - centroids[_i5] = new Array(opts.attributes.length); - } - - weight = new Array(nodes.length); - - for (var _i6 = 0; _i6 < nodes.length; _i6++) { - // N x C matrix - weight[_i6] = new Array(opts.k); - } // end init FCM - - - var isStillMoving = true; - var iterations = 0; - - while (isStillMoving && iterations < opts.maxIterations) { - isStillMoving = false; // Step 2: Calculate the centroids for each step. - - updateCentroids(centroids, nodes, U, weight, opts); // Step 3: Update the partition matrix U. - - updateMembership(U, _U, centroids, nodes, opts); // Step 4: Check for convergence. - - if (!haveMatricesConverged(U, _U, opts.sensitivityThreshold)) { - isStillMoving = true; - } - - iterations++; - } // Assign nodes to clusters with highest probability. - - - clusters = assign$1(nodes, U, opts, cy); - return { - clusters: clusters, - degreeOfMembership: U - }; -}; - -var kClustering = { - kMeans: kMeans, - kMedoids: kMedoids, - fuzzyCMeans: fuzzyCMeans, - fcm: fuzzyCMeans -}; - -// Implemented by Zoe Xi @zoexi for GSOC 2016 -var defaults$6 = defaults({ - distance: 'euclidean', - // distance metric to compare nodes - linkage: 'min', - // linkage criterion : how to determine the distance between clusters of nodes - mode: 'threshold', - // mode:'threshold' => clusters must be threshold distance apart - threshold: Infinity, - // the distance threshold - // mode:'dendrogram' => the nodes are organised as leaves in a tree (siblings are close), merging makes clusters - addDendrogram: false, - // whether to add the dendrogram to the graph for viz - dendrogramDepth: 0, - // depth at which dendrogram branches are merged into the returned clusters - attributes: [] // array of attr functions - -}); -var linkageAliases = { - 'single': 'min', - 'complete': 'max' -}; - -var setOptions$2 = function setOptions(options) { - var opts = defaults$6(options); - var preferredAlias = linkageAliases[opts.linkage]; - - if (preferredAlias != null) { - opts.linkage = preferredAlias; - } - - return opts; -}; - -var mergeClosest = function mergeClosest(clusters, index, dists, mins, opts) { - // Find two closest clusters from cached mins - var minKey = 0; - var min = Infinity; - var dist; - var attrs = opts.attributes; - - var getDist = function getDist(n1, n2) { - return clusteringDistance(opts.distance, attrs.length, function (i) { - return attrs[i](n1); - }, function (i) { - return attrs[i](n2); - }, n1, n2); - }; - - for (var i = 0; i < clusters.length; i++) { - var key = clusters[i].key; - var _dist = dists[key][mins[key]]; - - if (_dist < min) { - minKey = key; - min = _dist; - } - } - - if (opts.mode === 'threshold' && min >= opts.threshold || opts.mode === 'dendrogram' && clusters.length === 1) { - return false; - } - - var c1 = index[minKey]; - var c2 = index[mins[minKey]]; - var merged; // Merge two closest clusters - - if (opts.mode === 'dendrogram') { - merged = { - left: c1, - right: c2, - key: c1.key - }; - } else { - merged = { - value: c1.value.concat(c2.value), - key: c1.key - }; - } - - clusters[c1.index] = merged; - clusters.splice(c2.index, 1); - index[c1.key] = merged; // Update distances with new merged cluster - - for (var _i = 0; _i < clusters.length; _i++) { - var cur = clusters[_i]; - - if (c1.key === cur.key) { - dist = Infinity; - } else if (opts.linkage === 'min') { - dist = dists[c1.key][cur.key]; - - if (dists[c1.key][cur.key] > dists[c2.key][cur.key]) { - dist = dists[c2.key][cur.key]; - } - } else if (opts.linkage === 'max') { - dist = dists[c1.key][cur.key]; - - if (dists[c1.key][cur.key] < dists[c2.key][cur.key]) { - dist = dists[c2.key][cur.key]; - } - } else if (opts.linkage === 'mean') { - dist = (dists[c1.key][cur.key] * c1.size + dists[c2.key][cur.key] * c2.size) / (c1.size + c2.size); - } else { - if (opts.mode === 'dendrogram') dist = getDist(cur.value, c1.value);else dist = getDist(cur.value[0], c1.value[0]); - } - - dists[c1.key][cur.key] = dists[cur.key][c1.key] = dist; // distance matrix is symmetric - } // Update cached mins - - - for (var _i2 = 0; _i2 < clusters.length; _i2++) { - var key1 = clusters[_i2].key; - - if (mins[key1] === c1.key || mins[key1] === c2.key) { - var _min = key1; - - for (var j = 0; j < clusters.length; j++) { - var key2 = clusters[j].key; - - if (dists[key1][key2] < dists[key1][_min]) { - _min = key2; - } - } - - mins[key1] = _min; - } - - clusters[_i2].index = _i2; - } // Clean up meta data used for clustering - - - c1.key = c2.key = c1.index = c2.index = null; - return true; -}; - -var getAllChildren = function getAllChildren(root, arr, cy) { - if (!root) return; - - if (root.value) { - arr.push(root.value); - } else { - if (root.left) getAllChildren(root.left, arr); - if (root.right) getAllChildren(root.right, arr); - } -}; - -var buildDendrogram = function buildDendrogram(root, cy) { - if (!root) return ''; - - if (root.left && root.right) { - var leftStr = buildDendrogram(root.left, cy); - var rightStr = buildDendrogram(root.right, cy); - var node = cy.add({ - group: 'nodes', - data: { - id: leftStr + ',' + rightStr - } - }); - cy.add({ - group: 'edges', - data: { - source: leftStr, - target: node.id() - } - }); - cy.add({ - group: 'edges', - data: { - source: rightStr, - target: node.id() - } - }); - return node.id(); - } else if (root.value) { - return root.value.id(); - } -}; - -var buildClustersFromTree = function buildClustersFromTree(root, k, cy) { - if (!root) return []; - var left = [], - right = [], - leaves = []; - - if (k === 0) { - // don't cut tree, simply return all nodes as 1 single cluster - if (root.left) getAllChildren(root.left, left); - if (root.right) getAllChildren(root.right, right); - leaves = left.concat(right); - return [cy.collection(leaves)]; - } else if (k === 1) { - // cut at root - if (root.value) { - // leaf node - return [cy.collection(root.value)]; - } else { - if (root.left) getAllChildren(root.left, left); - if (root.right) getAllChildren(root.right, right); - return [cy.collection(left), cy.collection(right)]; - } - } else { - if (root.value) { - return [cy.collection(root.value)]; - } else { - if (root.left) left = buildClustersFromTree(root.left, k - 1, cy); - if (root.right) right = buildClustersFromTree(root.right, k - 1, cy); - return left.concat(right); - } - } -}; -/* eslint-enable */ - - -var hierarchicalClustering = function hierarchicalClustering(options) { - var cy = this.cy(); - var nodes = this.nodes(); // Set parameters of algorithm: linkage type, distance metric, etc. - - var opts = setOptions$2(options); - var attrs = opts.attributes; - - var getDist = function getDist(n1, n2) { - return clusteringDistance(opts.distance, attrs.length, function (i) { - return attrs[i](n1); - }, function (i) { - return attrs[i](n2); - }, n1, n2); - }; // Begin hierarchical algorithm - - - var clusters = []; - var dists = []; // distances between each pair of clusters - - var mins = []; // closest cluster for each cluster - - var index = []; // hash of all clusters by key - // In agglomerative (bottom-up) clustering, each node starts as its own cluster - - for (var n = 0; n < nodes.length; n++) { - var cluster = { - value: opts.mode === 'dendrogram' ? nodes[n] : [nodes[n]], - key: n, - index: n - }; - clusters[n] = cluster; - index[n] = cluster; - dists[n] = []; - mins[n] = 0; - } // Calculate the distance between each pair of clusters - - - for (var i = 0; i < clusters.length; i++) { - for (var j = 0; j <= i; j++) { - var dist = void 0; - - if (opts.mode === 'dendrogram') { - // modes store cluster values differently - dist = i === j ? Infinity : getDist(clusters[i].value, clusters[j].value); - } else { - dist = i === j ? Infinity : getDist(clusters[i].value[0], clusters[j].value[0]); - } - - dists[i][j] = dist; - dists[j][i] = dist; - - if (dist < dists[i][mins[i]]) { - mins[i] = j; // Cache mins: closest cluster to cluster i is cluster j - } - } - } // Find the closest pair of clusters and merge them into a single cluster. - // Update distances between new cluster and each of the old clusters, and loop until threshold reached. - - - var merged = mergeClosest(clusters, index, dists, mins, opts); - - while (merged) { - merged = mergeClosest(clusters, index, dists, mins, opts); - } - - var retClusters; // Dendrogram mode builds the hierarchy and adds intermediary nodes + edges - // in addition to returning the clusters. - - if (opts.mode === 'dendrogram') { - retClusters = buildClustersFromTree(clusters[0], opts.dendrogramDepth, cy); - if (opts.addDendrogram) buildDendrogram(clusters[0], cy); - } else { - // Regular mode simply returns the clusters - retClusters = new Array(clusters.length); - clusters.forEach(function (cluster, i) { - // Clean up meta data used for clustering - cluster.key = cluster.index = null; - retClusters[i] = cy.collection(cluster.value); - }); - } - - return retClusters; -}; - -var hierarchicalClustering$1 = { - hierarchicalClustering: hierarchicalClustering, - hca: hierarchicalClustering -}; - -// Implemented by Zoe Xi @zoexi for GSOC 2016 -var defaults$7 = defaults({ - distance: 'euclidean', - // distance metric to compare attributes between two nodes - preference: 'median', - // suitability of a data point to serve as an exemplar - damping: 0.8, - // damping factor between [0.5, 1) - maxIterations: 1000, - // max number of iterations to run - minIterations: 100, - // min number of iterations to run in order for clustering to stop - attributes: [// functions to quantify the similarity between any two points - // e.g. node => node.data('weight') - ] -}); - -var setOptions$3 = function setOptions(options) { - var dmp = options.damping; - var pref = options.preference; - - if (!(0.5 <= dmp && dmp < 1)) { - error("Damping must range on [0.5, 1). Got: ".concat(dmp)); - } - - var validPrefs = ['median', 'mean', 'min', 'max']; - - if (!(validPrefs.some(function (v) { - return v === pref; - }) || number(pref))) { - error("Preference must be one of [".concat(validPrefs.map(function (p) { - return "'".concat(p, "'"); - }).join(', '), "] or a number. Got: ").concat(pref)); - } - - return defaults$7(options); -}; -/* eslint-enable */ - - -var getSimilarity$1 = function getSimilarity(type, n1, n2, attributes) { - var attr = function attr(n, i) { - return attributes[i](n); - }; // nb negative because similarity should have an inverse relationship to distance - - - return -clusteringDistance(type, attributes.length, function (i) { - return attr(n1, i); - }, function (i) { - return attr(n2, i); - }, n1, n2); -}; - -var getPreference = function getPreference(S, preference) { - // larger preference = greater # of clusters - var p = null; - - if (preference === 'median') { - p = median(S); - } else if (preference === 'mean') { - p = mean(S); - } else if (preference === 'min') { - p = min(S); - } else if (preference === 'max') { - p = max(S); - } else { - // Custom preference number, as set by user - p = preference; - } - - return p; -}; - -var findExemplars = function findExemplars(n, R, A) { - var indices = []; - - for (var i = 0; i < n; i++) { - if (R[i * n + i] + A[i * n + i] > 0) { - indices.push(i); - } - } - - return indices; -}; - -var assignClusters = function assignClusters(n, S, exemplars) { - var clusters = []; - - for (var i = 0; i < n; i++) { - var index = -1; - var max = -Infinity; - - for (var ei = 0; ei < exemplars.length; ei++) { - var e = exemplars[ei]; - - if (S[i * n + e] > max) { - index = e; - max = S[i * n + e]; - } - } - - if (index > 0) { - clusters.push(index); - } - } - - for (var _ei = 0; _ei < exemplars.length; _ei++) { - clusters[exemplars[_ei]] = exemplars[_ei]; - } - - return clusters; -}; - -var assign$2 = function assign(n, S, exemplars) { - var clusters = assignClusters(n, S, exemplars); - - for (var ei = 0; ei < exemplars.length; ei++) { - var ii = []; - - for (var c = 0; c < clusters.length; c++) { - if (clusters[c] === exemplars[ei]) { - ii.push(c); - } - } - - var maxI = -1; - var maxSum = -Infinity; - - for (var i = 0; i < ii.length; i++) { - var sum = 0; - - for (var j = 0; j < ii.length; j++) { - sum += S[ii[j] * n + ii[i]]; - } - - if (sum > maxSum) { - maxI = i; - maxSum = sum; - } - } - - exemplars[ei] = ii[maxI]; - } - - clusters = assignClusters(n, S, exemplars); - return clusters; -}; - -var affinityPropagation = function affinityPropagation(options) { - var cy = this.cy(); - var nodes = this.nodes(); - var opts = setOptions$3(options); // Map each node to its position in node array - - var id2position = {}; - - for (var i = 0; i < nodes.length; i++) { - id2position[nodes[i].id()] = i; - } // Begin affinity propagation algorithm - - - var n; // number of data points - - var n2; // size of matrices - - var S; // similarity matrix (1D array) - - var p; // preference/suitability of a data point to serve as an exemplar - - var R; // responsibility matrix (1D array) - - var A; // availability matrix (1D array) - - n = nodes.length; - n2 = n * n; // Initialize and build S similarity matrix - - S = new Array(n2); - - for (var _i = 0; _i < n2; _i++) { - S[_i] = -Infinity; // for cases where two data points shouldn't be linked together - } - - for (var _i2 = 0; _i2 < n; _i2++) { - for (var j = 0; j < n; j++) { - if (_i2 !== j) { - S[_i2 * n + j] = getSimilarity$1(opts.distance, nodes[_i2], nodes[j], opts.attributes); - } - } - } // Place preferences on the diagonal of S - - - p = getPreference(S, opts.preference); - - for (var _i3 = 0; _i3 < n; _i3++) { - S[_i3 * n + _i3] = p; - } // Initialize R responsibility matrix - - - R = new Array(n2); - - for (var _i4 = 0; _i4 < n2; _i4++) { - R[_i4] = 0.0; - } // Initialize A availability matrix - - - A = new Array(n2); - - for (var _i5 = 0; _i5 < n2; _i5++) { - A[_i5] = 0.0; - } - - var old = new Array(n); - var Rp = new Array(n); - var se = new Array(n); - - for (var _i6 = 0; _i6 < n; _i6++) { - old[_i6] = 0.0; - Rp[_i6] = 0.0; - se[_i6] = 0; - } - - var e = new Array(n * opts.minIterations); - - for (var _i7 = 0; _i7 < e.length; _i7++) { - e[_i7] = 0; - } - - var iter; - - for (iter = 0; iter < opts.maxIterations; iter++) { - // main algorithmic loop - // Update R responsibility matrix - for (var _i8 = 0; _i8 < n; _i8++) { - var max = -Infinity, - max2 = -Infinity, - maxI = -1, - AS = 0.0; - - for (var _j = 0; _j < n; _j++) { - old[_j] = R[_i8 * n + _j]; - AS = A[_i8 * n + _j] + S[_i8 * n + _j]; - - if (AS >= max) { - max2 = max; - max = AS; - maxI = _j; - } else if (AS > max2) { - max2 = AS; - } - } - - for (var _j2 = 0; _j2 < n; _j2++) { - R[_i8 * n + _j2] = (1 - opts.damping) * (S[_i8 * n + _j2] - max) + opts.damping * old[_j2]; - } - - R[_i8 * n + maxI] = (1 - opts.damping) * (S[_i8 * n + maxI] - max2) + opts.damping * old[maxI]; - } // Update A availability matrix - - - for (var _i9 = 0; _i9 < n; _i9++) { - var sum = 0; - - for (var _j3 = 0; _j3 < n; _j3++) { - old[_j3] = A[_j3 * n + _i9]; - Rp[_j3] = Math.max(0, R[_j3 * n + _i9]); - sum += Rp[_j3]; - } - - sum -= Rp[_i9]; - Rp[_i9] = R[_i9 * n + _i9]; - sum += Rp[_i9]; - - for (var _j4 = 0; _j4 < n; _j4++) { - A[_j4 * n + _i9] = (1 - opts.damping) * Math.min(0, sum - Rp[_j4]) + opts.damping * old[_j4]; - } - - A[_i9 * n + _i9] = (1 - opts.damping) * (sum - Rp[_i9]) + opts.damping * old[_i9]; - } // Check for convergence - - - var K = 0; - - for (var _i10 = 0; _i10 < n; _i10++) { - var E = A[_i10 * n + _i10] + R[_i10 * n + _i10] > 0 ? 1 : 0; - e[iter % opts.minIterations * n + _i10] = E; - K += E; - } - - if (K > 0 && (iter >= opts.minIterations - 1 || iter == opts.maxIterations - 1)) { - var _sum = 0; - - for (var _i11 = 0; _i11 < n; _i11++) { - se[_i11] = 0; - - for (var _j5 = 0; _j5 < opts.minIterations; _j5++) { - se[_i11] += e[_j5 * n + _i11]; - } - - if (se[_i11] === 0 || se[_i11] === opts.minIterations) { - _sum++; - } - } - - if (_sum === n) { - // then we have convergence - break; - } - } - } // Identify exemplars (cluster centers) - - - var exemplarsIndices = findExemplars(n, R, A); // Assign nodes to clusters - - var clusterIndices = assign$2(n, S, exemplarsIndices); - var clusters = {}; - - for (var c = 0; c < exemplarsIndices.length; c++) { - clusters[exemplarsIndices[c]] = []; - } - - for (var _i12 = 0; _i12 < nodes.length; _i12++) { - var pos = id2position[nodes[_i12].id()]; - - var clusterIndex = clusterIndices[pos]; - - if (clusterIndex != null) { - // the node may have not been assigned a cluster if no valid attributes were specified - clusters[clusterIndex].push(nodes[_i12]); - } - } - - var retClusters = new Array(exemplarsIndices.length); - - for (var _c = 0; _c < exemplarsIndices.length; _c++) { - retClusters[_c] = cy.collection(clusters[exemplarsIndices[_c]]); - } - - return retClusters; -}; - -var affinityPropagation$1 = { - affinityPropagation: affinityPropagation, - ap: affinityPropagation -}; - -var hierholzerDefaults = defaults({ - root: undefined, - directed: false -}); -var elesfn$b = { - hierholzer: function hierholzer(options) { - if (!plainObject(options)) { - var args = arguments; - options = { - root: args[0], - directed: args[1] - }; - } - - var _hierholzerDefaults = hierholzerDefaults(options), - root = _hierholzerDefaults.root, - directed = _hierholzerDefaults.directed; - - var eles = this; - var dflag = false; - var oddIn; - var oddOut; - var startVertex; - if (root) startVertex = string(root) ? this.filter(root)[0].id() : root[0].id(); - var nodes = {}; - var edges = {}; - - if (directed) { - eles.forEach(function (ele) { - var id = ele.id(); - - if (ele.isNode()) { - var ind = ele.indegree(true); - var outd = ele.outdegree(true); - var d1 = ind - outd; - var d2 = outd - ind; - - if (d1 == 1) { - if (oddIn) dflag = true;else oddIn = id; - } else if (d2 == 1) { - if (oddOut) dflag = true;else oddOut = id; - } else if (d2 > 1 || d1 > 1) { - dflag = true; - } - - nodes[id] = []; - ele.outgoers().forEach(function (e) { - if (e.isEdge()) nodes[id].push(e.id()); - }); - } else { - edges[id] = [undefined, ele.target().id()]; - } - }); - } else { - eles.forEach(function (ele) { - var id = ele.id(); - - if (ele.isNode()) { - var d = ele.degree(true); - - if (d % 2) { - if (!oddIn) oddIn = id;else if (!oddOut) oddOut = id;else dflag = true; - } - - nodes[id] = []; - ele.connectedEdges().forEach(function (e) { - return nodes[id].push(e.id()); - }); - } else { - edges[id] = [ele.source().id(), ele.target().id()]; - } - }); - } - - var result = { - found: false, - trail: undefined - }; - if (dflag) return result;else if (oddOut && oddIn) { - if (directed) { - if (startVertex && oddOut != startVertex) { - return result; - } - - startVertex = oddOut; - } else { - if (startVertex && oddOut != startVertex && oddIn != startVertex) { - return result; - } else if (!startVertex) { - startVertex = oddOut; - } - } - } else { - if (!startVertex) startVertex = eles[0].id(); - } - - var walk = function walk(v) { - var currentNode = v; - var subtour = [v]; - var adj, adjTail, adjHead; - - while (nodes[currentNode].length) { - adj = nodes[currentNode].shift(); - adjTail = edges[adj][0]; - adjHead = edges[adj][1]; - - if (currentNode != adjHead) { - nodes[adjHead] = nodes[adjHead].filter(function (e) { - return e != adj; - }); - currentNode = adjHead; - } else if (!directed && currentNode != adjTail) { - nodes[adjTail] = nodes[adjTail].filter(function (e) { - return e != adj; - }); - currentNode = adjTail; - } - - subtour.unshift(adj); - subtour.unshift(currentNode); - } - - return subtour; - }; - - var trail = []; - var subtour = []; - subtour = walk(startVertex); - - while (subtour.length != 1) { - if (nodes[subtour[0]].length == 0) { - trail.unshift(eles.getElementById(subtour.shift())); - trail.unshift(eles.getElementById(subtour.shift())); - } else { - subtour = walk(subtour.shift()).concat(subtour); - } - } - - trail.unshift(eles.getElementById(subtour.shift())); // final node - - for (var d in nodes) { - if (nodes[d].length) { - return result; - } - } - - result.found = true; - result.trail = this.spawn(trail, true); - return result; - } -}; - -var hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() { - var eles = this; - var nodes = {}; - var id = 0; - var edgeCount = 0; - var components = []; - var stack = []; - var visitedEdges = {}; - - var buildComponent = function buildComponent(x, y) { - var i = stack.length - 1; - var cutset = []; - var component = eles.spawn(); - - while (stack[i].x != x || stack[i].y != y) { - cutset.push(stack.pop().edge); - i--; - } - - cutset.push(stack.pop().edge); - cutset.forEach(function (edge) { - var connectedNodes = edge.connectedNodes().intersection(eles); - component.merge(edge); - connectedNodes.forEach(function (node) { - var nodeId = node.id(); - var connectedEdges = node.connectedEdges().intersection(eles); - component.merge(node); - - if (!nodes[nodeId].cutVertex) { - component.merge(connectedEdges); - } else { - component.merge(connectedEdges.filter(function (edge) { - return edge.isLoop(); - })); - } - }); - }); - components.push(component); - }; - - var biconnectedSearch = function biconnectedSearch(root, currentNode, parent) { - if (root === parent) edgeCount += 1; - nodes[currentNode] = { - id: id, - low: id++, - cutVertex: false - }; - var edges = eles.getElementById(currentNode).connectedEdges().intersection(eles); - - if (edges.size() === 0) { - components.push(eles.spawn(eles.getElementById(currentNode))); - } else { - var sourceId, targetId, otherNodeId, edgeId; - edges.forEach(function (edge) { - sourceId = edge.source().id(); - targetId = edge.target().id(); - otherNodeId = sourceId === currentNode ? targetId : sourceId; - - if (otherNodeId !== parent) { - edgeId = edge.id(); - - if (!visitedEdges[edgeId]) { - visitedEdges[edgeId] = true; - stack.push({ - x: currentNode, - y: otherNodeId, - edge: edge - }); - } - - if (!(otherNodeId in nodes)) { - biconnectedSearch(root, otherNodeId, currentNode); - nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].low); - - if (nodes[currentNode].id <= nodes[otherNodeId].low) { - nodes[currentNode].cutVertex = true; - buildComponent(currentNode, otherNodeId); - } - } else { - nodes[currentNode].low = Math.min(nodes[currentNode].low, nodes[otherNodeId].id); - } - } - }); - } - }; - - eles.forEach(function (ele) { - if (ele.isNode()) { - var nodeId = ele.id(); - - if (!(nodeId in nodes)) { - edgeCount = 0; - biconnectedSearch(nodeId, nodeId); - nodes[nodeId].cutVertex = edgeCount > 1; - } - } - }); - var cutVertices = Object.keys(nodes).filter(function (id) { - return nodes[id].cutVertex; - }).map(function (id) { - return eles.getElementById(id); - }); - return { - cut: eles.spawn(cutVertices), - components: components - }; -}; - -var hopcroftTarjanBiconnected$1 = { - hopcroftTarjanBiconnected: hopcroftTarjanBiconnected, - htbc: hopcroftTarjanBiconnected, - htb: hopcroftTarjanBiconnected, - hopcroftTarjanBiconnectedComponents: hopcroftTarjanBiconnected -}; - -var tarjanStronglyConnected = function tarjanStronglyConnected() { - var eles = this; - var nodes = {}; - var index = 0; - var components = []; - var stack = []; - var cut = eles.spawn(eles); - - var stronglyConnectedSearch = function stronglyConnectedSearch(sourceNodeId) { - stack.push(sourceNodeId); - nodes[sourceNodeId] = { - index: index, - low: index++, - explored: false - }; - var connectedEdges = eles.getElementById(sourceNodeId).connectedEdges().intersection(eles); - connectedEdges.forEach(function (edge) { - var targetNodeId = edge.target().id(); - - if (targetNodeId !== sourceNodeId) { - if (!(targetNodeId in nodes)) { - stronglyConnectedSearch(targetNodeId); - } - - if (!nodes[targetNodeId].explored) { - nodes[sourceNodeId].low = Math.min(nodes[sourceNodeId].low, nodes[targetNodeId].low); - } - } - }); - - if (nodes[sourceNodeId].index === nodes[sourceNodeId].low) { - var componentNodes = eles.spawn(); - - for (;;) { - var nodeId = stack.pop(); - componentNodes.merge(eles.getElementById(nodeId)); - nodes[nodeId].low = nodes[sourceNodeId].index; - nodes[nodeId].explored = true; - - if (nodeId === sourceNodeId) { - break; - } - } - - var componentEdges = componentNodes.edgesWith(componentNodes); - var component = componentNodes.merge(componentEdges); - components.push(component); - cut = cut.difference(component); - } - }; - - eles.forEach(function (ele) { - if (ele.isNode()) { - var nodeId = ele.id(); - - if (!(nodeId in nodes)) { - stronglyConnectedSearch(nodeId); - } - } - }); - return { - cut: cut, - components: components - }; -}; - -var tarjanStronglyConnected$1 = { - tarjanStronglyConnected: tarjanStronglyConnected, - tsc: tarjanStronglyConnected, - tscc: tarjanStronglyConnected, - tarjanStronglyConnectedComponents: tarjanStronglyConnected -}; - -var elesfn$c = {}; -[elesfn, elesfn$1, elesfn$2, elesfn$3, elesfn$4, elesfn$5, elesfn$6, elesfn$7, elesfn$8, elesfn$9, elesfn$a, markovClustering$1, kClustering, hierarchicalClustering$1, affinityPropagation$1, elesfn$b, hopcroftTarjanBiconnected$1, tarjanStronglyConnected$1].forEach(function (props) { - extend(elesfn$c, props); -}); - -/*! -Embeddable Minimum Strictly-Compliant Promises/A+ 1.1.1 Thenable -Copyright (c) 2013-2014 Ralf S. Engelschall (http://engelschall.com) -Licensed under The MIT License (http://opensource.org/licenses/MIT) -*/ - -/* promise states [Promises/A+ 2.1] */ -var STATE_PENDING = 0; -/* [Promises/A+ 2.1.1] */ - -var STATE_FULFILLED = 1; -/* [Promises/A+ 2.1.2] */ - -var STATE_REJECTED = 2; -/* [Promises/A+ 2.1.3] */ - -/* promise object constructor */ - -var api = function api(executor) { - /* optionally support non-constructor/plain-function call */ - if (!(this instanceof api)) return new api(executor); - /* initialize object */ - - this.id = 'Thenable/1.0.7'; - this.state = STATE_PENDING; - /* initial state */ - - this.fulfillValue = undefined; - /* initial value */ - - /* [Promises/A+ 1.3, 2.1.2.2] */ - - this.rejectReason = undefined; - /* initial reason */ - - /* [Promises/A+ 1.5, 2.1.3.2] */ - - this.onFulfilled = []; - /* initial handlers */ - - this.onRejected = []; - /* initial handlers */ - - /* provide optional information-hiding proxy */ - - this.proxy = { - then: this.then.bind(this) - }; - /* support optional executor function */ - - if (typeof executor === 'function') executor.call(this, this.fulfill.bind(this), this.reject.bind(this)); -}; -/* promise API methods */ - - -api.prototype = { - /* promise resolving methods */ - fulfill: function fulfill(value) { - return deliver(this, STATE_FULFILLED, 'fulfillValue', value); - }, - reject: function reject(value) { - return deliver(this, STATE_REJECTED, 'rejectReason', value); - }, - - /* "The then Method" [Promises/A+ 1.1, 1.2, 2.2] */ - then: function then(onFulfilled, onRejected) { - var curr = this; - var next = new api(); - /* [Promises/A+ 2.2.7] */ - - curr.onFulfilled.push(resolver(onFulfilled, next, 'fulfill')); - /* [Promises/A+ 2.2.2/2.2.6] */ - - curr.onRejected.push(resolver(onRejected, next, 'reject')); - /* [Promises/A+ 2.2.3/2.2.6] */ - - execute(curr); - return next.proxy; - /* [Promises/A+ 2.2.7, 3.3] */ - } -}; -/* deliver an action */ - -var deliver = function deliver(curr, state, name, value) { - if (curr.state === STATE_PENDING) { - curr.state = state; - /* [Promises/A+ 2.1.2.1, 2.1.3.1] */ - - curr[name] = value; - /* [Promises/A+ 2.1.2.2, 2.1.3.2] */ - - execute(curr); - } - - return curr; -}; -/* execute all handlers */ - - -var execute = function execute(curr) { - if (curr.state === STATE_FULFILLED) execute_handlers(curr, 'onFulfilled', curr.fulfillValue);else if (curr.state === STATE_REJECTED) execute_handlers(curr, 'onRejected', curr.rejectReason); -}; -/* execute particular set of handlers */ - - -var execute_handlers = function execute_handlers(curr, name, value) { - /* global setImmediate: true */ - - /* global setTimeout: true */ - - /* short-circuit processing */ - if (curr[name].length === 0) return; - /* iterate over all handlers, exactly once */ - - var handlers = curr[name]; - curr[name] = []; - /* [Promises/A+ 2.2.2.3, 2.2.3.3] */ - - var func = function func() { - for (var i = 0; i < handlers.length; i++) { - handlers[i](value); - } - /* [Promises/A+ 2.2.5] */ - - }; - /* execute procedure asynchronously */ - - /* [Promises/A+ 2.2.4, 3.1] */ - - - if (typeof setImmediate === 'function') setImmediate(func);else setTimeout(func, 0); -}; -/* generate a resolver function */ - - -var resolver = function resolver(cb, next, method) { - return function (value) { - if (typeof cb !== 'function') - /* [Promises/A+ 2.2.1, 2.2.7.3, 2.2.7.4] */ - next[method].call(next, value); - /* [Promises/A+ 2.2.7.3, 2.2.7.4] */ - else { - var result; - - try { - result = cb(value); - } - /* [Promises/A+ 2.2.2.1, 2.2.3.1, 2.2.5, 3.2] */ - catch (e) { - next.reject(e); - /* [Promises/A+ 2.2.7.2] */ - - return; - } - - resolve(next, result); - /* [Promises/A+ 2.2.7.1] */ - } - }; -}; -/* "Promise Resolution Procedure" */ - -/* [Promises/A+ 2.3] */ - - -var resolve = function resolve(promise, x) { - /* sanity check arguments */ - - /* [Promises/A+ 2.3.1] */ - if (promise === x || promise.proxy === x) { - promise.reject(new TypeError('cannot resolve promise with itself')); - return; - } - /* surgically check for a "then" method - (mainly to just call the "getter" of "then" only once) */ - - - var then; - - if (_typeof(x) === 'object' && x !== null || typeof x === 'function') { - try { - then = x.then; - } - /* [Promises/A+ 2.3.3.1, 3.5] */ - catch (e) { - promise.reject(e); - /* [Promises/A+ 2.3.3.2] */ - - return; - } - } - /* handle own Thenables [Promises/A+ 2.3.2] - and similar "thenables" [Promises/A+ 2.3.3] */ - - - if (typeof then === 'function') { - var resolved = false; - - try { - /* call retrieved "then" method */ - - /* [Promises/A+ 2.3.3.3] */ - then.call(x, - /* resolvePromise */ - - /* [Promises/A+ 2.3.3.3.1] */ - function (y) { - if (resolved) return; - resolved = true; - /* [Promises/A+ 2.3.3.3.3] */ - - if (y === x) - /* [Promises/A+ 3.6] */ - promise.reject(new TypeError('circular thenable chain'));else resolve(promise, y); - }, - /* rejectPromise */ - - /* [Promises/A+ 2.3.3.3.2] */ - function (r) { - if (resolved) return; - resolved = true; - /* [Promises/A+ 2.3.3.3.3] */ - - promise.reject(r); - }); - } catch (e) { - if (!resolved) - /* [Promises/A+ 2.3.3.3.3] */ - promise.reject(e); - /* [Promises/A+ 2.3.3.3.4] */ - } - - return; - } - /* handle other values */ - - - promise.fulfill(x); - /* [Promises/A+ 2.3.4, 2.3.3.4] */ -}; // so we always have Promise.all() - - -api.all = function (ps) { - return new api(function (resolveAll, rejectAll) { - var vals = new Array(ps.length); - var doneCount = 0; - - var fulfill = function fulfill(i, val) { - vals[i] = val; - doneCount++; - - if (doneCount === ps.length) { - resolveAll(vals); - } - }; - - for (var i = 0; i < ps.length; i++) { - (function (i) { - var p = ps[i]; - var isPromise = p != null && p.then != null; - - if (isPromise) { - p.then(function (val) { - fulfill(i, val); - }, function (err) { - rejectAll(err); - }); - } else { - var val = p; - fulfill(i, val); - } - })(i); - } - }); -}; - -api.resolve = function (val) { - return new api(function (resolve, reject) { - resolve(val); - }); -}; - -api.reject = function (val) { - return new api(function (resolve, reject) { - reject(val); - }); -}; - -var Promise$1 = typeof Promise !== 'undefined' ? Promise : api; // eslint-disable-line no-undef - -var Animation = function Animation(target, opts, opts2) { - var isCore = core(target); - var isEle = !isCore; - - var _p = this._private = extend({ - duration: 1000 - }, opts, opts2); - - _p.target = target; - _p.style = _p.style || _p.css; - _p.started = false; - _p.playing = false; - _p.hooked = false; - _p.applying = false; - _p.progress = 0; - _p.completes = []; - _p.frames = []; - - if (_p.complete && fn(_p.complete)) { - _p.completes.push(_p.complete); - } - - if (isEle) { - var pos = target.position(); - _p.startPosition = _p.startPosition || { - x: pos.x, - y: pos.y - }; - _p.startStyle = _p.startStyle || target.cy().style().getAnimationStartStyle(target, _p.style); - } - - if (isCore) { - var pan = target.pan(); - _p.startPan = { - x: pan.x, - y: pan.y - }; - _p.startZoom = target.zoom(); - } // for future timeline/animations impl - - - this.length = 1; - this[0] = this; -}; - -var anifn = Animation.prototype; -extend(anifn, { - instanceString: function instanceString() { - return 'animation'; - }, - hook: function hook() { - var _p = this._private; - - if (!_p.hooked) { - // add to target's animation queue - var q; - var tAni = _p.target._private.animation; - - if (_p.queue) { - q = tAni.queue; - } else { - q = tAni.current; - } - - q.push(this); // add to the animation loop pool - - if (elementOrCollection(_p.target)) { - _p.target.cy().addToAnimationPool(_p.target); - } - - _p.hooked = true; - } - - return this; - }, - play: function play() { - var _p = this._private; // autorewind - - if (_p.progress === 1) { - _p.progress = 0; - } - - _p.playing = true; - _p.started = false; // needs to be started by animation loop - - _p.stopped = false; - this.hook(); // the animation loop will start the animation... - - return this; - }, - playing: function playing() { - return this._private.playing; - }, - apply: function apply() { - var _p = this._private; - _p.applying = true; - _p.started = false; // needs to be started by animation loop - - _p.stopped = false; - this.hook(); // the animation loop will apply the animation at this progress - - return this; - }, - applying: function applying() { - return this._private.applying; - }, - pause: function pause() { - var _p = this._private; - _p.playing = false; - _p.started = false; - return this; - }, - stop: function stop() { - var _p = this._private; - _p.playing = false; - _p.started = false; - _p.stopped = true; // to be removed from animation queues - - return this; - }, - rewind: function rewind() { - return this.progress(0); - }, - fastforward: function fastforward() { - return this.progress(1); - }, - time: function time(t) { - var _p = this._private; - - if (t === undefined) { - return _p.progress * _p.duration; - } else { - return this.progress(t / _p.duration); - } - }, - progress: function progress(p) { - var _p = this._private; - var wasPlaying = _p.playing; - - if (p === undefined) { - return _p.progress; - } else { - if (wasPlaying) { - this.pause(); - } - - _p.progress = p; - _p.started = false; - - if (wasPlaying) { - this.play(); - } - } - - return this; - }, - completed: function completed() { - return this._private.progress === 1; - }, - reverse: function reverse() { - var _p = this._private; - var wasPlaying = _p.playing; - - if (wasPlaying) { - this.pause(); - } - - _p.progress = 1 - _p.progress; - _p.started = false; - - var swap = function swap(a, b) { - var _pa = _p[a]; - - if (_pa == null) { - return; - } - - _p[a] = _p[b]; - _p[b] = _pa; - }; - - swap('zoom', 'startZoom'); - swap('pan', 'startPan'); - swap('position', 'startPosition'); // swap styles - - if (_p.style) { - for (var i = 0; i < _p.style.length; i++) { - var prop = _p.style[i]; - var name = prop.name; - var startStyleProp = _p.startStyle[name]; - _p.startStyle[name] = prop; - _p.style[i] = startStyleProp; - } - } - - if (wasPlaying) { - this.play(); - } - - return this; - }, - promise: function promise(type) { - var _p = this._private; - var arr; - - switch (type) { - case 'frame': - arr = _p.frames; - break; - - default: - case 'complete': - case 'completed': - arr = _p.completes; - } - - return new Promise$1(function (resolve, reject) { - arr.push(function () { - resolve(); - }); - }); - } -}); -anifn.complete = anifn.completed; -anifn.run = anifn.play; -anifn.running = anifn.playing; - -var define = { - animated: function animated() { - return function animatedImpl() { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return false; - } - - var ele = all[0]; - - if (ele) { - return ele._private.animation.current.length > 0; - } - }; - }, - // animated - clearQueue: function clearQueue() { - return function clearQueueImpl() { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - for (var i = 0; i < all.length; i++) { - var ele = all[i]; - ele._private.animation.queue = []; - } - - return this; - }; - }, - // clearQueue - delay: function delay() { - return function delayImpl(time, complete) { - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - return this.animate({ - delay: time, - duration: time, - complete: complete - }); - }; - }, - // delay - delayAnimation: function delayAnimation() { - return function delayAnimationImpl(time, complete) { - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - return this.animation({ - delay: time, - duration: time, - complete: complete - }); - }; - }, - // delay - animation: function animation() { - return function animationImpl(properties, params) { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - var isCore = !selfIsArrayLike; - var isEles = !isCore; - - if (!cy.styleEnabled()) { - return this; - } - - var style = cy.style(); - properties = extend({}, properties, params); - var propertiesEmpty = Object.keys(properties).length === 0; - - if (propertiesEmpty) { - return new Animation(all[0], properties); // nothing to animate - } - - if (properties.duration === undefined) { - properties.duration = 400; - } - - switch (properties.duration) { - case 'slow': - properties.duration = 600; - break; - - case 'fast': - properties.duration = 200; - break; - } - - if (isEles) { - properties.style = style.getPropsList(properties.style || properties.css); - properties.css = undefined; - } - - if (isEles && properties.renderedPosition != null) { - var rpos = properties.renderedPosition; - var pan = cy.pan(); - var zoom = cy.zoom(); - properties.position = renderedToModelPosition(rpos, zoom, pan); - } // override pan w/ panBy if set - - - if (isCore && properties.panBy != null) { - var panBy = properties.panBy; - var cyPan = cy.pan(); - properties.pan = { - x: cyPan.x + panBy.x, - y: cyPan.y + panBy.y - }; - } // override pan w/ center if set - - - var center = properties.center || properties.centre; - - if (isCore && center != null) { - var centerPan = cy.getCenterPan(center.eles, properties.zoom); - - if (centerPan != null) { - properties.pan = centerPan; - } - } // override pan & zoom w/ fit if set - - - if (isCore && properties.fit != null) { - var fit = properties.fit; - var fitVp = cy.getFitViewport(fit.eles || fit.boundingBox, fit.padding); - - if (fitVp != null) { - properties.pan = fitVp.pan; - properties.zoom = fitVp.zoom; - } - } // override zoom (& potentially pan) w/ zoom obj if set - - - if (isCore && plainObject(properties.zoom)) { - var vp = cy.getZoomedViewport(properties.zoom); - - if (vp != null) { - if (vp.zoomed) { - properties.zoom = vp.zoom; - } - - if (vp.panned) { - properties.pan = vp.pan; - } - } else { - properties.zoom = null; // an inavalid zoom (e.g. no delta) gets automatically destroyed - } - } - - return new Animation(all[0], properties); - }; - }, - // animate - animate: function animate() { - return function animateImpl(properties, params) { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - if (params) { - properties = extend({}, properties, params); - } // manually hook and run the animation - - - for (var i = 0; i < all.length; i++) { - var ele = all[i]; - var queue = ele.animated() && (properties.queue === undefined || properties.queue); - var ani = ele.animation(properties, queue ? { - queue: true - } : undefined); - ani.play(); - } - - return this; // chaining - }; - }, - // animate - stop: function stop() { - return function stopImpl(clearQueue, jumpToEnd) { - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var cy = this._private.cy || this; - - if (!cy.styleEnabled()) { - return this; - } - - for (var i = 0; i < all.length; i++) { - var ele = all[i]; - var _p = ele._private; - var anis = _p.animation.current; - - for (var j = 0; j < anis.length; j++) { - var ani = anis[j]; - var ani_p = ani._private; - - if (jumpToEnd) { - // next iteration of the animation loop, the animation - // will go straight to the end and be removed - ani_p.duration = 0; - } - } // clear the queue of future animations - - - if (clearQueue) { - _p.animation.queue = []; - } - - if (!jumpToEnd) { - _p.animation.current = []; - } - } // we have to notify (the animation loop doesn't do it for us on `stop`) - - - cy.notify('draw'); - return this; - }; - } // stop - -}; // define - -var define$1 = { - // access data field - data: function data(params) { - var defaults = { - field: 'data', - bindingEvent: 'data', - allowBinding: false, - allowSetting: false, - allowGetting: false, - settingEvent: 'data', - settingTriggersEvent: false, - triggerFnName: 'trigger', - immutableKeys: {}, - // key => true if immutable - updateStyle: false, - beforeGet: function beforeGet(self) {}, - beforeSet: function beforeSet(self, obj) {}, - onSet: function onSet(self) {}, - canSet: function canSet(self) { - return true; - } - }; - params = extend({}, defaults, params); - return function dataImpl(name, value) { - var p = params; - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - - var single = selfIsArrayLike ? self[0] : self; // .data('foo', ...) - - if (string(name)) { - // set or get property - // .data('foo') - if (p.allowGetting && value === undefined) { - // get - var ret; - - if (single) { - p.beforeGet(single); - ret = single._private[p.field][name]; - } - - return ret; // .data('foo', 'bar') - } else if (p.allowSetting && value !== undefined) { - // set - var valid = !p.immutableKeys[name]; - - if (valid) { - var change = _defineProperty({}, name, value); - - p.beforeSet(self, change); - - for (var i = 0, l = all.length; i < l; i++) { - var ele = all[i]; - - if (p.canSet(ele)) { - ele._private[p.field][name] = value; - } - } // update mappers if asked - - - if (p.updateStyle) { - self.updateStyle(); - } // call onSet callback - - - p.onSet(self); - - if (p.settingTriggersEvent) { - self[p.triggerFnName](p.settingEvent); - } - } - } // .data({ 'foo': 'bar' }) - - } else if (p.allowSetting && plainObject(name)) { - // extend - var obj = name; - var k, v; - var keys = Object.keys(obj); - p.beforeSet(self, obj); - - for (var _i = 0; _i < keys.length; _i++) { - k = keys[_i]; - v = obj[k]; - - var _valid = !p.immutableKeys[k]; - - if (_valid) { - for (var j = 0; j < all.length; j++) { - var _ele = all[j]; - - if (p.canSet(_ele)) { - _ele._private[p.field][k] = v; - } - } - } - } // update mappers if asked - - - if (p.updateStyle) { - self.updateStyle(); - } // call onSet callback - - - p.onSet(self); - - if (p.settingTriggersEvent) { - self[p.triggerFnName](p.settingEvent); - } // .data(function(){ ... }) - - } else if (p.allowBinding && fn(name)) { - // bind to event - var fn$1 = name; - self.on(p.bindingEvent, fn$1); // .data() - } else if (p.allowGetting && name === undefined) { - // get whole object - var _ret; - - if (single) { - p.beforeGet(single); - _ret = single._private[p.field]; - } - - return _ret; - } - - return self; // maintain chainability - }; // function - }, - // data - // remove data field - removeData: function removeData(params) { - var defaults = { - field: 'data', - event: 'data', - triggerFnName: 'trigger', - triggerEvent: false, - immutableKeys: {} // key => true if immutable - - }; - params = extend({}, defaults, params); - return function removeDataImpl(names) { - var p = params; - var self = this; - var selfIsArrayLike = self.length !== undefined; - var all = selfIsArrayLike ? self : [self]; // put in array if not array-like - // .removeData('foo bar') - - if (string(names)) { - // then get the list of keys, and delete them - var keys = names.split(/\s+/); - var l = keys.length; - - for (var i = 0; i < l; i++) { - // delete each non-empty key - var key = keys[i]; - - if (emptyString(key)) { - continue; - } - - var valid = !p.immutableKeys[key]; // not valid if immutable - - if (valid) { - for (var i_a = 0, l_a = all.length; i_a < l_a; i_a++) { - all[i_a]._private[p.field][key] = undefined; - } - } - } - - if (p.triggerEvent) { - self[p.triggerFnName](p.event); - } // .removeData() - - } else if (names === undefined) { - // then delete all keys - for (var _i_a = 0, _l_a = all.length; _i_a < _l_a; _i_a++) { - var _privateFields = all[_i_a]._private[p.field]; - - var _keys = Object.keys(_privateFields); - - for (var _i2 = 0; _i2 < _keys.length; _i2++) { - var _key = _keys[_i2]; - var validKeyToDelete = !p.immutableKeys[_key]; - - if (validKeyToDelete) { - _privateFields[_key] = undefined; - } - } - } - - if (p.triggerEvent) { - self[p.triggerFnName](p.event); - } - } - - return self; // maintain chaining - }; // function - } // removeData - -}; // define - -var define$2 = { - eventAliasesOn: function eventAliasesOn(proto) { - var p = proto; - p.addListener = p.listen = p.bind = p.on; - p.unlisten = p.unbind = p.off = p.removeListener; - p.trigger = p.emit; // this is just a wrapper alias of .on() - - p.pon = p.promiseOn = function (events, selector) { - var self = this; - var args = Array.prototype.slice.call(arguments, 0); - return new Promise$1(function (resolve, reject) { - var callback = function callback(e) { - self.off.apply(self, offArgs); - resolve(e); - }; - - var onArgs = args.concat([callback]); - var offArgs = onArgs.concat([]); - self.on.apply(self, onArgs); - }); - }; - } -}; // define - -// use this module to cherry pick functions into your prototype -var define$3 = {}; -[define, define$1, define$2].forEach(function (m) { - extend(define$3, m); -}); - -var elesfn$d = { - animate: define$3.animate(), - animation: define$3.animation(), - animated: define$3.animated(), - clearQueue: define$3.clearQueue(), - delay: define$3.delay(), - delayAnimation: define$3.delayAnimation(), - stop: define$3.stop() -}; - -var elesfn$e = { - classes: function classes(_classes) { - var self = this; - - if (_classes === undefined) { - var ret = []; - - self[0]._private.classes.forEach(function (cls) { - return ret.push(cls); - }); - - return ret; - } else if (!array(_classes)) { - // extract classes from string - _classes = (_classes || '').match(/\S+/g) || []; - } - - var changed = []; - var classesSet = new Set$1(_classes); // check and update each ele - - for (var j = 0; j < self.length; j++) { - var ele = self[j]; - var _p = ele._private; - var eleClasses = _p.classes; - var changedEle = false; // check if ele has all of the passed classes - - for (var i = 0; i < _classes.length; i++) { - var cls = _classes[i]; - var eleHasClass = eleClasses.has(cls); - - if (!eleHasClass) { - changedEle = true; - break; - } - } // check if ele has classes outside of those passed - - - if (!changedEle) { - changedEle = eleClasses.size !== _classes.length; - } - - if (changedEle) { - _p.classes = classesSet; - changed.push(ele); - } - } // trigger update style on those eles that had class changes - - - if (changed.length > 0) { - this.spawn(changed).updateStyle().emit('class'); - } - - return self; - }, - addClass: function addClass(classes) { - return this.toggleClass(classes, true); - }, - hasClass: function hasClass(className) { - var ele = this[0]; - return ele != null && ele._private.classes.has(className); - }, - toggleClass: function toggleClass(classes, toggle) { - if (!array(classes)) { - // extract classes from string - classes = classes.match(/\S+/g) || []; - } - - var self = this; - var toggleUndefd = toggle === undefined; - var changed = []; // eles who had classes changed - - for (var i = 0, il = self.length; i < il; i++) { - var ele = self[i]; - var eleClasses = ele._private.classes; - var changedEle = false; - - for (var j = 0; j < classes.length; j++) { - var cls = classes[j]; - var hasClass = eleClasses.has(cls); - var changedNow = false; - - if (toggle || toggleUndefd && !hasClass) { - eleClasses.add(cls); - changedNow = true; - } else if (!toggle || toggleUndefd && hasClass) { - eleClasses["delete"](cls); - changedNow = true; - } - - if (!changedEle && changedNow) { - changed.push(ele); - changedEle = true; - } - } // for j classes - - } // for i eles - // trigger update style on those eles that had class changes - - - if (changed.length > 0) { - this.spawn(changed).updateStyle().emit('class'); - } - - return self; - }, - removeClass: function removeClass(classes) { - return this.toggleClass(classes, false); - }, - flashClass: function flashClass(classes, duration) { - var self = this; - - if (duration == null) { - duration = 250; - } else if (duration === 0) { - return self; // nothing to do really - } - - self.addClass(classes); - setTimeout(function () { - self.removeClass(classes); - }, duration); - return self; - } -}; -elesfn$e.className = elesfn$e.classNames = elesfn$e.classes; - -var tokens = { - metaChar: '[\\!\\"\\#\\$\\%\\&\\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]', - // chars we need to escape in let names, etc - comparatorOp: '=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=', - // binary comparison op (used in data selectors) - boolOp: '\\?|\\!|\\^', - // boolean (unary) operators (used in data selectors) - string: '"(?:\\\\"|[^"])*"' + '|' + "'(?:\\\\'|[^'])*'", - // string literals (used in data selectors) -- doublequotes | singlequotes - number: number$1, - // number literal (used in data selectors) --- e.g. 0.1234, 1234, 12e123 - meta: 'degree|indegree|outdegree', - // allowed metadata fields (i.e. allowed functions to use from Collection) - separator: '\\s*,\\s*', - // queries are separated by commas, e.g. edge[foo = 'bar'], node.someClass - descendant: '\\s+', - child: '\\s+>\\s+', - subject: '\\$', - group: 'node|edge|\\*', - directedEdge: '\\s+->\\s+', - undirectedEdge: '\\s+<->\\s+' -}; -tokens.variable = '(?:[\\w-]|(?:\\\\' + tokens.metaChar + '))+'; // a variable name - -tokens.value = tokens.string + '|' + tokens.number; // a value literal, either a string or number - -tokens.className = tokens.variable; // a class name (follows variable conventions) - -tokens.id = tokens.variable; // an element id (follows variable conventions) - -(function () { - var ops, op, i; // add @ variants to comparatorOp - - ops = tokens.comparatorOp.split('|'); - - for (i = 0; i < ops.length; i++) { - op = ops[i]; - tokens.comparatorOp += '|@' + op; - } // add ! variants to comparatorOp - - - ops = tokens.comparatorOp.split('|'); - - for (i = 0; i < ops.length; i++) { - op = ops[i]; - - if (op.indexOf('!') >= 0) { - continue; - } // skip ops that explicitly contain ! - - - if (op === '=') { - continue; - } // skip = b/c != is explicitly defined - - - tokens.comparatorOp += '|\\!' + op; - } -})(); - -/** - * Make a new query object - * - * @prop type {Type} The type enum (int) of the query - * @prop checks List of checks to make against an ele to test for a match - */ -var newQuery = function newQuery() { - return { - checks: [] - }; -}; - -/** - * A check type enum-like object. Uses integer values for fast match() lookup. - * The ordering does not matter as long as the ints are unique. - */ -var Type = { - /** E.g. node */ - GROUP: 0, - - /** A collection of elements */ - COLLECTION: 1, - - /** A filter(ele) function */ - FILTER: 2, - - /** E.g. [foo > 1] */ - DATA_COMPARE: 3, - - /** E.g. [foo] */ - DATA_EXIST: 4, - - /** E.g. [?foo] */ - DATA_BOOL: 5, - - /** E.g. [[degree > 2]] */ - META_COMPARE: 6, - - /** E.g. :selected */ - STATE: 7, - - /** E.g. #foo */ - ID: 8, - - /** E.g. .foo */ - CLASS: 9, - - /** E.g. #foo <-> #bar */ - UNDIRECTED_EDGE: 10, - - /** E.g. #foo -> #bar */ - DIRECTED_EDGE: 11, - - /** E.g. $#foo -> #bar */ - NODE_SOURCE: 12, - - /** E.g. #foo -> $#bar */ - NODE_TARGET: 13, - - /** E.g. $#foo <-> #bar */ - NODE_NEIGHBOR: 14, - - /** E.g. #foo > #bar */ - CHILD: 15, - - /** E.g. #foo #bar */ - DESCENDANT: 16, - - /** E.g. $#foo > #bar */ - PARENT: 17, - - /** E.g. $#foo #bar */ - ANCESTOR: 18, - - /** E.g. #foo > $bar > #baz */ - COMPOUND_SPLIT: 19, - - /** Always matches, useful placeholder for subject in `COMPOUND_SPLIT` */ - TRUE: 20 -}; - -var stateSelectors = [{ - selector: ':selected', - matches: function matches(ele) { - return ele.selected(); - } -}, { - selector: ':unselected', - matches: function matches(ele) { - return !ele.selected(); - } -}, { - selector: ':selectable', - matches: function matches(ele) { - return ele.selectable(); - } -}, { - selector: ':unselectable', - matches: function matches(ele) { - return !ele.selectable(); - } -}, { - selector: ':locked', - matches: function matches(ele) { - return ele.locked(); - } -}, { - selector: ':unlocked', - matches: function matches(ele) { - return !ele.locked(); - } -}, { - selector: ':visible', - matches: function matches(ele) { - return ele.visible(); - } -}, { - selector: ':hidden', - matches: function matches(ele) { - return !ele.visible(); - } -}, { - selector: ':transparent', - matches: function matches(ele) { - return ele.transparent(); - } -}, { - selector: ':grabbed', - matches: function matches(ele) { - return ele.grabbed(); - } -}, { - selector: ':free', - matches: function matches(ele) { - return !ele.grabbed(); - } -}, { - selector: ':removed', - matches: function matches(ele) { - return ele.removed(); - } -}, { - selector: ':inside', - matches: function matches(ele) { - return !ele.removed(); - } -}, { - selector: ':grabbable', - matches: function matches(ele) { - return ele.grabbable(); - } -}, { - selector: ':ungrabbable', - matches: function matches(ele) { - return !ele.grabbable(); - } -}, { - selector: ':animated', - matches: function matches(ele) { - return ele.animated(); - } -}, { - selector: ':unanimated', - matches: function matches(ele) { - return !ele.animated(); - } -}, { - selector: ':parent', - matches: function matches(ele) { - return ele.isParent(); - } -}, { - selector: ':childless', - matches: function matches(ele) { - return ele.isChildless(); - } -}, { - selector: ':child', - matches: function matches(ele) { - return ele.isChild(); - } -}, { - selector: ':orphan', - matches: function matches(ele) { - return ele.isOrphan(); - } -}, { - selector: ':nonorphan', - matches: function matches(ele) { - return ele.isChild(); - } -}, { - selector: ':compound', - matches: function matches(ele) { - if (ele.isNode()) { - return ele.isParent(); - } else { - return ele.source().isParent() || ele.target().isParent(); - } - } -}, { - selector: ':loop', - matches: function matches(ele) { - return ele.isLoop(); - } -}, { - selector: ':simple', - matches: function matches(ele) { - return ele.isSimple(); - } -}, { - selector: ':active', - matches: function matches(ele) { - return ele.active(); - } -}, { - selector: ':inactive', - matches: function matches(ele) { - return !ele.active(); - } -}, { - selector: ':backgrounding', - matches: function matches(ele) { - return ele.backgrounding(); - } -}, { - selector: ':nonbackgrounding', - matches: function matches(ele) { - return !ele.backgrounding(); - } -}].sort(function (a, b) { - // n.b. selectors that are starting substrings of others must have the longer ones first - return descending(a.selector, b.selector); -}); - -var lookup = function () { - var selToFn = {}; - var s; - - for (var i = 0; i < stateSelectors.length; i++) { - s = stateSelectors[i]; - selToFn[s.selector] = s.matches; - } - - return selToFn; -}(); - -var stateSelectorMatches = function stateSelectorMatches(sel, ele) { - return lookup[sel](ele); -}; -var stateSelectorRegex = '(' + stateSelectors.map(function (s) { - return s.selector; -}).join('|') + ')'; - -// so that values get compared properly in Selector.filter() - -var cleanMetaChars = function cleanMetaChars(str) { - return str.replace(new RegExp('\\\\(' + tokens.metaChar + ')', 'g'), function (match, $1) { - return $1; - }); -}; - -var replaceLastQuery = function replaceLastQuery(selector, examiningQuery, replacementQuery) { - selector[selector.length - 1] = replacementQuery; -}; // NOTE: add new expression syntax here to have it recognised by the parser; -// - a query contains all adjacent (i.e. no separator in between) expressions; -// - the current query is stored in selector[i] -// - you need to check the query objects in match() for it actually filter properly, but that's pretty straight forward - - -var exprs = [{ - name: 'group', - // just used for identifying when debugging - query: true, - regex: '(' + tokens.group + ')', - populate: function populate(selector, query, _ref) { - var _ref2 = _slicedToArray(_ref, 1), - group = _ref2[0]; - - query.checks.push({ - type: Type.GROUP, - value: group === '*' ? group : group + 's' - }); - } -}, { - name: 'state', - query: true, - regex: stateSelectorRegex, - populate: function populate(selector, query, _ref3) { - var _ref4 = _slicedToArray(_ref3, 1), - state = _ref4[0]; - - query.checks.push({ - type: Type.STATE, - value: state - }); - } -}, { - name: 'id', - query: true, - regex: '\\#(' + tokens.id + ')', - populate: function populate(selector, query, _ref5) { - var _ref6 = _slicedToArray(_ref5, 1), - id = _ref6[0]; - - query.checks.push({ - type: Type.ID, - value: cleanMetaChars(id) - }); - } -}, { - name: 'className', - query: true, - regex: '\\.(' + tokens.className + ')', - populate: function populate(selector, query, _ref7) { - var _ref8 = _slicedToArray(_ref7, 1), - className = _ref8[0]; - - query.checks.push({ - type: Type.CLASS, - value: cleanMetaChars(className) - }); - } -}, { - name: 'dataExists', - query: true, - regex: '\\[\\s*(' + tokens.variable + ')\\s*\\]', - populate: function populate(selector, query, _ref9) { - var _ref10 = _slicedToArray(_ref9, 1), - variable = _ref10[0]; - - query.checks.push({ - type: Type.DATA_EXIST, - field: cleanMetaChars(variable) - }); - } -}, { - name: 'dataCompare', - query: true, - regex: '\\[\\s*(' + tokens.variable + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.value + ')\\s*\\]', - populate: function populate(selector, query, _ref11) { - var _ref12 = _slicedToArray(_ref11, 3), - variable = _ref12[0], - comparatorOp = _ref12[1], - value = _ref12[2]; - - var valueIsString = new RegExp('^' + tokens.string + '$').exec(value) != null; - - if (valueIsString) { - value = value.substring(1, value.length - 1); - } else { - value = parseFloat(value); - } - - query.checks.push({ - type: Type.DATA_COMPARE, - field: cleanMetaChars(variable), - operator: comparatorOp, - value: value - }); - } -}, { - name: 'dataBool', - query: true, - regex: '\\[\\s*(' + tokens.boolOp + ')\\s*(' + tokens.variable + ')\\s*\\]', - populate: function populate(selector, query, _ref13) { - var _ref14 = _slicedToArray(_ref13, 2), - boolOp = _ref14[0], - variable = _ref14[1]; - - query.checks.push({ - type: Type.DATA_BOOL, - field: cleanMetaChars(variable), - operator: boolOp - }); - } -}, { - name: 'metaCompare', - query: true, - regex: '\\[\\[\\s*(' + tokens.meta + ')\\s*(' + tokens.comparatorOp + ')\\s*(' + tokens.number + ')\\s*\\]\\]', - populate: function populate(selector, query, _ref15) { - var _ref16 = _slicedToArray(_ref15, 3), - meta = _ref16[0], - comparatorOp = _ref16[1], - number = _ref16[2]; - - query.checks.push({ - type: Type.META_COMPARE, - field: cleanMetaChars(meta), - operator: comparatorOp, - value: parseFloat(number) - }); - } -}, { - name: 'nextQuery', - separator: true, - regex: tokens.separator, - populate: function populate(selector, query) { - var currentSubject = selector.currentSubject; - var edgeCount = selector.edgeCount; - var compoundCount = selector.compoundCount; - var lastQ = selector[selector.length - 1]; - - if (currentSubject != null) { - lastQ.subject = currentSubject; - selector.currentSubject = null; - } - - lastQ.edgeCount = edgeCount; - lastQ.compoundCount = compoundCount; - selector.edgeCount = 0; - selector.compoundCount = 0; // go on to next query - - var nextQuery = selector[selector.length++] = newQuery(); - return nextQuery; // this is the new query to be filled by the following exprs - } -}, { - name: 'directedEdge', - separator: true, - regex: tokens.directedEdge, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // undirected edge - var edgeQuery = newQuery(); - var source = query; - var target = newQuery(); - edgeQuery.checks.push({ - type: Type.DIRECTED_EDGE, - source: source, - target: target - }); // the query in the selector should be the edge rather than the source - - replaceLastQuery(selector, query, edgeQuery); - selector.edgeCount++; // we're now populating the target query with expressions that follow - - return target; - } else { - // source/target - var srcTgtQ = newQuery(); - var _source = query; - - var _target = newQuery(); - - srcTgtQ.checks.push({ - type: Type.NODE_SOURCE, - source: _source, - target: _target - }); // the query in the selector should be the neighbourhood rather than the node - - replaceLastQuery(selector, query, srcTgtQ); - selector.edgeCount++; - return _target; // now populating the target with the following expressions - } - } -}, { - name: 'undirectedEdge', - separator: true, - regex: tokens.undirectedEdge, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // undirected edge - var edgeQuery = newQuery(); - var source = query; - var target = newQuery(); - edgeQuery.checks.push({ - type: Type.UNDIRECTED_EDGE, - nodes: [source, target] - }); // the query in the selector should be the edge rather than the source - - replaceLastQuery(selector, query, edgeQuery); - selector.edgeCount++; // we're now populating the target query with expressions that follow - - return target; - } else { - // neighbourhood - var nhoodQ = newQuery(); - var node = query; - var neighbor = newQuery(); - nhoodQ.checks.push({ - type: Type.NODE_NEIGHBOR, - node: node, - neighbor: neighbor - }); // the query in the selector should be the neighbourhood rather than the node - - replaceLastQuery(selector, query, nhoodQ); - return neighbor; // now populating the neighbor with following expressions - } - } -}, { - name: 'child', - separator: true, - regex: tokens.child, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // default: child query - var parentChildQuery = newQuery(); - var child = newQuery(); - var parent = selector[selector.length - 1]; - parentChildQuery.checks.push({ - type: Type.CHILD, - parent: parent, - child: child - }); // the query in the selector should be the '>' itself - - replaceLastQuery(selector, query, parentChildQuery); - selector.compoundCount++; // we're now populating the child query with expressions that follow - - return child; - } else if (selector.currentSubject === query) { - // compound split query - var compound = newQuery(); - var left = selector[selector.length - 1]; - var right = newQuery(); - var subject = newQuery(); - - var _child = newQuery(); - - var _parent = newQuery(); // set up the root compound q - - - compound.checks.push({ - type: Type.COMPOUND_SPLIT, - left: left, - right: right, - subject: subject - }); // populate the subject and replace the q at the old spot (within left) with TRUE - - subject.checks = query.checks; // take the checks from the left - - query.checks = [{ - type: Type.TRUE - }]; // checks under left refs the subject implicitly - // set up the right q - - _parent.checks.push({ - type: Type.TRUE - }); // parent implicitly refs the subject - - - right.checks.push({ - type: Type.PARENT, - // type is swapped on right side queries - parent: _parent, - child: _child // empty for now - - }); - replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` - - selector.currentSubject = subject; - selector.compoundCount++; - return _child; // now populating the right side's child - } else { - // parent query - // info for parent query - var _parent2 = newQuery(); - - var _child2 = newQuery(); - - var pcQChecks = [{ - type: Type.PARENT, - parent: _parent2, - child: _child2 - }]; // the parent-child query takes the place of the query previously being populated - - _parent2.checks = query.checks; // the previous query contains the checks for the parent - - query.checks = pcQChecks; // pc query takes over - - selector.compoundCount++; - return _child2; // we're now populating the child - } - } -}, { - name: 'descendant', - separator: true, - regex: tokens.descendant, - populate: function populate(selector, query) { - if (selector.currentSubject == null) { - // default: descendant query - var ancChQuery = newQuery(); - var descendant = newQuery(); - var ancestor = selector[selector.length - 1]; - ancChQuery.checks.push({ - type: Type.DESCENDANT, - ancestor: ancestor, - descendant: descendant - }); // the query in the selector should be the '>' itself - - replaceLastQuery(selector, query, ancChQuery); - selector.compoundCount++; // we're now populating the descendant query with expressions that follow - - return descendant; - } else if (selector.currentSubject === query) { - // compound split query - var compound = newQuery(); - var left = selector[selector.length - 1]; - var right = newQuery(); - var subject = newQuery(); - - var _descendant = newQuery(); - - var _ancestor = newQuery(); // set up the root compound q - - - compound.checks.push({ - type: Type.COMPOUND_SPLIT, - left: left, - right: right, - subject: subject - }); // populate the subject and replace the q at the old spot (within left) with TRUE - - subject.checks = query.checks; // take the checks from the left - - query.checks = [{ - type: Type.TRUE - }]; // checks under left refs the subject implicitly - // set up the right q - - _ancestor.checks.push({ - type: Type.TRUE - }); // ancestor implicitly refs the subject - - - right.checks.push({ - type: Type.ANCESTOR, - // type is swapped on right side queries - ancestor: _ancestor, - descendant: _descendant // empty for now - - }); - replaceLastQuery(selector, left, compound); // update the ref since we moved things around for `query` - - selector.currentSubject = subject; - selector.compoundCount++; - return _descendant; // now populating the right side's descendant - } else { - // ancestor query - // info for parent query - var _ancestor2 = newQuery(); - - var _descendant2 = newQuery(); - - var adQChecks = [{ - type: Type.ANCESTOR, - ancestor: _ancestor2, - descendant: _descendant2 - }]; // the parent-child query takes the place of the query previously being populated - - _ancestor2.checks = query.checks; // the previous query contains the checks for the parent - - query.checks = adQChecks; // pc query takes over - - selector.compoundCount++; - return _descendant2; // we're now populating the child - } - } -}, { - name: 'subject', - modifier: true, - regex: tokens.subject, - populate: function populate(selector, query) { - if (selector.currentSubject != null && selector.currentSubject !== query) { - warn('Redefinition of subject in selector `' + selector.toString() + '`'); - return false; - } - - selector.currentSubject = query; - var topQ = selector[selector.length - 1]; - var topChk = topQ.checks[0]; - var topType = topChk == null ? null : topChk.type; - - if (topType === Type.DIRECTED_EDGE) { - // directed edge with subject on the target - // change to target node check - topChk.type = Type.NODE_TARGET; - } else if (topType === Type.UNDIRECTED_EDGE) { - // undirected edge with subject on the second node - // change to neighbor check - topChk.type = Type.NODE_NEIGHBOR; - topChk.node = topChk.nodes[1]; // second node is subject - - topChk.neighbor = topChk.nodes[0]; // clean up unused fields for new type - - topChk.nodes = null; - } - } -}]; -exprs.forEach(function (e) { - return e.regexObj = new RegExp('^' + e.regex); -}); - -/** - * Of all the expressions, find the first match in the remaining text. - * @param {string} remaining The remaining text to parse - * @returns The matched expression and the newly remaining text `{ expr, match, name, remaining }` - */ - -var consumeExpr = function consumeExpr(remaining) { - var expr; - var match; - var name; - - for (var j = 0; j < exprs.length; j++) { - var e = exprs[j]; - var n = e.name; - var m = remaining.match(e.regexObj); - - if (m != null) { - match = m; - expr = e; - name = n; - var consumed = m[0]; - remaining = remaining.substring(consumed.length); - break; // we've consumed one expr, so we can return now - } - } - - return { - expr: expr, - match: match, - name: name, - remaining: remaining - }; -}; -/** - * Consume all the leading whitespace - * @param {string} remaining The text to consume - * @returns The text with the leading whitespace removed - */ - - -var consumeWhitespace = function consumeWhitespace(remaining) { - var match = remaining.match(/^\s+/); - - if (match) { - var consumed = match[0]; - remaining = remaining.substring(consumed.length); - } - - return remaining; -}; -/** - * Parse the string and store the parsed representation in the Selector. - * @param {string} selector The selector string - * @returns `true` if the selector was successfully parsed, `false` otherwise - */ - - -var parse = function parse(selector) { - var self = this; - var remaining = self.inputText = selector; - var currentQuery = self[0] = newQuery(); - self.length = 1; - remaining = consumeWhitespace(remaining); // get rid of leading whitespace - - for (;;) { - var exprInfo = consumeExpr(remaining); - - if (exprInfo.expr == null) { - warn('The selector `' + selector + '`is invalid'); - return false; - } else { - var args = exprInfo.match.slice(1); // let the token populate the selector object in currentQuery - - var ret = exprInfo.expr.populate(self, currentQuery, args); - - if (ret === false) { - return false; // exit if population failed - } else if (ret != null) { - currentQuery = ret; // change the current query to be filled if the expr specifies - } - } - - remaining = exprInfo.remaining; // we're done when there's nothing left to parse - - if (remaining.match(/^\s*$/)) { - break; - } - } - - var lastQ = self[self.length - 1]; - - if (self.currentSubject != null) { - lastQ.subject = self.currentSubject; - } - - lastQ.edgeCount = self.edgeCount; - lastQ.compoundCount = self.compoundCount; - - for (var i = 0; i < self.length; i++) { - var q = self[i]; // in future, this could potentially be allowed if there were operator precedence and detection of invalid combinations - - if (q.compoundCount > 0 && q.edgeCount > 0) { - warn('The selector `' + selector + '` is invalid because it uses both a compound selector and an edge selector'); - return false; - } - - if (q.edgeCount > 1) { - warn('The selector `' + selector + '` is invalid because it uses multiple edge selectors'); - return false; - } else if (q.edgeCount === 1) { - warn('The selector `' + selector + '` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.'); - } - } - - return true; // success -}; -/** - * Get the selector represented as a string. This value uses default formatting, - * so things like spacing may differ from the input text passed to the constructor. - * @returns {string} The selector string - */ - - -var toString = function toString() { - if (this.toStringCache != null) { - return this.toStringCache; - } - - var clean = function clean(obj) { - if (obj == null) { - return ''; - } else { - return obj; - } - }; - - var cleanVal = function cleanVal(val) { - if (string(val)) { - return '"' + val + '"'; - } else { - return clean(val); - } - }; - - var space = function space(val) { - return ' ' + val + ' '; - }; - - var checkToString = function checkToString(check, subject) { - var type = check.type, - value = check.value; - - switch (type) { - case Type.GROUP: - { - var group = clean(value); - return group.substring(0, group.length - 1); - } - - case Type.DATA_COMPARE: - { - var field = check.field, - operator = check.operator; - return '[' + field + space(clean(operator)) + cleanVal(value) + ']'; - } - - case Type.DATA_BOOL: - { - var _operator = check.operator, - _field = check.field; - return '[' + clean(_operator) + _field + ']'; - } - - case Type.DATA_EXIST: - { - var _field2 = check.field; - return '[' + _field2 + ']'; - } - - case Type.META_COMPARE: - { - var _operator2 = check.operator, - _field3 = check.field; - return '[[' + _field3 + space(clean(_operator2)) + cleanVal(value) + ']]'; - } - - case Type.STATE: - { - return value; - } - - case Type.ID: - { - return '#' + value; - } - - case Type.CLASS: - { - return '.' + value; - } - - case Type.PARENT: - case Type.CHILD: - { - return queryToString(check.parent, subject) + space('>') + queryToString(check.child, subject); - } - - case Type.ANCESTOR: - case Type.DESCENDANT: - { - return queryToString(check.ancestor, subject) + ' ' + queryToString(check.descendant, subject); - } - - case Type.COMPOUND_SPLIT: - { - var lhs = queryToString(check.left, subject); - var sub = queryToString(check.subject, subject); - var rhs = queryToString(check.right, subject); - return lhs + (lhs.length > 0 ? ' ' : '') + sub + rhs; - } - - case Type.TRUE: - { - return ''; - } - } - }; - - var queryToString = function queryToString(query, subject) { - return query.checks.reduce(function (str, chk, i) { - return str + (subject === query && i === 0 ? '$' : '') + checkToString(chk, subject); - }, ''); - }; - - var str = ''; - - for (var i = 0; i < this.length; i++) { - var query = this[i]; - str += queryToString(query, query.subject); - - if (this.length > 1 && i < this.length - 1) { - str += ', '; - } - } - - this.toStringCache = str; - return str; -}; -var parse$1 = { - parse: parse, - toString: toString -}; - -var valCmp = function valCmp(fieldVal, operator, value) { - var matches; - var isFieldStr = string(fieldVal); - var isFieldNum = number(fieldVal); - var isValStr = string(value); - var fieldStr, valStr; - var caseInsensitive = false; - var notExpr = false; - var isIneqCmp = false; - - if (operator.indexOf('!') >= 0) { - operator = operator.replace('!', ''); - notExpr = true; - } - - if (operator.indexOf('@') >= 0) { - operator = operator.replace('@', ''); - caseInsensitive = true; - } - - if (isFieldStr || isValStr || caseInsensitive) { - fieldStr = !isFieldStr && !isFieldNum ? '' : '' + fieldVal; - valStr = '' + value; - } // if we're doing a case insensitive comparison, then we're using a STRING comparison - // even if we're comparing numbers - - - if (caseInsensitive) { - fieldVal = fieldStr = fieldStr.toLowerCase(); - value = valStr = valStr.toLowerCase(); - } - - switch (operator) { - case '*=': - matches = fieldStr.indexOf(valStr) >= 0; - break; - - case '$=': - matches = fieldStr.indexOf(valStr, fieldStr.length - valStr.length) >= 0; - break; - - case '^=': - matches = fieldStr.indexOf(valStr) === 0; - break; - - case '=': - matches = fieldVal === value; - break; - - case '>': - isIneqCmp = true; - matches = fieldVal > value; - break; - - case '>=': - isIneqCmp = true; - matches = fieldVal >= value; - break; - - case '<': - isIneqCmp = true; - matches = fieldVal < value; - break; - - case '<=': - isIneqCmp = true; - matches = fieldVal <= value; - break; - - default: - matches = false; - break; - } // apply the not op, but null vals for inequalities should always stay non-matching - - - if (notExpr && (fieldVal != null || !isIneqCmp)) { - matches = !matches; - } - - return matches; -}; -var boolCmp = function boolCmp(fieldVal, operator) { - switch (operator) { - case '?': - return fieldVal ? true : false; - - case '!': - return fieldVal ? false : true; - - case '^': - return fieldVal === undefined; - } -}; -var existCmp = function existCmp(fieldVal) { - return fieldVal !== undefined; -}; -var data = function data(ele, field) { - return ele.data(field); -}; -var meta = function meta(ele, field) { - return ele[field](); -}; - -/** A lookup of `match(check, ele)` functions by `Type` int */ - -var match = []; -/** - * Returns whether the query matches for the element - * @param query The `{ type, value, ... }` query object - * @param ele The element to compare against -*/ - -var matches = function matches(query, ele) { - return query.checks.every(function (chk) { - return match[chk.type](chk, ele); - }); -}; - -match[Type.GROUP] = function (check, ele) { - var group = check.value; - return group === '*' || group === ele.group(); -}; - -match[Type.STATE] = function (check, ele) { - var stateSelector = check.value; - return stateSelectorMatches(stateSelector, ele); -}; - -match[Type.ID] = function (check, ele) { - var id = check.value; - return ele.id() === id; -}; - -match[Type.CLASS] = function (check, ele) { - var cls = check.value; - return ele.hasClass(cls); -}; - -match[Type.META_COMPARE] = function (check, ele) { - var field = check.field, - operator = check.operator, - value = check.value; - return valCmp(meta(ele, field), operator, value); -}; - -match[Type.DATA_COMPARE] = function (check, ele) { - var field = check.field, - operator = check.operator, - value = check.value; - return valCmp(data(ele, field), operator, value); -}; - -match[Type.DATA_BOOL] = function (check, ele) { - var field = check.field, - operator = check.operator; - return boolCmp(data(ele, field), operator); -}; - -match[Type.DATA_EXIST] = function (check, ele) { - var field = check.field, - operator = check.operator; - return existCmp(data(ele, field)); -}; - -match[Type.UNDIRECTED_EDGE] = function (check, ele) { - var qA = check.nodes[0]; - var qB = check.nodes[1]; - var src = ele.source(); - var tgt = ele.target(); - return matches(qA, src) && matches(qB, tgt) || matches(qB, src) && matches(qA, tgt); -}; - -match[Type.NODE_NEIGHBOR] = function (check, ele) { - return matches(check.node, ele) && ele.neighborhood().some(function (n) { - return n.isNode() && matches(check.neighbor, n); - }); -}; - -match[Type.DIRECTED_EDGE] = function (check, ele) { - return matches(check.source, ele.source()) && matches(check.target, ele.target()); -}; - -match[Type.NODE_SOURCE] = function (check, ele) { - return matches(check.source, ele) && ele.outgoers().some(function (n) { - return n.isNode() && matches(check.target, n); - }); -}; - -match[Type.NODE_TARGET] = function (check, ele) { - return matches(check.target, ele) && ele.incomers().some(function (n) { - return n.isNode() && matches(check.source, n); - }); -}; - -match[Type.CHILD] = function (check, ele) { - return matches(check.child, ele) && matches(check.parent, ele.parent()); -}; - -match[Type.PARENT] = function (check, ele) { - return matches(check.parent, ele) && ele.children().some(function (c) { - return matches(check.child, c); - }); -}; - -match[Type.DESCENDANT] = function (check, ele) { - return matches(check.descendant, ele) && ele.ancestors().some(function (a) { - return matches(check.ancestor, a); - }); -}; - -match[Type.ANCESTOR] = function (check, ele) { - return matches(check.ancestor, ele) && ele.descendants().some(function (d) { - return matches(check.descendant, d); - }); -}; - -match[Type.COMPOUND_SPLIT] = function (check, ele) { - return matches(check.subject, ele) && matches(check.left, ele) && matches(check.right, ele); -}; - -match[Type.TRUE] = function () { - return true; -}; - -match[Type.COLLECTION] = function (check, ele) { - var collection = check.value; - return collection.has(ele); -}; - -match[Type.FILTER] = function (check, ele) { - var filter = check.value; - return filter(ele); -}; - -var filter = function filter(collection) { - var self = this; // for 1 id #foo queries, just get the element - - if (self.length === 1 && self[0].checks.length === 1 && self[0].checks[0].type === Type.ID) { - return collection.getElementById(self[0].checks[0].value).collection(); - } - - var selectorFunction = function selectorFunction(element) { - for (var j = 0; j < self.length; j++) { - var query = self[j]; - - if (matches(query, element)) { - return true; - } - } - - return false; - }; - - if (self.text() == null) { - selectorFunction = function selectorFunction() { - return true; - }; - } - - return collection.filter(selectorFunction); -}; // filter -// does selector match a single element? - - -var matches$1 = function matches$1(ele) { - var self = this; - - for (var j = 0; j < self.length; j++) { - var query = self[j]; - - if (matches(query, ele)) { - return true; - } - } - - return false; -}; // matches - - -var matching = { - matches: matches$1, - filter: filter -}; - -var Selector = function Selector(selector) { - this.inputText = selector; - this.currentSubject = null; - this.compoundCount = 0; - this.edgeCount = 0; - this.length = 0; - - if (selector == null || string(selector) && selector.match(/^\s*$/)) ; else if (elementOrCollection(selector)) { - this.addQuery({ - checks: [{ - type: Type.COLLECTION, - value: selector.collection() - }] - }); - } else if (fn(selector)) { - this.addQuery({ - checks: [{ - type: Type.FILTER, - value: selector - }] - }); - } else if (string(selector)) { - if (!this.parse(selector)) { - this.invalid = true; - } - } else { - error('A selector must be created from a string; found '); - } -}; - -var selfn = Selector.prototype; -[parse$1, matching].forEach(function (p) { - return extend(selfn, p); -}); - -selfn.text = function () { - return this.inputText; -}; - -selfn.size = function () { - return this.length; -}; - -selfn.eq = function (i) { - return this[i]; -}; - -selfn.sameText = function (otherSel) { - return !this.invalid && !otherSel.invalid && this.text() === otherSel.text(); -}; - -selfn.addQuery = function (q) { - this[this.length++] = q; -}; - -selfn.selector = selfn.toString; - -var elesfn$f = { - allAre: function allAre(selector) { - var selObj = new Selector(selector); - return this.every(function (ele) { - return selObj.matches(ele); - }); - }, - is: function is(selector) { - var selObj = new Selector(selector); - return this.some(function (ele) { - return selObj.matches(ele); - }); - }, - some: function some(fn, thisArg) { - for (var i = 0; i < this.length; i++) { - var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); - - if (ret) { - return true; - } - } - - return false; - }, - every: function every(fn, thisArg) { - for (var i = 0; i < this.length; i++) { - var ret = !thisArg ? fn(this[i], i, this) : fn.apply(thisArg, [this[i], i, this]); - - if (!ret) { - return false; - } - } - - return true; - }, - same: function same(collection) { - // cheap collection ref check - if (this === collection) { - return true; - } - - collection = this.cy().collection(collection); - var thisLength = this.length; - var collectionLength = collection.length; // cheap length check - - if (thisLength !== collectionLength) { - return false; - } // cheap element ref check - - - if (thisLength === 1) { - return this[0] === collection[0]; - } - - return this.every(function (ele) { - return collection.hasElementWithId(ele.id()); - }); - }, - anySame: function anySame(collection) { - collection = this.cy().collection(collection); - return this.some(function (ele) { - return collection.hasElementWithId(ele.id()); - }); - }, - allAreNeighbors: function allAreNeighbors(collection) { - collection = this.cy().collection(collection); - var nhood = this.neighborhood(); - return collection.every(function (ele) { - return nhood.hasElementWithId(ele.id()); - }); - }, - contains: function contains(collection) { - collection = this.cy().collection(collection); - var self = this; - return collection.every(function (ele) { - return self.hasElementWithId(ele.id()); - }); - } -}; -elesfn$f.allAreNeighbours = elesfn$f.allAreNeighbors; -elesfn$f.has = elesfn$f.contains; -elesfn$f.equal = elesfn$f.equals = elesfn$f.same; - -var cache = function cache(fn, name) { - return function traversalCache(arg1, arg2, arg3, arg4) { - var selectorOrEles = arg1; - var eles = this; - var key; - - if (selectorOrEles == null) { - key = ''; - } else if (elementOrCollection(selectorOrEles) && selectorOrEles.length === 1) { - key = selectorOrEles.id(); - } - - if (eles.length === 1 && key) { - var _p = eles[0]._private; - var tch = _p.traversalCache = _p.traversalCache || {}; - var ch = tch[name] = tch[name] || []; - var hash = hashString(key); - var cacheHit = ch[hash]; - - if (cacheHit) { - return cacheHit; - } else { - return ch[hash] = fn.call(eles, arg1, arg2, arg3, arg4); - } - } else { - return fn.call(eles, arg1, arg2, arg3, arg4); - } - }; -}; - -var elesfn$g = { - parent: function parent(selector) { - var parents = []; // optimisation for single ele call - - if (this.length === 1) { - var parent = this[0]._private.parent; - - if (parent) { - return parent; - } - } - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var _parent = ele._private.parent; - - if (_parent) { - parents.push(_parent); - } - } - - return this.spawn(parents, true).filter(selector); - }, - parents: function parents(selector) { - var parents = []; - var eles = this.parent(); - - while (eles.nonempty()) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - parents.push(ele); - } - - eles = eles.parent(); - } - - return this.spawn(parents, true).filter(selector); - }, - commonAncestors: function commonAncestors(selector) { - var ancestors; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var parents = ele.parents(); - ancestors = ancestors || parents; - ancestors = ancestors.intersect(parents); // current list must be common with current ele parents set - } - - return ancestors.filter(selector); - }, - orphans: function orphans(selector) { - return this.stdFilter(function (ele) { - return ele.isOrphan(); - }).filter(selector); - }, - nonorphans: function nonorphans(selector) { - return this.stdFilter(function (ele) { - return ele.isChild(); - }).filter(selector); - }, - children: cache(function (selector) { - var children = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var eleChildren = ele._private.children; - - for (var j = 0; j < eleChildren.length; j++) { - children.push(eleChildren[j]); - } - } - - return this.spawn(children, true).filter(selector); - }, 'children'), - siblings: function siblings(selector) { - return this.parent().children().not(this).filter(selector); - }, - isParent: function isParent() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.children.length !== 0; - } - }, - isChildless: function isChildless() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.children.length === 0; - } - }, - isChild: function isChild() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.parent != null; - } - }, - isOrphan: function isOrphan() { - var ele = this[0]; - - if (ele) { - return ele.isNode() && ele._private.parent == null; - } - }, - descendants: function descendants(selector) { - var elements = []; - - function add(eles) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - elements.push(ele); - - if (ele.children().nonempty()) { - add(ele.children()); - } - } - } - - add(this.children()); - return this.spawn(elements, true).filter(selector); - } -}; - -function forEachCompound(eles, fn, includeSelf, recursiveStep) { - var q = []; - var did = new Set$1(); - var cy = eles.cy(); - var hasCompounds = cy.hasCompoundNodes(); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (includeSelf) { - q.push(ele); - } else if (hasCompounds) { - recursiveStep(q, did, ele); - } - } - - while (q.length > 0) { - var _ele = q.shift(); - - fn(_ele); - did.add(_ele.id()); - - if (hasCompounds) { - recursiveStep(q, did, _ele); - } - } - - return eles; -} - -function addChildren(q, did, ele) { - if (ele.isParent()) { - var children = ele._private.children; - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - - if (!did.has(child.id())) { - q.push(child); - } - } - } -} // very efficient version of eles.add( eles.descendants() ).forEach() -// for internal use - - -elesfn$g.forEachDown = function (fn) { - var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - return forEachCompound(this, fn, includeSelf, addChildren); -}; - -function addParent(q, did, ele) { - if (ele.isChild()) { - var parent = ele._private.parent; - - if (!did.has(parent.id())) { - q.push(parent); - } - } -} - -elesfn$g.forEachUp = function (fn) { - var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - return forEachCompound(this, fn, includeSelf, addParent); -}; - -function addParentAndChildren(q, did, ele) { - addParent(q, did, ele); - addChildren(q, did, ele); -} - -elesfn$g.forEachUpAndDown = function (fn) { - var includeSelf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - return forEachCompound(this, fn, includeSelf, addParentAndChildren); -}; // aliases - - -elesfn$g.ancestors = elesfn$g.parents; - -var fn$1, elesfn$h; -fn$1 = elesfn$h = { - data: define$3.data({ - field: 'data', - bindingEvent: 'data', - allowBinding: true, - allowSetting: true, - settingEvent: 'data', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true, - immutableKeys: { - 'id': true, - 'source': true, - 'target': true, - 'parent': true - }, - updateStyle: true - }), - removeData: define$3.removeData({ - field: 'data', - event: 'data', - triggerFnName: 'trigger', - triggerEvent: true, - immutableKeys: { - 'id': true, - 'source': true, - 'target': true, - 'parent': true - }, - updateStyle: true - }), - scratch: define$3.data({ - field: 'scratch', - bindingEvent: 'scratch', - allowBinding: true, - allowSetting: true, - settingEvent: 'scratch', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true, - updateStyle: true - }), - removeScratch: define$3.removeData({ - field: 'scratch', - event: 'scratch', - triggerFnName: 'trigger', - triggerEvent: true, - updateStyle: true - }), - rscratch: define$3.data({ - field: 'rscratch', - allowBinding: false, - allowSetting: true, - settingTriggersEvent: false, - allowGetting: true - }), - removeRscratch: define$3.removeData({ - field: 'rscratch', - triggerEvent: false - }), - id: function id() { - var ele = this[0]; - - if (ele) { - return ele._private.data.id; - } - } -}; // aliases - -fn$1.attr = fn$1.data; -fn$1.removeAttr = fn$1.removeData; -var data$1 = elesfn$h; - -var elesfn$i = {}; - -function defineDegreeFunction(callback) { - return function (includeLoops) { - var self = this; - - if (includeLoops === undefined) { - includeLoops = true; - } - - if (self.length === 0) { - return; - } - - if (self.isNode() && !self.removed()) { - var degree = 0; - var node = self[0]; - var connectedEdges = node._private.edges; - - for (var i = 0; i < connectedEdges.length; i++) { - var edge = connectedEdges[i]; - - if (!includeLoops && edge.isLoop()) { - continue; - } - - degree += callback(node, edge); - } - - return degree; - } else { - return; - } - }; -} - -extend(elesfn$i, { - degree: defineDegreeFunction(function (node, edge) { - if (edge.source().same(edge.target())) { - return 2; - } else { - return 1; - } - }), - indegree: defineDegreeFunction(function (node, edge) { - if (edge.target().same(node)) { - return 1; - } else { - return 0; - } - }), - outdegree: defineDegreeFunction(function (node, edge) { - if (edge.source().same(node)) { - return 1; - } else { - return 0; - } - }) -}); - -function defineDegreeBoundsFunction(degreeFn, callback) { - return function (includeLoops) { - var ret; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - var ele = nodes[i]; - var degree = ele[degreeFn](includeLoops); - - if (degree !== undefined && (ret === undefined || callback(degree, ret))) { - ret = degree; - } - } - - return ret; - }; -} - -extend(elesfn$i, { - minDegree: defineDegreeBoundsFunction('degree', function (degree, min) { - return degree < min; - }), - maxDegree: defineDegreeBoundsFunction('degree', function (degree, max) { - return degree > max; - }), - minIndegree: defineDegreeBoundsFunction('indegree', function (degree, min) { - return degree < min; - }), - maxIndegree: defineDegreeBoundsFunction('indegree', function (degree, max) { - return degree > max; - }), - minOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, min) { - return degree < min; - }), - maxOutdegree: defineDegreeBoundsFunction('outdegree', function (degree, max) { - return degree > max; - }) -}); -extend(elesfn$i, { - totalDegree: function totalDegree(includeLoops) { - var total = 0; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - total += nodes[i].degree(includeLoops); - } - - return total; - } -}); - -var fn$2, elesfn$j; - -var beforePositionSet = function beforePositionSet(eles, newPos, silent) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.locked()) { - var oldPos = ele._private.position; - var delta = { - x: newPos.x != null ? newPos.x - oldPos.x : 0, - y: newPos.y != null ? newPos.y - oldPos.y : 0 - }; - - if (ele.isParent() && !(delta.x === 0 && delta.y === 0)) { - ele.children().shift(delta, silent); - } - - ele.shiftCachedBoundingBox(delta); - } - } -}; - -var positionDef = { - field: 'position', - bindingEvent: 'position', - allowBinding: true, - allowSetting: true, - settingEvent: 'position', - settingTriggersEvent: true, - triggerFnName: 'emitAndNotify', - allowGetting: true, - validKeys: ['x', 'y'], - beforeGet: function beforeGet(ele) { - ele.updateCompoundBounds(); - }, - beforeSet: function beforeSet(eles, newPos) { - beforePositionSet(eles, newPos, false); - }, - onSet: function onSet(eles) { - eles.dirtyCompoundBoundsCache(); - }, - canSet: function canSet(ele) { - return !ele.locked(); - } -}; -fn$2 = elesfn$j = { - position: define$3.data(positionDef), - // position but no notification to renderer - silentPosition: define$3.data(extend({}, positionDef, { - allowBinding: false, - allowSetting: true, - settingTriggersEvent: false, - allowGetting: false, - beforeSet: function beforeSet(eles, newPos) { - beforePositionSet(eles, newPos, true); - } - })), - positions: function positions(pos, silent) { - if (plainObject(pos)) { - if (silent) { - this.silentPosition(pos); - } else { - this.position(pos); - } - } else if (fn(pos)) { - var _fn = pos; - var cy = this.cy(); - cy.startBatch(); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - - var _pos = void 0; - - if (_pos = _fn(ele, i)) { - if (silent) { - ele.silentPosition(_pos); - } else { - ele.position(_pos); - } - } - } - - cy.endBatch(); - } - - return this; // chaining - }, - silentPositions: function silentPositions(pos) { - return this.positions(pos, true); - }, - shift: function shift(dim, val, silent) { - var delta; - - if (plainObject(dim)) { - delta = { - x: number(dim.x) ? dim.x : 0, - y: number(dim.y) ? dim.y : 0 - }; - silent = val; - } else if (string(dim) && number(val)) { - delta = { - x: 0, - y: 0 - }; - delta[dim] = val; - } - - if (delta != null) { - var cy = this.cy(); - cy.startBatch(); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var pos = ele.position(); - var newPos = { - x: pos.x + delta.x, - y: pos.y + delta.y - }; - - if (silent) { - ele.silentPosition(newPos); - } else { - ele.position(newPos); - } - } - - cy.endBatch(); - } - - return this; - }, - silentShift: function silentShift(dim, val) { - if (plainObject(dim)) { - this.shift(dim, true); - } else if (string(dim) && number(val)) { - this.shift(dim, val, true); - } - - return this; - }, - // get/set the rendered (i.e. on screen) positon of the element - renderedPosition: function renderedPosition(dim, val) { - var ele = this[0]; - var cy = this.cy(); - var zoom = cy.zoom(); - var pan = cy.pan(); - var rpos = plainObject(dim) ? dim : undefined; - var setting = rpos !== undefined || val !== undefined && string(dim); - - if (ele && ele.isNode()) { - // must have an element and must be a node to return position - if (setting) { - for (var i = 0; i < this.length; i++) { - var _ele = this[i]; - - if (val !== undefined) { - // set one dimension - _ele.position(dim, (val - pan[dim]) / zoom); - } else if (rpos !== undefined) { - // set whole position - _ele.position(renderedToModelPosition(rpos, zoom, pan)); - } - } - } else { - // getting - var pos = ele.position(); - rpos = modelToRenderedPosition(pos, zoom, pan); - - if (dim === undefined) { - // then return the whole rendered position - return rpos; - } else { - // then return the specified dimension - return rpos[dim]; - } - } - } else if (!setting) { - return undefined; // for empty collection case - } - - return this; // chaining - }, - // get/set the position relative to the parent - relativePosition: function relativePosition(dim, val) { - var ele = this[0]; - var cy = this.cy(); - var ppos = plainObject(dim) ? dim : undefined; - var setting = ppos !== undefined || val !== undefined && string(dim); - var hasCompoundNodes = cy.hasCompoundNodes(); - - if (ele && ele.isNode()) { - // must have an element and must be a node to return position - if (setting) { - for (var i = 0; i < this.length; i++) { - var _ele2 = this[i]; - var parent = hasCompoundNodes ? _ele2.parent() : null; - var hasParent = parent && parent.length > 0; - var relativeToParent = hasParent; - - if (hasParent) { - parent = parent[0]; - } - - var origin = relativeToParent ? parent.position() : { - x: 0, - y: 0 - }; - - if (val !== undefined) { - // set one dimension - _ele2.position(dim, val + origin[dim]); - } else if (ppos !== undefined) { - // set whole position - _ele2.position({ - x: ppos.x + origin.x, - y: ppos.y + origin.y - }); - } - } - } else { - // getting - var pos = ele.position(); - - var _parent = hasCompoundNodes ? ele.parent() : null; - - var _hasParent = _parent && _parent.length > 0; - - var _relativeToParent = _hasParent; - - if (_hasParent) { - _parent = _parent[0]; - } - - var _origin = _relativeToParent ? _parent.position() : { - x: 0, - y: 0 - }; - - ppos = { - x: pos.x - _origin.x, - y: pos.y - _origin.y - }; - - if (dim === undefined) { - // then return the whole rendered position - return ppos; - } else { - // then return the specified dimension - return ppos[dim]; - } - } - } else if (!setting) { - return undefined; // for empty collection case - } - - return this; // chaining - } -}; // aliases - -fn$2.modelPosition = fn$2.point = fn$2.position; -fn$2.modelPositions = fn$2.points = fn$2.positions; -fn$2.renderedPoint = fn$2.renderedPosition; -fn$2.relativePoint = fn$2.relativePosition; -var position = elesfn$j; - -var fn$3, elesfn$k; -fn$3 = elesfn$k = {}; - -elesfn$k.renderedBoundingBox = function (options) { - var bb = this.boundingBox(options); - var cy = this.cy(); - var zoom = cy.zoom(); - var pan = cy.pan(); - var x1 = bb.x1 * zoom + pan.x; - var x2 = bb.x2 * zoom + pan.x; - var y1 = bb.y1 * zoom + pan.y; - var y2 = bb.y2 * zoom + pan.y; - return { - x1: x1, - x2: x2, - y1: y1, - y2: y2, - w: x2 - x1, - h: y2 - y1 - }; -}; - -elesfn$k.dirtyCompoundBoundsCache = function () { - var cy = this.cy(); - - if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { - return this; - } - - this.forEachUp(function (ele) { - if (ele.isParent()) { - var _p = ele._private; - _p.compoundBoundsClean = false; - _p.bbCache = null; - ele.emitAndNotify('bounds'); - } - }); - return this; -}; - -elesfn$k.updateCompoundBounds = function () { - var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var cy = this.cy(); // not possible to do on non-compound graphs or with the style disabled - - if (!cy.styleEnabled() || !cy.hasCompoundNodes()) { - return this; - } // save cycles when batching -- but bounds will be stale (or not exist yet) - - - if (!force && cy.batching()) { - return this; - } - - function update(parent) { - if (!parent.isParent()) { - return; - } - - var _p = parent._private; - var children = parent.children(); - var includeLabels = parent.pstyle('compound-sizing-wrt-labels').value === 'include'; - var min = { - width: { - val: parent.pstyle('min-width').pfValue, - left: parent.pstyle('min-width-bias-left'), - right: parent.pstyle('min-width-bias-right') - }, - height: { - val: parent.pstyle('min-height').pfValue, - top: parent.pstyle('min-height-bias-top'), - bottom: parent.pstyle('min-height-bias-bottom') - } - }; - var bb = children.boundingBox({ - includeLabels: includeLabels, - includeOverlays: false, - // updating the compound bounds happens outside of the regular - // cache cycle (i.e. before fired events) - useCache: false - }); - var pos = _p.position; // if children take up zero area then keep position and fall back on stylesheet w/h - - if (bb.w === 0 || bb.h === 0) { - bb = { - w: parent.pstyle('width').pfValue, - h: parent.pstyle('height').pfValue - }; - bb.x1 = pos.x - bb.w / 2; - bb.x2 = pos.x + bb.w / 2; - bb.y1 = pos.y - bb.h / 2; - bb.y2 = pos.y + bb.h / 2; - } - - function computeBiasValues(propDiff, propBias, propBiasComplement) { - var biasDiff = 0; - var biasComplementDiff = 0; - var biasTotal = propBias + propBiasComplement; - - if (propDiff > 0 && biasTotal > 0) { - biasDiff = propBias / biasTotal * propDiff; - biasComplementDiff = propBiasComplement / biasTotal * propDiff; - } - - return { - biasDiff: biasDiff, - biasComplementDiff: biasComplementDiff - }; - } - - function computePaddingValues(width, height, paddingObject, relativeTo) { - // Assuming percentage is number from 0 to 1 - if (paddingObject.units === '%') { - switch (relativeTo) { - case 'width': - return width > 0 ? paddingObject.pfValue * width : 0; - - case 'height': - return height > 0 ? paddingObject.pfValue * height : 0; - - case 'average': - return width > 0 && height > 0 ? paddingObject.pfValue * (width + height) / 2 : 0; - - case 'min': - return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * height : paddingObject.pfValue * width : 0; - - case 'max': - return width > 0 && height > 0 ? width > height ? paddingObject.pfValue * width : paddingObject.pfValue * height : 0; - - default: - return 0; - } - } else if (paddingObject.units === 'px') { - return paddingObject.pfValue; - } else { - return 0; - } - } - - var leftVal = min.width.left.value; - - if (min.width.left.units === 'px' && min.width.val > 0) { - leftVal = leftVal * 100 / min.width.val; - } - - var rightVal = min.width.right.value; - - if (min.width.right.units === 'px' && min.width.val > 0) { - rightVal = rightVal * 100 / min.width.val; - } - - var topVal = min.height.top.value; - - if (min.height.top.units === 'px' && min.height.val > 0) { - topVal = topVal * 100 / min.height.val; - } - - var bottomVal = min.height.bottom.value; - - if (min.height.bottom.units === 'px' && min.height.val > 0) { - bottomVal = bottomVal * 100 / min.height.val; - } - - var widthBiasDiffs = computeBiasValues(min.width.val - bb.w, leftVal, rightVal); - var diffLeft = widthBiasDiffs.biasDiff; - var diffRight = widthBiasDiffs.biasComplementDiff; - var heightBiasDiffs = computeBiasValues(min.height.val - bb.h, topVal, bottomVal); - var diffTop = heightBiasDiffs.biasDiff; - var diffBottom = heightBiasDiffs.biasComplementDiff; - _p.autoPadding = computePaddingValues(bb.w, bb.h, parent.pstyle('padding'), parent.pstyle('padding-relative-to').value); - _p.autoWidth = Math.max(bb.w, min.width.val); - pos.x = (-diffLeft + bb.x1 + bb.x2 + diffRight) / 2; - _p.autoHeight = Math.max(bb.h, min.height.val); - pos.y = (-diffTop + bb.y1 + bb.y2 + diffBottom) / 2; - } - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var _p = ele._private; - - if (!_p.compoundBoundsClean) { - update(ele); - - if (!cy.batching()) { - _p.compoundBoundsClean = true; - } - } - } - - return this; -}; - -var noninf = function noninf(x) { - if (x === Infinity || x === -Infinity) { - return 0; - } - - return x; -}; - -var updateBounds = function updateBounds(b, x1, y1, x2, y2) { - // don't update with zero area boxes - if (x2 - x1 === 0 || y2 - y1 === 0) { - return; - } // don't update with null dim - - - if (x1 == null || y1 == null || x2 == null || y2 == null) { - return; - } - - b.x1 = x1 < b.x1 ? x1 : b.x1; - b.x2 = x2 > b.x2 ? x2 : b.x2; - b.y1 = y1 < b.y1 ? y1 : b.y1; - b.y2 = y2 > b.y2 ? y2 : b.y2; - b.w = b.x2 - b.x1; - b.h = b.y2 - b.y1; -}; - -var updateBoundsFromBox = function updateBoundsFromBox(b, b2) { - if (b2 == null) { - return b; - } - - return updateBounds(b, b2.x1, b2.y1, b2.x2, b2.y2); -}; - -var prefixedProperty = function prefixedProperty(obj, field, prefix) { - return getPrefixedProperty(obj, field, prefix); -}; - -var updateBoundsFromArrow = function updateBoundsFromArrow(bounds, ele, prefix) { - if (ele.cy().headless()) { - return; - } - - var _p = ele._private; - var rstyle = _p.rstyle; - var halfArW = rstyle.arrowWidth / 2; - var arrowType = ele.pstyle(prefix + '-arrow-shape').value; - var x; - var y; - - if (arrowType !== 'none') { - if (prefix === 'source') { - x = rstyle.srcX; - y = rstyle.srcY; - } else if (prefix === 'target') { - x = rstyle.tgtX; - y = rstyle.tgtY; - } else { - x = rstyle.midX; - y = rstyle.midY; - } // always store the individual arrow bounds - - - var bbs = _p.arrowBounds = _p.arrowBounds || {}; - var bb = bbs[prefix] = bbs[prefix] || {}; - bb.x1 = x - halfArW; - bb.y1 = y - halfArW; - bb.x2 = x + halfArW; - bb.y2 = y + halfArW; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - expandBoundingBox(bb, 1); - updateBounds(bounds, bb.x1, bb.y1, bb.x2, bb.y2); - } -}; - -var updateBoundsFromLabel = function updateBoundsFromLabel(bounds, ele, prefix) { - if (ele.cy().headless()) { - return; - } - - var prefixDash; - - if (prefix) { - prefixDash = prefix + '-'; - } else { - prefixDash = ''; - } - - var _p = ele._private; - var rstyle = _p.rstyle; - var label = ele.pstyle(prefixDash + 'label').strValue; - - if (label) { - var halign = ele.pstyle('text-halign'); - var valign = ele.pstyle('text-valign'); - var labelWidth = prefixedProperty(rstyle, 'labelWidth', prefix); - var labelHeight = prefixedProperty(rstyle, 'labelHeight', prefix); - var labelX = prefixedProperty(rstyle, 'labelX', prefix); - var labelY = prefixedProperty(rstyle, 'labelY', prefix); - var marginX = ele.pstyle(prefixDash + 'text-margin-x').pfValue; - var marginY = ele.pstyle(prefixDash + 'text-margin-y').pfValue; - var isEdge = ele.isEdge(); - var rotation = ele.pstyle(prefixDash + 'text-rotation'); - var outlineWidth = ele.pstyle('text-outline-width').pfValue; - var borderWidth = ele.pstyle('text-border-width').pfValue; - var halfBorderWidth = borderWidth / 2; - var padding = ele.pstyle('text-background-padding').pfValue; - var lh = labelHeight; - var lw = labelWidth; - var lw_2 = lw / 2; - var lh_2 = lh / 2; - var lx1, lx2, ly1, ly2; - - if (isEdge) { - lx1 = labelX - lw_2; - lx2 = labelX + lw_2; - ly1 = labelY - lh_2; - ly2 = labelY + lh_2; - } else { - switch (halign.value) { - case 'left': - lx1 = labelX - lw; - lx2 = labelX; - break; - - case 'center': - lx1 = labelX - lw_2; - lx2 = labelX + lw_2; - break; - - case 'right': - lx1 = labelX; - lx2 = labelX + lw; - break; - } - - switch (valign.value) { - case 'top': - ly1 = labelY - lh; - ly2 = labelY; - break; - - case 'center': - ly1 = labelY - lh_2; - ly2 = labelY + lh_2; - break; - - case 'bottom': - ly1 = labelY; - ly2 = labelY + lh; - break; - } - } // shift by margin and expand by outline and border - - - lx1 += marginX - Math.max(outlineWidth, halfBorderWidth) - padding; - lx2 += marginX + Math.max(outlineWidth, halfBorderWidth) + padding; - ly1 += marginY - Math.max(outlineWidth, halfBorderWidth) - padding; - ly2 += marginY + Math.max(outlineWidth, halfBorderWidth) + padding; // always store the unrotated label bounds separately - - var bbPrefix = prefix || 'main'; - var bbs = _p.labelBounds; - var bb = bbs[bbPrefix] = bbs[bbPrefix] || {}; - bb.x1 = lx1; - bb.y1 = ly1; - bb.x2 = lx2; - bb.y2 = ly2; - bb.w = lx2 - lx1; - bb.h = ly2 - ly1; - expandBoundingBox(bb, 1); // expand to work around browser dimension inaccuracies - - var isAutorotate = isEdge && rotation.strValue === 'autorotate'; - var isPfValue = rotation.pfValue != null && rotation.pfValue !== 0; - - if (isAutorotate || isPfValue) { - var theta = isAutorotate ? prefixedProperty(_p.rstyle, 'labelAngle', prefix) : rotation.pfValue; - var cos = Math.cos(theta); - var sin = Math.sin(theta); // rotation point (default value for center-center) - - var xo = (lx1 + lx2) / 2; - var yo = (ly1 + ly2) / 2; - - if (!isEdge) { - switch (halign.value) { - case 'left': - xo = lx2; - break; - - case 'right': - xo = lx1; - break; - } - - switch (valign.value) { - case 'top': - yo = ly2; - break; - - case 'bottom': - yo = ly1; - break; - } - } - - var rotate = function rotate(x, y) { - x = x - xo; - y = y - yo; - return { - x: x * cos - y * sin + xo, - y: x * sin + y * cos + yo - }; - }; - - var px1y1 = rotate(lx1, ly1); - var px1y2 = rotate(lx1, ly2); - var px2y1 = rotate(lx2, ly1); - var px2y2 = rotate(lx2, ly2); - lx1 = Math.min(px1y1.x, px1y2.x, px2y1.x, px2y2.x); - lx2 = Math.max(px1y1.x, px1y2.x, px2y1.x, px2y2.x); - ly1 = Math.min(px1y1.y, px1y2.y, px2y1.y, px2y2.y); - ly2 = Math.max(px1y1.y, px1y2.y, px2y1.y, px2y2.y); - } - - var bbPrefixRot = bbPrefix + 'Rot'; - var bbRot = bbs[bbPrefixRot] = bbs[bbPrefixRot] || {}; - bbRot.x1 = lx1; - bbRot.y1 = ly1; - bbRot.x2 = lx2; - bbRot.y2 = ly2; - bbRot.w = lx2 - lx1; - bbRot.h = ly2 - ly1; - updateBounds(bounds, lx1, ly1, lx2, ly2); - updateBounds(_p.labelBounds.all, lx1, ly1, lx2, ly2); - } - - return bounds; -}; // get the bounding box of the elements (in raw model position) - - -var boundingBoxImpl = function boundingBoxImpl(ele, options) { - var cy = ele._private.cy; - var styleEnabled = cy.styleEnabled(); - var headless = cy.headless(); - var bounds = makeBoundingBox(); - var _p = ele._private; - var isNode = ele.isNode(); - var isEdge = ele.isEdge(); - var ex1, ex2, ey1, ey2; // extrema of body / lines - - var x, y; // node pos - - var rstyle = _p.rstyle; - var manualExpansion = isNode && styleEnabled ? ele.pstyle('bounds-expansion').pfValue : [0]; // must use `display` prop only, as reading `compound.width()` causes recursion - // (other factors like width values will be considered later in this function anyway) - - var isDisplayed = function isDisplayed(ele) { - return ele.pstyle('display').value !== 'none'; - }; - - var displayed = !styleEnabled || isDisplayed(ele) // must take into account connected nodes b/c of implicit edge hiding on display:none node - && (!isEdge || isDisplayed(ele.source()) && isDisplayed(ele.target())); - - if (displayed) { - // displayed suffices, since we will find zero area eles anyway - var overlayOpacity = 0; - var overlayPadding = 0; - - if (styleEnabled && options.includeOverlays) { - overlayOpacity = ele.pstyle('overlay-opacity').value; - - if (overlayOpacity !== 0) { - overlayPadding = ele.pstyle('overlay-padding').value; - } - } - - var w = 0; - var wHalf = 0; - - if (styleEnabled) { - w = ele.pstyle('width').pfValue; - wHalf = w / 2; - } - - if (isNode && options.includeNodes) { - var pos = ele.position(); - x = pos.x; - y = pos.y; - - var _w = ele.outerWidth(); - - var halfW = _w / 2; - var h = ele.outerHeight(); - var halfH = h / 2; // handle node dimensions - ///////////////////////// - - ex1 = x - halfW; - ex2 = x + halfW; - ey1 = y - halfH; - ey2 = y + halfH; - updateBounds(bounds, ex1, ey1, ex2, ey2); - } else if (isEdge && options.includeEdges) { - if (styleEnabled && !headless) { - var curveStyle = ele.pstyle('curve-style').strValue; // handle edge dimensions (rough box estimate) - ////////////////////////////////////////////// - - ex1 = Math.min(rstyle.srcX, rstyle.midX, rstyle.tgtX); - ex2 = Math.max(rstyle.srcX, rstyle.midX, rstyle.tgtX); - ey1 = Math.min(rstyle.srcY, rstyle.midY, rstyle.tgtY); - ey2 = Math.max(rstyle.srcY, rstyle.midY, rstyle.tgtY); // take into account edge width - - ex1 -= wHalf; - ex2 += wHalf; - ey1 -= wHalf; - ey2 += wHalf; - updateBounds(bounds, ex1, ey1, ex2, ey2); // precise edges - //////////////// - - if (curveStyle === 'haystack') { - var hpts = rstyle.haystackPts; - - if (hpts && hpts.length === 2) { - ex1 = hpts[0].x; - ey1 = hpts[0].y; - ex2 = hpts[1].x; - ey2 = hpts[1].y; - - if (ex1 > ex2) { - var temp = ex1; - ex1 = ex2; - ex2 = temp; - } - - if (ey1 > ey2) { - var _temp = ey1; - ey1 = ey2; - ey2 = _temp; - } - - updateBounds(bounds, ex1 - wHalf, ey1 - wHalf, ex2 + wHalf, ey2 + wHalf); - } - } else if (curveStyle === 'bezier' || curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'taxi') { - var pts; - - switch (curveStyle) { - case 'bezier': - case 'unbundled-bezier': - pts = rstyle.bezierPts; - break; - - case 'segments': - case 'taxi': - pts = rstyle.linePts; - break; - } - - if (pts != null) { - for (var j = 0; j < pts.length; j++) { - var pt = pts[j]; - ex1 = pt.x - wHalf; - ex2 = pt.x + wHalf; - ey1 = pt.y - wHalf; - ey2 = pt.y + wHalf; - updateBounds(bounds, ex1, ey1, ex2, ey2); - } - } - } // bezier-like or segment-like edge - - } else { - // headless or style disabled - // fallback on source and target positions - ////////////////////////////////////////// - var n1 = ele.source(); - var n1pos = n1.position(); - var n2 = ele.target(); - var n2pos = n2.position(); - ex1 = n1pos.x; - ex2 = n2pos.x; - ey1 = n1pos.y; - ey2 = n2pos.y; - - if (ex1 > ex2) { - var _temp2 = ex1; - ex1 = ex2; - ex2 = _temp2; - } - - if (ey1 > ey2) { - var _temp3 = ey1; - ey1 = ey2; - ey2 = _temp3; - } // take into account edge width - - - ex1 -= wHalf; - ex2 += wHalf; - ey1 -= wHalf; - ey2 += wHalf; - updateBounds(bounds, ex1, ey1, ex2, ey2); - } // headless or style disabled - - } // edges - // handle edge arrow size - ///////////////////////// - - - if (styleEnabled && options.includeEdges && isEdge) { - updateBoundsFromArrow(bounds, ele, 'mid-source'); - updateBoundsFromArrow(bounds, ele, 'mid-target'); - updateBoundsFromArrow(bounds, ele, 'source'); - updateBoundsFromArrow(bounds, ele, 'target'); - } // ghost - //////// - - - if (styleEnabled) { - var ghost = ele.pstyle('ghost').value === 'yes'; - - if (ghost) { - var gx = ele.pstyle('ghost-offset-x').pfValue; - var gy = ele.pstyle('ghost-offset-y').pfValue; - updateBounds(bounds, bounds.x1 + gx, bounds.y1 + gy, bounds.x2 + gx, bounds.y2 + gy); - } - } // always store the body bounds separately from the labels - - - var bbBody = _p.bodyBounds = _p.bodyBounds || {}; - assignBoundingBox(bbBody, bounds); - expandBoundingBoxSides(bbBody, manualExpansion); - expandBoundingBox(bbBody, 1); // expand to work around browser dimension inaccuracies - // overlay - ////////// - - if (styleEnabled) { - ex1 = bounds.x1; - ex2 = bounds.x2; - ey1 = bounds.y1; - ey2 = bounds.y2; - updateBounds(bounds, ex1 - overlayPadding, ey1 - overlayPadding, ex2 + overlayPadding, ey2 + overlayPadding); - } // always store the body bounds separately from the labels - - - var bbOverlay = _p.overlayBounds = _p.overlayBounds || {}; - assignBoundingBox(bbOverlay, bounds); - expandBoundingBoxSides(bbOverlay, manualExpansion); - expandBoundingBox(bbOverlay, 1); // expand to work around browser dimension inaccuracies - // handle label dimensions - ////////////////////////// - - var bbLabels = _p.labelBounds = _p.labelBounds || {}; - - if (bbLabels.all != null) { - clearBoundingBox(bbLabels.all); - } else { - bbLabels.all = makeBoundingBox(); - } - - if (styleEnabled && options.includeLabels) { - if (options.includeMainLabels) { - updateBoundsFromLabel(bounds, ele, null); - } - - if (isEdge) { - if (options.includeSourceLabels) { - updateBoundsFromLabel(bounds, ele, 'source'); - } - - if (options.includeTargetLabels) { - updateBoundsFromLabel(bounds, ele, 'target'); - } - } - } // style enabled for labels - - } // if displayed - - - bounds.x1 = noninf(bounds.x1); - bounds.y1 = noninf(bounds.y1); - bounds.x2 = noninf(bounds.x2); - bounds.y2 = noninf(bounds.y2); - bounds.w = noninf(bounds.x2 - bounds.x1); - bounds.h = noninf(bounds.y2 - bounds.y1); - - if (bounds.w > 0 && bounds.h > 0 && displayed) { - expandBoundingBoxSides(bounds, manualExpansion); // expand bounds by 1 because antialiasing can increase the visual/effective size by 1 on all sides - - expandBoundingBox(bounds, 1); - } - - return bounds; -}; - -var getKey = function getKey(opts) { - var i = 0; - - var tf = function tf(val) { - return (val ? 1 : 0) << i++; - }; - - var key = 0; - key += tf(opts.incudeNodes); - key += tf(opts.includeEdges); - key += tf(opts.includeLabels); - key += tf(opts.includeMainLabels); - key += tf(opts.includeSourceLabels); - key += tf(opts.includeTargetLabels); - key += tf(opts.includeOverlays); - return key; -}; - -var getBoundingBoxPosKey = function getBoundingBoxPosKey(ele) { - if (ele.isEdge()) { - var p1 = ele.source().position(); - var p2 = ele.target().position(); - - var r = function r(x) { - return Math.round(x); - }; - - return hashIntsArray([r(p1.x), r(p1.y), r(p2.x), r(p2.y)]); - } else { - return 0; - } -}; - -var cachedBoundingBoxImpl = function cachedBoundingBoxImpl(ele, opts) { - var _p = ele._private; - var bb; - var isEdge = ele.isEdge(); - var key = opts == null ? defBbOptsKey : getKey(opts); - var usingDefOpts = key === defBbOptsKey; - var currPosKey = getBoundingBoxPosKey(ele); - var isPosKeySame = _p.bbCachePosKey === currPosKey; - var useCache = opts.useCache && isPosKeySame; - - var isDirty = function isDirty(ele) { - return ele._private.bbCache == null; - }; - - var needRecalc = !useCache || isDirty(ele) || isEdge && isDirty(ele.source()) || isDirty(ele.target()); - - if (needRecalc) { - if (!isPosKeySame) { - ele.recalculateRenderedStyle(); - } - - bb = boundingBoxImpl(ele, defBbOpts); - _p.bbCache = bb; - _p.bbCacheShift.x = _p.bbCacheShift.y = 0; - _p.bbCachePosKey = currPosKey; - } else { - bb = _p.bbCache; - } - - if (!needRecalc && (_p.bbCacheShift.x !== 0 || _p.bbCacheShift.y !== 0)) { - var shift = assignShiftToBoundingBox; - var delta = _p.bbCacheShift; - - var safeShift = function safeShift(bb, delta) { - if (bb != null) { - shift(bb, delta); - } - }; - - shift(bb, delta); - var bodyBounds = _p.bodyBounds, - overlayBounds = _p.overlayBounds, - labelBounds = _p.labelBounds, - arrowBounds = _p.arrowBounds; - safeShift(bodyBounds, delta); - safeShift(overlayBounds, delta); - - if (arrowBounds != null) { - safeShift(arrowBounds.source, delta); - safeShift(arrowBounds.target, delta); - safeShift(arrowBounds['mid-source'], delta); - safeShift(arrowBounds['mid-target'], delta); - } - - if (labelBounds != null) { - safeShift(labelBounds.main, delta); - safeShift(labelBounds.all, delta); - safeShift(labelBounds.source, delta); - safeShift(labelBounds.target, delta); - } - } // always reset the shift, because we either applied the shift or cleared it by doing a fresh recalc - - - _p.bbCacheShift.x = _p.bbCacheShift.y = 0; // not using def opts => need to build up bb from combination of sub bbs - - if (!usingDefOpts) { - var isNode = ele.isNode(); - bb = makeBoundingBox(); - - if (opts.includeNodes && isNode || opts.includeEdges && !isNode) { - if (opts.includeOverlays) { - updateBoundsFromBox(bb, _p.overlayBounds); - } else { - updateBoundsFromBox(bb, _p.bodyBounds); - } - } - - if (opts.includeLabels) { - if (opts.includeMainLabels && (!isEdge || opts.includeSourceLabels && opts.includeTargetLabels)) { - updateBoundsFromBox(bb, _p.labelBounds.all); - } else { - if (opts.includeMainLabels) { - updateBoundsFromBox(bb, _p.labelBounds.mainRot); - } - - if (opts.includeSourceLabels) { - updateBoundsFromBox(bb, _p.labelBounds.sourceRot); - } - - if (opts.includeTargetLabels) { - updateBoundsFromBox(bb, _p.labelBounds.targetRot); - } - } - } - - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - } - - return bb; -}; - -var defBbOpts = { - includeNodes: true, - includeEdges: true, - includeLabels: true, - includeMainLabels: true, - includeSourceLabels: true, - includeTargetLabels: true, - includeOverlays: true, - useCache: true -}; -var defBbOptsKey = getKey(defBbOpts); -var filledBbOpts = defaults(defBbOpts); - -elesfn$k.boundingBox = function (options) { - var bounds; // the main usecase is ele.boundingBox() for a single element with no/def options - // specified s.t. the cache is used, so check for this case to make it faster by - // avoiding the overhead of the rest of the function - - if (this.length === 1 && this[0]._private.bbCache != null && (options === undefined || options.useCache === undefined || options.useCache === true)) { - if (options === undefined) { - options = defBbOpts; - } else { - options = filledBbOpts(options); - } - - bounds = cachedBoundingBoxImpl(this[0], options); - } else { - bounds = makeBoundingBox(); - options = options || defBbOpts; - var opts = filledBbOpts(options); - var eles = this; - var cy = eles.cy(); - var styleEnabled = cy.styleEnabled(); - - if (styleEnabled) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _p = ele._private; - var currPosKey = getBoundingBoxPosKey(ele); - var isPosKeySame = _p.bbCachePosKey === currPosKey; - var useCache = opts.useCache && isPosKeySame; - ele.recalculateRenderedStyle(useCache); - } - } - - this.updateCompoundBounds(); - - for (var _i = 0; _i < eles.length; _i++) { - var _ele = eles[_i]; - updateBoundsFromBox(bounds, cachedBoundingBoxImpl(_ele, opts)); - } - } - - bounds.x1 = noninf(bounds.x1); - bounds.y1 = noninf(bounds.y1); - bounds.x2 = noninf(bounds.x2); - bounds.y2 = noninf(bounds.y2); - bounds.w = noninf(bounds.x2 - bounds.x1); - bounds.h = noninf(bounds.y2 - bounds.y1); - return bounds; -}; - -elesfn$k.dirtyBoundingBoxCache = function () { - for (var i = 0; i < this.length; i++) { - var _p = this[i]._private; - _p.bbCache = null; - _p.bbCacheShift.x = _p.bbCacheShift.y = 0; - _p.bbCachePosKey = null; - _p.bodyBounds = null; - _p.overlayBounds = null; - _p.labelBounds.all = null; - _p.labelBounds.source = null; - _p.labelBounds.target = null; - _p.labelBounds.main = null; - _p.labelBounds.sourceRot = null; - _p.labelBounds.targetRot = null; - _p.labelBounds.mainRot = null; - _p.arrowBounds.source = null; - _p.arrowBounds.target = null; - _p.arrowBounds['mid-source'] = null; - _p.arrowBounds['mid-target'] = null; - } - - this.emitAndNotify('bounds'); - return this; -}; - -elesfn$k.shiftCachedBoundingBox = function (delta) { - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var _p = ele._private; - var bb = _p.bbCache; - - if (bb != null) { - _p.bbCacheShift.x += delta.x; - _p.bbCacheShift.y += delta.y; - } - } - - this.emitAndNotify('bounds'); - return this; -}; // private helper to get bounding box for custom node positions -// - good for perf in certain cases but currently requires dirtying the rendered style -// - would be better to not modify the nodes but the nodes are read directly everywhere in the renderer... -// - try to use for only things like discrete layouts where the node position would change anyway - - -elesfn$k.boundingBoxAt = function (fn) { - var nodes = this.nodes(); - var cy = this.cy(); - var hasCompoundNodes = cy.hasCompoundNodes(); - - if (hasCompoundNodes) { - nodes = nodes.filter(function (node) { - return !node.isParent(); - }); - } - - if (plainObject(fn)) { - var obj = fn; - - fn = function fn() { - return obj; - }; - } - - var storeOldPos = function storeOldPos(node, i) { - return node._private.bbAtOldPos = fn(node, i); - }; - - var getOldPos = function getOldPos(node) { - return node._private.bbAtOldPos; - }; - - cy.startBatch(); - nodes.forEach(storeOldPos).silentPositions(fn); - - if (hasCompoundNodes) { - this.updateCompoundBounds(true); // force update b/c we're inside a batch cycle - } - - var bb = copyBoundingBox(this.boundingBox({ - useCache: false - })); - nodes.silentPositions(getOldPos); - cy.endBatch(); - return bb; -}; - -fn$3.boundingbox = fn$3.bb = fn$3.boundingBox; -fn$3.renderedBoundingbox = fn$3.renderedBoundingBox; -var bounds = elesfn$k; - -var fn$4, elesfn$l; -fn$4 = elesfn$l = {}; - -var defineDimFns = function defineDimFns(opts) { - opts.uppercaseName = capitalize(opts.name); - opts.autoName = 'auto' + opts.uppercaseName; - opts.labelName = 'label' + opts.uppercaseName; - opts.outerName = 'outer' + opts.uppercaseName; - opts.uppercaseOuterName = capitalize(opts.outerName); - - fn$4[opts.name] = function dimImpl() { - var ele = this[0]; - var _p = ele._private; - var cy = _p.cy; - var styleEnabled = cy._private.styleEnabled; - - if (ele) { - if (styleEnabled) { - if (ele.isParent()) { - ele.updateCompoundBounds(); - return _p[opts.autoName] || 0; - } - - var d = ele.pstyle(opts.name); - - switch (d.strValue) { - case 'label': - ele.recalculateRenderedStyle(); - return _p.rstyle[opts.labelName] || 0; - - default: - return d.pfValue; - } - } else { - return 1; - } - } - }; - - fn$4['outer' + opts.uppercaseName] = function outerDimImpl() { - var ele = this[0]; - var _p = ele._private; - var cy = _p.cy; - var styleEnabled = cy._private.styleEnabled; - - if (ele) { - if (styleEnabled) { - var dim = ele[opts.name](); - var border = ele.pstyle('border-width').pfValue; // n.b. 1/2 each side - - var padding = 2 * ele.padding(); - return dim + border + padding; - } else { - return 1; - } - } - }; - - fn$4['rendered' + opts.uppercaseName] = function renderedDimImpl() { - var ele = this[0]; - - if (ele) { - var d = ele[opts.name](); - return d * this.cy().zoom(); - } - }; - - fn$4['rendered' + opts.uppercaseOuterName] = function renderedOuterDimImpl() { - var ele = this[0]; - - if (ele) { - var od = ele[opts.outerName](); - return od * this.cy().zoom(); - } - }; -}; - -defineDimFns({ - name: 'width' -}); -defineDimFns({ - name: 'height' -}); - -elesfn$l.padding = function () { - var ele = this[0]; - var _p = ele._private; - - if (ele.isParent()) { - ele.updateCompoundBounds(); - - if (_p.autoPadding !== undefined) { - return _p.autoPadding; - } else { - return ele.pstyle('padding').pfValue; - } - } else { - return ele.pstyle('padding').pfValue; - } -}; - -elesfn$l.paddedHeight = function () { - var ele = this[0]; - return ele.height() + 2 * ele.padding(); -}; - -elesfn$l.paddedWidth = function () { - var ele = this[0]; - return ele.width() + 2 * ele.padding(); -}; - -var widthHeight = elesfn$l; - -var ifEdge = function ifEdge(ele, getValue) { - if (ele.isEdge()) { - return getValue(ele); - } -}; - -var ifEdgeRenderedPosition = function ifEdgeRenderedPosition(ele, getPoint) { - if (ele.isEdge()) { - var cy = ele.cy(); - return modelToRenderedPosition(getPoint(ele), cy.zoom(), cy.pan()); - } -}; - -var ifEdgeRenderedPositions = function ifEdgeRenderedPositions(ele, getPoints) { - if (ele.isEdge()) { - var cy = ele.cy(); - var pan = cy.pan(); - var zoom = cy.zoom(); - return getPoints(ele).map(function (p) { - return modelToRenderedPosition(p, zoom, pan); - }); - } -}; - -var controlPoints = function controlPoints(ele) { - return ele.renderer().getControlPoints(ele); -}; - -var segmentPoints = function segmentPoints(ele) { - return ele.renderer().getSegmentPoints(ele); -}; - -var sourceEndpoint = function sourceEndpoint(ele) { - return ele.renderer().getSourceEndpoint(ele); -}; - -var targetEndpoint = function targetEndpoint(ele) { - return ele.renderer().getTargetEndpoint(ele); -}; - -var midpoint = function midpoint(ele) { - return ele.renderer().getEdgeMidpoint(ele); -}; - -var pts = { - controlPoints: { - get: controlPoints, - mult: true - }, - segmentPoints: { - get: segmentPoints, - mult: true - }, - sourceEndpoint: { - get: sourceEndpoint - }, - targetEndpoint: { - get: targetEndpoint - }, - midpoint: { - get: midpoint - } -}; - -var renderedName = function renderedName(name) { - return 'rendered' + name[0].toUpperCase() + name.substr(1); -}; - -var edgePoints = Object.keys(pts).reduce(function (obj, name) { - var spec = pts[name]; - var rName = renderedName(name); - - obj[name] = function () { - return ifEdge(this, spec.get); - }; - - if (spec.mult) { - obj[rName] = function () { - return ifEdgeRenderedPositions(this, spec.get); - }; - } else { - obj[rName] = function () { - return ifEdgeRenderedPosition(this, spec.get); - }; - } - - return obj; -}, {}); - -var dimensions = extend({}, position, bounds, widthHeight, edgePoints); - -/*! -Event object based on jQuery events, MIT license - -https://jquery.org/license/ -https://tldrlegal.com/license/mit-license -https://github.com/jquery/jquery/blob/master/src/event.js -*/ -var Event = function Event(src, props) { - this.recycle(src, props); -}; - -function returnFalse() { - return false; -} - -function returnTrue() { - return true; -} // http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html - - -Event.prototype = { - instanceString: function instanceString() { - return 'event'; - }, - recycle: function recycle(src, props) { - this.isImmediatePropagationStopped = this.isPropagationStopped = this.isDefaultPrevented = returnFalse; - - if (src != null && src.preventDefault) { - // Browser Event object - this.type = src.type; // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - - this.isDefaultPrevented = src.defaultPrevented ? returnTrue : returnFalse; - } else if (src != null && src.type) { - // Plain object containing all event details - props = src; - } else { - // Event string - this.type = src; - } // Put explicitly provided properties onto the event object - - - if (props != null) { - // more efficient to manually copy fields we use - this.originalEvent = props.originalEvent; - this.type = props.type != null ? props.type : this.type; - this.cy = props.cy; - this.target = props.target; - this.position = props.position; - this.renderedPosition = props.renderedPosition; - this.namespace = props.namespace; - this.layout = props.layout; - } - - if (this.cy != null && this.position != null && this.renderedPosition == null) { - // create a rendered position based on the passed position - var pos = this.position; - var zoom = this.cy.zoom(); - var pan = this.cy.pan(); - this.renderedPosition = { - x: pos.x * zoom + pan.x, - y: pos.y * zoom + pan.y - }; - } // Create a timestamp if incoming event doesn't have one - - - this.timeStamp = src && src.timeStamp || Date.now(); - }, - preventDefault: function preventDefault() { - this.isDefaultPrevented = returnTrue; - var e = this.originalEvent; - - if (!e) { - return; - } // if preventDefault exists run it on the original event - - - if (e.preventDefault) { - e.preventDefault(); - } - }, - stopPropagation: function stopPropagation() { - this.isPropagationStopped = returnTrue; - var e = this.originalEvent; - - if (!e) { - return; - } // if stopPropagation exists run it on the original event - - - if (e.stopPropagation) { - e.stopPropagation(); - } - }, - stopImmediatePropagation: function stopImmediatePropagation() { - this.isImmediatePropagationStopped = returnTrue; - this.stopPropagation(); - }, - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse -}; - -var eventRegex = /^([^.]+)(\.(?:[^.]+))?$/; // regex for matching event strings (e.g. "click.namespace") - -var universalNamespace = '.*'; // matches as if no namespace specified and prevents users from unbinding accidentally - -var defaults$8 = { - qualifierCompare: function qualifierCompare(q1, q2) { - return q1 === q2; - }, - eventMatches: function eventMatches() - /*context, listener, eventObj*/ - { - return true; - }, - addEventFields: function addEventFields() - /*context, evt*/ - {}, - callbackContext: function callbackContext(context - /*, listener, eventObj*/ - ) { - return context; - }, - beforeEmit: function beforeEmit() - /* context, listener, eventObj */ - {}, - afterEmit: function afterEmit() - /* context, listener, eventObj */ - {}, - bubble: function bubble() - /*context*/ - { - return false; - }, - parent: function parent() - /*context*/ - { - return null; - }, - context: null -}; -var defaultsKeys = Object.keys(defaults$8); -var emptyOpts = {}; - -function Emitter() { - var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : emptyOpts; - var context = arguments.length > 1 ? arguments[1] : undefined; - - // micro-optimisation vs Object.assign() -- reduces Element instantiation time - for (var i = 0; i < defaultsKeys.length; i++) { - var key = defaultsKeys[i]; - this[key] = opts[key] || defaults$8[key]; - } - - this.context = context || this.context; - this.listeners = []; - this.emitting = 0; -} - -var p = Emitter.prototype; - -var forEachEvent = function forEachEvent(self, handler, events, qualifier, callback, conf, confOverrides) { - if (fn(qualifier)) { - callback = qualifier; - qualifier = null; - } - - if (confOverrides) { - if (conf == null) { - conf = confOverrides; - } else { - conf = extend({}, conf, confOverrides); - } - } - - var eventList = array(events) ? events : events.split(/\s+/); - - for (var i = 0; i < eventList.length; i++) { - var evt = eventList[i]; - - if (emptyString(evt)) { - continue; - } - - var match = evt.match(eventRegex); // type[.namespace] - - if (match) { - var type = match[1]; - var namespace = match[2] ? match[2] : null; - var ret = handler(self, evt, type, namespace, qualifier, callback, conf); - - if (ret === false) { - break; - } // allow exiting early - - } - } -}; - -var makeEventObj = function makeEventObj(self, obj) { - self.addEventFields(self.context, obj); - return new Event(obj.type, obj); -}; - -var forEachEventObj = function forEachEventObj(self, handler, events) { - if (event(events)) { - handler(self, events); - return; - } else if (plainObject(events)) { - handler(self, makeEventObj(self, events)); - return; - } - - var eventList = array(events) ? events : events.split(/\s+/); - - for (var i = 0; i < eventList.length; i++) { - var evt = eventList[i]; - - if (emptyString(evt)) { - continue; - } - - var match = evt.match(eventRegex); // type[.namespace] - - if (match) { - var type = match[1]; - var namespace = match[2] ? match[2] : null; - var eventObj = makeEventObj(self, { - type: type, - namespace: namespace, - target: self.context - }); - handler(self, eventObj); - } - } -}; - -p.on = p.addListener = function (events, qualifier, callback, conf, confOverrides) { - forEachEvent(this, function (self, event, type, namespace, qualifier, callback, conf) { - if (fn(callback)) { - self.listeners.push({ - event: event, - // full event string - callback: callback, - // callback to run - type: type, - // the event type (e.g. 'click') - namespace: namespace, - // the event namespace (e.g. ".foo") - qualifier: qualifier, - // a restriction on whether to match this emitter - conf: conf // additional configuration - - }); - } - }, events, qualifier, callback, conf, confOverrides); - return this; -}; - -p.one = function (events, qualifier, callback, conf) { - return this.on(events, qualifier, callback, conf, { - one: true - }); -}; - -p.removeListener = p.off = function (events, qualifier, callback, conf) { - var _this = this; - - if (this.emitting !== 0) { - this.listeners = copyArray(this.listeners); - } - - var listeners = this.listeners; - - var _loop = function _loop(i) { - var listener = listeners[i]; - forEachEvent(_this, function (self, event, type, namespace, qualifier, callback - /*, conf*/ - ) { - if ((listener.type === type || events === '*') && (!namespace && listener.namespace !== '.*' || listener.namespace === namespace) && (!qualifier || self.qualifierCompare(listener.qualifier, qualifier)) && (!callback || listener.callback === callback)) { - listeners.splice(i, 1); - return false; - } - }, events, qualifier, callback, conf); - }; - - for (var i = listeners.length - 1; i >= 0; i--) { - _loop(i); - } - - return this; -}; - -p.removeAllListeners = function () { - return this.removeListener('*'); -}; - -p.emit = p.trigger = function (events, extraParams, manualCallback) { - var listeners = this.listeners; - var numListenersBeforeEmit = listeners.length; - this.emitting++; - - if (!array(extraParams)) { - extraParams = [extraParams]; - } - - forEachEventObj(this, function (self, eventObj) { - if (manualCallback != null) { - listeners = [{ - event: eventObj.event, - type: eventObj.type, - namespace: eventObj.namespace, - callback: manualCallback - }]; - numListenersBeforeEmit = listeners.length; - } - - var _loop2 = function _loop2(i) { - var listener = listeners[i]; - - if (listener.type === eventObj.type && (!listener.namespace || listener.namespace === eventObj.namespace || listener.namespace === universalNamespace) && self.eventMatches(self.context, listener, eventObj)) { - var args = [eventObj]; - - if (extraParams != null) { - push(args, extraParams); - } - - self.beforeEmit(self.context, listener, eventObj); - - if (listener.conf && listener.conf.one) { - self.listeners = self.listeners.filter(function (l) { - return l !== listener; - }); - } - - var context = self.callbackContext(self.context, listener, eventObj); - var ret = listener.callback.apply(context, args); - self.afterEmit(self.context, listener, eventObj); - - if (ret === false) { - eventObj.stopPropagation(); - eventObj.preventDefault(); - } - } // if listener matches - - }; - - for (var i = 0; i < numListenersBeforeEmit; i++) { - _loop2(i); - } // for listener - - - if (self.bubble(self.context) && !eventObj.isPropagationStopped()) { - self.parent(self.context).emit(eventObj, extraParams); - } - }, events); - this.emitting--; - return this; -}; - -var emitterOptions = { - qualifierCompare: function qualifierCompare(selector1, selector2) { - if (selector1 == null || selector2 == null) { - return selector1 == null && selector2 == null; - } else { - return selector1.sameText(selector2); - } - }, - eventMatches: function eventMatches(ele, listener, eventObj) { - var selector = listener.qualifier; - - if (selector != null) { - return ele !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); - } - - return true; - }, - addEventFields: function addEventFields(ele, evt) { - evt.cy = ele.cy(); - evt.target = ele; - }, - callbackContext: function callbackContext(ele, listener, eventObj) { - return listener.qualifier != null ? eventObj.target : ele; - }, - beforeEmit: function beforeEmit(context, listener - /*, eventObj*/ - ) { - if (listener.conf && listener.conf.once) { - listener.conf.onceCollection.removeListener(listener.event, listener.qualifier, listener.callback); - } - }, - bubble: function bubble() { - return true; - }, - parent: function parent(ele) { - return ele.isChild() ? ele.parent() : ele.cy(); - } -}; - -var argSelector = function argSelector(arg) { - if (string(arg)) { - return new Selector(arg); - } else { - return arg; - } -}; - -var elesfn$m = { - createEmitter: function createEmitter() { - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var _p = ele._private; - - if (!_p.emitter) { - _p.emitter = new Emitter(emitterOptions, ele); - } - } - - return this; - }, - emitter: function emitter() { - return this._private.emitter; - }, - on: function on(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().on(events, argSel, callback); - } - - return this; - }, - removeListener: function removeListener(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().removeListener(events, argSel, callback); - } - - return this; - }, - removeAllListeners: function removeAllListeners() { - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().removeAllListeners(); - } - - return this; - }, - one: function one(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().one(events, argSel, callback); - } - - return this; - }, - once: function once(events, selector, callback) { - var argSel = argSelector(selector); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().on(events, argSel, callback, { - once: true, - onceCollection: this - }); - } - }, - emit: function emit(events, extraParams) { - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - ele.emitter().emit(events, extraParams); - } - - return this; - }, - emitAndNotify: function emitAndNotify(event, extraParams) { - // for internal use only - if (this.length === 0) { - return; - } // empty collections don't need to notify anything - // notify renderer - - - this.cy().notify(event, this); - this.emit(event, extraParams); - return this; - } -}; -define$3.eventAliasesOn(elesfn$m); - -var elesfn$n = { - nodes: function nodes(selector) { - return this.filter(function (ele) { - return ele.isNode(); - }).filter(selector); - }, - edges: function edges(selector) { - return this.filter(function (ele) { - return ele.isEdge(); - }).filter(selector); - }, - // internal helper to get nodes and edges as separate collections with single iteration over elements - byGroup: function byGroup() { - var nodes = this.spawn(); - var edges = this.spawn(); - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - - if (ele.isNode()) { - nodes.push(ele); - } else { - edges.push(ele); - } - } - - return { - nodes: nodes, - edges: edges - }; - }, - filter: function filter(_filter, thisArg) { - if (_filter === undefined) { - // check this first b/c it's the most common/performant case - return this; - } else if (string(_filter) || elementOrCollection(_filter)) { - return new Selector(_filter).filter(this); - } else if (fn(_filter)) { - var filterEles = this.spawn(); - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var include = thisArg ? _filter.apply(thisArg, [ele, i, eles]) : _filter(ele, i, eles); - - if (include) { - filterEles.push(ele); - } - } - - return filterEles; - } - - return this.spawn(); // if not handled by above, give 'em an empty collection - }, - not: function not(toRemove) { - if (!toRemove) { - return this; - } else { - if (string(toRemove)) { - toRemove = this.filter(toRemove); - } - - var elements = this.spawn(); - - for (var i = 0; i < this.length; i++) { - var element = this[i]; - var remove = toRemove.has(element); - - if (!remove) { - elements.push(element); - } - } - - return elements; - } - }, - absoluteComplement: function absoluteComplement() { - var cy = this.cy(); - return cy.mutableElements().not(this); - }, - intersect: function intersect(other) { - // if a selector is specified, then filter by it instead - if (string(other)) { - var selector = other; - return this.filter(selector); - } - - var elements = this.spawn(); - var col1 = this; - var col2 = other; - var col1Smaller = this.length < other.length; - var colS = col1Smaller ? col1 : col2; - var colL = col1Smaller ? col2 : col1; - - for (var i = 0; i < colS.length; i++) { - var ele = colS[i]; - - if (colL.has(ele)) { - elements.push(ele); - } - } - - return elements; - }, - xor: function xor(other) { - var cy = this._private.cy; - - if (string(other)) { - other = cy.$(other); - } - - var elements = this.spawn(); - var col1 = this; - var col2 = other; - - var add = function add(col, other) { - for (var i = 0; i < col.length; i++) { - var ele = col[i]; - var id = ele._private.data.id; - var inOther = other.hasElementWithId(id); - - if (!inOther) { - elements.push(ele); - } - } - }; - - add(col1, col2); - add(col2, col1); - return elements; - }, - diff: function diff(other) { - var cy = this._private.cy; - - if (string(other)) { - other = cy.$(other); - } - - var left = this.spawn(); - var right = this.spawn(); - var both = this.spawn(); - var col1 = this; - var col2 = other; - - var add = function add(col, other, retEles) { - for (var i = 0; i < col.length; i++) { - var ele = col[i]; - var id = ele._private.data.id; - var inOther = other.hasElementWithId(id); - - if (inOther) { - both.merge(ele); - } else { - retEles.push(ele); - } - } - }; - - add(col1, col2, left); - add(col2, col1, right); - return { - left: left, - right: right, - both: both - }; - }, - add: function add(toAdd) { - var cy = this._private.cy; - - if (!toAdd) { - return this; - } - - if (string(toAdd)) { - var selector = toAdd; - toAdd = cy.mutableElements().filter(selector); - } - - var elements = this.spawnSelf(); - - for (var i = 0; i < toAdd.length; i++) { - var ele = toAdd[i]; - var add = !this.has(ele); - - if (add) { - elements.push(ele); - } - } - - return elements; - }, - // in place merge on calling collection - merge: function merge(toAdd) { - var _p = this._private; - var cy = _p.cy; - - if (!toAdd) { - return this; - } - - if (toAdd && string(toAdd)) { - var selector = toAdd; - toAdd = cy.mutableElements().filter(selector); - } - - var map = _p.map; - - for (var i = 0; i < toAdd.length; i++) { - var toAddEle = toAdd[i]; - var id = toAddEle._private.data.id; - var add = !map.has(id); - - if (add) { - var index = this.length++; - this[index] = toAddEle; - map.set(id, { - ele: toAddEle, - index: index - }); - } - } - - return this; // chaining - }, - unmergeAt: function unmergeAt(i) { - var ele = this[i]; - var id = ele.id(); - var _p = this._private; - var map = _p.map; // remove ele - - this[i] = undefined; - map["delete"](id); - var unmergedLastEle = i === this.length - 1; // replace empty spot with last ele in collection - - if (this.length > 1 && !unmergedLastEle) { - var lastEleI = this.length - 1; - var lastEle = this[lastEleI]; - var lastEleId = lastEle._private.data.id; - this[lastEleI] = undefined; - this[i] = lastEle; - map.set(lastEleId, { - ele: lastEle, - index: i - }); - } // the collection is now 1 ele smaller - - - this.length--; - return this; - }, - // remove single ele in place in calling collection - unmergeOne: function unmergeOne(ele) { - ele = ele[0]; - var _p = this._private; - var id = ele._private.data.id; - var map = _p.map; - var entry = map.get(id); - - if (!entry) { - return this; // no need to remove - } - - var i = entry.index; - this.unmergeAt(i); - return this; - }, - // remove eles in place on calling collection - unmerge: function unmerge(toRemove) { - var cy = this._private.cy; - - if (!toRemove) { - return this; - } - - if (toRemove && string(toRemove)) { - var selector = toRemove; - toRemove = cy.mutableElements().filter(selector); - } - - for (var i = 0; i < toRemove.length; i++) { - this.unmergeOne(toRemove[i]); - } - - return this; // chaining - }, - unmergeBy: function unmergeBy(toRmFn) { - for (var i = this.length - 1; i >= 0; i--) { - var ele = this[i]; - - if (toRmFn(ele)) { - this.unmergeAt(i); - } - } - - return this; - }, - map: function map(mapFn, thisArg) { - var arr = []; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var ret = thisArg ? mapFn.apply(thisArg, [ele, i, eles]) : mapFn(ele, i, eles); - arr.push(ret); - } - - return arr; - }, - reduce: function reduce(fn, initialValue) { - var val = initialValue; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - val = fn(val, eles[i], i, eles); - } - - return val; - }, - max: function max(valFn, thisArg) { - var max = -Infinity; - var maxEle; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); - - if (val > max) { - max = val; - maxEle = ele; - } - } - - return { - value: max, - ele: maxEle - }; - }, - min: function min(valFn, thisArg) { - var min = Infinity; - var minEle; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var val = thisArg ? valFn.apply(thisArg, [ele, i, eles]) : valFn(ele, i, eles); - - if (val < min) { - min = val; - minEle = ele; - } - } - - return { - value: min, - ele: minEle - }; - } -}; // aliases - -var fn$5 = elesfn$n; -fn$5['u'] = fn$5['|'] = fn$5['+'] = fn$5.union = fn$5.or = fn$5.add; -fn$5['\\'] = fn$5['!'] = fn$5['-'] = fn$5.difference = fn$5.relativeComplement = fn$5.subtract = fn$5.not; -fn$5['n'] = fn$5['&'] = fn$5['.'] = fn$5.and = fn$5.intersection = fn$5.intersect; -fn$5['^'] = fn$5['(+)'] = fn$5['(-)'] = fn$5.symmetricDifference = fn$5.symdiff = fn$5.xor; -fn$5.fnFilter = fn$5.filterFn = fn$5.stdFilter = fn$5.filter; -fn$5.complement = fn$5.abscomp = fn$5.absoluteComplement; - -var elesfn$o = { - isNode: function isNode() { - return this.group() === 'nodes'; - }, - isEdge: function isEdge() { - return this.group() === 'edges'; - }, - isLoop: function isLoop() { - return this.isEdge() && this.source()[0] === this.target()[0]; - }, - isSimple: function isSimple() { - return this.isEdge() && this.source()[0] !== this.target()[0]; - }, - group: function group() { - var ele = this[0]; - - if (ele) { - return ele._private.group; - } - } -}; - -/** - * Elements are drawn in a specific order based on compound depth (low to high), the element type (nodes above edges), - * and z-index (low to high). These styles affect how this applies: - * - * z-compound-depth: May be `bottom | orphan | auto | top`. The first drawn is `bottom`, then `orphan` which is the - * same depth as the root of the compound graph, followed by the default value `auto` which draws in order from - * root to leaves of the compound graph. The last drawn is `top`. - * z-index-compare: May be `auto | manual`. The default value is `auto` which always draws edges under nodes. - * `manual` ignores this convention and draws based on the `z-index` value setting. - * z-index: An integer value that affects the relative draw order of elements. In general, an element with a higher - * `z-index` will be drawn on top of an element with a lower `z-index`. - */ - -var zIndexSort = function zIndexSort(a, b) { - var cy = a.cy(); - var hasCompoundNodes = cy.hasCompoundNodes(); - - function getDepth(ele) { - var style = ele.pstyle('z-compound-depth'); - - if (style.value === 'auto') { - return hasCompoundNodes ? ele.zDepth() : 0; - } else if (style.value === 'bottom') { - return -1; - } else if (style.value === 'top') { - return MAX_INT; - } // 'orphan' - - - return 0; - } - - var depthDiff = getDepth(a) - getDepth(b); - - if (depthDiff !== 0) { - return depthDiff; - } - - function getEleDepth(ele) { - var style = ele.pstyle('z-index-compare'); - - if (style.value === 'auto') { - return ele.isNode() ? 1 : 0; - } // 'manual' - - - return 0; - } - - var eleDiff = getEleDepth(a) - getEleDepth(b); - - if (eleDiff !== 0) { - return eleDiff; - } - - var zDiff = a.pstyle('z-index').value - b.pstyle('z-index').value; - - if (zDiff !== 0) { - return zDiff; - } // compare indices in the core (order added to graph w/ last on top) - - - return a.poolIndex() - b.poolIndex(); -}; - -var elesfn$p = { - forEach: function forEach(fn$1, thisArg) { - if (fn(fn$1)) { - var N = this.length; - - for (var i = 0; i < N; i++) { - var ele = this[i]; - var ret = thisArg ? fn$1.apply(thisArg, [ele, i, this]) : fn$1(ele, i, this); - - if (ret === false) { - break; - } // exit each early on return false - - } - } - - return this; - }, - toArray: function toArray() { - var array = []; - - for (var i = 0; i < this.length; i++) { - array.push(this[i]); - } - - return array; - }, - slice: function slice(start, end) { - var array = []; - var thisSize = this.length; - - if (end == null) { - end = thisSize; - } - - if (start == null) { - start = 0; - } - - if (start < 0) { - start = thisSize + start; - } - - if (end < 0) { - end = thisSize + end; - } - - for (var i = start; i >= 0 && i < end && i < thisSize; i++) { - array.push(this[i]); - } - - return this.spawn(array); - }, - size: function size() { - return this.length; - }, - eq: function eq(i) { - return this[i] || this.spawn(); - }, - first: function first() { - return this[0] || this.spawn(); - }, - last: function last() { - return this[this.length - 1] || this.spawn(); - }, - empty: function empty() { - return this.length === 0; - }, - nonempty: function nonempty() { - return !this.empty(); - }, - sort: function sort(sortFn) { - if (!fn(sortFn)) { - return this; - } - - var sorted = this.toArray().sort(sortFn); - return this.spawn(sorted); - }, - sortByZIndex: function sortByZIndex() { - return this.sort(zIndexSort); - }, - zDepth: function zDepth() { - var ele = this[0]; - - if (!ele) { - return undefined; - } // let cy = ele.cy(); - - - var _p = ele._private; - var group = _p.group; - - if (group === 'nodes') { - var depth = _p.data.parent ? ele.parents().size() : 0; - - if (!ele.isParent()) { - return MAX_INT - 1; // childless nodes always on top - } - - return depth; - } else { - var src = _p.source; - var tgt = _p.target; - var srcDepth = src.zDepth(); - var tgtDepth = tgt.zDepth(); - return Math.max(srcDepth, tgtDepth, 0); // depth of deepest parent - } - } -}; -elesfn$p.each = elesfn$p.forEach; - -var defineSymbolIterator = function defineSymbolIterator() { - var typeofUndef = "undefined" ; - var isIteratorSupported = (typeof Symbol === "undefined" ? "undefined" : _typeof(Symbol)) != typeofUndef && _typeof(Symbol.iterator) != typeofUndef; // eslint-disable-line no-undef - - if (isIteratorSupported) { - elesfn$p[Symbol.iterator] = function () { - var _this = this; - - // eslint-disable-line no-undef - var entry = { - value: undefined, - done: false - }; - var i = 0; - var length = this.length; - return _defineProperty({ - next: function next() { - if (i < length) { - entry.value = _this[i++]; - } else { - entry.value = undefined; - entry.done = true; - } - - return entry; - } - }, Symbol.iterator, function () { - // eslint-disable-line no-undef - return this; - }); - }; - } -}; - -defineSymbolIterator(); - -var getLayoutDimensionOptions = defaults({ - nodeDimensionsIncludeLabels: false -}); -var elesfn$q = { - // Calculates and returns node dimensions { x, y } based on options given - layoutDimensions: function layoutDimensions(options) { - options = getLayoutDimensionOptions(options); - var dims; - - if (!this.takesUpSpace()) { - dims = { - w: 0, - h: 0 - }; - } else if (options.nodeDimensionsIncludeLabels) { - var bbDim = this.boundingBox(); - dims = { - w: bbDim.w, - h: bbDim.h - }; - } else { - dims = { - w: this.outerWidth(), - h: this.outerHeight() - }; - } // sanitise the dimensions for external layouts (avoid division by zero) - - - if (dims.w === 0 || dims.h === 0) { - dims.w = dims.h = 1; - } - - return dims; - }, - // using standard layout options, apply position function (w/ or w/o animation) - layoutPositions: function layoutPositions(layout, options, fn) { - var nodes = this.nodes(); - var cy = this.cy(); - var layoutEles = options.eles; // nodes & edges - - var getMemoizeKey = function getMemoizeKey(node) { - return node.id(); - }; - - var fnMem = memoize(fn, getMemoizeKey); // memoized version of position function - - layout.emit({ - type: 'layoutstart', - layout: layout - }); - layout.animations = []; - - var calculateSpacing = function calculateSpacing(spacing, nodesBb, pos) { - var center = { - x: nodesBb.x1 + nodesBb.w / 2, - y: nodesBb.y1 + nodesBb.h / 2 - }; - var spacingVector = { - // scale from center of bounding box (not necessarily 0,0) - x: (pos.x - center.x) * spacing, - y: (pos.y - center.y) * spacing - }; - return { - x: center.x + spacingVector.x, - y: center.y + spacingVector.y - }; - }; - - var useSpacingFactor = options.spacingFactor && options.spacingFactor !== 1; - - var spacingBb = function spacingBb() { - if (!useSpacingFactor) { - return null; - } - - var bb = makeBoundingBox(); - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var pos = fnMem(node, i); - expandBoundingBoxByPoint(bb, pos.x, pos.y); - } - - return bb; - }; - - var bb = spacingBb(); - var getFinalPos = memoize(function (node, i) { - var newPos = fnMem(node, i); - - if (useSpacingFactor) { - var spacing = Math.abs(options.spacingFactor); - newPos = calculateSpacing(spacing, bb, newPos); - } - - if (options.transform != null) { - newPos = options.transform(node, newPos); - } - - return newPos; - }, getMemoizeKey); - - if (options.animate) { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var newPos = getFinalPos(node, i); - var animateNode = options.animateFilter == null || options.animateFilter(node, i); - - if (animateNode) { - var ani = node.animation({ - position: newPos, - duration: options.animationDuration, - easing: options.animationEasing - }); - layout.animations.push(ani); - } else { - node.position(newPos); - } - } - - if (options.fit) { - var fitAni = cy.animation({ - fit: { - boundingBox: layoutEles.boundingBoxAt(getFinalPos), - padding: options.padding - }, - duration: options.animationDuration, - easing: options.animationEasing - }); - layout.animations.push(fitAni); - } else if (options.zoom !== undefined && options.pan !== undefined) { - var zoomPanAni = cy.animation({ - zoom: options.zoom, - pan: options.pan, - duration: options.animationDuration, - easing: options.animationEasing - }); - layout.animations.push(zoomPanAni); - } - - layout.animations.forEach(function (ani) { - return ani.play(); - }); - layout.one('layoutready', options.ready); - layout.emit({ - type: 'layoutready', - layout: layout - }); - Promise$1.all(layout.animations.map(function (ani) { - return ani.promise(); - })).then(function () { - layout.one('layoutstop', options.stop); - layout.emit({ - type: 'layoutstop', - layout: layout - }); - }); - } else { - nodes.positions(getFinalPos); - - if (options.fit) { - cy.fit(options.eles, options.padding); - } - - if (options.zoom != null) { - cy.zoom(options.zoom); - } - - if (options.pan) { - cy.pan(options.pan); - } - - layout.one('layoutready', options.ready); - layout.emit({ - type: 'layoutready', - layout: layout - }); - layout.one('layoutstop', options.stop); - layout.emit({ - type: 'layoutstop', - layout: layout - }); - } - - return this; // chaining - }, - layout: function layout(options) { - var cy = this.cy(); - return cy.makeLayout(extend({}, options, { - eles: this - })); - } -}; // aliases: - -elesfn$q.createLayout = elesfn$q.makeLayout = elesfn$q.layout; - -function styleCache(key, fn, ele) { - var _p = ele._private; - var cache = _p.styleCache = _p.styleCache || []; - var val; - - if ((val = cache[key]) != null) { - return val; - } else { - val = cache[key] = fn(ele); - return val; - } -} - -function cacheStyleFunction(key, fn) { - key = hashString(key); - return function cachedStyleFunction(ele) { - return styleCache(key, fn, ele); - }; -} - -function cachePrototypeStyleFunction(key, fn) { - key = hashString(key); - - var selfFn = function selfFn(ele) { - return fn.call(ele); - }; - - return function cachedPrototypeStyleFunction() { - var ele = this[0]; - - if (ele) { - return styleCache(key, selfFn, ele); - } - }; -} - -var elesfn$r = { - recalculateRenderedStyle: function recalculateRenderedStyle(useCache) { - var cy = this.cy(); - var renderer = cy.renderer(); - var styleEnabled = cy.styleEnabled(); - - if (renderer && styleEnabled) { - renderer.recalculateRenderedStyle(this, useCache); - } - - return this; - }, - dirtyStyleCache: function dirtyStyleCache() { - var cy = this.cy(); - - var dirty = function dirty(ele) { - return ele._private.styleCache = null; - }; - - if (cy.hasCompoundNodes()) { - var eles; - eles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); - eles.merge(eles.connectedEdges()); - eles.forEach(dirty); - } else { - this.forEach(function (ele) { - dirty(ele); - ele.connectedEdges().forEach(dirty); - }); - } - - return this; - }, - // fully updates (recalculates) the style for the elements - updateStyle: function updateStyle(notifyRenderer) { - var cy = this._private.cy; - - if (!cy.styleEnabled()) { - return this; - } - - if (cy.batching()) { - var bEles = cy._private.batchStyleEles; - bEles.merge(this); - return this; // chaining and exit early when batching - } - - var hasCompounds = cy.hasCompoundNodes(); - var updatedEles = this; - notifyRenderer = notifyRenderer || notifyRenderer === undefined ? true : false; - - if (hasCompounds) { - // then add everything up and down for compound selector checks - updatedEles = this.spawnSelf().merge(this.descendants()).merge(this.parents()); - } // let changedEles = style.apply( updatedEles ); - - - var changedEles = updatedEles; - - if (notifyRenderer) { - changedEles.emitAndNotify('style'); // let renderer know we changed style - } else { - changedEles.emit('style'); // just fire the event - } - - updatedEles.forEach(function (ele) { - return ele._private.styleDirty = true; - }); - return this; // chaining - }, - // get the internal parsed style object for the specified property - parsedStyle: function parsedStyle(property) { - var includeNonDefault = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var ele = this[0]; - var cy = ele.cy(); - - if (!cy.styleEnabled()) { - return; - } - - if (ele) { - if (ele._private.styleDirty) { - ele._private.styleDirty = false; - cy.style().apply(ele); - ele.emitAndNotify('style'); - } - - var overriddenStyle = ele._private.style[property]; - - if (overriddenStyle != null) { - return overriddenStyle; - } else if (includeNonDefault) { - return cy.style().getDefaultProperty(property); - } else { - return null; - } - } - }, - numericStyle: function numericStyle(property) { - var ele = this[0]; - - if (!ele.cy().styleEnabled()) { - return; - } - - if (ele) { - var pstyle = ele.pstyle(property); - return pstyle.pfValue !== undefined ? pstyle.pfValue : pstyle.value; - } - }, - numericStyleUnits: function numericStyleUnits(property) { - var ele = this[0]; - - if (!ele.cy().styleEnabled()) { - return; - } - - if (ele) { - return ele.pstyle(property).units; - } - }, - // get the specified css property as a rendered value (i.e. on-screen value) - // or get the whole rendered style if no property specified (NB doesn't allow setting) - renderedStyle: function renderedStyle(property) { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return this; - } - - var ele = this[0]; - - if (ele) { - return cy.style().getRenderedStyle(ele, property); - } - }, - // read the calculated css style of the element or override the style (via a bypass) - style: function style(name, value) { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return this; - } - - var updateTransitions = false; - var style = cy.style(); - - if (plainObject(name)) { - // then extend the bypass - var props = name; - style.applyBypass(this, props, updateTransitions); - this.emitAndNotify('style'); // let the renderer know we've updated style - } else if (string(name)) { - if (value === undefined) { - // then get the property from the style - var ele = this[0]; - - if (ele) { - return style.getStylePropertyValue(ele, name); - } else { - // empty collection => can't get any value - return; - } - } else { - // then set the bypass with the property value - style.applyBypass(this, name, value, updateTransitions); - this.emitAndNotify('style'); // let the renderer know we've updated style - } - } else if (name === undefined) { - var _ele = this[0]; - - if (_ele) { - return style.getRawStyle(_ele); - } else { - // empty collection => can't get any value - return; - } - } - - return this; // chaining - }, - removeStyle: function removeStyle(names) { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return this; - } - - var updateTransitions = false; - var style = cy.style(); - var eles = this; - - if (names === undefined) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - style.removeAllBypasses(ele, updateTransitions); - } - } else { - names = names.split(/\s+/); - - for (var _i = 0; _i < eles.length; _i++) { - var _ele2 = eles[_i]; - style.removeBypasses(_ele2, names, updateTransitions); - } - } - - this.emitAndNotify('style'); // let the renderer know we've updated style - - return this; // chaining - }, - show: function show() { - this.css('display', 'element'); - return this; // chaining - }, - hide: function hide() { - this.css('display', 'none'); - return this; // chaining - }, - effectiveOpacity: function effectiveOpacity() { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return 1; - } - - var hasCompoundNodes = cy.hasCompoundNodes(); - var ele = this[0]; - - if (ele) { - var _p = ele._private; - var parentOpacity = ele.pstyle('opacity').value; - - if (!hasCompoundNodes) { - return parentOpacity; - } - - var parents = !_p.data.parent ? null : ele.parents(); - - if (parents) { - for (var i = 0; i < parents.length; i++) { - var parent = parents[i]; - var opacity = parent.pstyle('opacity').value; - parentOpacity = opacity * parentOpacity; - } - } - - return parentOpacity; - } - }, - transparent: function transparent() { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return false; - } - - var ele = this[0]; - var hasCompoundNodes = ele.cy().hasCompoundNodes(); - - if (ele) { - if (!hasCompoundNodes) { - return ele.pstyle('opacity').value === 0; - } else { - return ele.effectiveOpacity() === 0; - } - } - }, - backgrounding: function backgrounding() { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return false; - } - - var ele = this[0]; - return ele._private.backgrounding ? true : false; - } -}; - -function checkCompound(ele, parentOk) { - var _p = ele._private; - var parents = _p.data.parent ? ele.parents() : null; - - if (parents) { - for (var i = 0; i < parents.length; i++) { - var parent = parents[i]; - - if (!parentOk(parent)) { - return false; - } - } - } - - return true; -} - -function defineDerivedStateFunction(specs) { - var ok = specs.ok; - var edgeOkViaNode = specs.edgeOkViaNode || specs.ok; - var parentOk = specs.parentOk || specs.ok; - return function () { - var cy = this.cy(); - - if (!cy.styleEnabled()) { - return true; - } - - var ele = this[0]; - var hasCompoundNodes = cy.hasCompoundNodes(); - - if (ele) { - var _p = ele._private; - - if (!ok(ele)) { - return false; - } - - if (ele.isNode()) { - return !hasCompoundNodes || checkCompound(ele, parentOk); - } else { - var src = _p.source; - var tgt = _p.target; - return edgeOkViaNode(src) && (!hasCompoundNodes || checkCompound(src, edgeOkViaNode)) && (src === tgt || edgeOkViaNode(tgt) && (!hasCompoundNodes || checkCompound(tgt, edgeOkViaNode))); - } - } - }; -} - -var eleTakesUpSpace = cacheStyleFunction('eleTakesUpSpace', function (ele) { - return ele.pstyle('display').value === 'element' && ele.width() !== 0 && (ele.isNode() ? ele.height() !== 0 : true); -}); -elesfn$r.takesUpSpace = cachePrototypeStyleFunction('takesUpSpace', defineDerivedStateFunction({ - ok: eleTakesUpSpace -})); -var eleInteractive = cacheStyleFunction('eleInteractive', function (ele) { - return ele.pstyle('events').value === 'yes' && ele.pstyle('visibility').value === 'visible' && eleTakesUpSpace(ele); -}); -var parentInteractive = cacheStyleFunction('parentInteractive', function (parent) { - return parent.pstyle('visibility').value === 'visible' && eleTakesUpSpace(parent); -}); -elesfn$r.interactive = cachePrototypeStyleFunction('interactive', defineDerivedStateFunction({ - ok: eleInteractive, - parentOk: parentInteractive, - edgeOkViaNode: eleTakesUpSpace -})); - -elesfn$r.noninteractive = function () { - var ele = this[0]; - - if (ele) { - return !ele.interactive(); - } -}; - -var eleVisible = cacheStyleFunction('eleVisible', function (ele) { - return ele.pstyle('visibility').value === 'visible' && ele.pstyle('opacity').pfValue !== 0 && eleTakesUpSpace(ele); -}); -var edgeVisibleViaNode = eleTakesUpSpace; -elesfn$r.visible = cachePrototypeStyleFunction('visible', defineDerivedStateFunction({ - ok: eleVisible, - edgeOkViaNode: edgeVisibleViaNode -})); - -elesfn$r.hidden = function () { - var ele = this[0]; - - if (ele) { - return !ele.visible(); - } -}; - -elesfn$r.isBundledBezier = cachePrototypeStyleFunction('isBundledBezier', function () { - if (!this.cy().styleEnabled()) { - return false; - } - - return !this.removed() && this.pstyle('curve-style').value === 'bezier' && this.takesUpSpace(); -}); -elesfn$r.bypass = elesfn$r.css = elesfn$r.style; -elesfn$r.renderedCss = elesfn$r.renderedStyle; -elesfn$r.removeBypass = elesfn$r.removeCss = elesfn$r.removeStyle; -elesfn$r.pstyle = elesfn$r.parsedStyle; - -var elesfn$s = {}; - -function defineSwitchFunction(params) { - return function () { - var args = arguments; - var changedEles = []; // e.g. cy.nodes().select( data, handler ) - - if (args.length === 2) { - var data = args[0]; - var handler = args[1]; - this.on(params.event, data, handler); - } // e.g. cy.nodes().select( handler ) - else if (args.length === 1 && fn(args[0])) { - var _handler = args[0]; - this.on(params.event, _handler); - } // e.g. cy.nodes().select() - // e.g. (private) cy.nodes().select(['tapselect']) - else if (args.length === 0 || args.length === 1 && array(args[0])) { - var addlEvents = args.length === 1 ? args[0] : null; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var able = !params.ableField || ele._private[params.ableField]; - var changed = ele._private[params.field] != params.value; - - if (params.overrideAble) { - var overrideAble = params.overrideAble(ele); - - if (overrideAble !== undefined) { - able = overrideAble; - - if (!overrideAble) { - return this; - } // to save cycles assume not able for all on override - - } - } - - if (able) { - ele._private[params.field] = params.value; - - if (changed) { - changedEles.push(ele); - } - } - } - - var changedColl = this.spawn(changedEles); - changedColl.updateStyle(); // change of state => possible change of style - - changedColl.emit(params.event); - - if (addlEvents) { - changedColl.emit(addlEvents); - } - } - - return this; - }; -} - -function defineSwitchSet(params) { - elesfn$s[params.field] = function () { - var ele = this[0]; - - if (ele) { - if (params.overrideField) { - var val = params.overrideField(ele); - - if (val !== undefined) { - return val; - } - } - - return ele._private[params.field]; - } - }; - - elesfn$s[params.on] = defineSwitchFunction({ - event: params.on, - field: params.field, - ableField: params.ableField, - overrideAble: params.overrideAble, - value: true - }); - elesfn$s[params.off] = defineSwitchFunction({ - event: params.off, - field: params.field, - ableField: params.ableField, - overrideAble: params.overrideAble, - value: false - }); -} - -defineSwitchSet({ - field: 'locked', - overrideField: function overrideField(ele) { - return ele.cy().autolock() ? true : undefined; - }, - on: 'lock', - off: 'unlock' -}); -defineSwitchSet({ - field: 'grabbable', - overrideField: function overrideField(ele) { - return ele.cy().autoungrabify() || ele.pannable() ? false : undefined; - }, - on: 'grabify', - off: 'ungrabify' -}); -defineSwitchSet({ - field: 'selected', - ableField: 'selectable', - overrideAble: function overrideAble(ele) { - return ele.cy().autounselectify() ? false : undefined; - }, - on: 'select', - off: 'unselect' -}); -defineSwitchSet({ - field: 'selectable', - overrideField: function overrideField(ele) { - return ele.cy().autounselectify() ? false : undefined; - }, - on: 'selectify', - off: 'unselectify' -}); -elesfn$s.deselect = elesfn$s.unselect; - -elesfn$s.grabbed = function () { - var ele = this[0]; - - if (ele) { - return ele._private.grabbed; - } -}; - -defineSwitchSet({ - field: 'active', - on: 'activate', - off: 'unactivate' -}); -defineSwitchSet({ - field: 'pannable', - on: 'panify', - off: 'unpanify' -}); - -elesfn$s.inactive = function () { - var ele = this[0]; - - if (ele) { - return !ele._private.active; - } -}; - -var elesfn$t = {}; // DAG functions -//////////////// - -var defineDagExtremity = function defineDagExtremity(params) { - return function dagExtremityImpl(selector) { - var eles = this; - var ret = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.isNode()) { - continue; - } - - var disqualified = false; - var edges = ele.connectedEdges(); - - for (var j = 0; j < edges.length; j++) { - var edge = edges[j]; - var src = edge.source(); - var tgt = edge.target(); - - if (params.noIncomingEdges && tgt === ele && src !== ele || params.noOutgoingEdges && src === ele && tgt !== ele) { - disqualified = true; - break; - } - } - - if (!disqualified) { - ret.push(ele); - } - } - - return this.spawn(ret, true).filter(selector); - }; -}; - -var defineDagOneHop = function defineDagOneHop(params) { - return function (selector) { - var eles = this; - var oEles = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.isNode()) { - continue; - } - - var edges = ele.connectedEdges(); - - for (var j = 0; j < edges.length; j++) { - var edge = edges[j]; - var src = edge.source(); - var tgt = edge.target(); - - if (params.outgoing && src === ele) { - oEles.push(edge); - oEles.push(tgt); - } else if (params.incoming && tgt === ele) { - oEles.push(edge); - oEles.push(src); - } - } - } - - return this.spawn(oEles, true).filter(selector); - }; -}; - -var defineDagAllHops = function defineDagAllHops(params) { - return function (selector) { - var eles = this; - var sEles = []; - var sElesIds = {}; - - for (;;) { - var next = params.outgoing ? eles.outgoers() : eles.incomers(); - - if (next.length === 0) { - break; - } // done if none left - - - var newNext = false; - - for (var i = 0; i < next.length; i++) { - var n = next[i]; - var nid = n.id(); - - if (!sElesIds[nid]) { - sElesIds[nid] = true; - sEles.push(n); - newNext = true; - } - } - - if (!newNext) { - break; - } // done if touched all outgoers already - - - eles = next; - } - - return this.spawn(sEles, true).filter(selector); - }; -}; - -elesfn$t.clearTraversalCache = function () { - for (var i = 0; i < this.length; i++) { - this[i]._private.traversalCache = null; - } -}; - -extend(elesfn$t, { - // get the root nodes in the DAG - roots: defineDagExtremity({ - noIncomingEdges: true - }), - // get the leaf nodes in the DAG - leaves: defineDagExtremity({ - noOutgoingEdges: true - }), - // normally called children in graph theory - // these nodes =edges=> outgoing nodes - outgoers: cache(defineDagOneHop({ - outgoing: true - }), 'outgoers'), - // aka DAG descendants - successors: defineDagAllHops({ - outgoing: true - }), - // normally called parents in graph theory - // these nodes <=edges= incoming nodes - incomers: cache(defineDagOneHop({ - incoming: true - }), 'incomers'), - // aka DAG ancestors - predecessors: defineDagAllHops({ - incoming: true - }) -}); // Neighbourhood functions -////////////////////////// - -extend(elesfn$t, { - neighborhood: cache(function (selector) { - var elements = []; - var nodes = this.nodes(); - - for (var i = 0; i < nodes.length; i++) { - // for all nodes - var node = nodes[i]; - var connectedEdges = node.connectedEdges(); // for each connected edge, add the edge and the other node - - for (var j = 0; j < connectedEdges.length; j++) { - var edge = connectedEdges[j]; - var src = edge.source(); - var tgt = edge.target(); - var otherNode = node === src ? tgt : src; // need check in case of loop - - if (otherNode.length > 0) { - elements.push(otherNode[0]); // add node 1 hop away - } // add connected edge - - - elements.push(edge[0]); - } - } - - return this.spawn(elements, true).filter(selector); - }, 'neighborhood'), - closedNeighborhood: function closedNeighborhood(selector) { - return this.neighborhood().add(this).filter(selector); - }, - openNeighborhood: function openNeighborhood(selector) { - return this.neighborhood(selector); - } -}); // aliases - -elesfn$t.neighbourhood = elesfn$t.neighborhood; -elesfn$t.closedNeighbourhood = elesfn$t.closedNeighborhood; -elesfn$t.openNeighbourhood = elesfn$t.openNeighborhood; // Edge functions -///////////////// - -extend(elesfn$t, { - source: cache(function sourceImpl(selector) { - var ele = this[0]; - var src; - - if (ele) { - src = ele._private.source || ele.cy().collection(); - } - - return src && selector ? src.filter(selector) : src; - }, 'source'), - target: cache(function targetImpl(selector) { - var ele = this[0]; - var tgt; - - if (ele) { - tgt = ele._private.target || ele.cy().collection(); - } - - return tgt && selector ? tgt.filter(selector) : tgt; - }, 'target'), - sources: defineSourceFunction({ - attr: 'source' - }), - targets: defineSourceFunction({ - attr: 'target' - }) -}); - -function defineSourceFunction(params) { - return function sourceImpl(selector) { - var sources = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var src = ele._private[params.attr]; - - if (src) { - sources.push(src); - } - } - - return this.spawn(sources, true).filter(selector); - }; -} - -extend(elesfn$t, { - edgesWith: cache(defineEdgesWithFunction(), 'edgesWith'), - edgesTo: cache(defineEdgesWithFunction({ - thisIsSrc: true - }), 'edgesTo') -}); - -function defineEdgesWithFunction(params) { - return function edgesWithImpl(otherNodes) { - var elements = []; - var cy = this._private.cy; - var p = params || {}; // get elements if a selector is specified - - if (string(otherNodes)) { - otherNodes = cy.$(otherNodes); - } - - for (var h = 0; h < otherNodes.length; h++) { - var edges = otherNodes[h]._private.edges; - - for (var i = 0; i < edges.length; i++) { - var edge = edges[i]; - var edgeData = edge._private.data; - var thisToOther = this.hasElementWithId(edgeData.source) && otherNodes.hasElementWithId(edgeData.target); - var otherToThis = otherNodes.hasElementWithId(edgeData.source) && this.hasElementWithId(edgeData.target); - var edgeConnectsThisAndOther = thisToOther || otherToThis; - - if (!edgeConnectsThisAndOther) { - continue; - } - - if (p.thisIsSrc || p.thisIsTgt) { - if (p.thisIsSrc && !thisToOther) { - continue; - } - - if (p.thisIsTgt && !otherToThis) { - continue; - } - } - - elements.push(edge); - } - } - - return this.spawn(elements, true); - }; -} - -extend(elesfn$t, { - connectedEdges: cache(function (selector) { - var retEles = []; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var node = eles[i]; - - if (!node.isNode()) { - continue; - } - - var edges = node._private.edges; - - for (var j = 0; j < edges.length; j++) { - var edge = edges[j]; - retEles.push(edge); - } - } - - return this.spawn(retEles, true).filter(selector); - }, 'connectedEdges'), - connectedNodes: cache(function (selector) { - var retEles = []; - var eles = this; - - for (var i = 0; i < eles.length; i++) { - var edge = eles[i]; - - if (!edge.isEdge()) { - continue; - } - - retEles.push(edge.source()[0]); - retEles.push(edge.target()[0]); - } - - return this.spawn(retEles, true).filter(selector); - }, 'connectedNodes'), - parallelEdges: cache(defineParallelEdgesFunction(), 'parallelEdges'), - codirectedEdges: cache(defineParallelEdgesFunction({ - codirected: true - }), 'codirectedEdges') -}); - -function defineParallelEdgesFunction(params) { - var defaults = { - codirected: false - }; - params = extend({}, defaults, params); - return function parallelEdgesImpl(selector) { - // micro-optimised for renderer - var elements = []; - var edges = this.edges(); - var p = params; // look at all the edges in the collection - - for (var i = 0; i < edges.length; i++) { - var edge1 = edges[i]; - var edge1_p = edge1._private; - var src1 = edge1_p.source; - var srcid1 = src1._private.data.id; - var tgtid1 = edge1_p.data.target; - var srcEdges1 = src1._private.edges; // look at edges connected to the src node of this edge - - for (var j = 0; j < srcEdges1.length; j++) { - var edge2 = srcEdges1[j]; - var edge2data = edge2._private.data; - var tgtid2 = edge2data.target; - var srcid2 = edge2data.source; - var codirected = tgtid2 === tgtid1 && srcid2 === srcid1; - var oppdirected = srcid1 === tgtid2 && tgtid1 === srcid2; - - if (p.codirected && codirected || !p.codirected && (codirected || oppdirected)) { - elements.push(edge2); - } - } - } - - return this.spawn(elements, true).filter(selector); - }; -} // Misc functions -///////////////// - - -extend(elesfn$t, { - components: function components(root) { - var self = this; - var cy = self.cy(); - var visited = cy.collection(); - var unvisited = root == null ? self.nodes() : root.nodes(); - var components = []; - - if (root != null && unvisited.empty()) { - // root may contain only edges - unvisited = root.sources(); // doesn't matter which node to use (undirected), so just use the source sides - } - - var visitInComponent = function visitInComponent(node, component) { - visited.merge(node); - unvisited.unmerge(node); - component.merge(node); - }; - - if (unvisited.empty()) { - return self.spawn(); - } - - var _loop = function _loop() { - // each iteration yields a component - var cmpt = cy.collection(); - components.push(cmpt); - var root = unvisited[0]; - visitInComponent(root, cmpt); - self.bfs({ - directed: false, - roots: root, - visit: function visit(v) { - return visitInComponent(v, cmpt); - } - }); - cmpt.forEach(function (node) { - node.connectedEdges().forEach(function (e) { - // connectedEdges() usually cached - if (self.has(e) && cmpt.has(e.source()) && cmpt.has(e.target())) { - // has() is cheap - cmpt.merge(e); // forEach() only considers nodes -- sets N at call time - } - }); - }); - }; - - do { - _loop(); - } while (unvisited.length > 0); - - return components; - }, - component: function component() { - var ele = this[0]; - return ele.cy().mutableElements().components(ele)[0]; - } -}); -elesfn$t.componentsOf = elesfn$t.components; - -var Collection = function Collection(cy, elements) { - var unique = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; - - if (cy === undefined) { - error('A collection must have a reference to the core'); - return; - } - - var map = new Map$1(); - var createdElements = false; - - if (!elements) { - elements = []; - } else if (elements.length > 0 && plainObject(elements[0]) && !element(elements[0])) { - createdElements = true; // make elements from json and restore all at once later - - var eles = []; - var elesIds = new Set$1(); - - for (var i = 0, l = elements.length; i < l; i++) { - var json = elements[i]; - - if (json.data == null) { - json.data = {}; - } - - var _data = json.data; // make sure newly created elements have valid ids - - if (_data.id == null) { - _data.id = uuid(); - } else if (cy.hasElementWithId(_data.id) || elesIds.has(_data.id)) { - continue; // can't create element if prior id already exists - } - - var ele = new Element(cy, json, false); - eles.push(ele); - elesIds.add(_data.id); - } - - elements = eles; - } - - this.length = 0; - - for (var _i = 0, _l = elements.length; _i < _l; _i++) { - var element$1 = elements[_i][0]; // [0] in case elements is an array of collections, rather than array of elements - - if (element$1 == null) { - continue; - } - - var id = element$1._private.data.id; - - if (!unique || !map.has(id)) { - if (unique) { - map.set(id, { - index: this.length, - ele: element$1 - }); - } - - this[this.length] = element$1; - this.length++; - } - } - - this._private = { - eles: this, - cy: cy, - - get map() { - if (this.lazyMap == null) { - this.rebuildMap(); - } - - return this.lazyMap; - }, - - set map(m) { - this.lazyMap = m; - }, - - rebuildMap: function rebuildMap() { - var m = this.lazyMap = new Map$1(); - var eles = this.eles; - - for (var _i2 = 0; _i2 < eles.length; _i2++) { - var _ele = eles[_i2]; - m.set(_ele.id(), { - index: _i2, - ele: _ele - }); - } - } - }; - - if (unique) { - this._private.map = map; - } // restore the elements if we created them from json - - - if (createdElements) { - this.restore(); - } -}; // Functions -//////////////////////////////////////////////////////////////////////////////////////////////////// -// keep the prototypes in sync (an element has the same functions as a collection) -// and use elefn and elesfn as shorthands to the prototypes - - -var elesfn$u = Element.prototype = Collection.prototype = Object.create(Array.prototype); - -elesfn$u.instanceString = function () { - return 'collection'; -}; - -elesfn$u.spawn = function (eles, unique) { - return new Collection(this.cy(), eles, unique); -}; - -elesfn$u.spawnSelf = function () { - return this.spawn(this); -}; - -elesfn$u.cy = function () { - return this._private.cy; -}; - -elesfn$u.renderer = function () { - return this._private.cy.renderer(); -}; - -elesfn$u.element = function () { - return this[0]; -}; - -elesfn$u.collection = function () { - if (collection(this)) { - return this; - } else { - // an element - return new Collection(this._private.cy, [this]); - } -}; - -elesfn$u.unique = function () { - return new Collection(this._private.cy, this, true); -}; - -elesfn$u.hasElementWithId = function (id) { - id = '' + id; // id must be string - - return this._private.map.has(id); -}; - -elesfn$u.getElementById = function (id) { - id = '' + id; // id must be string - - var cy = this._private.cy; - - var entry = this._private.map.get(id); - - return entry ? entry.ele : new Collection(cy); // get ele or empty collection -}; - -elesfn$u.$id = elesfn$u.getElementById; - -elesfn$u.poolIndex = function () { - var cy = this._private.cy; - var eles = cy._private.elements; - var id = this[0]._private.data.id; - return eles._private.map.get(id).index; -}; - -elesfn$u.indexOf = function (ele) { - var id = ele[0]._private.data.id; - return this._private.map.get(id).index; -}; - -elesfn$u.indexOfId = function (id) { - id = '' + id; // id must be string - - return this._private.map.get(id).index; -}; - -elesfn$u.json = function (obj) { - var ele = this.element(); - var cy = this.cy(); - - if (ele == null && obj) { - return this; - } // can't set to no eles - - - if (ele == null) { - return undefined; - } // can't get from no eles - - - var p = ele._private; - - if (plainObject(obj)) { - // set - cy.startBatch(); - - if (obj.data) { - ele.data(obj.data); - var _data2 = p.data; - - if (ele.isEdge()) { - // source and target are immutable via data() - var move = false; - var spec = {}; - var src = obj.data.source; - var tgt = obj.data.target; - - if (src != null && src != _data2.source) { - spec.source = '' + src; // id must be string - - move = true; - } - - if (tgt != null && tgt != _data2.target) { - spec.target = '' + tgt; // id must be string - - move = true; - } - - if (move) { - ele = ele.move(spec); - } - } else { - // parent is immutable via data() - var newParentValSpecd = 'parent' in obj.data; - var parent = obj.data.parent; - - if (newParentValSpecd && (parent != null || _data2.parent != null) && parent != _data2.parent) { - if (parent === undefined) { - // can't set undefined imperatively, so use null - parent = null; - } - - if (parent != null) { - parent = '' + parent; // id must be string - } - - ele = ele.move({ - parent: parent - }); - } - } - } - - if (obj.position) { - ele.position(obj.position); - } // ignore group -- immutable - - - var checkSwitch = function checkSwitch(k, trueFnName, falseFnName) { - var obj_k = obj[k]; - - if (obj_k != null && obj_k !== p[k]) { - if (obj_k) { - ele[trueFnName](); - } else { - ele[falseFnName](); - } - } - }; - - checkSwitch('removed', 'remove', 'restore'); - checkSwitch('selected', 'select', 'unselect'); - checkSwitch('selectable', 'selectify', 'unselectify'); - checkSwitch('locked', 'lock', 'unlock'); - checkSwitch('grabbable', 'grabify', 'ungrabify'); - checkSwitch('pannable', 'panify', 'unpanify'); - - if (obj.classes != null) { - ele.classes(obj.classes); - } - - cy.endBatch(); - return this; - } else if (obj === undefined) { - // get - var json = { - data: copy(p.data), - position: copy(p.position), - group: p.group, - removed: p.removed, - selected: p.selected, - selectable: p.selectable, - locked: p.locked, - grabbable: p.grabbable, - pannable: p.pannable, - classes: null - }; - json.classes = ''; - var i = 0; - p.classes.forEach(function (cls) { - return json.classes += i++ === 0 ? cls : ' ' + cls; - }); - return json; - } -}; - -elesfn$u.jsons = function () { - var jsons = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var json = ele.json(); - jsons.push(json); - } - - return jsons; -}; - -elesfn$u.clone = function () { - var cy = this.cy(); - var elesArr = []; - - for (var i = 0; i < this.length; i++) { - var ele = this[i]; - var json = ele.json(); - var clone = new Element(cy, json, false); // NB no restore - - elesArr.push(clone); - } - - return new Collection(cy, elesArr); -}; - -elesfn$u.copy = elesfn$u.clone; - -elesfn$u.restore = function () { - var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - var addToPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var self = this; - var cy = self.cy(); - var cy_p = cy._private; // create arrays of nodes and edges, since we need to - // restore the nodes first - - var nodes = []; - var edges = []; - var elements; - - for (var _i3 = 0, l = self.length; _i3 < l; _i3++) { - var ele = self[_i3]; - - if (addToPool && !ele.removed()) { - // don't need to handle this ele - continue; - } // keep nodes first in the array and edges after - - - if (ele.isNode()) { - // put to front of array if node - nodes.push(ele); - } else { - // put to end of array if edge - edges.push(ele); - } - } - - elements = nodes.concat(edges); - var i; - - var removeFromElements = function removeFromElements() { - elements.splice(i, 1); - i--; - }; // now, restore each element - - - for (i = 0; i < elements.length; i++) { - var _ele2 = elements[i]; - var _private = _ele2._private; - var _data3 = _private.data; // the traversal cache should start fresh when ele is added - - _ele2.clearTraversalCache(); // set id and validate - - - if (!addToPool && !_private.removed) ; else if (_data3.id === undefined) { - _data3.id = uuid(); - } else if (number(_data3.id)) { - _data3.id = '' + _data3.id; // now it's a string - } else if (emptyString(_data3.id) || !string(_data3.id)) { - error('Can not create element with invalid string ID `' + _data3.id + '`'); // can't create element if it has empty string as id or non-string id - - removeFromElements(); - continue; - } else if (cy.hasElementWithId(_data3.id)) { - error('Can not create second element with ID `' + _data3.id + '`'); // can't create element if one already has that id - - removeFromElements(); - continue; - } - - var id = _data3.id; // id is finalised, now let's keep a ref - - if (_ele2.isNode()) { - // extra checks for nodes - var pos = _private.position; // make sure the nodes have a defined position - - if (pos.x == null) { - pos.x = 0; - } - - if (pos.y == null) { - pos.y = 0; - } - } - - if (_ele2.isEdge()) { - // extra checks for edges - var edge = _ele2; - var fields = ['source', 'target']; - var fieldsLength = fields.length; - var badSourceOrTarget = false; - - for (var j = 0; j < fieldsLength; j++) { - var field = fields[j]; - var val = _data3[field]; - - if (number(val)) { - val = _data3[field] = '' + _data3[field]; // now string - } - - if (val == null || val === '') { - // can't create if source or target is not defined properly - error('Can not create edge `' + id + '` with unspecified ' + field); - badSourceOrTarget = true; - } else if (!cy.hasElementWithId(val)) { - // can't create edge if one of its nodes doesn't exist - error('Can not create edge `' + id + '` with nonexistant ' + field + ' `' + val + '`'); - badSourceOrTarget = true; - } - } - - if (badSourceOrTarget) { - removeFromElements(); - continue; - } // can't create this - - - var src = cy.getElementById(_data3.source); - var tgt = cy.getElementById(_data3.target); // only one edge in node if loop - - if (src.same(tgt)) { - src._private.edges.push(edge); - } else { - src._private.edges.push(edge); - - tgt._private.edges.push(edge); - } - - edge._private.source = src; - edge._private.target = tgt; - } // if is edge - // create mock ids / indexes maps for element so it can be used like collections - - - _private.map = new Map$1(); - - _private.map.set(id, { - ele: _ele2, - index: 0 - }); - - _private.removed = false; - - if (addToPool) { - cy.addToPool(_ele2); - } - } // for each element - // do compound node sanity checks - - - for (var _i4 = 0; _i4 < nodes.length; _i4++) { - // each node - var node = nodes[_i4]; - var _data4 = node._private.data; - - if (number(_data4.parent)) { - // then automake string - _data4.parent = '' + _data4.parent; - } - - var parentId = _data4.parent; - var specifiedParent = parentId != null; - - if (specifiedParent) { - var parent = cy.getElementById(parentId); - - if (parent.empty()) { - // non-existant parent; just remove it - _data4.parent = undefined; - } else { - var selfAsParent = false; - var ancestor = parent; - - while (!ancestor.empty()) { - if (node.same(ancestor)) { - // mark self as parent and remove from data - selfAsParent = true; - _data4.parent = undefined; // remove parent reference - // exit or we loop forever - - break; - } - - ancestor = ancestor.parent(); - } - - if (!selfAsParent) { - // connect with children - parent[0]._private.children.push(node); - - node._private.parent = parent[0]; // let the core know we have a compound graph - - cy_p.hasCompoundNodes = true; - } - } // else - - } // if specified parent - - } // for each node - - - if (elements.length > 0) { - var restored = elements.length === self.length ? self : new Collection(cy, elements); - - for (var _i5 = 0; _i5 < restored.length; _i5++) { - var _ele3 = restored[_i5]; - - if (_ele3.isNode()) { - continue; - } // adding an edge invalidates the traversal caches for the parallel edges - - - _ele3.parallelEdges().clearTraversalCache(); // adding an edge invalidates the traversal cache for the connected nodes - - - _ele3.source().clearTraversalCache(); - - _ele3.target().clearTraversalCache(); - } - - var toUpdateStyle; - - if (cy_p.hasCompoundNodes) { - toUpdateStyle = cy.collection().merge(restored).merge(restored.connectedNodes()).merge(restored.parent()); - } else { - toUpdateStyle = restored; - } - - toUpdateStyle.dirtyCompoundBoundsCache().dirtyBoundingBoxCache().updateStyle(notifyRenderer); - - if (notifyRenderer) { - restored.emitAndNotify('add'); - } else if (addToPool) { - restored.emit('add'); - } - } - - return self; // chainability -}; - -elesfn$u.removed = function () { - var ele = this[0]; - return ele && ele._private.removed; -}; - -elesfn$u.inside = function () { - var ele = this[0]; - return ele && !ele._private.removed; -}; - -elesfn$u.remove = function () { - var notifyRenderer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; - var removeFromPool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - var self = this; - var elesToRemove = []; - var elesToRemoveIds = {}; - var cy = self._private.cy; // add connected edges - - function addConnectedEdges(node) { - var edges = node._private.edges; - - for (var i = 0; i < edges.length; i++) { - add(edges[i]); - } - } // add descendant nodes - - - function addChildren(node) { - var children = node._private.children; - - for (var i = 0; i < children.length; i++) { - add(children[i]); - } - } - - function add(ele) { - var alreadyAdded = elesToRemoveIds[ele.id()]; - - if (removeFromPool && ele.removed() || alreadyAdded) { - return; - } else { - elesToRemoveIds[ele.id()] = true; - } - - if (ele.isNode()) { - elesToRemove.push(ele); // nodes are removed last - - addConnectedEdges(ele); - addChildren(ele); - } else { - elesToRemove.unshift(ele); // edges are removed first - } - } // make the list of elements to remove - // (may be removing more than specified due to connected edges etc) - - - for (var i = 0, l = self.length; i < l; i++) { - var ele = self[i]; - add(ele); - } - - function removeEdgeRef(node, edge) { - var connectedEdges = node._private.edges; - removeFromArray(connectedEdges, edge); // removing an edges invalidates the traversal cache for its nodes - - node.clearTraversalCache(); - } - - function removeParallelRef(pllEdge) { - // removing an edge invalidates the traversal caches for the parallel edges - pllEdge.clearTraversalCache(); - } - - var alteredParents = []; - alteredParents.ids = {}; - - function removeChildRef(parent, ele) { - ele = ele[0]; - parent = parent[0]; - var children = parent._private.children; - var pid = parent.id(); - removeFromArray(children, ele); // remove parent => child ref - - ele._private.parent = null; // remove child => parent ref - - if (!alteredParents.ids[pid]) { - alteredParents.ids[pid] = true; - alteredParents.push(parent); - } - } - - self.dirtyCompoundBoundsCache(); - - if (removeFromPool) { - cy.removeFromPool(elesToRemove); // remove from core pool - } - - for (var _i6 = 0; _i6 < elesToRemove.length; _i6++) { - var _ele4 = elesToRemove[_i6]; - - if (_ele4.isEdge()) { - // remove references to this edge in its connected nodes - var src = _ele4.source()[0]; - - var tgt = _ele4.target()[0]; - - removeEdgeRef(src, _ele4); - removeEdgeRef(tgt, _ele4); - - var pllEdges = _ele4.parallelEdges(); - - for (var j = 0; j < pllEdges.length; j++) { - var pllEdge = pllEdges[j]; - removeParallelRef(pllEdge); - - if (pllEdge.isBundledBezier()) { - pllEdge.dirtyBoundingBoxCache(); - } - } - } else { - // remove reference to parent - var parent = _ele4.parent(); - - if (parent.length !== 0) { - removeChildRef(parent, _ele4); - } - } - - if (removeFromPool) { - // mark as removed - _ele4._private.removed = true; - } - } // check to see if we have a compound graph or not - - - var elesStillInside = cy._private.elements; - cy._private.hasCompoundNodes = false; - - for (var _i7 = 0; _i7 < elesStillInside.length; _i7++) { - var _ele5 = elesStillInside[_i7]; - - if (_ele5.isParent()) { - cy._private.hasCompoundNodes = true; - break; - } - } - - var removedElements = new Collection(this.cy(), elesToRemove); - - if (removedElements.size() > 0) { - // must manually notify since trigger won't do this automatically once removed - if (notifyRenderer) { - removedElements.emitAndNotify('remove'); - } else if (removeFromPool) { - removedElements.emit('remove'); - } - } // the parents who were modified by the removal need their style updated - - - for (var _i8 = 0; _i8 < alteredParents.length; _i8++) { - var _ele6 = alteredParents[_i8]; - - if (!removeFromPool || !_ele6.removed()) { - _ele6.updateStyle(); - } - } - - return removedElements; -}; - -elesfn$u.move = function (struct) { - var cy = this._private.cy; - var eles = this; // just clean up refs, caches, etc. in the same way as when removing and then restoring - // (our calls to remove/restore do not remove from the graph or make events) - - var notifyRenderer = false; - var modifyPool = false; - - var toString = function toString(id) { - return id == null ? id : '' + id; - }; // id must be string - - - if (struct.source !== undefined || struct.target !== undefined) { - var srcId = toString(struct.source); - var tgtId = toString(struct.target); - var srcExists = srcId != null && cy.hasElementWithId(srcId); - var tgtExists = tgtId != null && cy.hasElementWithId(tgtId); - - if (srcExists || tgtExists) { - cy.batch(function () { - // avoid duplicate style updates - eles.remove(notifyRenderer, modifyPool); // clean up refs etc. - - eles.emitAndNotify('moveout'); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _data5 = ele._private.data; - - if (ele.isEdge()) { - if (srcExists) { - _data5.source = srcId; - } - - if (tgtExists) { - _data5.target = tgtId; - } - } - } - - eles.restore(notifyRenderer, modifyPool); // make new refs, style, etc. - }); - eles.emitAndNotify('move'); - } - } else if (struct.parent !== undefined) { - // move node to new parent - var parentId = toString(struct.parent); - var parentExists = parentId === null || cy.hasElementWithId(parentId); - - if (parentExists) { - var pidToAssign = parentId === null ? undefined : parentId; - cy.batch(function () { - // avoid duplicate style updates - var updated = eles.remove(notifyRenderer, modifyPool); // clean up refs etc. - - updated.emitAndNotify('moveout'); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _data6 = ele._private.data; - - if (ele.isNode()) { - _data6.parent = pidToAssign; - } - } - - updated.restore(notifyRenderer, modifyPool); // make new refs, style, etc. - }); - eles.emitAndNotify('move'); - } - } - - return this; -}; - -[elesfn$c, elesfn$d, elesfn$e, elesfn$f, elesfn$g, data$1, elesfn$i, dimensions, elesfn$m, elesfn$n, elesfn$o, elesfn$p, elesfn$q, elesfn$r, elesfn$s, elesfn$t].forEach(function (props) { - extend(elesfn$u, props); -}); - -var corefn = { - add: function add(opts) { - var elements; - var cy = this; // add the elements - - if (elementOrCollection(opts)) { - var eles = opts; - - if (eles._private.cy === cy) { - // same instance => just restore - elements = eles.restore(); - } else { - // otherwise, copy from json - var jsons = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - jsons.push(ele.json()); - } - - elements = new Collection(cy, jsons); - } - } // specify an array of options - else if (array(opts)) { - var _jsons = opts; - elements = new Collection(cy, _jsons); - } // specify via opts.nodes and opts.edges - else if (plainObject(opts) && (array(opts.nodes) || array(opts.edges))) { - var elesByGroup = opts; - var _jsons2 = []; - var grs = ['nodes', 'edges']; - - for (var _i = 0, il = grs.length; _i < il; _i++) { - var group = grs[_i]; - var elesArray = elesByGroup[group]; - - if (array(elesArray)) { - for (var j = 0, jl = elesArray.length; j < jl; j++) { - var json = extend({ - group: group - }, elesArray[j]); - - _jsons2.push(json); - } - } - } - - elements = new Collection(cy, _jsons2); - } // specify options for one element - else { - var _json = opts; - elements = new Element(cy, _json).collection(); - } - - return elements; - }, - remove: function remove(collection) { - if (elementOrCollection(collection)) ; else if (string(collection)) { - var selector = collection; - collection = this.$(selector); - } - - return collection.remove(); - } -}; - -/* global Float32Array */ - -/*! Bezier curve function generator. Copyright Gaetan Renaudeau. MIT License: http://en.wikipedia.org/wiki/MIT_License */ -function generateCubicBezier(mX1, mY1, mX2, mY2) { - var NEWTON_ITERATIONS = 4, - NEWTON_MIN_SLOPE = 0.001, - SUBDIVISION_PRECISION = 0.0000001, - SUBDIVISION_MAX_ITERATIONS = 10, - kSplineTableSize = 11, - kSampleStepSize = 1.0 / (kSplineTableSize - 1.0), - float32ArraySupported = typeof Float32Array !== 'undefined'; - /* Must contain four arguments. */ - - if (arguments.length !== 4) { - return false; - } - /* Arguments must be numbers. */ - - - for (var i = 0; i < 4; ++i) { - if (typeof arguments[i] !== "number" || isNaN(arguments[i]) || !isFinite(arguments[i])) { - return false; - } - } - /* X values must be in the [0, 1] range. */ - - - mX1 = Math.min(mX1, 1); - mX2 = Math.min(mX2, 1); - mX1 = Math.max(mX1, 0); - mX2 = Math.max(mX2, 0); - var mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); - - function A(aA1, aA2) { - return 1.0 - 3.0 * aA2 + 3.0 * aA1; - } - - function B(aA1, aA2) { - return 3.0 * aA2 - 6.0 * aA1; - } - - function C(aA1) { - return 3.0 * aA1; - } - - function calcBezier(aT, aA1, aA2) { - return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; - } - - function getSlope(aT, aA1, aA2) { - return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); - } - - function newtonRaphsonIterate(aX, aGuessT) { - for (var _i = 0; _i < NEWTON_ITERATIONS; ++_i) { - var currentSlope = getSlope(aGuessT, mX1, mX2); - - if (currentSlope === 0.0) { - return aGuessT; - } - - var currentX = calcBezier(aGuessT, mX1, mX2) - aX; - aGuessT -= currentX / currentSlope; - } - - return aGuessT; - } - - function calcSampleValues() { - for (var _i2 = 0; _i2 < kSplineTableSize; ++_i2) { - mSampleValues[_i2] = calcBezier(_i2 * kSampleStepSize, mX1, mX2); - } - } - - function binarySubdivide(aX, aA, aB) { - var currentX, - currentT, - i = 0; - - do { - currentT = aA + (aB - aA) / 2.0; - currentX = calcBezier(currentT, mX1, mX2) - aX; - - if (currentX > 0.0) { - aB = currentT; - } else { - aA = currentT; - } - } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); - - return currentT; - } - - function getTForX(aX) { - var intervalStart = 0.0, - currentSample = 1, - lastSample = kSplineTableSize - 1; - - for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) { - intervalStart += kSampleStepSize; - } - - --currentSample; - var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]), - guessForT = intervalStart + dist * kSampleStepSize, - initialSlope = getSlope(guessForT, mX1, mX2); - - if (initialSlope >= NEWTON_MIN_SLOPE) { - return newtonRaphsonIterate(aX, guessForT); - } else if (initialSlope === 0.0) { - return guessForT; - } else { - return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize); - } - } - - var _precomputed = false; - - function precompute() { - _precomputed = true; - - if (mX1 !== mY1 || mX2 !== mY2) { - calcSampleValues(); - } - } - - var f = function f(aX) { - if (!_precomputed) { - precompute(); - } - - if (mX1 === mY1 && mX2 === mY2) { - return aX; - } - - if (aX === 0) { - return 0; - } - - if (aX === 1) { - return 1; - } - - return calcBezier(getTForX(aX), mY1, mY2); - }; - - f.getControlPoints = function () { - return [{ - x: mX1, - y: mY1 - }, { - x: mX2, - y: mY2 - }]; - }; - - var str = "generateBezier(" + [mX1, mY1, mX2, mY2] + ")"; - - f.toString = function () { - return str; - }; - - return f; -} - -/*! Runge-Kutta spring physics function generator. Adapted from Framer.js, copyright Koen Bok. MIT License: http://en.wikipedia.org/wiki/MIT_License */ - -/* Given a tension, friction, and duration, a simulation at 60FPS will first run without a defined duration in order to calculate the full path. A second pass - then adjusts the time delta -- using the relation between actual time and duration -- to calculate the path for the duration-constrained animation. */ -var generateSpringRK4 = function () { - function springAccelerationForState(state) { - return -state.tension * state.x - state.friction * state.v; - } - - function springEvaluateStateWithDerivative(initialState, dt, derivative) { - var state = { - x: initialState.x + derivative.dx * dt, - v: initialState.v + derivative.dv * dt, - tension: initialState.tension, - friction: initialState.friction - }; - return { - dx: state.v, - dv: springAccelerationForState(state) - }; - } - - function springIntegrateState(state, dt) { - var a = { - dx: state.v, - dv: springAccelerationForState(state) - }, - b = springEvaluateStateWithDerivative(state, dt * 0.5, a), - c = springEvaluateStateWithDerivative(state, dt * 0.5, b), - d = springEvaluateStateWithDerivative(state, dt, c), - dxdt = 1.0 / 6.0 * (a.dx + 2.0 * (b.dx + c.dx) + d.dx), - dvdt = 1.0 / 6.0 * (a.dv + 2.0 * (b.dv + c.dv) + d.dv); - state.x = state.x + dxdt * dt; - state.v = state.v + dvdt * dt; - return state; - } - - return function springRK4Factory(tension, friction, duration) { - var initState = { - x: -1, - v: 0, - tension: null, - friction: null - }, - path = [0], - time_lapsed = 0, - tolerance = 1 / 10000, - DT = 16 / 1000, - have_duration, - dt, - last_state; - tension = parseFloat(tension) || 500; - friction = parseFloat(friction) || 20; - duration = duration || null; - initState.tension = tension; - initState.friction = friction; - have_duration = duration !== null; - /* Calculate the actual time it takes for this animation to complete with the provided conditions. */ - - if (have_duration) { - /* Run the simulation without a duration. */ - time_lapsed = springRK4Factory(tension, friction); - /* Compute the adjusted time delta. */ - - dt = time_lapsed / duration * DT; - } else { - dt = DT; - } - - for (;;) { - /* Next/step function .*/ - last_state = springIntegrateState(last_state || initState, dt); - /* Store the position. */ - - path.push(1 + last_state.x); - time_lapsed += 16; - /* If the change threshold is reached, break. */ - - if (!(Math.abs(last_state.x) > tolerance && Math.abs(last_state.v) > tolerance)) { - break; - } - } - /* If duration is not defined, return the actual time required for completing this animation. Otherwise, return a closure that holds the - computed path and returns a snapshot of the position according to a given percentComplete. */ - - - return !have_duration ? time_lapsed : function (percentComplete) { - return path[percentComplete * (path.length - 1) | 0]; - }; - }; -}(); - -var cubicBezier = function cubicBezier(t1, p1, t2, p2) { - var bezier = generateCubicBezier(t1, p1, t2, p2); - return function (start, end, percent) { - return start + (end - start) * bezier(percent); - }; -}; - -var easings = { - 'linear': function linear(start, end, percent) { - return start + (end - start) * percent; - }, - // default easings - 'ease': cubicBezier(0.25, 0.1, 0.25, 1), - 'ease-in': cubicBezier(0.42, 0, 1, 1), - 'ease-out': cubicBezier(0, 0, 0.58, 1), - 'ease-in-out': cubicBezier(0.42, 0, 0.58, 1), - // sine - 'ease-in-sine': cubicBezier(0.47, 0, 0.745, 0.715), - 'ease-out-sine': cubicBezier(0.39, 0.575, 0.565, 1), - 'ease-in-out-sine': cubicBezier(0.445, 0.05, 0.55, 0.95), - // quad - 'ease-in-quad': cubicBezier(0.55, 0.085, 0.68, 0.53), - 'ease-out-quad': cubicBezier(0.25, 0.46, 0.45, 0.94), - 'ease-in-out-quad': cubicBezier(0.455, 0.03, 0.515, 0.955), - // cubic - 'ease-in-cubic': cubicBezier(0.55, 0.055, 0.675, 0.19), - 'ease-out-cubic': cubicBezier(0.215, 0.61, 0.355, 1), - 'ease-in-out-cubic': cubicBezier(0.645, 0.045, 0.355, 1), - // quart - 'ease-in-quart': cubicBezier(0.895, 0.03, 0.685, 0.22), - 'ease-out-quart': cubicBezier(0.165, 0.84, 0.44, 1), - 'ease-in-out-quart': cubicBezier(0.77, 0, 0.175, 1), - // quint - 'ease-in-quint': cubicBezier(0.755, 0.05, 0.855, 0.06), - 'ease-out-quint': cubicBezier(0.23, 1, 0.32, 1), - 'ease-in-out-quint': cubicBezier(0.86, 0, 0.07, 1), - // expo - 'ease-in-expo': cubicBezier(0.95, 0.05, 0.795, 0.035), - 'ease-out-expo': cubicBezier(0.19, 1, 0.22, 1), - 'ease-in-out-expo': cubicBezier(1, 0, 0, 1), - // circ - 'ease-in-circ': cubicBezier(0.6, 0.04, 0.98, 0.335), - 'ease-out-circ': cubicBezier(0.075, 0.82, 0.165, 1), - 'ease-in-out-circ': cubicBezier(0.785, 0.135, 0.15, 0.86), - // user param easings... - 'spring': function spring(tension, friction, duration) { - if (duration === 0) { - // can't get a spring w/ duration 0 - return easings.linear; // duration 0 => jump to end so impl doesn't matter - } - - var spring = generateSpringRK4(tension, friction, duration); - return function (start, end, percent) { - return start + (end - start) * spring(percent); - }; - }, - 'cubic-bezier': cubicBezier -}; - -function getEasedValue(type, start, end, percent, easingFn) { - if (percent === 1) { - return end; - } - - if (start === end) { - return end; - } - - var val = easingFn(start, end, percent); - - if (type == null) { - return val; - } - - if (type.roundValue || type.color) { - val = Math.round(val); - } - - if (type.min !== undefined) { - val = Math.max(val, type.min); - } - - if (type.max !== undefined) { - val = Math.min(val, type.max); - } - - return val; -} - -function getValue(prop, spec) { - if (prop.pfValue != null || prop.value != null) { - if (prop.pfValue != null && (spec == null || spec.type.units !== '%')) { - return prop.pfValue; - } else { - return prop.value; - } - } else { - return prop; - } -} - -function ease(startProp, endProp, percent, easingFn, propSpec) { - var type = propSpec != null ? propSpec.type : null; - - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - - var start = getValue(startProp, propSpec); - var end = getValue(endProp, propSpec); - - if (number(start) && number(end)) { - return getEasedValue(type, start, end, percent, easingFn); - } else if (array(start) && array(end)) { - var easedArr = []; - - for (var i = 0; i < end.length; i++) { - var si = start[i]; - var ei = end[i]; - - if (si != null && ei != null) { - var val = getEasedValue(type, si, ei, percent, easingFn); - easedArr.push(val); - } else { - easedArr.push(ei); - } - } - - return easedArr; - } - - return undefined; -} - -function step(self, ani, now, isCore) { - var isEles = !isCore; - var _p = self._private; - var ani_p = ani._private; - var pEasing = ani_p.easing; - var startTime = ani_p.startTime; - var cy = isCore ? self : self.cy(); - var style = cy.style(); - - if (!ani_p.easingImpl) { - if (pEasing == null) { - // use default - ani_p.easingImpl = easings['linear']; - } else { - // then define w/ name - var easingVals; - - if (string(pEasing)) { - var easingProp = style.parse('transition-timing-function', pEasing); - easingVals = easingProp.value; - } else { - // then assume preparsed array - easingVals = pEasing; - } - - var name, args; - - if (string(easingVals)) { - name = easingVals; - args = []; - } else { - name = easingVals[1]; - args = easingVals.slice(2).map(function (n) { - return +n; - }); - } - - if (args.length > 0) { - // create with args - if (name === 'spring') { - args.push(ani_p.duration); // need duration to generate spring - } - - ani_p.easingImpl = easings[name].apply(null, args); - } else { - // static impl by name - ani_p.easingImpl = easings[name]; - } - } - } - - var easing = ani_p.easingImpl; - var percent; - - if (ani_p.duration === 0) { - percent = 1; - } else { - percent = (now - startTime) / ani_p.duration; - } - - if (ani_p.applying) { - percent = ani_p.progress; - } - - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - - if (ani_p.delay == null) { - // then update - var startPos = ani_p.startPosition; - var endPos = ani_p.position; - - if (endPos && isEles && !self.locked()) { - var newPos = {}; - - if (valid(startPos.x, endPos.x)) { - newPos.x = ease(startPos.x, endPos.x, percent, easing); - } - - if (valid(startPos.y, endPos.y)) { - newPos.y = ease(startPos.y, endPos.y, percent, easing); - } - - self.position(newPos); - } - - var startPan = ani_p.startPan; - var endPan = ani_p.pan; - var pan = _p.pan; - var animatingPan = endPan != null && isCore; - - if (animatingPan) { - if (valid(startPan.x, endPan.x)) { - pan.x = ease(startPan.x, endPan.x, percent, easing); - } - - if (valid(startPan.y, endPan.y)) { - pan.y = ease(startPan.y, endPan.y, percent, easing); - } - - self.emit('pan'); - } - - var startZoom = ani_p.startZoom; - var endZoom = ani_p.zoom; - var animatingZoom = endZoom != null && isCore; - - if (animatingZoom) { - if (valid(startZoom, endZoom)) { - _p.zoom = bound(_p.minZoom, ease(startZoom, endZoom, percent, easing), _p.maxZoom); - } - - self.emit('zoom'); - } - - if (animatingPan || animatingZoom) { - self.emit('viewport'); - } - - var props = ani_p.style; - - if (props && props.length > 0 && isEles) { - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - var _name = prop.name; - var end = prop; - var start = ani_p.startStyle[_name]; - var propSpec = style.properties[start.name]; - var easedVal = ease(start, end, percent, easing, propSpec); - style.overrideBypass(self, _name, easedVal); - } // for props - - - self.emit('style'); - } // if - - } - - ani_p.progress = percent; - return percent; -} - -function valid(start, end) { - if (start == null || end == null) { - return false; - } - - if (number(start) && number(end)) { - return true; - } else if (start && end) { - return true; - } - - return false; -} - -function startAnimation(self, ani, now, isCore) { - var ani_p = ani._private; - ani_p.started = true; - ani_p.startTime = now - ani_p.progress * ani_p.duration; -} - -function stepAll(now, cy) { - var eles = cy._private.aniEles; - var doneEles = []; - - function stepOne(ele, isCore) { - var _p = ele._private; - var current = _p.animation.current; - var queue = _p.animation.queue; - var ranAnis = false; // if nothing currently animating, get something from the queue - - if (current.length === 0) { - var next = queue.shift(); - - if (next) { - current.push(next); - } - } - - var callbacks = function callbacks(_callbacks) { - for (var j = _callbacks.length - 1; j >= 0; j--) { - var cb = _callbacks[j]; - cb(); - } - - _callbacks.splice(0, _callbacks.length); - }; // step and remove if done - - - for (var i = current.length - 1; i >= 0; i--) { - var ani = current[i]; - var ani_p = ani._private; - - if (ani_p.stopped) { - current.splice(i, 1); - ani_p.hooked = false; - ani_p.playing = false; - ani_p.started = false; - callbacks(ani_p.frames); - continue; - } - - if (!ani_p.playing && !ani_p.applying) { - continue; - } // an apply() while playing shouldn't do anything - - - if (ani_p.playing && ani_p.applying) { - ani_p.applying = false; - } - - if (!ani_p.started) { - startAnimation(ele, ani, now); - } - - step(ele, ani, now, isCore); - - if (ani_p.applying) { - ani_p.applying = false; - } - - callbacks(ani_p.frames); - - if (ani_p.step != null) { - ani_p.step(now); - } - - if (ani.completed()) { - current.splice(i, 1); - ani_p.hooked = false; - ani_p.playing = false; - ani_p.started = false; - callbacks(ani_p.completes); - } - - ranAnis = true; - } - - if (!isCore && current.length === 0 && queue.length === 0) { - doneEles.push(ele); - } - - return ranAnis; - } // stepElement - // handle all eles - - - var ranEleAni = false; - - for (var e = 0; e < eles.length; e++) { - var ele = eles[e]; - var handledThisEle = stepOne(ele); - ranEleAni = ranEleAni || handledThisEle; - } // each element - - - var ranCoreAni = stepOne(cy, true); // notify renderer - - if (ranEleAni || ranCoreAni) { - if (eles.length > 0) { - cy.notify('draw', eles); - } else { - cy.notify('draw'); - } - } // remove elements from list of currently animating if its queues are empty - - - eles.unmerge(doneEles); - cy.emit('step'); -} // stepAll - -var corefn$1 = { - // pull in animation functions - animate: define$3.animate(), - animation: define$3.animation(), - animated: define$3.animated(), - clearQueue: define$3.clearQueue(), - delay: define$3.delay(), - delayAnimation: define$3.delayAnimation(), - stop: define$3.stop(), - addToAnimationPool: function addToAnimationPool(eles) { - var cy = this; - - if (!cy.styleEnabled()) { - return; - } // save cycles when no style used - - - cy._private.aniEles.merge(eles); - }, - stopAnimationLoop: function stopAnimationLoop() { - this._private.animationsRunning = false; - }, - startAnimationLoop: function startAnimationLoop() { - var cy = this; - cy._private.animationsRunning = true; - - if (!cy.styleEnabled()) { - return; - } // save cycles when no style used - // NB the animation loop will exec in headless environments if style enabled - // and explicit cy.destroy() is necessary to stop the loop - - - function headlessStep() { - if (!cy._private.animationsRunning) { - return; - } - - requestAnimationFrame(function animationStep(now) { - stepAll(now, cy); - headlessStep(); - }); - } - - var renderer = cy.renderer(); - - if (renderer && renderer.beforeRender) { - // let the renderer schedule animations - renderer.beforeRender(function rendererAnimationStep(willDraw, now) { - stepAll(now, cy); - }, renderer.beforeRenderPriorities.animations); - } else { - // manage the animation loop ourselves - headlessStep(); // first call - } - } -}; - -var emitterOptions$1 = { - qualifierCompare: function qualifierCompare(selector1, selector2) { - if (selector1 == null || selector2 == null) { - return selector1 == null && selector2 == null; - } else { - return selector1.sameText(selector2); - } - }, - eventMatches: function eventMatches(cy, listener, eventObj) { - var selector = listener.qualifier; - - if (selector != null) { - return cy !== eventObj.target && element(eventObj.target) && selector.matches(eventObj.target); - } - - return true; - }, - addEventFields: function addEventFields(cy, evt) { - evt.cy = cy; - evt.target = cy; - }, - callbackContext: function callbackContext(cy, listener, eventObj) { - return listener.qualifier != null ? eventObj.target : cy; - } -}; - -var argSelector$1 = function argSelector(arg) { - if (string(arg)) { - return new Selector(arg); - } else { - return arg; - } -}; - -var elesfn$v = { - createEmitter: function createEmitter() { - var _p = this._private; - - if (!_p.emitter) { - _p.emitter = new Emitter(emitterOptions$1, this); - } - - return this; - }, - emitter: function emitter() { - return this._private.emitter; - }, - on: function on(events, selector, callback) { - this.emitter().on(events, argSelector$1(selector), callback); - return this; - }, - removeListener: function removeListener(events, selector, callback) { - this.emitter().removeListener(events, argSelector$1(selector), callback); - return this; - }, - removeAllListeners: function removeAllListeners() { - this.emitter().removeAllListeners(); - return this; - }, - one: function one(events, selector, callback) { - this.emitter().one(events, argSelector$1(selector), callback); - return this; - }, - once: function once(events, selector, callback) { - this.emitter().one(events, argSelector$1(selector), callback); - return this; - }, - emit: function emit(events, extraParams) { - this.emitter().emit(events, extraParams); - return this; - }, - emitAndNotify: function emitAndNotify(event, eles) { - this.emit(event); - this.notify(event, eles); - return this; - } -}; -define$3.eventAliasesOn(elesfn$v); - -var corefn$2 = { - png: function png(options) { - var renderer = this._private.renderer; - options = options || {}; - return renderer.png(options); - }, - jpg: function jpg(options) { - var renderer = this._private.renderer; - options = options || {}; - options.bg = options.bg || '#fff'; - return renderer.jpg(options); - } -}; -corefn$2.jpeg = corefn$2.jpg; - -var corefn$3 = { - layout: function layout(options) { - var cy = this; - - if (options == null) { - error('Layout options must be specified to make a layout'); - return; - } - - if (options.name == null) { - error('A `name` must be specified to make a layout'); - return; - } - - var name = options.name; - var Layout = cy.extension('layout', name); - - if (Layout == null) { - error('No such layout `' + name + '` found. Did you forget to import it and `cytoscape.use()` it?'); - return; - } - - var eles; - - if (string(options.eles)) { - eles = cy.$(options.eles); - } else { - eles = options.eles != null ? options.eles : cy.$(); - } - - var layout = new Layout(extend({}, options, { - cy: cy, - eles: eles - })); - return layout; - } -}; -corefn$3.createLayout = corefn$3.makeLayout = corefn$3.layout; - -var corefn$4 = { - notify: function notify(eventName, eventEles) { - var _p = this._private; - - if (this.batching()) { - _p.batchNotifications = _p.batchNotifications || {}; - var eles = _p.batchNotifications[eventName] = _p.batchNotifications[eventName] || this.collection(); - - if (eventEles != null) { - eles.merge(eventEles); - } - - return; // notifications are disabled during batching - } - - if (!_p.notificationsEnabled) { - return; - } // exit on disabled - - - var renderer = this.renderer(); // exit if destroy() called on core or renderer in between frames #1499 #1528 - - if (this.destroyed() || !renderer) { - return; - } - - renderer.notify(eventName, eventEles); - }, - notifications: function notifications(bool) { - var p = this._private; - - if (bool === undefined) { - return p.notificationsEnabled; - } else { - p.notificationsEnabled = bool ? true : false; - } - - return this; - }, - noNotifications: function noNotifications(callback) { - this.notifications(false); - callback(); - this.notifications(true); - }, - batching: function batching() { - return this._private.batchCount > 0; - }, - startBatch: function startBatch() { - var _p = this._private; - - if (_p.batchCount == null) { - _p.batchCount = 0; - } - - if (_p.batchCount === 0) { - _p.batchStyleEles = this.collection(); - _p.batchNotifications = {}; - } - - _p.batchCount++; - return this; - }, - endBatch: function endBatch() { - var _p = this._private; - - if (_p.batchCount === 0) { - return this; - } - - _p.batchCount--; - - if (_p.batchCount === 0) { - // update style for dirty eles - _p.batchStyleEles.updateStyle(); - - var renderer = this.renderer(); // notify the renderer of queued eles and event types - - Object.keys(_p.batchNotifications).forEach(function (eventName) { - var eles = _p.batchNotifications[eventName]; - - if (eles.empty()) { - renderer.notify(eventName); - } else { - renderer.notify(eventName, eles); - } - }); - } - - return this; - }, - batch: function batch(callback) { - this.startBatch(); - callback(); - this.endBatch(); - return this; - }, - // for backwards compatibility - batchData: function batchData(map) { - var cy = this; - return this.batch(function () { - var ids = Object.keys(map); - - for (var i = 0; i < ids.length; i++) { - var id = ids[i]; - var data = map[id]; - var ele = cy.getElementById(id); - ele.data(data); - } - }); - } -}; - -var rendererDefaults = defaults({ - hideEdgesOnViewport: false, - textureOnViewport: false, - motionBlur: false, - motionBlurOpacity: 0.05, - pixelRatio: undefined, - desktopTapThreshold: 4, - touchTapThreshold: 8, - wheelSensitivity: 1, - debug: false, - showFps: false -}); -var corefn$5 = { - renderTo: function renderTo(context, zoom, pan, pxRatio) { - var r = this._private.renderer; - r.renderTo(context, zoom, pan, pxRatio); - return this; - }, - renderer: function renderer() { - return this._private.renderer; - }, - forceRender: function forceRender() { - this.notify('draw'); - return this; - }, - resize: function resize() { - this.invalidateSize(); - this.emitAndNotify('resize'); - return this; - }, - initRenderer: function initRenderer(options) { - var cy = this; - var RendererProto = cy.extension('renderer', options.name); - - if (RendererProto == null) { - error("Can not initialise: No such renderer `".concat(options.name, "` found. Did you forget to import it and `cytoscape.use()` it?")); - return; - } - - if (options.wheelSensitivity !== undefined) { - warn("You have set a custom wheel sensitivity. This will make your app zoom unnaturally when using mainstream mice. You should change this value from the default only if you can guarantee that all your users will use the same hardware and OS configuration as your current machine."); - } - - var rOpts = rendererDefaults(options); - rOpts.cy = cy; - cy._private.renderer = new RendererProto(rOpts); - this.notify('init'); - }, - destroyRenderer: function destroyRenderer() { - var cy = this; - cy.notify('destroy'); // destroy the renderer - - var domEle = cy.container(); - - if (domEle) { - domEle._cyreg = null; - - while (domEle.childNodes.length > 0) { - domEle.removeChild(domEle.childNodes[0]); - } - } - - cy._private.renderer = null; // to be extra safe, remove the ref - - cy.mutableElements().forEach(function (ele) { - var _p = ele._private; - _p.rscratch = {}; - _p.rstyle = {}; - _p.animation.current = []; - _p.animation.queue = []; - }); - }, - onRender: function onRender(fn) { - return this.on('render', fn); - }, - offRender: function offRender(fn) { - return this.off('render', fn); - } -}; -corefn$5.invalidateDimensions = corefn$5.resize; - -var corefn$6 = { - // get a collection - // - empty collection on no args - // - collection of elements in the graph on selector arg - // - guarantee a returned collection when elements or collection specified - collection: function collection(eles, opts) { - if (string(eles)) { - return this.$(eles); - } else if (elementOrCollection(eles)) { - return eles.collection(); - } else if (array(eles)) { - return new Collection(this, eles, opts); - } - - return new Collection(this); - }, - nodes: function nodes(selector) { - var nodes = this.$(function (ele) { - return ele.isNode(); - }); - - if (selector) { - return nodes.filter(selector); - } - - return nodes; - }, - edges: function edges(selector) { - var edges = this.$(function (ele) { - return ele.isEdge(); - }); - - if (selector) { - return edges.filter(selector); - } - - return edges; - }, - // search the graph like jQuery - $: function $(selector) { - var eles = this._private.elements; - - if (selector) { - return eles.filter(selector); - } else { - return eles.spawnSelf(); - } - }, - mutableElements: function mutableElements() { - return this._private.elements; - } -}; // aliases - -corefn$6.elements = corefn$6.filter = corefn$6.$; - -var styfn = {}; // keys for style blocks, e.g. ttfftt - -var TRUE = 't'; -var FALSE = 'f'; // (potentially expensive calculation) -// apply the style to the element based on -// - its bypass -// - what selectors match it - -styfn.apply = function (eles) { - var self = this; - var _p = self._private; - var cy = _p.cy; - var updatedEles = cy.collection(); - - if (_p.newStyle) { - // clear style caches - _p.contextStyles = {}; - _p.propDiffs = {}; - self.cleanElements(eles, true); - } - - for (var ie = 0; ie < eles.length; ie++) { - var ele = eles[ie]; - var cxtMeta = self.getContextMeta(ele); - - if (cxtMeta.empty) { - continue; - } - - var cxtStyle = self.getContextStyle(cxtMeta); - var app = self.applyContextStyle(cxtMeta, cxtStyle, ele); - - if (!_p.newStyle) { - self.updateTransitions(ele, app.diffProps); - } - - var hintsDiff = self.updateStyleHints(ele); - - if (hintsDiff) { - updatedEles.push(ele); - } - } // for elements - - - _p.newStyle = false; - return updatedEles; -}; - -styfn.getPropertiesDiff = function (oldCxtKey, newCxtKey) { - var self = this; - var cache = self._private.propDiffs = self._private.propDiffs || {}; - var dualCxtKey = oldCxtKey + '-' + newCxtKey; - var cachedVal = cache[dualCxtKey]; - - if (cachedVal) { - return cachedVal; - } - - var diffProps = []; - var addedProp = {}; - - for (var i = 0; i < self.length; i++) { - var cxt = self[i]; - var oldHasCxt = oldCxtKey[i] === TRUE; - var newHasCxt = newCxtKey[i] === TRUE; - var cxtHasDiffed = oldHasCxt !== newHasCxt; - var cxtHasMappedProps = cxt.mappedProperties.length > 0; - - if (cxtHasDiffed || newHasCxt && cxtHasMappedProps) { - var props = void 0; - - if (cxtHasDiffed && cxtHasMappedProps) { - props = cxt.properties; // suffices b/c mappedProperties is a subset of properties - } else if (cxtHasDiffed) { - props = cxt.properties; // need to check them all - } else if (cxtHasMappedProps) { - props = cxt.mappedProperties; // only need to check mapped - } - - for (var j = 0; j < props.length; j++) { - var prop = props[j]; - var name = prop.name; // if a later context overrides this property, then the fact that this context has switched/diffed doesn't matter - // (semi expensive check since it makes this function O(n^2) on context length, but worth it since overall result - // is cached) - - var laterCxtOverrides = false; - - for (var k = i + 1; k < self.length; k++) { - var laterCxt = self[k]; - var hasLaterCxt = newCxtKey[k] === TRUE; - - if (!hasLaterCxt) { - continue; - } // can't override unless the context is active - - - laterCxtOverrides = laterCxt.properties[prop.name] != null; - - if (laterCxtOverrides) { - break; - } // exit early as long as one later context overrides - - } - - if (!addedProp[name] && !laterCxtOverrides) { - addedProp[name] = true; - diffProps.push(name); - } - } // for props - - } // if - - } // for contexts - - - cache[dualCxtKey] = diffProps; - return diffProps; -}; - -styfn.getContextMeta = function (ele) { - var self = this; - var cxtKey = ''; - var diffProps; - var prevKey = ele._private.styleCxtKey || ''; - - if (self._private.newStyle) { - prevKey = ''; // since we need to apply all style if a fresh stylesheet - } // get the cxt key - - - for (var i = 0; i < self.length; i++) { - var context = self[i]; - var contextSelectorMatches = context.selector && context.selector.matches(ele); // NB: context.selector may be null for 'core' - - if (contextSelectorMatches) { - cxtKey += TRUE; - } else { - cxtKey += FALSE; - } - } // for context - - - diffProps = self.getPropertiesDiff(prevKey, cxtKey); - ele._private.styleCxtKey = cxtKey; - return { - key: cxtKey, - diffPropNames: diffProps, - empty: diffProps.length === 0 - }; -}; // gets a computed ele style object based on matched contexts - - -styfn.getContextStyle = function (cxtMeta) { - var cxtKey = cxtMeta.key; - var self = this; - var cxtStyles = this._private.contextStyles = this._private.contextStyles || {}; // if already computed style, returned cached copy - - if (cxtStyles[cxtKey]) { - return cxtStyles[cxtKey]; - } - - var style = { - _private: { - key: cxtKey - } - }; - - for (var i = 0; i < self.length; i++) { - var cxt = self[i]; - var hasCxt = cxtKey[i] === TRUE; - - if (!hasCxt) { - continue; - } - - for (var j = 0; j < cxt.properties.length; j++) { - var prop = cxt.properties[j]; - style[prop.name] = prop; - } - } - - cxtStyles[cxtKey] = style; - return style; -}; - -styfn.applyContextStyle = function (cxtMeta, cxtStyle, ele) { - var self = this; - var diffProps = cxtMeta.diffPropNames; - var retDiffProps = {}; - var types = self.types; - - for (var i = 0; i < diffProps.length; i++) { - var diffPropName = diffProps[i]; - var cxtProp = cxtStyle[diffPropName]; - var eleProp = ele.pstyle(diffPropName); - - if (!cxtProp) { - // no context prop means delete - if (!eleProp) { - continue; // no existing prop means nothing needs to be removed - // nb affects initial application on mapped values like control-point-distances - } else if (eleProp.bypass) { - cxtProp = { - name: diffPropName, - deleteBypassed: true - }; - } else { - cxtProp = { - name: diffPropName, - "delete": true - }; - } - } // save cycles when the context prop doesn't need to be applied - - - if (eleProp === cxtProp) { - continue; - } // save cycles when a mapped context prop doesn't need to be applied - - - if (cxtProp.mapped === types.fn // context prop is function mapper - && eleProp != null // some props can be null even by default (e.g. a prop that overrides another one) - && eleProp.mapping != null // ele prop is a concrete value from from a mapper - && eleProp.mapping.value === cxtProp.value // the current prop on the ele is a flat prop value for the function mapper - ) { - // NB don't write to cxtProp, as it's shared among eles (stored in stylesheet) - var mapping = eleProp.mapping; // can write to mapping, as it's a per-ele copy - - var fnValue = mapping.fnValue = cxtProp.value(ele); // temporarily cache the value in case of a miss - - if (fnValue === mapping.prevFnValue) { - continue; - } - } - - var retDiffProp = retDiffProps[diffPropName] = { - prev: eleProp - }; - self.applyParsedProperty(ele, cxtProp); - retDiffProp.next = ele.pstyle(diffPropName); - - if (retDiffProp.next && retDiffProp.next.bypass) { - retDiffProp.next = retDiffProp.next.bypassed; - } - } - - return { - diffProps: retDiffProps - }; -}; - -styfn.updateStyleHints = function (ele) { - var _p = ele._private; - var self = this; - var propNames = self.propertyGroupNames; - var propGrKeys = self.propertyGroupKeys; - - var propHash = function propHash(ele, propNames, seedKey) { - return self.getPropertiesHash(ele, propNames, seedKey); - }; - - var oldStyleKey = _p.styleKey; - - if (ele.removed()) { - return false; - } - - var isNode = _p.group === 'nodes'; // get the style key hashes per prop group - // but lazily -- only use non-default prop values to reduce the number of hashes - // - - var overriddenStyles = ele._private.style; - propNames = Object.keys(overriddenStyles); - - for (var i = 0; i < propGrKeys.length; i++) { - var grKey = propGrKeys[i]; - _p.styleKeys[grKey] = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; - } - - var updateGrKey1 = function updateGrKey1(val, grKey) { - return _p.styleKeys[grKey][0] = hashInt(val, _p.styleKeys[grKey][0]); - }; - - var updateGrKey2 = function updateGrKey2(val, grKey) { - return _p.styleKeys[grKey][1] = hashIntAlt(val, _p.styleKeys[grKey][1]); - }; - - var updateGrKey = function updateGrKey(val, grKey) { - updateGrKey1(val, grKey); - updateGrKey2(val, grKey); - }; - - var updateGrKeyWStr = function updateGrKeyWStr(strVal, grKey) { - for (var j = 0; j < strVal.length; j++) { - var ch = strVal.charCodeAt(j); - updateGrKey1(ch, grKey); - updateGrKey2(ch, grKey); - } - }; // - hashing works on 32 bit ints b/c we use bitwise ops - // - small numbers get cut off (e.g. 0.123 is seen as 0 by the hashing function) - // - raise up small numbers so more significant digits are seen by hashing - // - make small numbers larger than a normal value to avoid collisions - // - works in practice and it's relatively cheap - - - var N = 2000000000; - - var cleanNum = function cleanNum(val) { - return -128 < val && val < 128 && Math.floor(val) !== val ? N - (val * 1024 | 0) : val; - }; - - for (var _i = 0; _i < propNames.length; _i++) { - var name = propNames[_i]; - var parsedProp = overriddenStyles[name]; - - if (parsedProp == null) { - continue; - } - - var propInfo = this.properties[name]; - var type = propInfo.type; - var _grKey = propInfo.groupKey; - var normalizedNumberVal = void 0; - - if (propInfo.hashOverride != null) { - normalizedNumberVal = propInfo.hashOverride(ele, parsedProp); - } else if (parsedProp.pfValue != null) { - normalizedNumberVal = parsedProp.pfValue; - } // might not be a number if it allows enums - - - var numberVal = propInfo.enums == null ? parsedProp.value : null; - var haveNormNum = normalizedNumberVal != null; - var haveUnitedNum = numberVal != null; - var haveNum = haveNormNum || haveUnitedNum; - var units = parsedProp.units; // numbers are cheaper to hash than strings - // 1 hash op vs n hash ops (for length n string) - - if (type.number && haveNum && !type.multiple) { - var v = haveNormNum ? normalizedNumberVal : numberVal; - updateGrKey(cleanNum(v), _grKey); - - if (!haveNormNum && units != null) { - updateGrKeyWStr(units, _grKey); - } - } else { - updateGrKeyWStr(parsedProp.strValue, _grKey); - } - } // overall style key - // - - - var hash = [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]; - - for (var _i2 = 0; _i2 < propGrKeys.length; _i2++) { - var _grKey2 = propGrKeys[_i2]; - var grHash = _p.styleKeys[_grKey2]; - hash[0] = hashInt(grHash[0], hash[0]); - hash[1] = hashIntAlt(grHash[1], hash[1]); - } - - _p.styleKey = combineHashes(hash[0], hash[1]); // label dims - // - - var sk = _p.styleKeys; - _p.labelDimsKey = combineHashesArray(sk.labelDimensions); - var labelKeys = propHash(ele, ['label'], sk.labelDimensions); - _p.labelKey = combineHashesArray(labelKeys); - _p.labelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, labelKeys)); - - if (!isNode) { - var sourceLabelKeys = propHash(ele, ['source-label'], sk.labelDimensions); - _p.sourceLabelKey = combineHashesArray(sourceLabelKeys); - _p.sourceLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, sourceLabelKeys)); - var targetLabelKeys = propHash(ele, ['target-label'], sk.labelDimensions); - _p.targetLabelKey = combineHashesArray(targetLabelKeys); - _p.targetLabelStyleKey = combineHashesArray(hashArrays(sk.commonLabel, targetLabelKeys)); - } // node - // - - - if (isNode) { - var _p$styleKeys = _p.styleKeys, - nodeBody = _p$styleKeys.nodeBody, - nodeBorder = _p$styleKeys.nodeBorder, - backgroundImage = _p$styleKeys.backgroundImage, - compound = _p$styleKeys.compound, - pie = _p$styleKeys.pie; - var nodeKeys = [nodeBody, nodeBorder, backgroundImage, compound, pie].filter(function (k) { - return k != null; - }).reduce(hashArrays, [DEFAULT_HASH_SEED, DEFAULT_HASH_SEED_ALT]); - _p.nodeKey = combineHashesArray(nodeKeys); - _p.hasPie = pie != null && pie[0] !== DEFAULT_HASH_SEED && pie[1] !== DEFAULT_HASH_SEED_ALT; - } - - return oldStyleKey !== _p.styleKey; -}; - -styfn.clearStyleHints = function (ele) { - var _p = ele._private; - _p.styleKeys = {}; - _p.styleKey = null; - _p.labelKey = null; - _p.labelStyleKey = null; - _p.sourceLabelKey = null; - _p.sourceLabelStyleKey = null; - _p.targetLabelKey = null; - _p.targetLabelStyleKey = null; - _p.nodeKey = null; - _p.hasPie = null; -}; // apply a property to the style (for internal use) -// returns whether application was successful -// -// now, this function flattens the property, and here's how: -// -// for parsedProp:{ bypass: true, deleteBypass: true } -// no property is generated, instead the bypass property in the -// element's style is replaced by what's pointed to by the `bypassed` -// field in the bypass property (i.e. restoring the property the -// bypass was overriding) -// -// for parsedProp:{ mapped: truthy } -// the generated flattenedProp:{ mapping: prop } -// -// for parsedProp:{ bypass: true } -// the generated flattenedProp:{ bypassed: parsedProp } - - -styfn.applyParsedProperty = function (ele, parsedProp) { - var self = this; - var prop = parsedProp; - var style = ele._private.style; - var flatProp; - var types = self.types; - var type = self.properties[prop.name].type; - var propIsBypass = prop.bypass; - var origProp = style[prop.name]; - var origPropIsBypass = origProp && origProp.bypass; - var _p = ele._private; - var flatPropMapping = 'mapping'; - - var getVal = function getVal(p) { - if (p == null) { - return null; - } else if (p.pfValue != null) { - return p.pfValue; - } else { - return p.value; - } - }; - - var checkTriggers = function checkTriggers() { - var fromVal = getVal(origProp); - var toVal = getVal(prop); - self.checkTriggers(ele, prop.name, fromVal, toVal); - }; // edge sanity checks to prevent the client from making serious mistakes - - - if (parsedProp.name === 'curve-style' && ele.isEdge() && ( // loops must be bundled beziers - parsedProp.value !== 'bezier' && ele.isLoop() || // edges connected to compound nodes can not be haystacks - parsedProp.value === 'haystack' && (ele.source().isParent() || ele.target().isParent()))) { - prop = parsedProp = this.parse(parsedProp.name, 'bezier', propIsBypass); - } - - if (prop["delete"]) { - // delete the property and use the default value on falsey value - style[prop.name] = undefined; - checkTriggers(); - return true; - } - - if (prop.deleteBypassed) { - // delete the property that the - if (!origProp) { - checkTriggers(); - return true; // can't delete if no prop - } else if (origProp.bypass) { - // delete bypassed - origProp.bypassed = undefined; - checkTriggers(); - return true; - } else { - return false; // we're unsuccessful deleting the bypassed - } - } // check if we need to delete the current bypass - - - if (prop.deleteBypass) { - // then this property is just here to indicate we need to delete - if (!origProp) { - checkTriggers(); - return true; // property is already not defined - } else if (origProp.bypass) { - // then replace the bypass property with the original - // because the bypassed property was already applied (and therefore parsed), we can just replace it (no reapplying necessary) - style[prop.name] = origProp.bypassed; - checkTriggers(); - return true; - } else { - return false; // we're unsuccessful deleting the bypass - } - } - - var printMappingErr = function printMappingErr() { - warn('Do not assign mappings to elements without corresponding data (i.e. ele `' + ele.id() + '` has no mapping for property `' + prop.name + '` with data field `' + prop.field + '`); try a `[' + prop.field + ']` selector to limit scope to elements with `' + prop.field + '` defined'); - }; // put the property in the style objects - - - switch (prop.mapped) { - // flatten the property if mapped - case types.mapData: - { - // flatten the field (e.g. data.foo.bar) - var fields = prop.field.split('.'); - var fieldVal = _p.data; - - for (var i = 0; i < fields.length && fieldVal; i++) { - var field = fields[i]; - fieldVal = fieldVal[field]; - } - - if (fieldVal == null) { - printMappingErr(); - return false; - } - - var percent; - - if (!number(fieldVal)) { - // then don't apply and fall back on the existing style - warn('Do not use continuous mappers without specifying numeric data (i.e. `' + prop.field + ': ' + fieldVal + '` for `' + ele.id() + '` is non-numeric)'); - return false; - } else { - var fieldWidth = prop.fieldMax - prop.fieldMin; - - if (fieldWidth === 0) { - // safety check -- not strictly necessary as no props of zero range should be passed here - percent = 0; - } else { - percent = (fieldVal - prop.fieldMin) / fieldWidth; - } - } // make sure to bound percent value - - - if (percent < 0) { - percent = 0; - } else if (percent > 1) { - percent = 1; - } - - if (type.color) { - var r1 = prop.valueMin[0]; - var r2 = prop.valueMax[0]; - var g1 = prop.valueMin[1]; - var g2 = prop.valueMax[1]; - var b1 = prop.valueMin[2]; - var b2 = prop.valueMax[2]; - var a1 = prop.valueMin[3] == null ? 1 : prop.valueMin[3]; - var a2 = prop.valueMax[3] == null ? 1 : prop.valueMax[3]; - var clr = [Math.round(r1 + (r2 - r1) * percent), Math.round(g1 + (g2 - g1) * percent), Math.round(b1 + (b2 - b1) * percent), Math.round(a1 + (a2 - a1) * percent)]; - flatProp = { - // colours are simple, so just create the flat property instead of expensive string parsing - bypass: prop.bypass, - // we're a bypass if the mapping property is a bypass - name: prop.name, - value: clr, - strValue: 'rgb(' + clr[0] + ', ' + clr[1] + ', ' + clr[2] + ')' - }; - } else if (type.number) { - var calcValue = prop.valueMin + (prop.valueMax - prop.valueMin) * percent; - flatProp = this.parse(prop.name, calcValue, prop.bypass, flatPropMapping); - } else { - return false; // can only map to colours and numbers - } - - if (!flatProp) { - // if we can't flatten the property, then don't apply the property and fall back on the existing style - printMappingErr(); - return false; - } - - flatProp.mapping = prop; // keep a reference to the mapping - - prop = flatProp; // the flattened (mapped) property is the one we want - - break; - } - // direct mapping - - case types.data: - { - // flatten the field (e.g. data.foo.bar) - var _fields = prop.field.split('.'); - - var _fieldVal = _p.data; - - for (var _i3 = 0; _i3 < _fields.length && _fieldVal; _i3++) { - var _field = _fields[_i3]; - _fieldVal = _fieldVal[_field]; - } - - if (_fieldVal != null) { - flatProp = this.parse(prop.name, _fieldVal, prop.bypass, flatPropMapping); - } - - if (!flatProp) { - // if we can't flatten the property, then don't apply and fall back on the existing style - printMappingErr(); - return false; - } - - flatProp.mapping = prop; // keep a reference to the mapping - - prop = flatProp; // the flattened (mapped) property is the one we want - - break; - } - - case types.fn: - { - var fn = prop.value; - var fnRetVal = prop.fnValue != null ? prop.fnValue : fn(ele); // check for cached value before calling function - - prop.prevFnValue = fnRetVal; - - if (fnRetVal == null) { - warn('Custom function mappers may not return null (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is null)'); - return false; - } - - flatProp = this.parse(prop.name, fnRetVal, prop.bypass, flatPropMapping); - - if (!flatProp) { - warn('Custom function mappers may not return invalid values for the property type (i.e. `' + prop.name + '` for ele `' + ele.id() + '` is invalid)'); - return false; - } - - flatProp.mapping = copy(prop); // keep a reference to the mapping - - prop = flatProp; // the flattened (mapped) property is the one we want - - break; - } - - case undefined: - break; - // just set the property - - default: - return false; - // not a valid mapping - } // if the property is a bypass property, then link the resultant property to the original one - - - if (propIsBypass) { - if (origPropIsBypass) { - // then this bypass overrides the existing one - prop.bypassed = origProp.bypassed; // steal bypassed prop from old bypass - } else { - // then link the orig prop to the new bypass - prop.bypassed = origProp; - } - - style[prop.name] = prop; // and set - } else { - // prop is not bypass - if (origPropIsBypass) { - // then keep the orig prop (since it's a bypass) and link to the new prop - origProp.bypassed = prop; - } else { - // then just replace the old prop with the new one - style[prop.name] = prop; - } - } - - checkTriggers(); - return true; -}; - -styfn.cleanElements = function (eles, keepBypasses) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - this.clearStyleHints(ele); - ele.dirtyCompoundBoundsCache(); - ele.dirtyBoundingBoxCache(); - - if (!keepBypasses) { - ele._private.style = {}; - } else { - var style = ele._private.style; - var propNames = Object.keys(style); - - for (var j = 0; j < propNames.length; j++) { - var propName = propNames[j]; - var eleProp = style[propName]; - - if (eleProp != null) { - if (eleProp.bypass) { - eleProp.bypassed = null; - } else { - style[propName] = null; - } - } - } - } - } -}; // updates the visual style for all elements (useful for manual style modification after init) - - -styfn.update = function () { - var cy = this._private.cy; - var eles = cy.mutableElements(); - eles.updateStyle(); -}; // diffProps : { name => { prev, next } } - - -styfn.updateTransitions = function (ele, diffProps) { - var self = this; - var _p = ele._private; - var props = ele.pstyle('transition-property').value; - var duration = ele.pstyle('transition-duration').pfValue; - var delay = ele.pstyle('transition-delay').pfValue; - - if (props.length > 0 && duration > 0) { - var style = {}; // build up the style to animate towards - - var anyPrev = false; - - for (var i = 0; i < props.length; i++) { - var prop = props[i]; - var styProp = ele.pstyle(prop); - var diffProp = diffProps[prop]; - - if (!diffProp) { - continue; - } - - var prevProp = diffProp.prev; - var fromProp = prevProp; - var toProp = diffProp.next != null ? diffProp.next : styProp; - var diff = false; - var initVal = void 0; - var initDt = 0.000001; // delta time % value for initVal (allows animating out of init zero opacity) - - if (!fromProp) { - continue; - } // consider px values - - - if (number(fromProp.pfValue) && number(toProp.pfValue)) { - diff = toProp.pfValue - fromProp.pfValue; // nonzero is truthy - - initVal = fromProp.pfValue + initDt * diff; // consider numerical values - } else if (number(fromProp.value) && number(toProp.value)) { - diff = toProp.value - fromProp.value; // nonzero is truthy - - initVal = fromProp.value + initDt * diff; // consider colour values - } else if (array(fromProp.value) && array(toProp.value)) { - diff = fromProp.value[0] !== toProp.value[0] || fromProp.value[1] !== toProp.value[1] || fromProp.value[2] !== toProp.value[2]; - initVal = fromProp.strValue; - } // the previous value is good for an animation only if it's different - - - if (diff) { - style[prop] = toProp.strValue; // to val - - this.applyBypass(ele, prop, initVal); // from val - - anyPrev = true; - } - } // end if props allow ani - // can't transition if there's nothing previous to transition from - - - if (!anyPrev) { - return; - } - - _p.transitioning = true; - new Promise$1(function (resolve) { - if (delay > 0) { - ele.delayAnimation(delay).play().promise().then(resolve); - } else { - resolve(); - } - }).then(function () { - return ele.animation({ - style: style, - duration: duration, - easing: ele.pstyle('transition-timing-function').value, - queue: false - }).play().promise(); - }).then(function () { - // if( !isBypass ){ - self.removeBypasses(ele, props); - ele.emitAndNotify('style'); // } - - _p.transitioning = false; - }); - } else if (_p.transitioning) { - this.removeBypasses(ele, props); - ele.emitAndNotify('style'); - _p.transitioning = false; - } -}; - -styfn.checkTrigger = function (ele, name, fromValue, toValue, getTrigger, onTrigger) { - var prop = this.properties[name]; - var triggerCheck = getTrigger(prop); - - if (triggerCheck != null && triggerCheck(fromValue, toValue)) { - onTrigger(prop); - } -}; - -styfn.checkZOrderTrigger = function (ele, name, fromValue, toValue) { - var _this = this; - - this.checkTrigger(ele, name, fromValue, toValue, function (prop) { - return prop.triggersZOrder; - }, function () { - _this._private.cy.notify('zorder', ele); - }); -}; - -styfn.checkBoundsTrigger = function (ele, name, fromValue, toValue) { - this.checkTrigger(ele, name, fromValue, toValue, function (prop) { - return prop.triggersBounds; - }, function (prop) { - ele.dirtyCompoundBoundsCache(); - ele.dirtyBoundingBoxCache(); // if the prop change makes the bb of pll bezier edges invalid, - // then dirty the pll edge bb cache as well - - if ( // only for beziers -- so performance of other edges isn't affected - name === 'curve-style' && (fromValue === 'bezier' || toValue === 'bezier') && prop.triggersBoundsOfParallelBeziers) { - ele.parallelEdges().forEach(function (pllEdge) { - if (pllEdge.isBundledBezier()) { - pllEdge.dirtyBoundingBoxCache(); - } - }); - } - }); -}; - -styfn.checkTriggers = function (ele, name, fromValue, toValue) { - ele.dirtyStyleCache(); - this.checkZOrderTrigger(ele, name, fromValue, toValue); - this.checkBoundsTrigger(ele, name, fromValue, toValue); -}; - -var styfn$1 = {}; // bypasses are applied to an existing style on an element, and just tacked on temporarily -// returns true iff application was successful for at least 1 specified property - -styfn$1.applyBypass = function (eles, name, value, updateTransitions) { - var self = this; - var props = []; - var isBypass = true; // put all the properties (can specify one or many) in an array after parsing them - - if (name === '*' || name === '**') { - // apply to all property names - if (value !== undefined) { - for (var i = 0; i < self.properties.length; i++) { - var prop = self.properties[i]; - var _name = prop.name; - var parsedProp = this.parse(_name, value, true); - - if (parsedProp) { - props.push(parsedProp); - } - } - } - } else if (string(name)) { - // then parse the single property - var _parsedProp = this.parse(name, value, true); - - if (_parsedProp) { - props.push(_parsedProp); - } - } else if (plainObject(name)) { - // then parse each property - var specifiedProps = name; - updateTransitions = value; - var names = Object.keys(specifiedProps); - - for (var _i = 0; _i < names.length; _i++) { - var _name2 = names[_i]; - var _value = specifiedProps[_name2]; - - if (_value === undefined) { - // try camel case name too - _value = specifiedProps[dash2camel(_name2)]; - } - - if (_value !== undefined) { - var _parsedProp2 = this.parse(_name2, _value, true); - - if (_parsedProp2) { - props.push(_parsedProp2); - } - } - } - } else { - // can't do anything without well defined properties - return false; - } // we've failed if there are no valid properties - - - if (props.length === 0) { - return false; - } // now, apply the bypass properties on the elements - - - var ret = false; // return true if at least one succesful bypass applied - - for (var _i2 = 0; _i2 < eles.length; _i2++) { - // for each ele - var ele = eles[_i2]; - var diffProps = {}; - var diffProp = void 0; - - for (var j = 0; j < props.length; j++) { - // for each prop - var _prop = props[j]; - - if (updateTransitions) { - var prevProp = ele.pstyle(_prop.name); - diffProp = diffProps[_prop.name] = { - prev: prevProp - }; - } - - ret = this.applyParsedProperty(ele, copy(_prop)) || ret; - - if (updateTransitions) { - diffProp.next = ele.pstyle(_prop.name); - } - } // for props - - - if (ret) { - this.updateStyleHints(ele); - } - - if (updateTransitions) { - this.updateTransitions(ele, diffProps, isBypass); - } - } // for eles - - - return ret; -}; // only useful in specific cases like animation - - -styfn$1.overrideBypass = function (eles, name, value) { - name = camel2dash(name); - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var prop = ele._private.style[name]; - var type = this.properties[name].type; - var isColor = type.color; - var isMulti = type.mutiple; - var oldValue = !prop ? null : prop.pfValue != null ? prop.pfValue : prop.value; - - if (!prop || !prop.bypass) { - // need a bypass if one doesn't exist - this.applyBypass(ele, name, value); - } else { - prop.value = value; - - if (prop.pfValue != null) { - prop.pfValue = value; - } - - if (isColor) { - prop.strValue = 'rgb(' + value.join(',') + ')'; - } else if (isMulti) { - prop.strValue = value.join(' '); - } else { - prop.strValue = '' + value; - } - - this.updateStyleHints(ele); - } - - this.checkTriggers(ele, name, oldValue, value); - } -}; - -styfn$1.removeAllBypasses = function (eles, updateTransitions) { - return this.removeBypasses(eles, this.propertyNames, updateTransitions); -}; - -styfn$1.removeBypasses = function (eles, props, updateTransitions) { - var isBypass = true; - - for (var j = 0; j < eles.length; j++) { - var ele = eles[j]; - var diffProps = {}; - - for (var i = 0; i < props.length; i++) { - var name = props[i]; - var prop = this.properties[name]; - var prevProp = ele.pstyle(prop.name); - - if (!prevProp || !prevProp.bypass) { - // if a bypass doesn't exist for the prop, nothing needs to be removed - continue; - } - - var value = ''; // empty => remove bypass - - var parsedProp = this.parse(name, value, true); - var diffProp = diffProps[prop.name] = { - prev: prevProp - }; - this.applyParsedProperty(ele, parsedProp); - diffProp.next = ele.pstyle(prop.name); - } // for props - - - this.updateStyleHints(ele); - - if (updateTransitions) { - this.updateTransitions(ele, diffProps, isBypass); - } - } // for eles - -}; - -var styfn$2 = {}; // gets what an em size corresponds to in pixels relative to a dom element - -styfn$2.getEmSizeInPixels = function () { - var px = this.containerCss('font-size'); - - if (px != null) { - return parseFloat(px); - } else { - return 1; // for headless - } -}; // gets css property from the core container - - -styfn$2.containerCss = function (propName) { - var cy = this._private.cy; - var domElement = cy.container(); - - if (window$1 && domElement && window$1.getComputedStyle) { - return window$1.getComputedStyle(domElement).getPropertyValue(propName); - } -}; - -var styfn$3 = {}; // gets the rendered style for an element - -styfn$3.getRenderedStyle = function (ele, prop) { - if (prop) { - return this.getStylePropertyValue(ele, prop, true); - } else { - return this.getRawStyle(ele, true); - } -}; // gets the raw style for an element - - -styfn$3.getRawStyle = function (ele, isRenderedVal) { - var self = this; - ele = ele[0]; // insure it's an element - - if (ele) { - var rstyle = {}; - - for (var i = 0; i < self.properties.length; i++) { - var prop = self.properties[i]; - var val = self.getStylePropertyValue(ele, prop.name, isRenderedVal); - - if (val != null) { - rstyle[prop.name] = val; - rstyle[dash2camel(prop.name)] = val; - } - } - - return rstyle; - } -}; - -styfn$3.getIndexedStyle = function (ele, property, subproperty, index) { - var pstyle = ele.pstyle(property)[subproperty][index]; - return pstyle != null ? pstyle : ele.cy().style().getDefaultProperty(property)[subproperty][0]; -}; - -styfn$3.getStylePropertyValue = function (ele, propName, isRenderedVal) { - var self = this; - ele = ele[0]; // insure it's an element - - if (ele) { - var prop = self.properties[propName]; - - if (prop.alias) { - prop = prop.pointsTo; - } - - var type = prop.type; - var styleProp = ele.pstyle(prop.name); - - if (styleProp) { - var value = styleProp.value, - units = styleProp.units, - strValue = styleProp.strValue; - - if (isRenderedVal && type.number && value != null && number(value)) { - var zoom = ele.cy().zoom(); - - var getRenderedValue = function getRenderedValue(val) { - return val * zoom; - }; - - var getValueStringWithUnits = function getValueStringWithUnits(val, units) { - return getRenderedValue(val) + units; - }; - - var isArrayValue = array(value); - var haveUnits = isArrayValue ? units.every(function (u) { - return u != null; - }) : units != null; - - if (haveUnits) { - if (isArrayValue) { - return value.map(function (v, i) { - return getValueStringWithUnits(v, units[i]); - }).join(' '); - } else { - return getValueStringWithUnits(value, units); - } - } else { - if (isArrayValue) { - return value.map(function (v) { - return string(v) ? v : '' + getRenderedValue(v); - }).join(' '); - } else { - return '' + getRenderedValue(value); - } - } - } else if (strValue != null) { - return strValue; - } - } - - return null; - } -}; - -styfn$3.getAnimationStartStyle = function (ele, aniProps) { - var rstyle = {}; - - for (var i = 0; i < aniProps.length; i++) { - var aniProp = aniProps[i]; - var name = aniProp.name; - var styleProp = ele.pstyle(name); - - if (styleProp !== undefined) { - // then make a prop of it - if (plainObject(styleProp)) { - styleProp = this.parse(name, styleProp.strValue); - } else { - styleProp = this.parse(name, styleProp); - } - } - - if (styleProp) { - rstyle[name] = styleProp; - } - } - - return rstyle; -}; - -styfn$3.getPropsList = function (propsObj) { - var self = this; - var rstyle = []; - var style = propsObj; - var props = self.properties; - - if (style) { - var names = Object.keys(style); - - for (var i = 0; i < names.length; i++) { - var name = names[i]; - var val = style[name]; - var prop = props[name] || props[camel2dash(name)]; - var styleProp = this.parse(prop.name, val); - - if (styleProp) { - rstyle.push(styleProp); - } - } - } - - return rstyle; -}; - -styfn$3.getNonDefaultPropertiesHash = function (ele, propNames, seed) { - var hash = seed.slice(); - var name, val, strVal, chVal; - var i, j; - - for (i = 0; i < propNames.length; i++) { - name = propNames[i]; - val = ele.pstyle(name, false); - - if (val == null) { - continue; - } else if (val.pfValue != null) { - hash[0] = hashInt(chVal, hash[0]); - hash[1] = hashIntAlt(chVal, hash[1]); - } else { - strVal = val.strValue; - - for (j = 0; j < strVal.length; j++) { - chVal = strVal.charCodeAt(j); - hash[0] = hashInt(chVal, hash[0]); - hash[1] = hashIntAlt(chVal, hash[1]); - } - } - } - - return hash; -}; - -styfn$3.getPropertiesHash = styfn$3.getNonDefaultPropertiesHash; - -var styfn$4 = {}; - -styfn$4.appendFromJson = function (json) { - var style = this; - - for (var i = 0; i < json.length; i++) { - var context = json[i]; - var selector = context.selector; - var props = context.style || context.css; - var names = Object.keys(props); - style.selector(selector); // apply selector - - for (var j = 0; j < names.length; j++) { - var name = names[j]; - var value = props[name]; - style.css(name, value); // apply property - } - } - - return style; -}; // accessible cy.style() function - - -styfn$4.fromJson = function (json) { - var style = this; - style.resetToDefault(); - style.appendFromJson(json); - return style; -}; // get json from cy.style() api - - -styfn$4.json = function () { - var json = []; - - for (var i = this.defaultLength; i < this.length; i++) { - var cxt = this[i]; - var selector = cxt.selector; - var props = cxt.properties; - var css = {}; - - for (var j = 0; j < props.length; j++) { - var prop = props[j]; - css[prop.name] = prop.strValue; - } - - json.push({ - selector: !selector ? 'core' : selector.toString(), - style: css - }); - } - - return json; -}; - -var styfn$5 = {}; - -styfn$5.appendFromString = function (string) { - var self = this; - var style = this; - var remaining = '' + string; - var selAndBlockStr; - var blockRem; - var propAndValStr; // remove comments from the style string - - remaining = remaining.replace(/[/][*](\s|.)+?[*][/]/g, ''); - - function removeSelAndBlockFromRemaining() { - // remove the parsed selector and block from the remaining text to parse - if (remaining.length > selAndBlockStr.length) { - remaining = remaining.substr(selAndBlockStr.length); - } else { - remaining = ''; - } - } - - function removePropAndValFromRem() { - // remove the parsed property and value from the remaining block text to parse - if (blockRem.length > propAndValStr.length) { - blockRem = blockRem.substr(propAndValStr.length); - } else { - blockRem = ''; - } - } - - for (;;) { - var nothingLeftToParse = remaining.match(/^\s*$/); - - if (nothingLeftToParse) { - break; - } - - var selAndBlock = remaining.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/); - - if (!selAndBlock) { - warn('Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: ' + remaining); - break; - } - - selAndBlockStr = selAndBlock[0]; // parse the selector - - var selectorStr = selAndBlock[1]; - - if (selectorStr !== 'core') { - var selector = new Selector(selectorStr); - - if (selector.invalid) { - warn('Skipping parsing of block: Invalid selector found in string stylesheet: ' + selectorStr); // skip this selector and block - - removeSelAndBlockFromRemaining(); - continue; - } - } // parse the block of properties and values - - - var blockStr = selAndBlock[2]; - var invalidBlock = false; - blockRem = blockStr; - var props = []; - - for (;;) { - var _nothingLeftToParse = blockRem.match(/^\s*$/); - - if (_nothingLeftToParse) { - break; - } - - var propAndVal = blockRem.match(/^\s*(.+?)\s*:\s*(.+?)\s*;/); - - if (!propAndVal) { - warn('Skipping parsing of block: Invalid formatting of style property and value definitions found in:' + blockStr); - invalidBlock = true; - break; - } - - propAndValStr = propAndVal[0]; - var propStr = propAndVal[1]; - var valStr = propAndVal[2]; - var prop = self.properties[propStr]; - - if (!prop) { - warn('Skipping property: Invalid property name in: ' + propAndValStr); // skip this property in the block - - removePropAndValFromRem(); - continue; - } - - var parsedProp = style.parse(propStr, valStr); - - if (!parsedProp) { - warn('Skipping property: Invalid property definition in: ' + propAndValStr); // skip this property in the block - - removePropAndValFromRem(); - continue; - } - - props.push({ - name: propStr, - val: valStr - }); - removePropAndValFromRem(); - } - - if (invalidBlock) { - removeSelAndBlockFromRemaining(); - break; - } // put the parsed block in the style - - - style.selector(selectorStr); - - for (var i = 0; i < props.length; i++) { - var _prop = props[i]; - style.css(_prop.name, _prop.val); - } - - removeSelAndBlockFromRemaining(); - } - - return style; -}; - -styfn$5.fromString = function (string) { - var style = this; - style.resetToDefault(); - style.appendFromString(string); - return style; -}; - -var styfn$6 = {}; - -(function () { - var number = number$1; - var rgba = rgbaNoBackRefs; - var hsla = hslaNoBackRefs; - var hex3$1 = hex3; - var hex6$1 = hex6; - - var data = function data(prefix) { - return '^' + prefix + '\\s*\\(\\s*([\\w\\.]+)\\s*\\)$'; - }; - - var mapData = function mapData(prefix) { - var mapArg = number + '|\\w+|' + rgba + '|' + hsla + '|' + hex3$1 + '|' + hex6$1; - return '^' + prefix + '\\s*\\(([\\w\\.]+)\\s*\\,\\s*(' + number + ')\\s*\\,\\s*(' + number + ')\\s*,\\s*(' + mapArg + ')\\s*\\,\\s*(' + mapArg + ')\\)$'; - }; - - var urlRegexes = ['^url\\s*\\(\\s*[\'"]?(.+?)[\'"]?\\s*\\)$', '^(none)$', '^(.+)$']; // each visual style property has a type and needs to be validated according to it - - styfn$6.types = { - time: { - number: true, - min: 0, - units: 's|ms', - implicitUnits: 'ms' - }, - percent: { - number: true, - min: 0, - max: 100, - units: '%', - implicitUnits: '%' - }, - percentages: { - number: true, - min: 0, - max: 100, - units: '%', - implicitUnits: '%', - multiple: true - }, - zeroOneNumber: { - number: true, - min: 0, - max: 1, - unitless: true - }, - zeroOneNumbers: { - number: true, - min: 0, - max: 1, - unitless: true, - multiple: true - }, - nOneOneNumber: { - number: true, - min: -1, - max: 1, - unitless: true - }, - nonNegativeInt: { - number: true, - min: 0, - integer: true, - unitless: true - }, - position: { - enums: ['parent', 'origin'] - }, - nodeSize: { - number: true, - min: 0, - enums: ['label'] - }, - number: { - number: true, - unitless: true - }, - numbers: { - number: true, - unitless: true, - multiple: true - }, - positiveNumber: { - number: true, - unitless: true, - min: 0, - strictMin: true - }, - size: { - number: true, - min: 0 - }, - bidirectionalSize: { - number: true - }, - // allows negative - bidirectionalSizeMaybePercent: { - number: true, - allowPercent: true - }, - // allows negative - bidirectionalSizes: { - number: true, - multiple: true - }, - // allows negative - sizeMaybePercent: { - number: true, - min: 0, - allowPercent: true - }, - axisDirection: { - enums: ['horizontal', 'leftward', 'rightward', 'vertical', 'upward', 'downward', 'auto'] - }, - paddingRelativeTo: { - enums: ['width', 'height', 'average', 'min', 'max'] - }, - bgWH: { - number: true, - min: 0, - allowPercent: true, - enums: ['auto'], - multiple: true - }, - bgPos: { - number: true, - allowPercent: true, - multiple: true - }, - bgRelativeTo: { - enums: ['inner', 'include-padding'], - multiple: true - }, - bgRepeat: { - enums: ['repeat', 'repeat-x', 'repeat-y', 'no-repeat'], - multiple: true - }, - bgFit: { - enums: ['none', 'contain', 'cover'], - multiple: true - }, - bgCrossOrigin: { - enums: ['anonymous', 'use-credentials'], - multiple: true - }, - bgClip: { - enums: ['none', 'node'], - multiple: true - }, - color: { - color: true - }, - colors: { - color: true, - multiple: true - }, - fill: { - enums: ['solid', 'linear-gradient', 'radial-gradient'] - }, - bool: { - enums: ['yes', 'no'] - }, - lineStyle: { - enums: ['solid', 'dotted', 'dashed'] - }, - lineCap: { - enums: ['butt', 'round', 'square'] - }, - borderStyle: { - enums: ['solid', 'dotted', 'dashed', 'double'] - }, - curveStyle: { - enums: ['bezier', 'unbundled-bezier', 'haystack', 'segments', 'straight', 'taxi'] - }, - fontFamily: { - regex: '^([\\w- \\"]+(?:\\s*,\\s*[\\w- \\"]+)*)$' - }, - fontStyle: { - enums: ['italic', 'normal', 'oblique'] - }, - fontWeight: { - enums: ['normal', 'bold', 'bolder', 'lighter', '100', '200', '300', '400', '500', '600', '800', '900', 100, 200, 300, 400, 500, 600, 700, 800, 900] - }, - textDecoration: { - enums: ['none', 'underline', 'overline', 'line-through'] - }, - textTransform: { - enums: ['none', 'uppercase', 'lowercase'] - }, - textWrap: { - enums: ['none', 'wrap', 'ellipsis'] - }, - textOverflowWrap: { - enums: ['whitespace', 'anywhere'] - }, - textBackgroundShape: { - enums: ['rectangle', 'roundrectangle', 'round-rectangle'] - }, - nodeShape: { - enums: ['rectangle', 'roundrectangle', 'round-rectangle', 'cutrectangle', 'cut-rectangle', 'bottomroundrectangle', 'bottom-round-rectangle', 'barrel', 'ellipse', 'triangle', 'round-triangle', 'square', 'pentagon', 'round-pentagon', 'hexagon', 'round-hexagon', 'concavehexagon', 'concave-hexagon', 'heptagon', 'round-heptagon', 'octagon', 'round-octagon', 'tag', 'round-tag', 'star', 'diamond', 'round-diamond', 'vee', 'rhomboid', 'polygon'] - }, - compoundIncludeLabels: { - enums: ['include', 'exclude'] - }, - arrowShape: { - enums: ['tee', 'triangle', 'triangle-tee', 'circle-triangle', 'triangle-cross', 'triangle-backcurve', 'vee', 'square', 'circle', 'diamond', 'chevron', 'none'] - }, - arrowFill: { - enums: ['filled', 'hollow'] - }, - display: { - enums: ['element', 'none'] - }, - visibility: { - enums: ['hidden', 'visible'] - }, - zCompoundDepth: { - enums: ['bottom', 'orphan', 'auto', 'top'] - }, - zIndexCompare: { - enums: ['auto', 'manual'] - }, - valign: { - enums: ['top', 'center', 'bottom'] - }, - halign: { - enums: ['left', 'center', 'right'] - }, - justification: { - enums: ['left', 'center', 'right', 'auto'] - }, - text: { - string: true - }, - data: { - mapping: true, - regex: data('data') - }, - layoutData: { - mapping: true, - regex: data('layoutData') - }, - scratch: { - mapping: true, - regex: data('scratch') - }, - mapData: { - mapping: true, - regex: mapData('mapData') - }, - mapLayoutData: { - mapping: true, - regex: mapData('mapLayoutData') - }, - mapScratch: { - mapping: true, - regex: mapData('mapScratch') - }, - fn: { - mapping: true, - fn: true - }, - url: { - regexes: urlRegexes, - singleRegexMatchValue: true - }, - urls: { - regexes: urlRegexes, - singleRegexMatchValue: true, - multiple: true - }, - propList: { - propList: true - }, - angle: { - number: true, - units: 'deg|rad', - implicitUnits: 'rad' - }, - textRotation: { - number: true, - units: 'deg|rad', - implicitUnits: 'rad', - enums: ['none', 'autorotate'] - }, - polygonPointList: { - number: true, - multiple: true, - evenMultiple: true, - min: -1, - max: 1, - unitless: true - }, - edgeDistances: { - enums: ['intersection', 'node-position'] - }, - edgeEndpoint: { - number: true, - multiple: true, - units: '%|px|em|deg|rad', - implicitUnits: 'px', - enums: ['inside-to-node', 'outside-to-node', 'outside-to-node-or-label', 'outside-to-line', 'outside-to-line-or-label'], - singleEnum: true, - validate: function validate(valArr, unitsArr) { - switch (valArr.length) { - case 2: - // can be % or px only - return unitsArr[0] !== 'deg' && unitsArr[0] !== 'rad' && unitsArr[1] !== 'deg' && unitsArr[1] !== 'rad'; - - case 1: - // can be enum, deg, or rad only - return string(valArr[0]) || unitsArr[0] === 'deg' || unitsArr[0] === 'rad'; - - default: - return false; - } - } - }, - easing: { - regexes: ['^(spring)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$', '^(cubic-bezier)\\s*\\(\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*,\\s*(' + number + ')\\s*\\)$'], - enums: ['linear', 'ease', 'ease-in', 'ease-out', 'ease-in-out', 'ease-in-sine', 'ease-out-sine', 'ease-in-out-sine', 'ease-in-quad', 'ease-out-quad', 'ease-in-out-quad', 'ease-in-cubic', 'ease-out-cubic', 'ease-in-out-cubic', 'ease-in-quart', 'ease-out-quart', 'ease-in-out-quart', 'ease-in-quint', 'ease-out-quint', 'ease-in-out-quint', 'ease-in-expo', 'ease-out-expo', 'ease-in-out-expo', 'ease-in-circ', 'ease-out-circ', 'ease-in-out-circ'] - }, - gradientDirection: { - enums: ['to-bottom', 'to-top', 'to-left', 'to-right', 'to-bottom-right', 'to-bottom-left', 'to-top-right', 'to-top-left', 'to-right-bottom', 'to-left-bottom', 'to-right-top', 'to-left-top'] - }, - boundsExpansion: { - number: true, - multiple: true, - min: 0, - validate: function validate(valArr) { - var length = valArr.length; - return length === 1 || length === 2 || length === 4; - } - } - }; - var diff = { - zeroNonZero: function zeroNonZero(val1, val2) { - if ((val1 == null || val2 == null) && val1 !== val2) { - return true; // null cases could represent any value - } - - if (val1 == 0 && val2 != 0) { - return true; - } else if (val1 != 0 && val2 == 0) { - return true; - } else { - return false; - } - }, - any: function any(val1, val2) { - return val1 != val2; - }, - emptyNonEmpty: function emptyNonEmpty(str1, str2) { - var empty1 = emptyString(str1); - var empty2 = emptyString(str2); - return empty1 && !empty2 || !empty1 && empty2; - } - }; // define visual style properties - // - // - n.b. adding a new group of props may require updates to updateStyleHints() - // - adding new props to an existing group gets handled automatically - - var t = styfn$6.types; - var mainLabel = [{ - name: 'label', - type: t.text, - triggersBounds: diff.any, - triggersZOrder: diff.emptyNonEmpty - }, { - name: 'text-rotation', - type: t.textRotation, - triggersBounds: diff.any - }, { - name: 'text-margin-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'text-margin-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }]; - var sourceLabel = [{ - name: 'source-label', - type: t.text, - triggersBounds: diff.any - }, { - name: 'source-text-rotation', - type: t.textRotation, - triggersBounds: diff.any - }, { - name: 'source-text-margin-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'source-text-margin-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'source-text-offset', - type: t.size, - triggersBounds: diff.any - }]; - var targetLabel = [{ - name: 'target-label', - type: t.text, - triggersBounds: diff.any - }, { - name: 'target-text-rotation', - type: t.textRotation, - triggersBounds: diff.any - }, { - name: 'target-text-margin-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'target-text-margin-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'target-text-offset', - type: t.size, - triggersBounds: diff.any - }]; - var labelDimensions = [{ - name: 'font-family', - type: t.fontFamily, - triggersBounds: diff.any - }, { - name: 'font-style', - type: t.fontStyle, - triggersBounds: diff.any - }, { - name: 'font-weight', - type: t.fontWeight, - triggersBounds: diff.any - }, { - name: 'font-size', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-transform', - type: t.textTransform, - triggersBounds: diff.any - }, { - name: 'text-wrap', - type: t.textWrap, - triggersBounds: diff.any - }, { - name: 'text-overflow-wrap', - type: t.textOverflowWrap, - triggersBounds: diff.any - }, { - name: 'text-max-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-outline-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'line-height', - type: t.positiveNumber, - triggersBounds: diff.any - }]; - var commonLabel = [{ - name: 'text-valign', - type: t.valign, - triggersBounds: diff.any - }, { - name: 'text-halign', - type: t.halign, - triggersBounds: diff.any - }, { - name: 'color', - type: t.color - }, { - name: 'text-outline-color', - type: t.color - }, { - name: 'text-outline-opacity', - type: t.zeroOneNumber - }, { - name: 'text-background-color', - type: t.color - }, { - name: 'text-background-opacity', - type: t.zeroOneNumber - }, { - name: 'text-background-padding', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-border-opacity', - type: t.zeroOneNumber - }, { - name: 'text-border-color', - type: t.color - }, { - name: 'text-border-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'text-border-style', - type: t.borderStyle, - triggersBounds: diff.any - }, { - name: 'text-background-shape', - type: t.textBackgroundShape, - triggersBounds: diff.any - }, { - name: 'text-justification', - type: t.justification - }]; - var behavior = [{ - name: 'events', - type: t.bool - }, { - name: 'text-events', - type: t.bool - }]; - var visibility = [{ - name: 'display', - type: t.display, - triggersZOrder: diff.any, - triggersBounds: diff.any, - triggersBoundsOfParallelBeziers: true - }, { - name: 'visibility', - type: t.visibility, - triggersZOrder: diff.any - }, { - name: 'opacity', - type: t.zeroOneNumber, - triggersZOrder: diff.zeroNonZero - }, { - name: 'text-opacity', - type: t.zeroOneNumber - }, { - name: 'min-zoomed-font-size', - type: t.size - }, { - name: 'z-compound-depth', - type: t.zCompoundDepth, - triggersZOrder: diff.any - }, { - name: 'z-index-compare', - type: t.zIndexCompare, - triggersZOrder: diff.any - }, { - name: 'z-index', - type: t.nonNegativeInt, - triggersZOrder: diff.any - }]; - var overlay = [{ - name: 'overlay-padding', - type: t.size, - triggersBounds: diff.any - }, { - name: 'overlay-color', - type: t.color - }, { - name: 'overlay-opacity', - type: t.zeroOneNumber, - triggersBounds: diff.zeroNonZero - }]; - var transition = [{ - name: 'transition-property', - type: t.propList - }, { - name: 'transition-duration', - type: t.time - }, { - name: 'transition-delay', - type: t.time - }, { - name: 'transition-timing-function', - type: t.easing - }]; - - var nodeSizeHashOverride = function nodeSizeHashOverride(ele, parsedProp) { - if (parsedProp.value === 'label') { - return -ele.poolIndex(); // no hash key hits is using label size (hitrate for perf probably low anyway) - } else { - return parsedProp.pfValue; - } - }; - - var nodeBody = [{ - name: 'height', - type: t.nodeSize, - triggersBounds: diff.any, - hashOverride: nodeSizeHashOverride - }, { - name: 'width', - type: t.nodeSize, - triggersBounds: diff.any, - hashOverride: nodeSizeHashOverride - }, { - name: 'shape', - type: t.nodeShape, - triggersBounds: diff.any - }, { - name: 'shape-polygon-points', - type: t.polygonPointList, - triggersBounds: diff.any - }, { - name: 'background-color', - type: t.color - }, { - name: 'background-fill', - type: t.fill - }, { - name: 'background-opacity', - type: t.zeroOneNumber - }, { - name: 'background-blacken', - type: t.nOneOneNumber - }, { - name: 'background-gradient-stop-colors', - type: t.colors - }, { - name: 'background-gradient-stop-positions', - type: t.percentages - }, { - name: 'background-gradient-direction', - type: t.gradientDirection - }, { - name: 'padding', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'padding-relative-to', - type: t.paddingRelativeTo, - triggersBounds: diff.any - }, { - name: 'bounds-expansion', - type: t.boundsExpansion, - triggersBounds: diff.any - }]; - var nodeBorder = [{ - name: 'border-color', - type: t.color - }, { - name: 'border-opacity', - type: t.zeroOneNumber - }, { - name: 'border-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'border-style', - type: t.borderStyle - }]; - var backgroundImage = [{ - name: 'background-image', - type: t.urls - }, { - name: 'background-image-crossorigin', - type: t.bgCrossOrigin - }, { - name: 'background-image-opacity', - type: t.zeroOneNumbers - }, { - name: 'background-position-x', - type: t.bgPos - }, { - name: 'background-position-y', - type: t.bgPos - }, { - name: 'background-width-relative-to', - type: t.bgRelativeTo - }, { - name: 'background-height-relative-to', - type: t.bgRelativeTo - }, { - name: 'background-repeat', - type: t.bgRepeat - }, { - name: 'background-fit', - type: t.bgFit - }, { - name: 'background-clip', - type: t.bgClip - }, { - name: 'background-width', - type: t.bgWH - }, { - name: 'background-height', - type: t.bgWH - }, { - name: 'background-offset-x', - type: t.bgPos - }, { - name: 'background-offset-y', - type: t.bgPos - }]; - var compound = [{ - name: 'position', - type: t.position, - triggersBounds: diff.any - }, { - name: 'compound-sizing-wrt-labels', - type: t.compoundIncludeLabels, - triggersBounds: diff.any - }, { - name: 'min-width', - type: t.size, - triggersBounds: diff.any - }, { - name: 'min-width-bias-left', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'min-width-bias-right', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'min-height', - type: t.size, - triggersBounds: diff.any - }, { - name: 'min-height-bias-top', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'min-height-bias-bottom', - type: t.sizeMaybePercent, - triggersBounds: diff.any - }]; - var edgeLine = [{ - name: 'line-style', - type: t.lineStyle - }, { - name: 'line-color', - type: t.color - }, { - name: 'line-fill', - type: t.fill - }, { - name: 'line-cap', - type: t.lineCap - }, { - name: 'line-dash-pattern', - type: t.numbers - }, { - name: 'line-dash-offset', - type: t.number - }, { - name: 'line-gradient-stop-colors', - type: t.colors - }, { - name: 'line-gradient-stop-positions', - type: t.percentages - }, { - name: 'curve-style', - type: t.curveStyle, - triggersBounds: diff.any, - triggersBoundsOfParallelBeziers: true - }, { - name: 'haystack-radius', - type: t.zeroOneNumber, - triggersBounds: diff.any - }, { - name: 'source-endpoint', - type: t.edgeEndpoint, - triggersBounds: diff.any - }, { - name: 'target-endpoint', - type: t.edgeEndpoint, - triggersBounds: diff.any - }, { - name: 'control-point-step-size', - type: t.size, - triggersBounds: diff.any - }, { - name: 'control-point-distances', - type: t.bidirectionalSizes, - triggersBounds: diff.any - }, { - name: 'control-point-weights', - type: t.numbers, - triggersBounds: diff.any - }, { - name: 'segment-distances', - type: t.bidirectionalSizes, - triggersBounds: diff.any - }, { - name: 'segment-weights', - type: t.numbers, - triggersBounds: diff.any - }, { - name: 'taxi-turn', - type: t.bidirectionalSizeMaybePercent, - triggersBounds: diff.any - }, { - name: 'taxi-turn-min-distance', - type: t.size, - triggersBounds: diff.any - }, { - name: 'taxi-direction', - type: t.axisDirection, - triggersBounds: diff.any - }, { - name: 'edge-distances', - type: t.edgeDistances, - triggersBounds: diff.any - }, { - name: 'arrow-scale', - type: t.positiveNumber, - triggersBounds: diff.any - }, { - name: 'loop-direction', - type: t.angle, - triggersBounds: diff.any - }, { - name: 'loop-sweep', - type: t.angle, - triggersBounds: diff.any - }, { - name: 'source-distance-from-node', - type: t.size, - triggersBounds: diff.any - }, { - name: 'target-distance-from-node', - type: t.size, - triggersBounds: diff.any - }]; - var ghost = [{ - name: 'ghost', - type: t.bool, - triggersBounds: diff.any - }, { - name: 'ghost-offset-x', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'ghost-offset-y', - type: t.bidirectionalSize, - triggersBounds: diff.any - }, { - name: 'ghost-opacity', - type: t.zeroOneNumber - }]; - var core = [{ - name: 'selection-box-color', - type: t.color - }, { - name: 'selection-box-opacity', - type: t.zeroOneNumber - }, { - name: 'selection-box-border-color', - type: t.color - }, { - name: 'selection-box-border-width', - type: t.size - }, { - name: 'active-bg-color', - type: t.color - }, { - name: 'active-bg-opacity', - type: t.zeroOneNumber - }, { - name: 'active-bg-size', - type: t.size - }, { - name: 'outside-texture-bg-color', - type: t.color - }, { - name: 'outside-texture-bg-opacity', - type: t.zeroOneNumber - }]; // pie backgrounds for nodes - - var pie = []; - styfn$6.pieBackgroundN = 16; // because the pie properties are numbered, give access to a constant N (for renderer use) - - pie.push({ - name: 'pie-size', - type: t.sizeMaybePercent - }); - - for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { - pie.push({ - name: 'pie-' + i + '-background-color', - type: t.color - }); - pie.push({ - name: 'pie-' + i + '-background-size', - type: t.percent - }); - pie.push({ - name: 'pie-' + i + '-background-opacity', - type: t.zeroOneNumber - }); - } // edge arrows - - - var edgeArrow = []; - var arrowPrefixes = styfn$6.arrowPrefixes = ['source', 'mid-source', 'target', 'mid-target']; - [{ - name: 'arrow-shape', - type: t.arrowShape, - triggersBounds: diff.any - }, { - name: 'arrow-color', - type: t.color - }, { - name: 'arrow-fill', - type: t.arrowFill - }].forEach(function (prop) { - arrowPrefixes.forEach(function (prefix) { - var name = prefix + '-' + prop.name; - var type = prop.type, - triggersBounds = prop.triggersBounds; - edgeArrow.push({ - name: name, - type: type, - triggersBounds: triggersBounds - }); - }); - }, {}); - var props = styfn$6.properties = [].concat(behavior, transition, visibility, overlay, ghost, commonLabel, labelDimensions, mainLabel, sourceLabel, targetLabel, nodeBody, nodeBorder, backgroundImage, pie, compound, edgeLine, edgeArrow, core); - var propGroups = styfn$6.propertyGroups = { - // common to all eles - behavior: behavior, - transition: transition, - visibility: visibility, - overlay: overlay, - ghost: ghost, - // labels - commonLabel: commonLabel, - labelDimensions: labelDimensions, - mainLabel: mainLabel, - sourceLabel: sourceLabel, - targetLabel: targetLabel, - // node props - nodeBody: nodeBody, - nodeBorder: nodeBorder, - backgroundImage: backgroundImage, - pie: pie, - compound: compound, - // edge props - edgeLine: edgeLine, - edgeArrow: edgeArrow, - core: core - }; - var propGroupNames = styfn$6.propertyGroupNames = {}; - var propGroupKeys = styfn$6.propertyGroupKeys = Object.keys(propGroups); - propGroupKeys.forEach(function (key) { - propGroupNames[key] = propGroups[key].map(function (prop) { - return prop.name; - }); - propGroups[key].forEach(function (prop) { - return prop.groupKey = key; - }); - }); // define aliases - - var aliases = styfn$6.aliases = [{ - name: 'content', - pointsTo: 'label' - }, { - name: 'control-point-distance', - pointsTo: 'control-point-distances' - }, { - name: 'control-point-weight', - pointsTo: 'control-point-weights' - }, { - name: 'edge-text-rotation', - pointsTo: 'text-rotation' - }, { - name: 'padding-left', - pointsTo: 'padding' - }, { - name: 'padding-right', - pointsTo: 'padding' - }, { - name: 'padding-top', - pointsTo: 'padding' - }, { - name: 'padding-bottom', - pointsTo: 'padding' - }]; // list of property names - - styfn$6.propertyNames = props.map(function (p) { - return p.name; - }); // allow access of properties by name ( e.g. style.properties.height ) - - for (var _i = 0; _i < props.length; _i++) { - var prop = props[_i]; - props[prop.name] = prop; // allow lookup by name - } // map aliases - - - for (var _i2 = 0; _i2 < aliases.length; _i2++) { - var alias = aliases[_i2]; - var pointsToProp = props[alias.pointsTo]; - var aliasProp = { - name: alias.name, - alias: true, - pointsTo: pointsToProp - }; // add alias prop for parsing - - props.push(aliasProp); - props[alias.name] = aliasProp; // allow lookup by name - } -})(); - -styfn$6.getDefaultProperty = function (name) { - return this.getDefaultProperties()[name]; -}; - -styfn$6.getDefaultProperties = function () { - var _p = this._private; - - if (_p.defaultProperties != null) { - return _p.defaultProperties; - } - - var rawProps = extend({ - // core props - 'selection-box-color': '#ddd', - 'selection-box-opacity': 0.65, - 'selection-box-border-color': '#aaa', - 'selection-box-border-width': 1, - 'active-bg-color': 'black', - 'active-bg-opacity': 0.15, - 'active-bg-size': 30, - 'outside-texture-bg-color': '#000', - 'outside-texture-bg-opacity': 0.125, - // common node/edge props - 'events': 'yes', - 'text-events': 'no', - 'text-valign': 'top', - 'text-halign': 'center', - 'text-justification': 'auto', - 'line-height': 1, - 'color': '#000', - 'text-outline-color': '#000', - 'text-outline-width': 0, - 'text-outline-opacity': 1, - 'text-opacity': 1, - 'text-decoration': 'none', - 'text-transform': 'none', - 'text-wrap': 'none', - 'text-overflow-wrap': 'whitespace', - 'text-max-width': 9999, - 'text-background-color': '#000', - 'text-background-opacity': 0, - 'text-background-shape': 'rectangle', - 'text-background-padding': 0, - 'text-border-opacity': 0, - 'text-border-width': 0, - 'text-border-style': 'solid', - 'text-border-color': '#000', - 'font-family': 'Helvetica Neue, Helvetica, sans-serif', - 'font-style': 'normal', - 'font-weight': 'normal', - 'font-size': 16, - 'min-zoomed-font-size': 0, - 'text-rotation': 'none', - 'source-text-rotation': 'none', - 'target-text-rotation': 'none', - 'visibility': 'visible', - 'display': 'element', - 'opacity': 1, - 'z-compound-depth': 'auto', - 'z-index-compare': 'auto', - 'z-index': 0, - 'label': '', - 'text-margin-x': 0, - 'text-margin-y': 0, - 'source-label': '', - 'source-text-offset': 0, - 'source-text-margin-x': 0, - 'source-text-margin-y': 0, - 'target-label': '', - 'target-text-offset': 0, - 'target-text-margin-x': 0, - 'target-text-margin-y': 0, - 'overlay-opacity': 0, - 'overlay-color': '#000', - 'overlay-padding': 10, - 'transition-property': 'none', - 'transition-duration': 0, - 'transition-delay': 0, - 'transition-timing-function': 'linear', - // node props - 'background-blacken': 0, - 'background-color': '#999', - 'background-fill': 'solid', - 'background-opacity': 1, - 'background-image': 'none', - 'background-image-crossorigin': 'anonymous', - 'background-image-opacity': 1, - 'background-position-x': '50%', - 'background-position-y': '50%', - 'background-offset-x': 0, - 'background-offset-y': 0, - 'background-width-relative-to': 'include-padding', - 'background-height-relative-to': 'include-padding', - 'background-repeat': 'no-repeat', - 'background-fit': 'none', - 'background-clip': 'node', - 'background-width': 'auto', - 'background-height': 'auto', - 'border-color': '#000', - 'border-opacity': 1, - 'border-width': 0, - 'border-style': 'solid', - 'height': 30, - 'width': 30, - 'shape': 'ellipse', - 'shape-polygon-points': '-1, -1, 1, -1, 1, 1, -1, 1', - 'bounds-expansion': 0, - // node gradient - 'background-gradient-direction': 'to-bottom', - 'background-gradient-stop-colors': '#999', - 'background-gradient-stop-positions': '0%', - // ghost props - 'ghost': 'no', - 'ghost-offset-y': 0, - 'ghost-offset-x': 0, - 'ghost-opacity': 0, - // compound props - 'padding': 0, - 'padding-relative-to': 'width', - 'position': 'origin', - 'compound-sizing-wrt-labels': 'include', - 'min-width': 0, - 'min-width-bias-left': 0, - 'min-width-bias-right': 0, - 'min-height': 0, - 'min-height-bias-top': 0, - 'min-height-bias-bottom': 0 - }, { - // node pie bg - 'pie-size': '100%' - }, [{ - name: 'pie-{{i}}-background-color', - value: 'black' - }, { - name: 'pie-{{i}}-background-size', - value: '0%' - }, { - name: 'pie-{{i}}-background-opacity', - value: 1 - }].reduce(function (css, prop) { - for (var i = 1; i <= styfn$6.pieBackgroundN; i++) { - var name = prop.name.replace('{{i}}', i); - var val = prop.value; - css[name] = val; - } - - return css; - }, {}), { - // edge props - 'line-style': 'solid', - 'line-color': '#999', - 'line-fill': 'solid', - 'line-cap': 'butt', - 'line-gradient-stop-colors': '#999', - 'line-gradient-stop-positions': '0%', - 'control-point-step-size': 40, - 'control-point-weights': 0.5, - 'segment-weights': 0.5, - 'segment-distances': 20, - 'taxi-turn': '50%', - 'taxi-turn-min-distance': 10, - 'taxi-direction': 'auto', - 'edge-distances': 'intersection', - 'curve-style': 'haystack', - 'haystack-radius': 0, - 'arrow-scale': 1, - 'loop-direction': '-45deg', - 'loop-sweep': '-90deg', - 'source-distance-from-node': 0, - 'target-distance-from-node': 0, - 'source-endpoint': 'outside-to-node', - 'target-endpoint': 'outside-to-node', - 'line-dash-pattern': [6, 3], - 'line-dash-offset': 0 - }, [{ - name: 'arrow-shape', - value: 'none' - }, { - name: 'arrow-color', - value: '#999' - }, { - name: 'arrow-fill', - value: 'filled' - }].reduce(function (css, prop) { - styfn$6.arrowPrefixes.forEach(function (prefix) { - var name = prefix + '-' + prop.name; - var val = prop.value; - css[name] = val; - }); - return css; - }, {})); - var parsedProps = {}; - - for (var i = 0; i < this.properties.length; i++) { - var prop = this.properties[i]; - - if (prop.pointsTo) { - continue; - } - - var name = prop.name; - var val = rawProps[name]; - var parsedProp = this.parse(name, val); - parsedProps[name] = parsedProp; - } - - _p.defaultProperties = parsedProps; - return _p.defaultProperties; -}; - -styfn$6.addDefaultStylesheet = function () { - this.selector(':parent').css({ - 'shape': 'rectangle', - 'padding': 10, - 'background-color': '#eee', - 'border-color': '#ccc', - 'border-width': 1 - }).selector('edge').css({ - 'width': 3 - }).selector(':loop').css({ - 'curve-style': 'bezier' - }).selector('edge:compound').css({ - 'curve-style': 'bezier', - 'source-endpoint': 'outside-to-line', - 'target-endpoint': 'outside-to-line' - }).selector(':selected').css({ - 'background-color': '#0169D9', - 'line-color': '#0169D9', - 'source-arrow-color': '#0169D9', - 'target-arrow-color': '#0169D9', - 'mid-source-arrow-color': '#0169D9', - 'mid-target-arrow-color': '#0169D9' - }).selector(':parent:selected').css({ - 'background-color': '#CCE1F9', - 'border-color': '#aec8e5' - }).selector(':active').css({ - 'overlay-color': 'black', - 'overlay-padding': 10, - 'overlay-opacity': 0.25 - }); - this.defaultLength = this.length; -}; - -var styfn$7 = {}; // a caching layer for property parsing - -styfn$7.parse = function (name, value, propIsBypass, propIsFlat) { - var self = this; // function values can't be cached in all cases, and there isn't much benefit of caching them anyway - - if (fn(value)) { - return self.parseImplWarn(name, value, propIsBypass, propIsFlat); - } - - var flatKey = propIsFlat === 'mapping' || propIsFlat === true || propIsFlat === false || propIsFlat == null ? 'dontcare' : propIsFlat; - var bypassKey = propIsBypass ? 't' : 'f'; - var valueKey = '' + value; - var argHash = hashStrings(name, valueKey, bypassKey, flatKey); - var propCache = self.propCache = self.propCache || []; - var ret; - - if (!(ret = propCache[argHash])) { - ret = propCache[argHash] = self.parseImplWarn(name, value, propIsBypass, propIsFlat); - } // - bypasses can't be shared b/c the value can be changed by animations or otherwise overridden - // - mappings can't be shared b/c mappings are per-element - - - if (propIsBypass || propIsFlat === 'mapping') { - // need a copy since props are mutated later in their lifecycles - ret = copy(ret); - - if (ret) { - ret.value = copy(ret.value); // because it could be an array, e.g. colour - } - } - - return ret; -}; - -styfn$7.parseImplWarn = function (name, value, propIsBypass, propIsFlat) { - var prop = this.parseImpl(name, value, propIsBypass, propIsFlat); - - if (!prop && value != null) { - warn("The style property `".concat(name, ": ").concat(value, "` is invalid")); - } - - if (prop && (prop.name === 'width' || prop.name === 'height') && value === 'label') { - warn('The style value of `label` is deprecated for `' + prop.name + '`'); - } - - return prop; -}; // parse a property; return null on invalid; return parsed property otherwise -// fields : -// - name : the name of the property -// - value : the parsed, native-typed value of the property -// - strValue : a string value that represents the property value in valid css -// - bypass : true iff the property is a bypass property - - -styfn$7.parseImpl = function (name, value, propIsBypass, propIsFlat) { - var self = this; - name = camel2dash(name); // make sure the property name is in dash form (e.g. 'property-name' not 'propertyName') - - var property = self.properties[name]; - var passedValue = value; - var types = self.types; - - if (!property) { - return null; - } // return null on property of unknown name - - - if (value === undefined) { - return null; - } // can't assign undefined - // the property may be an alias - - - if (property.alias) { - property = property.pointsTo; - name = property.name; - } - - var valueIsString = string(value); - - if (valueIsString) { - // trim the value to make parsing easier - value = value.trim(); - } - - var type = property.type; - - if (!type) { - return null; - } // no type, no luck - // check if bypass is null or empty string (i.e. indication to delete bypass property) - - - if (propIsBypass && (value === '' || value === null)) { - return { - name: name, - value: value, - bypass: true, - deleteBypass: true - }; - } // check if value is a function used as a mapper - - - if (fn(value)) { - return { - name: name, - value: value, - strValue: 'fn', - mapped: types.fn, - bypass: propIsBypass - }; - } // check if value is mapped - - - var data, mapData; - - if (!valueIsString || propIsFlat || value.length < 7 || value[1] !== 'a') ; else if (value.length >= 7 && value[0] === 'd' && (data = new RegExp(types.data.regex).exec(value))) { - if (propIsBypass) { - return false; - } // mappers not allowed in bypass - - - var mapped = types.data; - return { - name: name, - value: data, - strValue: '' + value, - mapped: mapped, - field: data[1], - bypass: propIsBypass - }; - } else if (value.length >= 10 && value[0] === 'm' && (mapData = new RegExp(types.mapData.regex).exec(value))) { - if (propIsBypass) { - return false; - } // mappers not allowed in bypass - - - if (type.multiple) { - return false; - } // impossible to map to num - - - var _mapped = types.mapData; // we can map only if the type is a colour or a number - - if (!(type.color || type.number)) { - return false; - } - - var valueMin = this.parse(name, mapData[4]); // parse to validate - - if (!valueMin || valueMin.mapped) { - return false; - } // can't be invalid or mapped - - - var valueMax = this.parse(name, mapData[5]); // parse to validate - - if (!valueMax || valueMax.mapped) { - return false; - } // can't be invalid or mapped - // check if valueMin and valueMax are the same - - - if (valueMin.pfValue === valueMax.pfValue || valueMin.strValue === valueMax.strValue) { - warn('`' + name + ': ' + value + '` is not a valid mapper because the output range is zero; converting to `' + name + ': ' + valueMin.strValue + '`'); - return this.parse(name, valueMin.strValue); // can't make much of a mapper without a range - } else if (type.color) { - var c1 = valueMin.value; - var c2 = valueMax.value; - var same = c1[0] === c2[0] // red - && c1[1] === c2[1] // green - && c1[2] === c2[2] // blue - && ( // optional alpha - c1[3] === c2[3] // same alpha outright - || (c1[3] == null || c1[3] === 1) && ( // full opacity for colour 1? - c2[3] == null || c2[3] === 1) // full opacity for colour 2? - ); - - if (same) { - return false; - } // can't make a mapper without a range - - } - - return { - name: name, - value: mapData, - strValue: '' + value, - mapped: _mapped, - field: mapData[1], - fieldMin: parseFloat(mapData[2]), - // min & max are numeric - fieldMax: parseFloat(mapData[3]), - valueMin: valueMin.value, - valueMax: valueMax.value, - bypass: propIsBypass - }; - } - - if (type.multiple && propIsFlat !== 'multiple') { - var vals; - - if (valueIsString) { - vals = value.split(/\s+/); - } else if (array(value)) { - vals = value; - } else { - vals = [value]; - } - - if (type.evenMultiple && vals.length % 2 !== 0) { - return null; - } - - var valArr = []; - var unitsArr = []; - var pfValArr = []; - var strVal = ''; - var hasEnum = false; - - for (var i = 0; i < vals.length; i++) { - var p = self.parse(name, vals[i], propIsBypass, 'multiple'); - hasEnum = hasEnum || string(p.value); - valArr.push(p.value); - pfValArr.push(p.pfValue != null ? p.pfValue : p.value); - unitsArr.push(p.units); - strVal += (i > 0 ? ' ' : '') + p.strValue; - } - - if (type.validate && !type.validate(valArr, unitsArr)) { - return null; - } - - if (type.singleEnum && hasEnum) { - if (valArr.length === 1 && string(valArr[0])) { - return { - name: name, - value: valArr[0], - strValue: valArr[0], - bypass: propIsBypass - }; - } else { - return null; - } - } - - return { - name: name, - value: valArr, - pfValue: pfValArr, - strValue: strVal, - bypass: propIsBypass, - units: unitsArr - }; - } // several types also allow enums - - - var checkEnums = function checkEnums() { - for (var _i = 0; _i < type.enums.length; _i++) { - var en = type.enums[_i]; - - if (en === value) { - return { - name: name, - value: value, - strValue: '' + value, - bypass: propIsBypass - }; - } - } - - return null; - }; // check the type and return the appropriate object - - - if (type.number) { - var units; - var implicitUnits = 'px'; // not set => px - - if (type.units) { - // use specified units if set - units = type.units; - } - - if (type.implicitUnits) { - implicitUnits = type.implicitUnits; - } - - if (!type.unitless) { - if (valueIsString) { - var unitsRegex = 'px|em' + (type.allowPercent ? '|\\%' : ''); - - if (units) { - unitsRegex = units; - } // only allow explicit units if so set - - - var match = value.match('^(' + number$1 + ')(' + unitsRegex + ')?' + '$'); - - if (match) { - value = match[1]; - units = match[2] || implicitUnits; - } - } else if (!units || type.implicitUnits) { - units = implicitUnits; // implicitly px if unspecified - } - } - - value = parseFloat(value); // if not a number and enums not allowed, then the value is invalid - - if (isNaN(value) && type.enums === undefined) { - return null; - } // check if this number type also accepts special keywords in place of numbers - // (i.e. `left`, `auto`, etc) - - - if (isNaN(value) && type.enums !== undefined) { - value = passedValue; - return checkEnums(); - } // check if value must be an integer - - - if (type.integer && !integer(value)) { - return null; - } // check value is within range - - - if (type.min !== undefined && (value < type.min || type.strictMin && value === type.min) || type.max !== undefined && (value > type.max || type.strictMax && value === type.max)) { - return null; - } - - var ret = { - name: name, - value: value, - strValue: '' + value + (units ? units : ''), - units: units, - bypass: propIsBypass - }; // normalise value in pixels - - if (type.unitless || units !== 'px' && units !== 'em') { - ret.pfValue = value; - } else { - ret.pfValue = units === 'px' || !units ? value : this.getEmSizeInPixels() * value; - } // normalise value in ms - - - if (units === 'ms' || units === 's') { - ret.pfValue = units === 'ms' ? value : 1000 * value; - } // normalise value in rad - - - if (units === 'deg' || units === 'rad') { - ret.pfValue = units === 'rad' ? value : deg2rad(value); - } // normalize value in % - - - if (units === '%') { - ret.pfValue = value / 100; - } - - return ret; - } else if (type.propList) { - var props = []; - var propsStr = '' + value; - - if (propsStr === 'none') ; else { - // go over each prop - var propsSplit = propsStr.split(/\s*,\s*|\s+/); - - for (var _i2 = 0; _i2 < propsSplit.length; _i2++) { - var propName = propsSplit[_i2].trim(); - - if (self.properties[propName]) { - props.push(propName); - } else { - warn('`' + propName + '` is not a valid property name'); - } - } - - if (props.length === 0) { - return null; - } - } - - return { - name: name, - value: props, - strValue: props.length === 0 ? 'none' : props.join(' '), - bypass: propIsBypass - }; - } else if (type.color) { - var tuple = color2tuple(value); - - if (!tuple) { - return null; - } - - return { - name: name, - value: tuple, - pfValue: tuple, - strValue: 'rgb(' + tuple[0] + ',' + tuple[1] + ',' + tuple[2] + ')', - // n.b. no spaces b/c of multiple support - bypass: propIsBypass - }; - } else if (type.regex || type.regexes) { - // first check enums - if (type.enums) { - var enumProp = checkEnums(); - - if (enumProp) { - return enumProp; - } - } - - var regexes = type.regexes ? type.regexes : [type.regex]; - - for (var _i3 = 0; _i3 < regexes.length; _i3++) { - var regex = new RegExp(regexes[_i3]); // make a regex from the type string - - var m = regex.exec(value); - - if (m) { - // regex matches - return { - name: name, - value: type.singleRegexMatchValue ? m[1] : m, - strValue: '' + value, - bypass: propIsBypass - }; - } - } - - return null; // didn't match any - } else if (type.string) { - // just return - return { - name: name, - value: '' + value, - strValue: '' + value, - bypass: propIsBypass - }; - } else if (type.enums) { - // check enums last because it's a combo type in others - return checkEnums(); - } else { - return null; // not a type we can handle - } -}; - -var Style = function Style(cy) { - if (!(this instanceof Style)) { - return new Style(cy); - } - - if (!core(cy)) { - error('A style must have a core reference'); - return; - } - - this._private = { - cy: cy, - coreStyle: {} - }; - this.length = 0; - this.resetToDefault(); -}; - -var styfn$8 = Style.prototype; - -styfn$8.instanceString = function () { - return 'style'; -}; // remove all contexts - - -styfn$8.clear = function () { - for (var i = 0; i < this.length; i++) { - this[i] = undefined; - } - - this.length = 0; - var _p = this._private; - _p.newStyle = true; - return this; // chaining -}; - -styfn$8.resetToDefault = function () { - this.clear(); - this.addDefaultStylesheet(); - return this; -}; // builds a style object for the 'core' selector - - -styfn$8.core = function (propName) { - return this._private.coreStyle[propName] || this.getDefaultProperty(propName); -}; // create a new context from the specified selector string and switch to that context - - -styfn$8.selector = function (selectorStr) { - // 'core' is a special case and does not need a selector - var selector = selectorStr === 'core' ? null : new Selector(selectorStr); - var i = this.length++; // new context means new index - - this[i] = { - selector: selector, - properties: [], - mappedProperties: [], - index: i - }; - return this; // chaining -}; // add one or many css rules to the current context - - -styfn$8.css = function () { - var self = this; - var args = arguments; - - if (args.length === 1) { - var map = args[0]; - - for (var i = 0; i < self.properties.length; i++) { - var prop = self.properties[i]; - var mapVal = map[prop.name]; - - if (mapVal === undefined) { - mapVal = map[dash2camel(prop.name)]; - } - - if (mapVal !== undefined) { - this.cssRule(prop.name, mapVal); - } - } - } else if (args.length === 2) { - this.cssRule(args[0], args[1]); - } // do nothing if args are invalid - - - return this; // chaining -}; - -styfn$8.style = styfn$8.css; // add a single css rule to the current context - -styfn$8.cssRule = function (name, value) { - // name-value pair - var property = this.parse(name, value); // add property to current context if valid - - if (property) { - var i = this.length - 1; - this[i].properties.push(property); - this[i].properties[property.name] = property; // allow access by name as well - - if (property.name.match(/pie-(\d+)-background-size/) && property.value) { - this._private.hasPie = true; - } - - if (property.mapped) { - this[i].mappedProperties.push(property); - } // add to core style if necessary - - - var currentSelectorIsCore = !this[i].selector; - - if (currentSelectorIsCore) { - this._private.coreStyle[property.name] = property; - } - } - - return this; // chaining -}; - -styfn$8.append = function (style) { - if (stylesheet(style)) { - style.appendToStyle(this); - } else if (array(style)) { - this.appendFromJson(style); - } else if (string(style)) { - this.appendFromString(style); - } // you probably wouldn't want to append a Style, since you'd duplicate the default parts - - - return this; -}; // static function - - -Style.fromJson = function (cy, json) { - var style = new Style(cy); - style.fromJson(json); - return style; -}; - -Style.fromString = function (cy, string) { - return new Style(cy).fromString(string); -}; - -[styfn, styfn$1, styfn$2, styfn$3, styfn$4, styfn$5, styfn$6, styfn$7].forEach(function (props) { - extend(styfn$8, props); -}); -Style.types = styfn$8.types; -Style.properties = styfn$8.properties; -Style.propertyGroups = styfn$8.propertyGroups; -Style.propertyGroupNames = styfn$8.propertyGroupNames; -Style.propertyGroupKeys = styfn$8.propertyGroupKeys; - -var corefn$7 = { - style: function style(newStyle) { - if (newStyle) { - var s = this.setStyle(newStyle); - s.update(); - } - - return this._private.style; - }, - setStyle: function setStyle(style) { - var _p = this._private; - - if (stylesheet(style)) { - _p.style = style.generateStyle(this); - } else if (array(style)) { - _p.style = Style.fromJson(this, style); - } else if (string(style)) { - _p.style = Style.fromString(this, style); - } else { - _p.style = Style(this); - } - - return _p.style; - } -}; - -var defaultSelectionType = 'single'; -var corefn$8 = { - autolock: function autolock(bool) { - if (bool !== undefined) { - this._private.autolock = bool ? true : false; - } else { - return this._private.autolock; - } - - return this; // chaining - }, - autoungrabify: function autoungrabify(bool) { - if (bool !== undefined) { - this._private.autoungrabify = bool ? true : false; - } else { - return this._private.autoungrabify; - } - - return this; // chaining - }, - autounselectify: function autounselectify(bool) { - if (bool !== undefined) { - this._private.autounselectify = bool ? true : false; - } else { - return this._private.autounselectify; - } - - return this; // chaining - }, - selectionType: function selectionType(selType) { - var _p = this._private; - - if (_p.selectionType == null) { - _p.selectionType = defaultSelectionType; - } - - if (selType !== undefined) { - if (selType === 'additive' || selType === 'single') { - _p.selectionType = selType; - } - } else { - return _p.selectionType; - } - - return this; - }, - panningEnabled: function panningEnabled(bool) { - if (bool !== undefined) { - this._private.panningEnabled = bool ? true : false; - } else { - return this._private.panningEnabled; - } - - return this; // chaining - }, - userPanningEnabled: function userPanningEnabled(bool) { - if (bool !== undefined) { - this._private.userPanningEnabled = bool ? true : false; - } else { - return this._private.userPanningEnabled; - } - - return this; // chaining - }, - zoomingEnabled: function zoomingEnabled(bool) { - if (bool !== undefined) { - this._private.zoomingEnabled = bool ? true : false; - } else { - return this._private.zoomingEnabled; - } - - return this; // chaining - }, - userZoomingEnabled: function userZoomingEnabled(bool) { - if (bool !== undefined) { - this._private.userZoomingEnabled = bool ? true : false; - } else { - return this._private.userZoomingEnabled; - } - - return this; // chaining - }, - boxSelectionEnabled: function boxSelectionEnabled(bool) { - if (bool !== undefined) { - this._private.boxSelectionEnabled = bool ? true : false; - } else { - return this._private.boxSelectionEnabled; - } - - return this; // chaining - }, - pan: function pan() { - var args = arguments; - var pan = this._private.pan; - var dim, val, dims, x, y; - - switch (args.length) { - case 0: - // .pan() - return pan; - - case 1: - if (string(args[0])) { - // .pan('x') - dim = args[0]; - return pan[dim]; - } else if (plainObject(args[0])) { - // .pan({ x: 0, y: 100 }) - if (!this._private.panningEnabled) { - return this; - } - - dims = args[0]; - x = dims.x; - y = dims.y; - - if (number(x)) { - pan.x = x; - } - - if (number(y)) { - pan.y = y; - } - - this.emit('pan viewport'); - } - - break; - - case 2: - // .pan('x', 100) - if (!this._private.panningEnabled) { - return this; - } - - dim = args[0]; - val = args[1]; - - if ((dim === 'x' || dim === 'y') && number(val)) { - pan[dim] = val; - } - - this.emit('pan viewport'); - break; - // invalid - } - - this.notify('viewport'); - return this; // chaining - }, - panBy: function panBy(arg0, arg1) { - var args = arguments; - var pan = this._private.pan; - var dim, val, dims, x, y; - - if (!this._private.panningEnabled) { - return this; - } - - switch (args.length) { - case 1: - if (plainObject(arg0)) { - // .panBy({ x: 0, y: 100 }) - dims = args[0]; - x = dims.x; - y = dims.y; - - if (number(x)) { - pan.x += x; - } - - if (number(y)) { - pan.y += y; - } - - this.emit('pan viewport'); - } - - break; - - case 2: - // .panBy('x', 100) - dim = arg0; - val = arg1; - - if ((dim === 'x' || dim === 'y') && number(val)) { - pan[dim] += val; - } - - this.emit('pan viewport'); - break; - // invalid - } - - this.notify('viewport'); - return this; // chaining - }, - fit: function fit(elements, padding) { - var viewportState = this.getFitViewport(elements, padding); - - if (viewportState) { - var _p = this._private; - _p.zoom = viewportState.zoom; - _p.pan = viewportState.pan; - this.emit('pan zoom viewport'); - this.notify('viewport'); - } - - return this; // chaining - }, - getFitViewport: function getFitViewport(elements, padding) { - if (number(elements) && padding === undefined) { - // elements is optional - padding = elements; - elements = undefined; - } - - if (!this._private.panningEnabled || !this._private.zoomingEnabled) { - return; - } - - var bb; - - if (string(elements)) { - var sel = elements; - elements = this.$(sel); - } else if (boundingBox(elements)) { - // assume bb - var bbe = elements; - bb = { - x1: bbe.x1, - y1: bbe.y1, - x2: bbe.x2, - y2: bbe.y2 - }; - bb.w = bb.x2 - bb.x1; - bb.h = bb.y2 - bb.y1; - } else if (!elementOrCollection(elements)) { - elements = this.mutableElements(); - } - - if (elementOrCollection(elements) && elements.empty()) { - return; - } // can't fit to nothing - - - bb = bb || elements.boundingBox(); - var w = this.width(); - var h = this.height(); - var zoom; - padding = number(padding) ? padding : 0; - - if (!isNaN(w) && !isNaN(h) && w > 0 && h > 0 && !isNaN(bb.w) && !isNaN(bb.h) && bb.w > 0 && bb.h > 0) { - zoom = Math.min((w - 2 * padding) / bb.w, (h - 2 * padding) / bb.h); // crop zoom - - zoom = zoom > this._private.maxZoom ? this._private.maxZoom : zoom; - zoom = zoom < this._private.minZoom ? this._private.minZoom : zoom; - var pan = { - // now pan to middle - x: (w - zoom * (bb.x1 + bb.x2)) / 2, - y: (h - zoom * (bb.y1 + bb.y2)) / 2 - }; - return { - zoom: zoom, - pan: pan - }; - } - - return; - }, - zoomRange: function zoomRange(min, max) { - var _p = this._private; - - if (max == null) { - var opts = min; - min = opts.min; - max = opts.max; - } - - if (number(min) && number(max) && min <= max) { - _p.minZoom = min; - _p.maxZoom = max; - } else if (number(min) && max === undefined && min <= _p.maxZoom) { - _p.minZoom = min; - } else if (number(max) && min === undefined && max >= _p.minZoom) { - _p.maxZoom = max; - } - - return this; - }, - minZoom: function minZoom(zoom) { - if (zoom === undefined) { - return this._private.minZoom; - } else { - return this.zoomRange({ - min: zoom - }); - } - }, - maxZoom: function maxZoom(zoom) { - if (zoom === undefined) { - return this._private.maxZoom; - } else { - return this.zoomRange({ - max: zoom - }); - } - }, - getZoomedViewport: function getZoomedViewport(params) { - var _p = this._private; - var currentPan = _p.pan; - var currentZoom = _p.zoom; - var pos; // in rendered px - - var zoom; - var bail = false; - - if (!_p.zoomingEnabled) { - // zooming disabled - bail = true; - } - - if (number(params)) { - // then set the zoom - zoom = params; - } else if (plainObject(params)) { - // then zoom about a point - zoom = params.level; - - if (params.position != null) { - pos = modelToRenderedPosition(params.position, currentZoom, currentPan); - } else if (params.renderedPosition != null) { - pos = params.renderedPosition; - } - - if (pos != null && !_p.panningEnabled) { - // panning disabled - bail = true; - } - } // crop zoom - - - zoom = zoom > _p.maxZoom ? _p.maxZoom : zoom; - zoom = zoom < _p.minZoom ? _p.minZoom : zoom; // can't zoom with invalid params - - if (bail || !number(zoom) || zoom === currentZoom || pos != null && (!number(pos.x) || !number(pos.y))) { - return null; - } - - if (pos != null) { - // set zoom about position - var pan1 = currentPan; - var zoom1 = currentZoom; - var zoom2 = zoom; - var pan2 = { - x: -zoom2 / zoom1 * (pos.x - pan1.x) + pos.x, - y: -zoom2 / zoom1 * (pos.y - pan1.y) + pos.y - }; - return { - zoomed: true, - panned: true, - zoom: zoom2, - pan: pan2 - }; - } else { - // just set the zoom - return { - zoomed: true, - panned: false, - zoom: zoom, - pan: currentPan - }; - } - }, - zoom: function zoom(params) { - if (params === undefined) { - // get - return this._private.zoom; - } else { - // set - var vp = this.getZoomedViewport(params); - var _p = this._private; - - if (vp == null || !vp.zoomed) { - return this; - } - - _p.zoom = vp.zoom; - - if (vp.panned) { - _p.pan.x = vp.pan.x; - _p.pan.y = vp.pan.y; - } - - this.emit('zoom' + (vp.panned ? ' pan' : '') + ' viewport'); - this.notify('viewport'); - return this; // chaining - } - }, - viewport: function viewport(opts) { - var _p = this._private; - var zoomDefd = true; - var panDefd = true; - var events = []; // to trigger - - var zoomFailed = false; - var panFailed = false; - - if (!opts) { - return this; - } - - if (!number(opts.zoom)) { - zoomDefd = false; - } - - if (!plainObject(opts.pan)) { - panDefd = false; - } - - if (!zoomDefd && !panDefd) { - return this; - } - - if (zoomDefd) { - var z = opts.zoom; - - if (z < _p.minZoom || z > _p.maxZoom || !_p.zoomingEnabled) { - zoomFailed = true; - } else { - _p.zoom = z; - events.push('zoom'); - } - } - - if (panDefd && (!zoomFailed || !opts.cancelOnFailedZoom) && _p.panningEnabled) { - var p = opts.pan; - - if (number(p.x)) { - _p.pan.x = p.x; - panFailed = false; - } - - if (number(p.y)) { - _p.pan.y = p.y; - panFailed = false; - } - - if (!panFailed) { - events.push('pan'); - } - } - - if (events.length > 0) { - events.push('viewport'); - this.emit(events.join(' ')); - this.notify('viewport'); - } - - return this; // chaining - }, - center: function center(elements) { - var pan = this.getCenterPan(elements); - - if (pan) { - this._private.pan = pan; - this.emit('pan viewport'); - this.notify('viewport'); - } - - return this; // chaining - }, - getCenterPan: function getCenterPan(elements, zoom) { - if (!this._private.panningEnabled) { - return; - } - - if (string(elements)) { - var selector = elements; - elements = this.mutableElements().filter(selector); - } else if (!elementOrCollection(elements)) { - elements = this.mutableElements(); - } - - if (elements.length === 0) { - return; - } // can't centre pan to nothing - - - var bb = elements.boundingBox(); - var w = this.width(); - var h = this.height(); - zoom = zoom === undefined ? this._private.zoom : zoom; - var pan = { - // middle - x: (w - zoom * (bb.x1 + bb.x2)) / 2, - y: (h - zoom * (bb.y1 + bb.y2)) / 2 - }; - return pan; - }, - reset: function reset() { - if (!this._private.panningEnabled || !this._private.zoomingEnabled) { - return this; - } - - this.viewport({ - pan: { - x: 0, - y: 0 - }, - zoom: 1 - }); - return this; // chaining - }, - invalidateSize: function invalidateSize() { - this._private.sizeCache = null; - }, - size: function size() { - var _p = this._private; - var container = _p.container; - return _p.sizeCache = _p.sizeCache || (container ? function () { - var style = window$1.getComputedStyle(container); - - var val = function val(name) { - return parseFloat(style.getPropertyValue(name)); - }; - - return { - width: container.clientWidth - val('padding-left') - val('padding-right'), - height: container.clientHeight - val('padding-top') - val('padding-bottom') - }; - }() : { - // fallback if no container (not 0 b/c can be used for dividing etc) - width: 1, - height: 1 - }); - }, - width: function width() { - return this.size().width; - }, - height: function height() { - return this.size().height; - }, - extent: function extent() { - var pan = this._private.pan; - var zoom = this._private.zoom; - var rb = this.renderedExtent(); - var b = { - x1: (rb.x1 - pan.x) / zoom, - x2: (rb.x2 - pan.x) / zoom, - y1: (rb.y1 - pan.y) / zoom, - y2: (rb.y2 - pan.y) / zoom - }; - b.w = b.x2 - b.x1; - b.h = b.y2 - b.y1; - return b; - }, - renderedExtent: function renderedExtent() { - var width = this.width(); - var height = this.height(); - return { - x1: 0, - y1: 0, - x2: width, - y2: height, - w: width, - h: height - }; - } -}; // aliases - -corefn$8.centre = corefn$8.center; // backwards compatibility - -corefn$8.autolockNodes = corefn$8.autolock; -corefn$8.autoungrabifyNodes = corefn$8.autoungrabify; - -var fn$6 = { - data: define$3.data({ - field: 'data', - bindingEvent: 'data', - allowBinding: true, - allowSetting: true, - settingEvent: 'data', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true - }), - removeData: define$3.removeData({ - field: 'data', - event: 'data', - triggerFnName: 'trigger', - triggerEvent: true - }), - scratch: define$3.data({ - field: 'scratch', - bindingEvent: 'scratch', - allowBinding: true, - allowSetting: true, - settingEvent: 'scratch', - settingTriggersEvent: true, - triggerFnName: 'trigger', - allowGetting: true - }), - removeScratch: define$3.removeData({ - field: 'scratch', - event: 'scratch', - triggerFnName: 'trigger', - triggerEvent: true - }) -}; // aliases - -fn$6.attr = fn$6.data; -fn$6.removeAttr = fn$6.removeData; - -var Core = function Core(opts) { - var cy = this; - opts = extend({}, opts); - var container = opts.container; // allow for passing a wrapped jquery object - // e.g. cytoscape({ container: $('#cy') }) - - if (container && !htmlElement(container) && htmlElement(container[0])) { - container = container[0]; - } - - var reg = container ? container._cyreg : null; // e.g. already registered some info (e.g. readies) via jquery - - reg = reg || {}; - - if (reg && reg.cy) { - reg.cy.destroy(); - reg = {}; // old instance => replace reg completely - } - - var readies = reg.readies = reg.readies || []; - - if (container) { - container._cyreg = reg; - } // make sure container assoc'd reg points to this cy - - - reg.cy = cy; - var head = window$1 !== undefined && container !== undefined && !opts.headless; - var options = opts; - options.layout = extend({ - name: head ? 'grid' : 'null' - }, options.layout); - options.renderer = extend({ - name: head ? 'canvas' : 'null' - }, options.renderer); - - var defVal = function defVal(def, val, altVal) { - if (val !== undefined) { - return val; - } else if (altVal !== undefined) { - return altVal; - } else { - return def; - } - }; - - var _p = this._private = { - container: container, - // html dom ele container - ready: false, - // whether ready has been triggered - options: options, - // cached options - elements: new Collection(this), - // elements in the graph - listeners: [], - // list of listeners - aniEles: new Collection(this), - // elements being animated - data: {}, - // data for the core - scratch: {}, - // scratch object for core - layout: null, - renderer: null, - destroyed: false, - // whether destroy was called - notificationsEnabled: true, - // whether notifications are sent to the renderer - minZoom: 1e-50, - maxZoom: 1e50, - zoomingEnabled: defVal(true, options.zoomingEnabled), - userZoomingEnabled: defVal(true, options.userZoomingEnabled), - panningEnabled: defVal(true, options.panningEnabled), - userPanningEnabled: defVal(true, options.userPanningEnabled), - boxSelectionEnabled: defVal(true, options.boxSelectionEnabled), - autolock: defVal(false, options.autolock, options.autolockNodes), - autoungrabify: defVal(false, options.autoungrabify, options.autoungrabifyNodes), - autounselectify: defVal(false, options.autounselectify), - styleEnabled: options.styleEnabled === undefined ? head : options.styleEnabled, - zoom: number(options.zoom) ? options.zoom : 1, - pan: { - x: plainObject(options.pan) && number(options.pan.x) ? options.pan.x : 0, - y: plainObject(options.pan) && number(options.pan.y) ? options.pan.y : 0 - }, - animation: { - // object for currently-running animations - current: [], - queue: [] - }, - hasCompoundNodes: false - }; - - this.createEmitter(); // set selection type - - this.selectionType(options.selectionType); // init zoom bounds - - this.zoomRange({ - min: options.minZoom, - max: options.maxZoom - }); - - var loadExtData = function loadExtData(extData, next) { - var anyIsPromise = extData.some(promise); - - if (anyIsPromise) { - return Promise$1.all(extData).then(next); // load all data asynchronously, then exec rest of init - } else { - next(extData); // exec synchronously for convenience - } - }; // start with the default stylesheet so we have something before loading an external stylesheet - - - if (_p.styleEnabled) { - cy.setStyle([]); - } // create the renderer - - - var rendererOptions = extend({}, options, options.renderer); // allow rendering hints in top level options - - cy.initRenderer(rendererOptions); - - var setElesAndLayout = function setElesAndLayout(elements, onload, ondone) { - cy.notifications(false); // remove old elements - - var oldEles = cy.mutableElements(); - - if (oldEles.length > 0) { - oldEles.remove(); - } - - if (elements != null) { - if (plainObject(elements) || array(elements)) { - cy.add(elements); - } - } - - cy.one('layoutready', function (e) { - cy.notifications(true); - cy.emit(e); // we missed this event by turning notifications off, so pass it on - - cy.one('load', onload); - cy.emitAndNotify('load'); - }).one('layoutstop', function () { - cy.one('done', ondone); - cy.emit('done'); - }); - var layoutOpts = extend({}, cy._private.options.layout); - layoutOpts.eles = cy.elements(); - cy.layout(layoutOpts).run(); - }; - - loadExtData([options.style, options.elements], function (thens) { - var initStyle = thens[0]; - var initEles = thens[1]; // init style - - if (_p.styleEnabled) { - cy.style().append(initStyle); - } // initial load - - - setElesAndLayout(initEles, function () { - // onready - cy.startAnimationLoop(); - _p.ready = true; // if a ready callback is specified as an option, the bind it - - if (fn(options.ready)) { - cy.on('ready', options.ready); - } // bind all the ready handlers registered before creating this instance - - - for (var i = 0; i < readies.length; i++) { - var fn$1 = readies[i]; - cy.on('ready', fn$1); - } - - if (reg) { - reg.readies = []; - } // clear b/c we've bound them all and don't want to keep it around in case a new core uses the same div etc - - - cy.emit('ready'); - }, options.done); - }); -}; - -var corefn$9 = Core.prototype; // short alias - -extend(corefn$9, { - instanceString: function instanceString() { - return 'core'; - }, - isReady: function isReady() { - return this._private.ready; - }, - destroyed: function destroyed() { - return this._private.destroyed; - }, - ready: function ready(fn) { - if (this.isReady()) { - this.emitter().emit('ready', [], fn); // just calls fn as though triggered via ready event - } else { - this.on('ready', fn); - } - - return this; - }, - destroy: function destroy() { - var cy = this; - if (cy.destroyed()) return; - cy.stopAnimationLoop(); - cy.destroyRenderer(); - this.emit('destroy'); - cy._private.destroyed = true; - return cy; - }, - hasElementWithId: function hasElementWithId(id) { - return this._private.elements.hasElementWithId(id); - }, - getElementById: function getElementById(id) { - return this._private.elements.getElementById(id); - }, - hasCompoundNodes: function hasCompoundNodes() { - return this._private.hasCompoundNodes; - }, - headless: function headless() { - return this._private.renderer.isHeadless(); - }, - styleEnabled: function styleEnabled() { - return this._private.styleEnabled; - }, - addToPool: function addToPool(eles) { - this._private.elements.merge(eles); - - return this; // chaining - }, - removeFromPool: function removeFromPool(eles) { - this._private.elements.unmerge(eles); - - return this; - }, - container: function container() { - return this._private.container || null; - }, - mount: function mount(container) { - if (container == null) { - return; - } - - var cy = this; - var _p = cy._private; - var options = _p.options; - - if (!htmlElement(container) && htmlElement(container[0])) { - container = container[0]; - } - - cy.stopAnimationLoop(); - cy.destroyRenderer(); - _p.container = container; - _p.styleEnabled = true; - cy.invalidateSize(); - cy.initRenderer(extend({}, options, options.renderer, { - // allow custom renderer name to be re-used, otherwise use canvas - name: options.renderer.name === 'null' ? 'canvas' : options.renderer.name - })); - cy.startAnimationLoop(); - cy.style(options.style); - cy.emit('mount'); - return cy; - }, - unmount: function unmount() { - var cy = this; - cy.stopAnimationLoop(); - cy.destroyRenderer(); - cy.initRenderer({ - name: 'null' - }); - cy.emit('unmount'); - return cy; - }, - options: function options() { - return copy(this._private.options); - }, - json: function json(obj) { - var cy = this; - var _p = cy._private; - var eles = cy.mutableElements(); - - var getFreshRef = function getFreshRef(ele) { - return cy.getElementById(ele.id()); - }; - - if (plainObject(obj)) { - // set - cy.startBatch(); - - if (obj.elements) { - var idInJson = {}; - - var updateEles = function updateEles(jsons, gr) { - var toAdd = []; - var toMod = []; - - for (var i = 0; i < jsons.length; i++) { - var json = jsons[i]; - var id = '' + json.data.id; // id must be string - - var ele = cy.getElementById(id); - idInJson[id] = true; - - if (ele.length !== 0) { - // existing element should be updated - toMod.push({ - ele: ele, - json: json - }); - } else { - // otherwise should be added - if (gr) { - json.group = gr; - toAdd.push(json); - } else { - toAdd.push(json); - } - } - } - - cy.add(toAdd); - - for (var _i = 0; _i < toMod.length; _i++) { - var _toMod$_i = toMod[_i], - _ele = _toMod$_i.ele, - _json = _toMod$_i.json; - - _ele.json(_json); - } - }; - - if (array(obj.elements)) { - // elements: [] - updateEles(obj.elements); - } else { - // elements: { nodes: [], edges: [] } - var grs = ['nodes', 'edges']; - - for (var i = 0; i < grs.length; i++) { - var gr = grs[i]; - var elements = obj.elements[gr]; - - if (array(elements)) { - updateEles(elements, gr); - } - } - } - - var parentsToRemove = cy.collection(); - eles.filter(function (ele) { - return !idInJson[ele.id()]; - }).forEach(function (ele) { - if (ele.isParent()) { - parentsToRemove.merge(ele); - } else { - ele.remove(); - } - }); // so that children are not removed w/parent - - parentsToRemove.forEach(function (ele) { - return ele.children().move({ - parent: null - }); - }); // intermediate parents may be moved by prior line, so make sure we remove by fresh refs - - parentsToRemove.forEach(function (ele) { - return getFreshRef(ele).remove(); - }); - } - - if (obj.style) { - cy.style(obj.style); - } - - if (obj.zoom != null && obj.zoom !== _p.zoom) { - cy.zoom(obj.zoom); - } - - if (obj.pan) { - if (obj.pan.x !== _p.pan.x || obj.pan.y !== _p.pan.y) { - cy.pan(obj.pan); - } - } - - if (obj.data) { - cy.data(obj.data); - } - - var fields = ['minZoom', 'maxZoom', 'zoomingEnabled', 'userZoomingEnabled', 'panningEnabled', 'userPanningEnabled', 'boxSelectionEnabled', 'autolock', 'autoungrabify', 'autounselectify']; - - for (var _i2 = 0; _i2 < fields.length; _i2++) { - var f = fields[_i2]; - - if (obj[f] != null) { - cy[f](obj[f]); - } - } - - cy.endBatch(); - return this; // chaining - } else { - // get - var flat = !!obj; - var json = {}; - - if (flat) { - json.elements = this.elements().map(function (ele) { - return ele.json(); - }); - } else { - json.elements = {}; - eles.forEach(function (ele) { - var group = ele.group(); - - if (!json.elements[group]) { - json.elements[group] = []; - } - - json.elements[group].push(ele.json()); - }); - } - - if (this._private.styleEnabled) { - json.style = cy.style().json(); - } - - json.data = copy(cy.data()); - var options = _p.options; - json.zoomingEnabled = _p.zoomingEnabled; - json.userZoomingEnabled = _p.userZoomingEnabled; - json.zoom = _p.zoom; - json.minZoom = _p.minZoom; - json.maxZoom = _p.maxZoom; - json.panningEnabled = _p.panningEnabled; - json.userPanningEnabled = _p.userPanningEnabled; - json.pan = copy(_p.pan); - json.boxSelectionEnabled = _p.boxSelectionEnabled; - json.renderer = copy(options.renderer); - json.hideEdgesOnViewport = options.hideEdgesOnViewport; - json.textureOnViewport = options.textureOnViewport; - json.wheelSensitivity = options.wheelSensitivity; - json.motionBlur = options.motionBlur; - return json; - } - } -}); -corefn$9.$id = corefn$9.getElementById; -[corefn, corefn$1, elesfn$v, corefn$2, corefn$3, corefn$4, corefn$5, corefn$6, corefn$7, corefn$8, fn$6].forEach(function (props) { - extend(corefn$9, props); -}); - -/* eslint-disable no-unused-vars */ - -var defaults$9 = { - fit: true, - // whether to fit the viewport to the graph - directed: false, - // whether the tree is directed downwards (or edges can point in any direction if false) - padding: 30, - // padding on fit - circle: false, - // put depths in concentric circles if true, put depths top down if false - grid: false, - // whether to create an even grid into which the DAG is placed (circle:false only) - spacingFactor: 1.75, - // positive spacing factor, larger => more space between nodes (N.B. n/a if causes overlap) - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - roots: undefined, - // the roots of the trees - maximal: false, - // whether to shift nodes down their natural BFS depths in order to avoid upwards edges (DAGS only) - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled, - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; -/* eslint-enable */ - -var getInfo = function getInfo(ele) { - return ele.scratch('breadthfirst'); -}; - -var setInfo = function setInfo(ele, obj) { - return ele.scratch('breadthfirst', obj); -}; - -function BreadthFirstLayout(options) { - this.options = extend({}, defaults$9, options); -} - -BreadthFirstLayout.prototype.run = function () { - var params = this.options; - var options = params; - var cy = params.cy; - var eles = options.eles; - var nodes = eles.nodes().filter(function (n) { - return !n.isParent(); - }); - var graph = eles; - var directed = options.directed; - var maximal = options.maximal || options.maximalAdjustments > 0; // maximalAdjustments for compat. w/ old code - - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var roots; - - if (elementOrCollection(options.roots)) { - roots = options.roots; - } else if (array(options.roots)) { - var rootsArray = []; - - for (var i = 0; i < options.roots.length; i++) { - var id = options.roots[i]; - var ele = cy.getElementById(id); - rootsArray.push(ele); - } - - roots = cy.collection(rootsArray); - } else if (string(options.roots)) { - roots = cy.$(options.roots); - } else { - if (directed) { - roots = nodes.roots(); - } else { - var components = eles.components(); - roots = cy.collection(); - - var _loop = function _loop(_i) { - var comp = components[_i]; - var maxDegree = comp.maxDegree(false); - var compRoots = comp.filter(function (ele) { - return ele.degree(false) === maxDegree; - }); - roots = roots.add(compRoots); - }; - - for (var _i = 0; _i < components.length; _i++) { - _loop(_i); - } - } - } - - var depths = []; - var foundByBfs = {}; - - var addToDepth = function addToDepth(ele, d) { - if (depths[d] == null) { - depths[d] = []; - } - - var i = depths[d].length; - depths[d].push(ele); - setInfo(ele, { - index: i, - depth: d - }); - }; - - var changeDepth = function changeDepth(ele, newDepth) { - var _getInfo = getInfo(ele), - depth = _getInfo.depth, - index = _getInfo.index; - - depths[depth][index] = null; - addToDepth(ele, newDepth); - }; // find the depths of the nodes - - - graph.bfs({ - roots: roots, - directed: options.directed, - visit: function visit(node, edge, pNode, i, depth) { - var ele = node[0]; - var id = ele.id(); - addToDepth(ele, depth); - foundByBfs[id] = true; - } - }); // check for nodes not found by bfs - - var orphanNodes = []; - - for (var _i2 = 0; _i2 < nodes.length; _i2++) { - var _ele = nodes[_i2]; - - if (foundByBfs[_ele.id()]) { - continue; - } else { - orphanNodes.push(_ele); - } - } // assign the nodes a depth and index - - - var assignDepthsAt = function assignDepthsAt(i) { - var eles = depths[i]; - - for (var j = 0; j < eles.length; j++) { - var _ele2 = eles[j]; - - if (_ele2 == null) { - eles.splice(j, 1); - j--; - continue; - } - - setInfo(_ele2, { - depth: i, - index: j - }); - } - }; - - var assignDepths = function assignDepths() { - for (var _i3 = 0; _i3 < depths.length; _i3++) { - assignDepthsAt(_i3); - } - }; - - var adjustMaximally = function adjustMaximally(ele, shifted) { - var eInfo = getInfo(ele); - var incomers = ele.incomers().filter(function (el) { - return el.isNode() && eles.has(el); - }); - var maxDepth = -1; - var id = ele.id(); - - for (var k = 0; k < incomers.length; k++) { - var incmr = incomers[k]; - var iInfo = getInfo(incmr); - maxDepth = Math.max(maxDepth, iInfo.depth); - } - - if (eInfo.depth <= maxDepth) { - if (shifted[id]) { - return null; - } - - changeDepth(ele, maxDepth + 1); - shifted[id] = true; - return true; - } - - return false; - }; // for the directed case, try to make the edges all go down (i.e. depth i => depth i + 1) - - - if (directed && maximal) { - var Q = []; - var shifted = {}; - - var enqueue = function enqueue(n) { - return Q.push(n); - }; - - var dequeue = function dequeue() { - return Q.shift(); - }; - - nodes.forEach(function (n) { - return Q.push(n); - }); - - while (Q.length > 0) { - var _ele3 = dequeue(); - - var didShift = adjustMaximally(_ele3, shifted); - - if (didShift) { - _ele3.outgoers().filter(function (el) { - return el.isNode() && eles.has(el); - }).forEach(enqueue); - } else if (didShift === null) { - warn('Detected double maximal shift for node `' + _ele3.id() + '`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.'); - break; // exit on failure - } - } - } - - assignDepths(); // clear holes - // find min distance we need to leave between nodes - - var minDistance = 0; - - if (options.avoidOverlap) { - for (var _i4 = 0; _i4 < nodes.length; _i4++) { - var n = nodes[_i4]; - var nbb = n.layoutDimensions(options); - var w = nbb.w; - var h = nbb.h; - minDistance = Math.max(minDistance, w, h); - } - } // get the weighted percent for an element based on its connectivity to other levels - - - var cachedWeightedPercent = {}; - - var getWeightedPercent = function getWeightedPercent(ele) { - if (cachedWeightedPercent[ele.id()]) { - return cachedWeightedPercent[ele.id()]; - } - - var eleDepth = getInfo(ele).depth; - var neighbors = ele.neighborhood(); - var percent = 0; - var samples = 0; - - for (var _i5 = 0; _i5 < neighbors.length; _i5++) { - var neighbor = neighbors[_i5]; - - if (neighbor.isEdge() || neighbor.isParent() || !nodes.has(neighbor)) { - continue; - } - - var bf = getInfo(neighbor); - var index = bf.index; - var depth = bf.depth; // unassigned neighbours shouldn't affect the ordering - - if (index == null || depth == null) { - continue; - } - - var nDepth = depths[depth].length; - - if (depth < eleDepth) { - // only get influenced by elements above - percent += index / nDepth; - samples++; - } - } - - samples = Math.max(1, samples); - percent = percent / samples; - - if (samples === 0) { - // put lone nodes at the start - percent = 0; - } - - cachedWeightedPercent[ele.id()] = percent; - return percent; - }; // rearrange the indices in each depth level based on connectivity - - - var sortFn = function sortFn(a, b) { - var apct = getWeightedPercent(a); - var bpct = getWeightedPercent(b); - var diff = apct - bpct; - - if (diff === 0) { - return ascending(a.id(), b.id()); // make sure sort doesn't have don't-care comparisons - } else { - return diff; - } - }; // sort each level to make connected nodes closer - - - for (var _i6 = 0; _i6 < depths.length; _i6++) { - depths[_i6].sort(sortFn); - - assignDepthsAt(_i6); - } // assign orphan nodes to a new top-level depth - - - var orphanDepth = []; - - for (var _i7 = 0; _i7 < orphanNodes.length; _i7++) { - orphanDepth.push(orphanNodes[_i7]); - } - - depths.unshift(orphanDepth); - assignDepths(); - var biggestDepthSize = 0; - - for (var _i8 = 0; _i8 < depths.length; _i8++) { - biggestDepthSize = Math.max(depths[_i8].length, biggestDepthSize); - } - - var center = { - x: bb.x1 + bb.w / 2, - y: bb.x1 + bb.h / 2 - }; - var maxDepthSize = depths.reduce(function (max, eles) { - return Math.max(max, eles.length); - }, 0); - - var getPosition = function getPosition(ele) { - var _getInfo2 = getInfo(ele), - depth = _getInfo2.depth, - index = _getInfo2.index; - - var depthSize = depths[depth].length; - var distanceX = Math.max(bb.w / ((options.grid ? maxDepthSize : depthSize) + 1), minDistance); - var distanceY = Math.max(bb.h / (depths.length + 1), minDistance); - var radiusStepSize = Math.min(bb.w / 2 / depths.length, bb.h / 2 / depths.length); - radiusStepSize = Math.max(radiusStepSize, minDistance); - - if (!options.circle) { - var epos = { - x: center.x + (index + 1 - (depthSize + 1) / 2) * distanceX, - y: (depth + 1) * distanceY - }; - return epos; - } else { - var radius = radiusStepSize * depth + radiusStepSize - (depths.length > 0 && depths[0].length <= 3 ? radiusStepSize / 2 : 0); - var theta = 2 * Math.PI / depths[depth].length * index; - - if (depth === 0 && depths[0].length === 1) { - radius = 1; - } - - return { - x: center.x + radius * Math.cos(theta), - y: center.y + radius * Math.sin(theta) - }; - } - }; - - nodes.layoutPositions(this, options, getPosition); - return this; // chaining -}; - -var defaults$a = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // the padding on fit - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox and radius if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - radius: undefined, - // the radius of the circle - startAngle: 3 / 2 * Math.PI, - // where nodes start in radians - sweep: undefined, - // how many radians should be between the first and last node (defaults to full circle) - clockwise: true, - // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) - sort: undefined, - // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function CircleLayout(options) { - this.options = extend({}, defaults$a, options); -} - -CircleLayout.prototype.run = function () { - var params = this.options; - var options = params; - var cy = params.cy; - var eles = options.eles; - var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; - var nodes = eles.nodes().not(':parent'); - - if (options.sort) { - nodes = nodes.sort(options.sort); - } - - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var center = { - x: bb.x1 + bb.w / 2, - y: bb.y1 + bb.h / 2 - }; - var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / nodes.length : options.sweep; - var dTheta = sweep / Math.max(1, nodes.length - 1); - var r; - var minDistance = 0; - - for (var i = 0; i < nodes.length; i++) { - var n = nodes[i]; - var nbb = n.layoutDimensions(options); - var w = nbb.w; - var h = nbb.h; - minDistance = Math.max(minDistance, w, h); - } - - if (number(options.radius)) { - r = options.radius; - } else if (nodes.length <= 1) { - r = 0; - } else { - r = Math.min(bb.h, bb.w) / 2 - minDistance; - } // calculate the radius - - - if (nodes.length > 1 && options.avoidOverlap) { - // but only if more than one node (can't overlap) - minDistance *= 1.75; // just to have some nice spacing - - var dcos = Math.cos(dTheta) - Math.cos(0); - var dsin = Math.sin(dTheta) - Math.sin(0); - var rMin = Math.sqrt(minDistance * minDistance / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping - - r = Math.max(rMin, r); - } - - var getPos = function getPos(ele, i) { - var theta = options.startAngle + i * dTheta * (clockwise ? 1 : -1); - var rx = r * Math.cos(theta); - var ry = r * Math.sin(theta); - var pos = { - x: center.x + rx, - y: center.y + ry - }; - return pos; - }; - - nodes.layoutPositions(this, options, getPos); - return this; // chaining -}; - -var defaults$b = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // the padding on fit - startAngle: 3 / 2 * Math.PI, - // where nodes start in radians - sweep: undefined, - // how many radians should be between the first and last node (defaults to full circle) - clockwise: true, - // whether the layout should go clockwise (true) or counterclockwise/anticlockwise (false) - equidistant: false, - // whether levels have an equal radial distance betwen them, may cause bounding box overflow - minNodeSpacing: 10, - // min spacing between outside of nodes (used for radius adjustment) - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - height: undefined, - // height of layout area (overrides container height) - width: undefined, - // width of layout area (overrides container width) - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - concentric: function concentric(node) { - // returns numeric value for each node, placing higher nodes in levels towards the centre - return node.degree(); - }, - levelWidth: function levelWidth(nodes) { - // the variation of concentric values in each level - return nodes.maxDegree() / 4; - }, - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function ConcentricLayout(options) { - this.options = extend({}, defaults$b, options); -} - -ConcentricLayout.prototype.run = function () { - var params = this.options; - var options = params; - var clockwise = options.counterclockwise !== undefined ? !options.counterclockwise : options.clockwise; - var cy = params.cy; - var eles = options.eles; - var nodes = eles.nodes().not(':parent'); - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - var center = { - x: bb.x1 + bb.w / 2, - y: bb.y1 + bb.h / 2 - }; - var nodeValues = []; // { node, value } - - var maxNodeSize = 0; - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var value = void 0; // calculate the node value - - value = options.concentric(node); - nodeValues.push({ - value: value, - node: node - }); // for style mapping - - node._private.scratch.concentric = value; - } // in case we used the `concentric` in style - - - nodes.updateStyle(); // calculate max size now based on potentially updated mappers - - for (var _i = 0; _i < nodes.length; _i++) { - var _node = nodes[_i]; - - var nbb = _node.layoutDimensions(options); - - maxNodeSize = Math.max(maxNodeSize, nbb.w, nbb.h); - } // sort node values in descreasing order - - - nodeValues.sort(function (a, b) { - return b.value - a.value; - }); - var levelWidth = options.levelWidth(nodes); // put the values into levels - - var levels = [[]]; - var currentLevel = levels[0]; - - for (var _i2 = 0; _i2 < nodeValues.length; _i2++) { - var val = nodeValues[_i2]; - - if (currentLevel.length > 0) { - var diff = Math.abs(currentLevel[0].value - val.value); - - if (diff >= levelWidth) { - currentLevel = []; - levels.push(currentLevel); - } - } - - currentLevel.push(val); - } // create positions from levels - - - var minDist = maxNodeSize + options.minNodeSpacing; // min dist between nodes - - if (!options.avoidOverlap) { - // then strictly constrain to bb - var firstLvlHasMulti = levels.length > 0 && levels[0].length > 1; - var maxR = Math.min(bb.w, bb.h) / 2 - minDist; - var rStep = maxR / (levels.length + firstLvlHasMulti ? 1 : 0); - minDist = Math.min(minDist, rStep); - } // find the metrics for each level - - - var r = 0; - - for (var _i3 = 0; _i3 < levels.length; _i3++) { - var level = levels[_i3]; - var sweep = options.sweep === undefined ? 2 * Math.PI - 2 * Math.PI / level.length : options.sweep; - var dTheta = level.dTheta = sweep / Math.max(1, level.length - 1); // calculate the radius - - if (level.length > 1 && options.avoidOverlap) { - // but only if more than one node (can't overlap) - var dcos = Math.cos(dTheta) - Math.cos(0); - var dsin = Math.sin(dTheta) - Math.sin(0); - var rMin = Math.sqrt(minDist * minDist / (dcos * dcos + dsin * dsin)); // s.t. no nodes overlapping - - r = Math.max(rMin, r); - } - - level.r = r; - r += minDist; - } - - if (options.equidistant) { - var rDeltaMax = 0; - var _r = 0; - - for (var _i4 = 0; _i4 < levels.length; _i4++) { - var _level = levels[_i4]; - var rDelta = _level.r - _r; - rDeltaMax = Math.max(rDeltaMax, rDelta); - } - - _r = 0; - - for (var _i5 = 0; _i5 < levels.length; _i5++) { - var _level2 = levels[_i5]; - - if (_i5 === 0) { - _r = _level2.r; - } - - _level2.r = _r; - _r += rDeltaMax; - } - } // calculate the node positions - - - var pos = {}; // id => position - - for (var _i6 = 0; _i6 < levels.length; _i6++) { - var _level3 = levels[_i6]; - var _dTheta = _level3.dTheta; - var _r2 = _level3.r; - - for (var j = 0; j < _level3.length; j++) { - var _val = _level3[j]; - var theta = options.startAngle + (clockwise ? 1 : -1) * _dTheta * j; - var p = { - x: center.x + _r2 * Math.cos(theta), - y: center.y + _r2 * Math.sin(theta) - }; - pos[_val.node.id()] = p; - } - } // position the nodes - - - nodes.layoutPositions(this, options, function (ele) { - var id = ele.id(); - return pos[id]; - }); - return this; // chaining -}; - -/* -The CoSE layout was written by Gerardo Huck. -https://www.linkedin.com/in/gerardohuck/ - -Based on the following article: -http://dl.acm.org/citation.cfm?id=1498047 - -Modifications tracked on Github. -*/ -var DEBUG; -/** - * @brief : default layout options - */ - -var defaults$c = { - // Called on `layoutready` - ready: function ready() {}, - // Called on `layoutstop` - stop: function stop() {}, - // Whether to animate while running the layout - // true : Animate continuously as the layout is running - // false : Just show the end result - // 'end' : Animate with the end result, from the initial positions to the end positions - animate: true, - // Easing of the animation for animate:'end' - animationEasing: undefined, - // The duration of the animation for animate:'end' - animationDuration: undefined, - // A function that determines whether the node should be animated - // All nodes animated by default on animate enabled - // Non-animated nodes are positioned immediately when the layout starts - animateFilter: function animateFilter(node, i) { - return true; - }, - // The layout animates only after this many milliseconds for animate:true - // (prevents flashing on fast runs) - animationThreshold: 250, - // Number of iterations between consecutive screen positions update - refresh: 20, - // Whether to fit the network view after when done - fit: true, - // Padding on fit - padding: 30, - // Constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - boundingBox: undefined, - // Excludes the label when calculating node bounding boxes for the layout algorithm - nodeDimensionsIncludeLabels: false, - // Randomize the initial positions of the nodes (true) or use existing positions (false) - randomize: false, - // Extra spacing between components in non-compound graphs - componentSpacing: 40, - // Node repulsion (non overlapping) multiplier - nodeRepulsion: function nodeRepulsion(node) { - return 2048; - }, - // Node repulsion (overlapping) multiplier - nodeOverlap: 4, - // Ideal edge (non nested) length - idealEdgeLength: function idealEdgeLength(edge) { - return 32; - }, - // Divisor to compute edge forces - edgeElasticity: function edgeElasticity(edge) { - return 32; - }, - // Nesting factor (multiplier) to compute ideal edge length for nested edges - nestingFactor: 1.2, - // Gravity force (constant) - gravity: 1, - // Maximum number of iterations to perform - numIter: 1000, - // Initial temperature (maximum node displacement) - initialTemp: 1000, - // Cooling factor (how the temperature is reduced between consecutive iterations - coolingFactor: 0.99, - // Lower temperature threshold (below this point the layout will end) - minTemp: 1.0 -}; -/** - * @brief : constructor - * @arg options : object containing layout options - */ - -function CoseLayout(options) { - this.options = extend({}, defaults$c, options); - this.options.layout = this; -} -/** - * @brief : runs the layout - */ - - -CoseLayout.prototype.run = function () { - var options = this.options; - var cy = options.cy; - var layout = this; - layout.stopped = false; - - if (options.animate === true || options.animate === false) { - layout.emit({ - type: 'layoutstart', - layout: layout - }); - } // Set DEBUG - Global variable - - - if (true === options.debug) { - DEBUG = true; - } else { - DEBUG = false; - } // Initialize layout info - - - var layoutInfo = createLayoutInfo(cy, layout, options); // Show LayoutInfo contents if debugging - - if (DEBUG) { - printLayoutInfo(layoutInfo); - } // If required, randomize node positions - - - if (options.randomize) { - randomizePositions(layoutInfo); - } - - var startTime = performanceNow(); - - var refresh = function refresh() { - refreshPositions(layoutInfo, cy, options); // Fit the graph if necessary - - if (true === options.fit) { - cy.fit(options.padding); - } - }; - - var mainLoop = function mainLoop(i) { - if (layout.stopped || i >= options.numIter) { - // logDebug("Layout manually stopped. Stopping computation in step " + i); - return false; - } // Do one step in the phisical simulation - - - step$1(layoutInfo, options); // Update temperature - - layoutInfo.temperature = layoutInfo.temperature * options.coolingFactor; // logDebug("New temperature: " + layoutInfo.temperature); - - if (layoutInfo.temperature < options.minTemp) { - // logDebug("Temperature drop below minimum threshold. Stopping computation in step " + i); - return false; - } - - return true; - }; - - var done = function done() { - if (options.animate === true || options.animate === false) { - refresh(); // Layout has finished - - layout.one('layoutstop', options.stop); - layout.emit({ - type: 'layoutstop', - layout: layout - }); - } else { - var nodes = options.eles.nodes(); - var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); - nodes.layoutPositions(layout, options, getScaledPos); - } - }; - - var i = 0; - var loopRet = true; - - if (options.animate === true) { - var frame = function frame() { - var f = 0; - - while (loopRet && f < options.refresh) { - loopRet = mainLoop(i); - i++; - f++; - } - - if (!loopRet) { - // it's done - separateComponents(layoutInfo, options); - done(); - } else { - var now = performanceNow(); - - if (now - startTime >= options.animationThreshold) { - refresh(); - } - - requestAnimationFrame(frame); - } - }; - - frame(); - } else { - while (loopRet) { - loopRet = mainLoop(i); - i++; - } - - separateComponents(layoutInfo, options); - done(); - } - - return this; // chaining -}; -/** - * @brief : called on continuous layouts to stop them before they finish - */ - - -CoseLayout.prototype.stop = function () { - this.stopped = true; - - if (this.thread) { - this.thread.stop(); - } - - this.emit('layoutstop'); - return this; // chaining -}; - -CoseLayout.prototype.destroy = function () { - if (this.thread) { - this.thread.stop(); - } - - return this; // chaining -}; -/** - * @brief : Creates an object which is contains all the data - * used in the layout process - * @arg cy : cytoscape.js object - * @return : layoutInfo object initialized - */ - - -var createLayoutInfo = function createLayoutInfo(cy, layout, options) { - // Shortcut - var edges = options.eles.edges(); - var nodes = options.eles.nodes(); - var layoutInfo = { - isCompound: cy.hasCompoundNodes(), - layoutNodes: [], - idToIndex: {}, - nodeSize: nodes.size(), - graphSet: [], - indexToGraph: [], - layoutEdges: [], - edgeSize: edges.size(), - temperature: options.initialTemp, - clientWidth: cy.width(), - clientHeight: cy.width(), - boundingBox: makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }) - }; - var components = options.eles.components(); - var id2cmptId = {}; - - for (var i = 0; i < components.length; i++) { - var component = components[i]; - - for (var j = 0; j < component.length; j++) { - var node = component[j]; - id2cmptId[node.id()] = i; - } - } // Iterate over all nodes, creating layout nodes - - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = nodes[i]; - var nbb = n.layoutDimensions(options); - var tempNode = {}; - tempNode.isLocked = n.locked(); - tempNode.id = n.data('id'); - tempNode.parentId = n.data('parent'); - tempNode.cmptId = id2cmptId[n.id()]; - tempNode.children = []; - tempNode.positionX = n.position('x'); - tempNode.positionY = n.position('y'); - tempNode.offsetX = 0; - tempNode.offsetY = 0; - tempNode.height = nbb.w; - tempNode.width = nbb.h; - tempNode.maxX = tempNode.positionX + tempNode.width / 2; - tempNode.minX = tempNode.positionX - tempNode.width / 2; - tempNode.maxY = tempNode.positionY + tempNode.height / 2; - tempNode.minY = tempNode.positionY - tempNode.height / 2; - tempNode.padLeft = parseFloat(n.style('padding')); - tempNode.padRight = parseFloat(n.style('padding')); - tempNode.padTop = parseFloat(n.style('padding')); - tempNode.padBottom = parseFloat(n.style('padding')); // forces - - tempNode.nodeRepulsion = fn(options.nodeRepulsion) ? options.nodeRepulsion(n) : options.nodeRepulsion; // Add new node - - layoutInfo.layoutNodes.push(tempNode); // Add entry to id-index map - - layoutInfo.idToIndex[tempNode.id] = i; - } // Inline implementation of a queue, used for traversing the graph in BFS order - - - var queue = []; - var start = 0; // Points to the start the queue - - var end = -1; // Points to the end of the queue - - var tempGraph = []; // Second pass to add child information and - // initialize queue for hierarchical traversal - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - var p_id = n.parentId; // Check if node n has a parent node - - if (null != p_id) { - // Add node Id to parent's list of children - layoutInfo.layoutNodes[layoutInfo.idToIndex[p_id]].children.push(n.id); - } else { - // If a node doesn't have a parent, then it's in the root graph - queue[++end] = n.id; - tempGraph.push(n.id); - } - } // Add root graph to graphSet - - - layoutInfo.graphSet.push(tempGraph); // Traverse the graph, level by level, - - while (start <= end) { - // Get the node to visit and remove it from queue - var node_id = queue[start++]; - var node_ix = layoutInfo.idToIndex[node_id]; - var node = layoutInfo.layoutNodes[node_ix]; - var children = node.children; - - if (children.length > 0) { - // Add children nodes as a new graph to graph set - layoutInfo.graphSet.push(children); // Add children to que queue to be visited - - for (var i = 0; i < children.length; i++) { - queue[++end] = children[i]; - } - } - } // Create indexToGraph map - - - for (var i = 0; i < layoutInfo.graphSet.length; i++) { - var graph = layoutInfo.graphSet[i]; - - for (var j = 0; j < graph.length; j++) { - var index = layoutInfo.idToIndex[graph[j]]; - layoutInfo.indexToGraph[index] = i; - } - } // Iterate over all edges, creating Layout Edges - - - for (var i = 0; i < layoutInfo.edgeSize; i++) { - var e = edges[i]; - var tempEdge = {}; - tempEdge.id = e.data('id'); - tempEdge.sourceId = e.data('source'); - tempEdge.targetId = e.data('target'); // Compute ideal length - - var idealLength = fn(options.idealEdgeLength) ? options.idealEdgeLength(e) : options.idealEdgeLength; - var elasticity = fn(options.edgeElasticity) ? options.edgeElasticity(e) : options.edgeElasticity; // Check if it's an inter graph edge - - var sourceIx = layoutInfo.idToIndex[tempEdge.sourceId]; - var targetIx = layoutInfo.idToIndex[tempEdge.targetId]; - var sourceGraph = layoutInfo.indexToGraph[sourceIx]; - var targetGraph = layoutInfo.indexToGraph[targetIx]; - - if (sourceGraph != targetGraph) { - // Find lowest common graph ancestor - var lca = findLCA(tempEdge.sourceId, tempEdge.targetId, layoutInfo); // Compute sum of node depths, relative to lca graph - - var lcaGraph = layoutInfo.graphSet[lca]; - var depth = 0; // Source depth - - var tempNode = layoutInfo.layoutNodes[sourceIx]; - - while (-1 === lcaGraph.indexOf(tempNode.id)) { - tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; - depth++; - } // Target depth - - - tempNode = layoutInfo.layoutNodes[targetIx]; - - while (-1 === lcaGraph.indexOf(tempNode.id)) { - tempNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[tempNode.parentId]]; - depth++; - } // logDebug('LCA of nodes ' + tempEdge.sourceId + ' and ' + tempEdge.targetId + - // ". Index: " + lca + " Contents: " + lcaGraph.toString() + - // ". Depth: " + depth); - // Update idealLength - - - idealLength *= depth * options.nestingFactor; - } - - tempEdge.idealLength = idealLength; - tempEdge.elasticity = elasticity; - layoutInfo.layoutEdges.push(tempEdge); - } // Finally, return layoutInfo object - - - return layoutInfo; -}; -/** - * @brief : This function finds the index of the lowest common - * graph ancestor between 2 nodes in the subtree - * (from the graph hierarchy induced tree) whose - * root is graphIx - * - * @arg node1: node1's ID - * @arg node2: node2's ID - * @arg layoutInfo: layoutInfo object - * - */ - - -var findLCA = function findLCA(node1, node2, layoutInfo) { - // Find their common ancester, starting from the root graph - var res = findLCA_aux(node1, node2, 0, layoutInfo); - - if (2 > res.count) { - // If aux function couldn't find the common ancester, - // then it is the root graph - return 0; - } else { - return res.graph; - } -}; -/** - * @brief : Auxiliary function used for LCA computation - * - * @arg node1 : node1's ID - * @arg node2 : node2's ID - * @arg graphIx : subgraph index - * @arg layoutInfo : layoutInfo object - * - * @return : object of the form {count: X, graph: Y}, where: - * X is the number of ancesters (max: 2) found in - * graphIx (and it's subgraphs), - * Y is the graph index of the lowest graph containing - * all X nodes - */ - - -var findLCA_aux = function findLCA_aux(node1, node2, graphIx, layoutInfo) { - var graph = layoutInfo.graphSet[graphIx]; // If both nodes belongs to graphIx - - if (-1 < graph.indexOf(node1) && -1 < graph.indexOf(node2)) { - return { - count: 2, - graph: graphIx - }; - } // Make recursive calls for all subgraphs - - - var c = 0; - - for (var i = 0; i < graph.length; i++) { - var nodeId = graph[i]; - var nodeIx = layoutInfo.idToIndex[nodeId]; - var children = layoutInfo.layoutNodes[nodeIx].children; // If the node has no child, skip it - - if (0 === children.length) { - continue; - } - - var childGraphIx = layoutInfo.indexToGraph[layoutInfo.idToIndex[children[0]]]; - var result = findLCA_aux(node1, node2, childGraphIx, layoutInfo); - - if (0 === result.count) { - // Neither node1 nor node2 are present in this subgraph - continue; - } else if (1 === result.count) { - // One of (node1, node2) is present in this subgraph - c++; - - if (2 === c) { - // We've already found both nodes, no need to keep searching - break; - } - } else { - // Both nodes are present in this subgraph - return result; - } - } - - return { - count: c, - graph: graphIx - }; -}; -/** - * @brief: printsLayoutInfo into js console - * Only used for debbuging - */ - - -if (false) { - var printLayoutInfo; -} -/** - * @brief : Randomizes the position of all nodes - */ - - -var randomizePositions = function randomizePositions(layoutInfo, cy) { - var width = layoutInfo.clientWidth; - var height = layoutInfo.clientHeight; - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; // No need to randomize compound nodes or locked nodes - - if (0 === n.children.length && !n.isLocked) { - n.positionX = Math.random() * width; - n.positionY = Math.random() * height; - } - } -}; - -var getScaleInBoundsFn = function getScaleInBoundsFn(layoutInfo, options, nodes) { - var bb = layoutInfo.boundingBox; - var coseBB = { - x1: Infinity, - x2: -Infinity, - y1: Infinity, - y2: -Infinity - }; - - if (options.boundingBox) { - nodes.forEach(function (node) { - var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[node.data('id')]]; - coseBB.x1 = Math.min(coseBB.x1, lnode.positionX); - coseBB.x2 = Math.max(coseBB.x2, lnode.positionX); - coseBB.y1 = Math.min(coseBB.y1, lnode.positionY); - coseBB.y2 = Math.max(coseBB.y2, lnode.positionY); - }); - coseBB.w = coseBB.x2 - coseBB.x1; - coseBB.h = coseBB.y2 - coseBB.y1; - } - - return function (ele, i) { - var lnode = layoutInfo.layoutNodes[layoutInfo.idToIndex[ele.data('id')]]; - - if (options.boundingBox) { - // then add extra bounding box constraint - var pctX = (lnode.positionX - coseBB.x1) / coseBB.w; - var pctY = (lnode.positionY - coseBB.y1) / coseBB.h; - return { - x: bb.x1 + pctX * bb.w, - y: bb.y1 + pctY * bb.h - }; - } else { - return { - x: lnode.positionX, - y: lnode.positionY - }; - } - }; -}; -/** - * @brief : Updates the positions of nodes in the network - * @arg layoutInfo : LayoutInfo object - * @arg cy : Cytoscape object - * @arg options : Layout options - */ - - -var refreshPositions = function refreshPositions(layoutInfo, cy, options) { - // var s = 'Refreshing positions'; - // logDebug(s); - var layout = options.layout; - var nodes = options.eles.nodes(); - var getScaledPos = getScaleInBoundsFn(layoutInfo, options, nodes); - nodes.positions(getScaledPos); // Trigger layoutReady only on first call - - if (true !== layoutInfo.ready) { - // s = 'Triggering layoutready'; - // logDebug(s); - layoutInfo.ready = true; - layout.one('layoutready', options.ready); - layout.emit({ - type: 'layoutready', - layout: this - }); - } -}; -/** - * @brief : Logs a debug message in JS console, if DEBUG is ON - */ -// var logDebug = function(text) { -// if (DEBUG) { -// console.debug(text); -// } -// }; - -/** - * @brief : Performs one iteration of the physical simulation - * @arg layoutInfo : LayoutInfo object already initialized - * @arg cy : Cytoscape object - * @arg options : Layout options - */ - - -var step$1 = function step(layoutInfo, options, _step) { - // var s = "\n\n###############################"; - // s += "\nSTEP: " + step; - // s += "\n###############################\n"; - // logDebug(s); - // Calculate node repulsions - calculateNodeForces(layoutInfo, options); // Calculate edge forces - - calculateEdgeForces(layoutInfo); // Calculate gravity forces - - calculateGravityForces(layoutInfo, options); // Propagate forces from parent to child - - propagateForces(layoutInfo); // Update positions based on calculated forces - - updatePositions(layoutInfo); -}; -/** - * @brief : Computes the node repulsion forces - */ - - -var calculateNodeForces = function calculateNodeForces(layoutInfo, options) { - // Go through each of the graphs in graphSet - // Nodes only repel each other if they belong to the same graph - // var s = 'calculateNodeForces'; - // logDebug(s); - for (var i = 0; i < layoutInfo.graphSet.length; i++) { - var graph = layoutInfo.graphSet[i]; - var numNodes = graph.length; // s = "Set: " + graph.toString(); - // logDebug(s); - // Now get all the pairs of nodes - // Only get each pair once, (A, B) = (B, A) - - for (var j = 0; j < numNodes; j++) { - var node1 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; - - for (var k = j + 1; k < numNodes; k++) { - var node2 = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[k]]]; - nodeRepulsion(node1, node2, layoutInfo, options); - } - } - } -}; - -var randomDistance = function randomDistance(max) { - return -max + 2 * max * Math.random(); -}; -/** - * @brief : Compute the node repulsion forces between a pair of nodes - */ - - -var nodeRepulsion = function nodeRepulsion(node1, node2, layoutInfo, options) { - // var s = "Node repulsion. Node1: " + node1.id + " Node2: " + node2.id; - var cmptId1 = node1.cmptId; - var cmptId2 = node2.cmptId; - - if (cmptId1 !== cmptId2 && !layoutInfo.isCompound) { - return; - } // Get direction of line connecting both node centers - - - var directionX = node2.positionX - node1.positionX; - var directionY = node2.positionY - node1.positionY; - var maxRandDist = 1; // s += "\ndirectionX: " + directionX + ", directionY: " + directionY; - // If both centers are the same, apply a random force - - if (0 === directionX && 0 === directionY) { - directionX = randomDistance(maxRandDist); - directionY = randomDistance(maxRandDist); - } - - var overlap = nodesOverlap(node1, node2, directionX, directionY); - - if (overlap > 0) { - // s += "\nNodes DO overlap."; - // s += "\nOverlap: " + overlap; - // If nodes overlap, repulsion force is proportional - // to the overlap - var force = options.nodeOverlap * overlap; // Compute the module and components of the force vector - - var distance = Math.sqrt(directionX * directionX + directionY * directionY); // s += "\nDistance: " + distance; - - var forceX = force * directionX / distance; - var forceY = force * directionY / distance; - } else { - // s += "\nNodes do NOT overlap."; - // If there's no overlap, force is inversely proportional - // to squared distance - // Get clipping points for both nodes - var point1 = findClippingPoint(node1, directionX, directionY); - var point2 = findClippingPoint(node2, -1 * directionX, -1 * directionY); // Use clipping points to compute distance - - var distanceX = point2.x - point1.x; - var distanceY = point2.y - point1.y; - var distanceSqr = distanceX * distanceX + distanceY * distanceY; - var distance = Math.sqrt(distanceSqr); // s += "\nDistance: " + distance; - // Compute the module and components of the force vector - - var force = (node1.nodeRepulsion + node2.nodeRepulsion) / distanceSqr; - var forceX = force * distanceX / distance; - var forceY = force * distanceY / distance; - } // Apply force - - - if (!node1.isLocked) { - node1.offsetX -= forceX; - node1.offsetY -= forceY; - } - - if (!node2.isLocked) { - node2.offsetX += forceX; - node2.offsetY += forceY; - } // s += "\nForceX: " + forceX + " ForceY: " + forceY; - // logDebug(s); - - - return; -}; -/** - * @brief : Determines whether two nodes overlap or not - * @return : Amount of overlapping (0 => no overlap) - */ - - -var nodesOverlap = function nodesOverlap(node1, node2, dX, dY) { - if (dX > 0) { - var overlapX = node1.maxX - node2.minX; - } else { - var overlapX = node2.maxX - node1.minX; - } - - if (dY > 0) { - var overlapY = node1.maxY - node2.minY; - } else { - var overlapY = node2.maxY - node1.minY; - } - - if (overlapX >= 0 && overlapY >= 0) { - return Math.sqrt(overlapX * overlapX + overlapY * overlapY); - } else { - return 0; - } -}; -/** - * @brief : Finds the point in which an edge (direction dX, dY) intersects - * the rectangular bounding box of it's source/target node - */ - - -var findClippingPoint = function findClippingPoint(node, dX, dY) { - // Shorcuts - var X = node.positionX; - var Y = node.positionY; - var H = node.height || 1; - var W = node.width || 1; - var dirSlope = dY / dX; - var nodeSlope = H / W; // var s = 'Computing clipping point of node ' + node.id + - // " . Height: " + H + ", Width: " + W + - // "\nDirection " + dX + ", " + dY; - // - // Compute intersection - - var res = {}; // Case: Vertical direction (up) - - if (0 === dX && 0 < dY) { - res.x = X; // s += "\nUp direction"; - - res.y = Y + H / 2; - return res; - } // Case: Vertical direction (down) - - - if (0 === dX && 0 > dY) { - res.x = X; - res.y = Y + H / 2; // s += "\nDown direction"; - - return res; - } // Case: Intersects the right border - - - if (0 < dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { - res.x = X + W / 2; - res.y = Y + W * dY / 2 / dX; // s += "\nRightborder"; - - return res; - } // Case: Intersects the left border - - - if (0 > dX && -1 * nodeSlope <= dirSlope && dirSlope <= nodeSlope) { - res.x = X - W / 2; - res.y = Y - W * dY / 2 / dX; // s += "\nLeftborder"; - - return res; - } // Case: Intersects the top border - - - if (0 < dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { - res.x = X + H * dX / 2 / dY; - res.y = Y + H / 2; // s += "\nTop border"; - - return res; - } // Case: Intersects the bottom border - - - if (0 > dY && (dirSlope <= -1 * nodeSlope || dirSlope >= nodeSlope)) { - res.x = X - H * dX / 2 / dY; - res.y = Y - H / 2; // s += "\nBottom border"; - - return res; - } // s += "\nClipping point found at " + res.x + ", " + res.y; - // logDebug(s); - - - return res; -}; -/** - * @brief : Calculates all edge forces - */ - - -var calculateEdgeForces = function calculateEdgeForces(layoutInfo, options) { - // Iterate over all edges - for (var i = 0; i < layoutInfo.edgeSize; i++) { - // Get edge, source & target nodes - var edge = layoutInfo.layoutEdges[i]; - var sourceIx = layoutInfo.idToIndex[edge.sourceId]; - var source = layoutInfo.layoutNodes[sourceIx]; - var targetIx = layoutInfo.idToIndex[edge.targetId]; - var target = layoutInfo.layoutNodes[targetIx]; // Get direction of line connecting both node centers - - var directionX = target.positionX - source.positionX; - var directionY = target.positionY - source.positionY; // If both centers are the same, do nothing. - // A random force has already been applied as node repulsion - - if (0 === directionX && 0 === directionY) { - continue; - } // Get clipping points for both nodes - - - var point1 = findClippingPoint(source, directionX, directionY); - var point2 = findClippingPoint(target, -1 * directionX, -1 * directionY); - var lx = point2.x - point1.x; - var ly = point2.y - point1.y; - var l = Math.sqrt(lx * lx + ly * ly); - var force = Math.pow(edge.idealLength - l, 2) / edge.elasticity; - - if (0 !== l) { - var forceX = force * lx / l; - var forceY = force * ly / l; - } else { - var forceX = 0; - var forceY = 0; - } // Add this force to target and source nodes - - - if (!source.isLocked) { - source.offsetX += forceX; - source.offsetY += forceY; - } - - if (!target.isLocked) { - target.offsetX -= forceX; - target.offsetY -= forceY; - } // var s = 'Edge force between nodes ' + source.id + ' and ' + target.id; - // s += "\nDistance: " + l + " Force: (" + forceX + ", " + forceY + ")"; - // logDebug(s); - - } -}; -/** - * @brief : Computes gravity forces for all nodes - */ - - -var calculateGravityForces = function calculateGravityForces(layoutInfo, options) { - var distThreshold = 1; // var s = 'calculateGravityForces'; - // logDebug(s); - - for (var i = 0; i < layoutInfo.graphSet.length; i++) { - var graph = layoutInfo.graphSet[i]; - var numNodes = graph.length; // s = "Set: " + graph.toString(); - // logDebug(s); - // Compute graph center - - if (0 === i) { - var centerX = layoutInfo.clientHeight / 2; - var centerY = layoutInfo.clientWidth / 2; - } else { - // Get Parent node for this graph, and use its position as center - var temp = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[0]]]; - var parent = layoutInfo.layoutNodes[layoutInfo.idToIndex[temp.parentId]]; - var centerX = parent.positionX; - var centerY = parent.positionY; - } // s = "Center found at: " + centerX + ", " + centerY; - // logDebug(s); - // Apply force to all nodes in graph - - - for (var j = 0; j < numNodes; j++) { - var node = layoutInfo.layoutNodes[layoutInfo.idToIndex[graph[j]]]; // s = "Node: " + node.id; - - if (node.isLocked) { - continue; - } - - var dx = centerX - node.positionX; - var dy = centerY - node.positionY; - var d = Math.sqrt(dx * dx + dy * dy); - - if (d > distThreshold) { - var fx = options.gravity * dx / d; - var fy = options.gravity * dy / d; - node.offsetX += fx; - node.offsetY += fy; // s += ": Applied force: " + fx + ", " + fy; - } // s += ": skypped since it's too close to center"; - // logDebug(s); - - } - } -}; -/** - * @brief : This function propagates the existing offsets from - * parent nodes to its descendents. - * @arg layoutInfo : layoutInfo Object - * @arg cy : cytoscape Object - * @arg options : Layout options - */ - - -var propagateForces = function propagateForces(layoutInfo, options) { - // Inline implementation of a queue, used for traversing the graph in BFS order - var queue = []; - var start = 0; // Points to the start the queue - - var end = -1; // Points to the end of the queue - // logDebug('propagateForces'); - // Start by visiting the nodes in the root graph - - queue.push.apply(queue, layoutInfo.graphSet[0]); - end += layoutInfo.graphSet[0].length; // Traverse the graph, level by level, - - while (start <= end) { - // Get the node to visit and remove it from queue - var nodeId = queue[start++]; - var nodeIndex = layoutInfo.idToIndex[nodeId]; - var node = layoutInfo.layoutNodes[nodeIndex]; - var children = node.children; // We only need to process the node if it's compound - - if (0 < children.length && !node.isLocked) { - var offX = node.offsetX; - var offY = node.offsetY; // var s = "Propagating offset from parent node : " + node.id + - // ". OffsetX: " + offX + ". OffsetY: " + offY; - // s += "\n Children: " + children.toString(); - // logDebug(s); - - for (var i = 0; i < children.length; i++) { - var childNode = layoutInfo.layoutNodes[layoutInfo.idToIndex[children[i]]]; // Propagate offset - - childNode.offsetX += offX; - childNode.offsetY += offY; // Add children to queue to be visited - - queue[++end] = children[i]; - } // Reset parent offsets - - - node.offsetX = 0; - node.offsetY = 0; - } - } -}; -/** - * @brief : Updates the layout model positions, based on - * the accumulated forces - */ - - -var updatePositions = function updatePositions(layoutInfo, options) { - // var s = 'Updating positions'; - // logDebug(s); - // Reset boundaries for compound nodes - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - - if (0 < n.children.length) { - // logDebug("Resetting boundaries of compound node: " + n.id); - n.maxX = undefined; - n.minX = undefined; - n.maxY = undefined; - n.minY = undefined; - } - } - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - - if (0 < n.children.length || n.isLocked) { - // No need to set compound or locked node position - // logDebug("Skipping position update of node: " + n.id); - continue; - } // s = "Node: " + n.id + " Previous position: (" + - // n.positionX + ", " + n.positionY + ")."; - // Limit displacement in order to improve stability - - - var tempForce = limitForce(n.offsetX, n.offsetY, layoutInfo.temperature); - n.positionX += tempForce.x; - n.positionY += tempForce.y; - n.offsetX = 0; - n.offsetY = 0; - n.minX = n.positionX - n.width; - n.maxX = n.positionX + n.width; - n.minY = n.positionY - n.height; - n.maxY = n.positionY + n.height; // s += " New Position: (" + n.positionX + ", " + n.positionY + ")."; - // logDebug(s); - // Update ancestry boudaries - - updateAncestryBoundaries(n, layoutInfo); - } // Update size, position of compund nodes - - - for (var i = 0; i < layoutInfo.nodeSize; i++) { - var n = layoutInfo.layoutNodes[i]; - - if (0 < n.children.length && !n.isLocked) { - n.positionX = (n.maxX + n.minX) / 2; - n.positionY = (n.maxY + n.minY) / 2; - n.width = n.maxX - n.minX; - n.height = n.maxY - n.minY; // s = "Updating position, size of compound node " + n.id; - // s += "\nPositionX: " + n.positionX + ", PositionY: " + n.positionY; - // s += "\nWidth: " + n.width + ", Height: " + n.height; - // logDebug(s); - } - } -}; -/** - * @brief : Limits a force (forceX, forceY) to be not - * greater (in modulo) than max. - 8 Preserves force direction. - */ - - -var limitForce = function limitForce(forceX, forceY, max) { - // var s = "Limiting force: (" + forceX + ", " + forceY + "). Max: " + max; - var force = Math.sqrt(forceX * forceX + forceY * forceY); - - if (force > max) { - var res = { - x: max * forceX / force, - y: max * forceY / force - }; - } else { - var res = { - x: forceX, - y: forceY - }; - } // s += ".\nResult: (" + res.x + ", " + res.y + ")"; - // logDebug(s); - - - return res; -}; -/** - * @brief : Function used for keeping track of compound node - * sizes, since they should bound all their subnodes. - */ - - -var updateAncestryBoundaries = function updateAncestryBoundaries(node, layoutInfo) { - // var s = "Propagating new position/size of node " + node.id; - var parentId = node.parentId; - - if (null == parentId) { - // If there's no parent, we are done - // s += ". No parent node."; - // logDebug(s); - return; - } // Get Parent Node - - - var p = layoutInfo.layoutNodes[layoutInfo.idToIndex[parentId]]; - var flag = false; // MaxX - - if (null == p.maxX || node.maxX + p.padRight > p.maxX) { - p.maxX = node.maxX + p.padRight; - flag = true; // s += "\nNew maxX for parent node " + p.id + ": " + p.maxX; - } // MinX - - - if (null == p.minX || node.minX - p.padLeft < p.minX) { - p.minX = node.minX - p.padLeft; - flag = true; // s += "\nNew minX for parent node " + p.id + ": " + p.minX; - } // MaxY - - - if (null == p.maxY || node.maxY + p.padBottom > p.maxY) { - p.maxY = node.maxY + p.padBottom; - flag = true; // s += "\nNew maxY for parent node " + p.id + ": " + p.maxY; - } // MinY - - - if (null == p.minY || node.minY - p.padTop < p.minY) { - p.minY = node.minY - p.padTop; - flag = true; // s += "\nNew minY for parent node " + p.id + ": " + p.minY; - } // If updated boundaries, propagate changes upward - - - if (flag) { - // logDebug(s); - return updateAncestryBoundaries(p, layoutInfo); - } // s += ". No changes in boundaries/position of parent node " + p.id; - // logDebug(s); - - - return; -}; - -var separateComponents = function separateComponents(layoutInfo, options) { - var nodes = layoutInfo.layoutNodes; - var components = []; - - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var cid = node.cmptId; - var component = components[cid] = components[cid] || []; - component.push(node); - } - - var totalA = 0; - - for (var i = 0; i < components.length; i++) { - var c = components[i]; - - if (!c) { - continue; - } - - c.x1 = Infinity; - c.x2 = -Infinity; - c.y1 = Infinity; - c.y2 = -Infinity; - - for (var j = 0; j < c.length; j++) { - var n = c[j]; - c.x1 = Math.min(c.x1, n.positionX - n.width / 2); - c.x2 = Math.max(c.x2, n.positionX + n.width / 2); - c.y1 = Math.min(c.y1, n.positionY - n.height / 2); - c.y2 = Math.max(c.y2, n.positionY + n.height / 2); - } - - c.w = c.x2 - c.x1; - c.h = c.y2 - c.y1; - totalA += c.w * c.h; - } - - components.sort(function (c1, c2) { - return c2.w * c2.h - c1.w * c1.h; - }); - var x = 0; - var y = 0; - var usedW = 0; - var rowH = 0; - var maxRowW = Math.sqrt(totalA) * layoutInfo.clientWidth / layoutInfo.clientHeight; - - for (var i = 0; i < components.length; i++) { - var c = components[i]; - - if (!c) { - continue; - } - - for (var j = 0; j < c.length; j++) { - var n = c[j]; - - if (!n.isLocked) { - n.positionX += x - c.x1; - n.positionY += y - c.y1; - } - } - - x += c.w + options.componentSpacing; - usedW += c.w + options.componentSpacing; - rowH = Math.max(rowH, c.h); - - if (usedW > maxRowW) { - y += rowH + options.componentSpacing; - x = 0; - usedW = 0; - rowH = 0; - } - } -}; - -var defaults$d = { - fit: true, - // whether to fit the viewport to the graph - padding: 30, - // padding used on fit - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - avoidOverlap: true, - // prevents node overlap, may overflow boundingBox if not enough space - avoidOverlapPadding: 10, - // extra spacing around nodes when avoidOverlap: true - nodeDimensionsIncludeLabels: false, - // Excludes the label when calculating node bounding boxes for the layout algorithm - spacingFactor: undefined, - // Applies a multiplicative factor (>0) to expand or compress the overall area that the nodes take up - condense: false, - // uses all available space on false, uses minimal space on true - rows: undefined, - // force num of rows in the grid - cols: undefined, - // force num of columns in the grid - position: function position(node) {}, - // returns { row, col } for element - sort: undefined, - // a sorting function to order the nodes; e.g. function(a, b){ return a.data('weight') - b.data('weight') } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function GridLayout(options) { - this.options = extend({}, defaults$d, options); -} - -GridLayout.prototype.run = function () { - var params = this.options; - var options = params; - var cy = params.cy; - var eles = options.eles; - var nodes = eles.nodes().not(':parent'); - - if (options.sort) { - nodes = nodes.sort(options.sort); - } - - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - - if (bb.h === 0 || bb.w === 0) { - nodes.layoutPositions(this, options, function (ele) { - return { - x: bb.x1, - y: bb.y1 - }; - }); - } else { - // width/height * splits^2 = cells where splits is number of times to split width - var cells = nodes.size(); - var splits = Math.sqrt(cells * bb.h / bb.w); - var rows = Math.round(splits); - var cols = Math.round(bb.w / bb.h * splits); - - var small = function small(val) { - if (val == null) { - return Math.min(rows, cols); - } else { - var min = Math.min(rows, cols); - - if (min == rows) { - rows = val; - } else { - cols = val; - } - } - }; - - var large = function large(val) { - if (val == null) { - return Math.max(rows, cols); - } else { - var max = Math.max(rows, cols); - - if (max == rows) { - rows = val; - } else { - cols = val; - } - } - }; - - var oRows = options.rows; - var oCols = options.cols != null ? options.cols : options.columns; // if rows or columns were set in options, use those values - - if (oRows != null && oCols != null) { - rows = oRows; - cols = oCols; - } else if (oRows != null && oCols == null) { - rows = oRows; - cols = Math.ceil(cells / rows); - } else if (oRows == null && oCols != null) { - cols = oCols; - rows = Math.ceil(cells / cols); - } // otherwise use the automatic values and adjust accordingly - // if rounding was up, see if we can reduce rows or columns - else if (cols * rows > cells) { - var sm = small(); - var lg = large(); // reducing the small side takes away the most cells, so try it first - - if ((sm - 1) * lg >= cells) { - small(sm - 1); - } else if ((lg - 1) * sm >= cells) { - large(lg - 1); - } - } else { - // if rounding was too low, add rows or columns - while (cols * rows < cells) { - var _sm = small(); - - var _lg = large(); // try to add to larger side first (adds less in multiplication) - - - if ((_lg + 1) * _sm >= cells) { - large(_lg + 1); - } else { - small(_sm + 1); - } - } - } - - var cellWidth = bb.w / cols; - var cellHeight = bb.h / rows; - - if (options.condense) { - cellWidth = 0; - cellHeight = 0; - } - - if (options.avoidOverlap) { - for (var i = 0; i < nodes.length; i++) { - var node = nodes[i]; - var pos = node._private.position; - - if (pos.x == null || pos.y == null) { - // for bb - pos.x = 0; - pos.y = 0; - } - - var nbb = node.layoutDimensions(options); - var p = options.avoidOverlapPadding; - var w = nbb.w + p; - var h = nbb.h + p; - cellWidth = Math.max(cellWidth, w); - cellHeight = Math.max(cellHeight, h); - } - } - - var cellUsed = {}; // e.g. 'c-0-2' => true - - var used = function used(row, col) { - return cellUsed['c-' + row + '-' + col] ? true : false; - }; - - var use = function use(row, col) { - cellUsed['c-' + row + '-' + col] = true; - }; // to keep track of current cell position - - - var row = 0; - var col = 0; - - var moveToNextCell = function moveToNextCell() { - col++; - - if (col >= cols) { - col = 0; - row++; - } - }; // get a cache of all the manual positions - - - var id2manPos = {}; - - for (var _i = 0; _i < nodes.length; _i++) { - var _node = nodes[_i]; - var rcPos = options.position(_node); - - if (rcPos && (rcPos.row !== undefined || rcPos.col !== undefined)) { - // must have at least row or col def'd - var _pos = { - row: rcPos.row, - col: rcPos.col - }; - - if (_pos.col === undefined) { - // find unused col - _pos.col = 0; - - while (used(_pos.row, _pos.col)) { - _pos.col++; - } - } else if (_pos.row === undefined) { - // find unused row - _pos.row = 0; - - while (used(_pos.row, _pos.col)) { - _pos.row++; - } - } - - id2manPos[_node.id()] = _pos; - use(_pos.row, _pos.col); - } - } - - var getPos = function getPos(element, i) { - var x, y; - - if (element.locked() || element.isParent()) { - return false; - } // see if we have a manual position set - - - var rcPos = id2manPos[element.id()]; - - if (rcPos) { - x = rcPos.col * cellWidth + cellWidth / 2 + bb.x1; - y = rcPos.row * cellHeight + cellHeight / 2 + bb.y1; - } else { - // otherwise set automatically - while (used(row, col)) { - moveToNextCell(); - } - - x = col * cellWidth + cellWidth / 2 + bb.x1; - y = row * cellHeight + cellHeight / 2 + bb.y1; - use(row, col); - moveToNextCell(); - } - - return { - x: x, - y: y - }; - }; - - nodes.layoutPositions(this, options, getPos); - } - - return this; // chaining -}; - -var defaults$e = { - ready: function ready() {}, - // on layoutready - stop: function stop() {} // on layoutstop - -}; // constructor -// options : object containing layout options - -function NullLayout(options) { - this.options = extend({}, defaults$e, options); -} // runs the layout - - -NullLayout.prototype.run = function () { - var options = this.options; - var eles = options.eles; // elements to consider in the layout - - var layout = this; // cy is automatically populated for us in the constructor - // (disable eslint for next line as this serves as example layout code to external developers) - // eslint-disable-next-line no-unused-vars - - var cy = options.cy; - layout.emit('layoutstart'); // puts all nodes at (0, 0) - // n.b. most layouts would use layoutPositions(), instead of positions() and manual events - - eles.nodes().positions(function () { - return { - x: 0, - y: 0 - }; - }); // trigger layoutready when each node has had its position set at least once - - layout.one('layoutready', options.ready); - layout.emit('layoutready'); // trigger layoutstop when the layout stops (e.g. finishes) - - layout.one('layoutstop', options.stop); - layout.emit('layoutstop'); - return this; // chaining -}; // called on continuous layouts to stop them before they finish - - -NullLayout.prototype.stop = function () { - return this; // chaining -}; - -var defaults$f = { - positions: undefined, - // map of (node id) => (position obj); or function(node){ return somPos; } - zoom: undefined, - // the zoom level to set (prob want fit = false if set) - pan: undefined, - // the pan level to set (prob want fit = false if set) - fit: true, - // whether to fit to viewport - padding: 30, - // padding on fit - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function PresetLayout(options) { - this.options = extend({}, defaults$f, options); -} - -PresetLayout.prototype.run = function () { - var options = this.options; - var eles = options.eles; - var nodes = eles.nodes(); - var posIsFn = fn(options.positions); - - function getPosition(node) { - if (options.positions == null) { - return copyPosition(node.position()); - } - - if (posIsFn) { - return options.positions(node); - } - - var pos = options.positions[node._private.data.id]; - - if (pos == null) { - return null; - } - - return pos; - } - - nodes.layoutPositions(this, options, function (node, i) { - var position = getPosition(node); - - if (node.locked() || position == null) { - return false; - } - - return position; - }); - return this; // chaining -}; - -var defaults$g = { - fit: true, - // whether to fit to viewport - padding: 30, - // fit padding - boundingBox: undefined, - // constrain layout bounds; { x1, y1, x2, y2 } or { x1, y1, w, h } - animate: false, - // whether to transition the node positions - animationDuration: 500, - // duration of animation in ms if enabled - animationEasing: undefined, - // easing of animation if enabled - animateFilter: function animateFilter(node, i) { - return true; - }, - // a function that determines whether the node should be animated. All nodes animated by default on animate enabled. Non-animated nodes are positioned immediately when the layout starts - ready: undefined, - // callback on layoutready - stop: undefined, - // callback on layoutstop - transform: function transform(node, position) { - return position; - } // transform a given node position. Useful for changing flow direction in discrete layouts - -}; - -function RandomLayout(options) { - this.options = extend({}, defaults$g, options); -} - -RandomLayout.prototype.run = function () { - var options = this.options; - var cy = options.cy; - var eles = options.eles; - var nodes = eles.nodes().not(':parent'); - var bb = makeBoundingBox(options.boundingBox ? options.boundingBox : { - x1: 0, - y1: 0, - w: cy.width(), - h: cy.height() - }); - - var getPos = function getPos(node, i) { - return { - x: bb.x1 + Math.round(Math.random() * bb.w), - y: bb.y1 + Math.round(Math.random() * bb.h) - }; - }; - - nodes.layoutPositions(this, options, getPos); - return this; // chaining -}; - -var layout = [{ - name: 'breadthfirst', - impl: BreadthFirstLayout -}, { - name: 'circle', - impl: CircleLayout -}, { - name: 'concentric', - impl: ConcentricLayout -}, { - name: 'cose', - impl: CoseLayout -}, { - name: 'grid', - impl: GridLayout -}, { - name: 'null', - impl: NullLayout -}, { - name: 'preset', - impl: PresetLayout -}, { - name: 'random', - impl: RandomLayout -}]; - -function NullRenderer(options) { - this.options = options; - this.notifications = 0; // for testing -} - -var noop$1 = function noop() {}; - -var throwImgErr = function throwImgErr() { - throw new Error('A headless instance can not render images'); -}; - -NullRenderer.prototype = { - recalculateRenderedStyle: noop$1, - notify: function notify() { - this.notifications++; - }, - init: noop$1, - isHeadless: function isHeadless() { - return true; - }, - png: throwImgErr, - jpg: throwImgErr -}; - -var BRp = {}; -BRp.arrowShapeWidth = 0.3; - -BRp.registerArrowShapes = function () { - var arrowShapes = this.arrowShapes = {}; - var renderer = this; // Contract for arrow shapes: - // 0, 0 is arrow tip - // (0, 1) is direction towards node - // (1, 0) is right - // - // functional api: - // collide: check x, y in shape - // roughCollide: called before collide, no false negatives - // draw: draw - // spacing: dist(arrowTip, nodeBoundary) - // gap: dist(edgeTip, nodeBoundary), edgeTip may != arrowTip - - var bbCollide = function bbCollide(x, y, size, angle, translation, edgeWidth, padding) { - var x1 = translation.x - size / 2 - padding; - var x2 = translation.x + size / 2 + padding; - var y1 = translation.y - size / 2 - padding; - var y2 = translation.y + size / 2 + padding; - var inside = x1 <= x && x <= x2 && y1 <= y && y <= y2; - return inside; - }; - - var transform = function transform(x, y, size, angle, translation) { - var xRotated = x * Math.cos(angle) - y * Math.sin(angle); - var yRotated = x * Math.sin(angle) + y * Math.cos(angle); - var xScaled = xRotated * size; - var yScaled = yRotated * size; - var xTranslated = xScaled + translation.x; - var yTranslated = yScaled + translation.y; - return { - x: xTranslated, - y: yTranslated - }; - }; - - var transformPoints = function transformPoints(pts, size, angle, translation) { - var retPts = []; - - for (var i = 0; i < pts.length; i += 2) { - var x = pts[i]; - var y = pts[i + 1]; - retPts.push(transform(x, y, size, angle, translation)); - } - - return retPts; - }; - - var pointsToArr = function pointsToArr(pts) { - var ret = []; - - for (var i = 0; i < pts.length; i++) { - var p = pts[i]; - ret.push(p.x, p.y); - } - - return ret; - }; - - var standardGap = function standardGap(edge) { - return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').pfValue * 2; - }; - - var defineArrowShape = function defineArrowShape(name, defn) { - if (string(defn)) { - defn = arrowShapes[defn]; - } - - arrowShapes[name] = extend({ - name: name, - points: [-0.15, -0.3, 0.15, -0.3, 0.15, 0.3, -0.15, 0.3], - collide: function collide(x, y, size, angle, translation, padding) { - var points = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - var inside = pointInsidePolygonPoints(x, y, points); - return inside; - }, - roughCollide: bbCollide, - draw: function draw(context, size, angle, translation) { - var points = transformPoints(this.points, size, angle, translation); - renderer.arrowShapeImpl('polygon')(context, points); - }, - spacing: function spacing(edge) { - return 0; - }, - gap: standardGap - }, defn); - }; - - defineArrowShape('none', { - collide: falsify, - roughCollide: falsify, - draw: noop, - spacing: zeroify, - gap: zeroify - }); - defineArrowShape('triangle', { - points: [-0.15, -0.3, 0, 0, 0.15, -0.3] - }); - defineArrowShape('arrow', 'triangle'); - defineArrowShape('triangle-backcurve', { - points: arrowShapes['triangle'].points, - controlPoint: [0, -0.15], - roughCollide: bbCollide, - draw: function draw(context, size, angle, translation, edgeWidth) { - var ptsTrans = transformPoints(this.points, size, angle, translation); - var ctrlPt = this.controlPoint; - var ctrlPtTrans = transform(ctrlPt[0], ctrlPt[1], size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, ptsTrans, ctrlPtTrans); - }, - gap: function gap(edge) { - return standardGap(edge) * 0.8; - } - }); - defineArrowShape('triangle-tee', { - points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], - pointsTee: [-0.15, -0.4, -0.15, -0.5, 0.15, -0.5, 0.15, -0.4], - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - var teePts = pointsToArr(transformPoints(this.pointsTee, size + 2 * padding, angle, translation)); - var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); - return inside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - var triPts = transformPoints(this.points, size, angle, translation); - var teePts = transformPoints(this.pointsTee, size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, triPts, teePts); - } - }); - defineArrowShape('circle-triangle', { - radius: 0.15, - pointsTr: [0, -0.15, 0.15, -0.45, -0.15, -0.45, 0, -0.15], - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var t = translation; - var circleInside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); - var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - return pointInsidePolygonPoints(x, y, triPts) || circleInside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - var triPts = transformPoints(this.pointsTr, size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, triPts, translation.x, translation.y, this.radius * size); - }, - spacing: function spacing(edge) { - return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; - } - }); - defineArrowShape('triangle-cross', { - points: [0, 0, 0.15, -0.3, -0.15, -0.3, 0, 0], - baseCrossLinePts: [-0.15, -0.4, // first half of the rectangle - -0.15, -0.4, 0.15, -0.4, // second half of the rectangle - 0.15, -0.4], - crossLinePts: function crossLinePts(size, edgeWidth) { - // shift points so that the distance between the cross points matches edge width - var p = this.baseCrossLinePts.slice(); - var shiftFactor = edgeWidth / size; - var y0 = 3; - var y1 = 5; - p[y0] = p[y0] - shiftFactor; - p[y1] = p[y1] - shiftFactor; - return p; - }, - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var triPts = pointsToArr(transformPoints(this.points, size + 2 * padding, angle, translation)); - var teePts = pointsToArr(transformPoints(this.crossLinePts(size, edgeWidth), size + 2 * padding, angle, translation)); - var inside = pointInsidePolygonPoints(x, y, triPts) || pointInsidePolygonPoints(x, y, teePts); - return inside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - var triPts = transformPoints(this.points, size, angle, translation); - var crossLinePts = transformPoints(this.crossLinePts(size, edgeWidth), size, angle, translation); - renderer.arrowShapeImpl(this.name)(context, triPts, crossLinePts); - } - }); - defineArrowShape('vee', { - points: [-0.15, -0.3, 0, 0, 0.15, -0.3, 0, -0.15], - gap: function gap(edge) { - return standardGap(edge) * 0.525; - } - }); - defineArrowShape('circle', { - radius: 0.15, - collide: function collide(x, y, size, angle, translation, edgeWidth, padding) { - var t = translation; - var inside = Math.pow(t.x - x, 2) + Math.pow(t.y - y, 2) <= Math.pow((size + 2 * padding) * this.radius, 2); - return inside; - }, - draw: function draw(context, size, angle, translation, edgeWidth) { - renderer.arrowShapeImpl(this.name)(context, translation.x, translation.y, this.radius * size); - }, - spacing: function spacing(edge) { - return renderer.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.radius; - } - }); - defineArrowShape('tee', { - points: [-0.15, 0, -0.15, -0.1, 0.15, -0.1, 0.15, 0], - spacing: function spacing(edge) { - return 1; - }, - gap: function gap(edge) { - return 1; - } - }); - defineArrowShape('square', { - points: [-0.15, 0.00, 0.15, 0.00, 0.15, -0.3, -0.15, -0.3] - }); - defineArrowShape('diamond', { - points: [-0.15, -0.15, 0, -0.3, 0.15, -0.15, 0, 0], - gap: function gap(edge) { - return edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; - } - }); - defineArrowShape('chevron', { - points: [0, 0, -0.15, -0.15, -0.1, -0.2, 0, -0.1, 0.1, -0.2, 0.15, -0.15], - gap: function gap(edge) { - return 0.95 * edge.pstyle('width').pfValue * edge.pstyle('arrow-scale').value; - } - }); -}; - -var BRp$1 = {}; // Project mouse - -BRp$1.projectIntoViewport = function (clientX, clientY) { - var cy = this.cy; - var offsets = this.findContainerClientCoords(); - var offsetLeft = offsets[0]; - var offsetTop = offsets[1]; - var scale = offsets[4]; - var pan = cy.pan(); - var zoom = cy.zoom(); - var x = ((clientX - offsetLeft) / scale - pan.x) / zoom; - var y = ((clientY - offsetTop) / scale - pan.y) / zoom; - return [x, y]; -}; - -BRp$1.findContainerClientCoords = function () { - if (this.containerBB) { - return this.containerBB; - } - - var container = this.container; - var rect = container.getBoundingClientRect(); - var style = window$1.getComputedStyle(container); - - var styleValue = function styleValue(name) { - return parseFloat(style.getPropertyValue(name)); - }; - - var padding = { - left: styleValue('padding-left'), - right: styleValue('padding-right'), - top: styleValue('padding-top'), - bottom: styleValue('padding-bottom') - }; - var border = { - left: styleValue('border-left-width'), - right: styleValue('border-right-width'), - top: styleValue('border-top-width'), - bottom: styleValue('border-bottom-width') - }; - var clientWidth = container.clientWidth; - var clientHeight = container.clientHeight; - var paddingHor = padding.left + padding.right; - var paddingVer = padding.top + padding.bottom; - var borderHor = border.left + border.right; - var scale = rect.width / (clientWidth + borderHor); - var unscaledW = clientWidth - paddingHor; - var unscaledH = clientHeight - paddingVer; - var left = rect.left + padding.left + border.left; - var top = rect.top + padding.top + border.top; - return this.containerBB = [left, top, unscaledW, unscaledH, scale]; -}; - -BRp$1.invalidateContainerClientCoordsCache = function () { - this.containerBB = null; -}; - -BRp$1.findNearestElement = function (x, y, interactiveElementsOnly, isTouch) { - return this.findNearestElements(x, y, interactiveElementsOnly, isTouch)[0]; -}; - -BRp$1.findNearestElements = function (x, y, interactiveElementsOnly, isTouch) { - var self = this; - var r = this; - var eles = r.getCachedZSortedEles(); - var near = []; // 1 node max, 1 edge max - - var zoom = r.cy.zoom(); - var hasCompounds = r.cy.hasCompoundNodes(); - var edgeThreshold = (isTouch ? 24 : 8) / zoom; - var nodeThreshold = (isTouch ? 8 : 2) / zoom; - var labelThreshold = (isTouch ? 8 : 2) / zoom; - var minSqDist = Infinity; - var nearEdge; - var nearNode; - - if (interactiveElementsOnly) { - eles = eles.interactive; - } - - function addEle(ele, sqDist) { - if (ele.isNode()) { - if (nearNode) { - return; // can't replace node - } else { - nearNode = ele; - near.push(ele); - } - } - - if (ele.isEdge() && (sqDist == null || sqDist < minSqDist)) { - if (nearEdge) { - // then replace existing edge - // can replace only if same z-index - if (nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value && nearEdge.pstyle('z-compound-depth').value === ele.pstyle('z-compound-depth').value) { - for (var i = 0; i < near.length; i++) { - if (near[i].isEdge()) { - near[i] = ele; - nearEdge = ele; - minSqDist = sqDist != null ? sqDist : minSqDist; - break; - } - } - } - } else { - near.push(ele); - nearEdge = ele; - minSqDist = sqDist != null ? sqDist : minSqDist; - } - } - } - - function checkNode(node) { - var width = node.outerWidth() + 2 * nodeThreshold; - var height = node.outerHeight() + 2 * nodeThreshold; - var hw = width / 2; - var hh = height / 2; - var pos = node.position(); - - if (pos.x - hw <= x && x <= pos.x + hw // bb check x - && pos.y - hh <= y && y <= pos.y + hh // bb check y - ) { - var shape = r.nodeShapes[self.getNodeShape(node)]; - - if (shape.checkPoint(x, y, 0, width, height, pos.x, pos.y)) { - addEle(node, 0); - return true; - } - } - } - - function checkEdge(edge) { - var _p = edge._private; - var rs = _p.rscratch; - var styleWidth = edge.pstyle('width').pfValue; - var scale = edge.pstyle('arrow-scale').value; - var width = styleWidth / 2 + edgeThreshold; // more like a distance radius from centre - - var widthSq = width * width; - var width2 = width * 2; - var src = _p.source; - var tgt = _p.target; - var sqDist; - - if (rs.edgeType === 'segments' || rs.edgeType === 'straight' || rs.edgeType === 'haystack') { - var pts = rs.allpts; - - for (var i = 0; i + 3 < pts.length; i += 2) { - if (inLineVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], width2) && widthSq > (sqDist = sqdistToFiniteLine(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3]))) { - addEle(edge, sqDist); - return true; - } - } - } else if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { - var pts = rs.allpts; - - for (var i = 0; i + 5 < rs.allpts.length; i += 4) { - if (inBezierVicinity(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5], width2) && widthSq > (sqDist = sqdistToQuadraticBezier(x, y, pts[i], pts[i + 1], pts[i + 2], pts[i + 3], pts[i + 4], pts[i + 5]))) { - addEle(edge, sqDist); - return true; - } - } - } // if we're close to the edge but didn't hit it, maybe we hit its arrows - - - var src = src || _p.source; - var tgt = tgt || _p.target; - var arSize = self.getArrowWidth(styleWidth, scale); - var arrows = [{ - name: 'source', - x: rs.arrowStartX, - y: rs.arrowStartY, - angle: rs.srcArrowAngle - }, { - name: 'target', - x: rs.arrowEndX, - y: rs.arrowEndY, - angle: rs.tgtArrowAngle - }, { - name: 'mid-source', - x: rs.midX, - y: rs.midY, - angle: rs.midsrcArrowAngle - }, { - name: 'mid-target', - x: rs.midX, - y: rs.midY, - angle: rs.midtgtArrowAngle - }]; - - for (var i = 0; i < arrows.length; i++) { - var ar = arrows[i]; - var shape = r.arrowShapes[edge.pstyle(ar.name + '-arrow-shape').value]; - var edgeWidth = edge.pstyle('width').pfValue; - - if (shape.roughCollide(x, y, arSize, ar.angle, { - x: ar.x, - y: ar.y - }, edgeWidth, edgeThreshold) && shape.collide(x, y, arSize, ar.angle, { - x: ar.x, - y: ar.y - }, edgeWidth, edgeThreshold)) { - addEle(edge); - return true; - } - } // for compound graphs, hitting edge may actually want a connected node instead (b/c edge may have greater z-index precedence) - - - if (hasCompounds && near.length > 0) { - checkNode(src); - checkNode(tgt); - } - } - - function preprop(obj, name, pre) { - return getPrefixedProperty(obj, name, pre); - } - - function checkLabel(ele, prefix) { - var _p = ele._private; - var th = labelThreshold; - var prefixDash; - - if (prefix) { - prefixDash = prefix + '-'; - } else { - prefixDash = ''; - } - - ele.boundingBox(); - var bb = _p.labelBounds[prefix || 'main']; - var text = ele.pstyle(prefixDash + 'label').value; - var eventsEnabled = ele.pstyle('text-events').strValue === 'yes'; - - if (!eventsEnabled || !text) { - return; - } - - var rstyle = _p.rstyle; - var lx = preprop(rstyle, 'labelX', prefix); - var ly = preprop(rstyle, 'labelY', prefix); - var theta = preprop(_p.rscratch, 'labelAngle', prefix); - var lx1 = bb.x1 - th; - var lx2 = bb.x2 + th; - var ly1 = bb.y1 - th; - var ly2 = bb.y2 + th; - - if (theta) { - var cos = Math.cos(theta); - var sin = Math.sin(theta); - - var rotate = function rotate(x, y) { - x = x - lx; - y = y - ly; - return { - x: x * cos - y * sin + lx, - y: x * sin + y * cos + ly - }; - }; - - var px1y1 = rotate(lx1, ly1); - var px1y2 = rotate(lx1, ly2); - var px2y1 = rotate(lx2, ly1); - var px2y2 = rotate(lx2, ly2); - var points = [px1y1.x, px1y1.y, px2y1.x, px2y1.y, px2y2.x, px2y2.y, px1y2.x, px1y2.y]; - - if (pointInsidePolygonPoints(x, y, points)) { - addEle(ele); - return true; - } - } else { - // do a cheaper bb check - if (inBoundingBox(bb, x, y)) { - addEle(ele); - return true; - } - } - } - - for (var i = eles.length - 1; i >= 0; i--) { - // reverse order for precedence - var ele = eles[i]; - - if (ele.isNode()) { - checkNode(ele) || checkLabel(ele); - } else { - // then edge - checkEdge(ele) || checkLabel(ele) || checkLabel(ele, 'source') || checkLabel(ele, 'target'); - } - } - - return near; -}; // 'Give me everything from this box' - - -BRp$1.getAllInBox = function (x1, y1, x2, y2) { - var eles = this.getCachedZSortedEles().interactive; - var box = []; - var x1c = Math.min(x1, x2); - var x2c = Math.max(x1, x2); - var y1c = Math.min(y1, y2); - var y2c = Math.max(y1, y2); - x1 = x1c; - x2 = x2c; - y1 = y1c; - y2 = y2c; - var boxBb = makeBoundingBox({ - x1: x1, - y1: y1, - x2: x2, - y2: y2 - }); - - for (var e = 0; e < eles.length; e++) { - var ele = eles[e]; - - if (ele.isNode()) { - var node = ele; - var nodeBb = node.boundingBox({ - includeNodes: true, - includeEdges: false, - includeLabels: false - }); - - if (boundingBoxesIntersect(boxBb, nodeBb) && !boundingBoxInBoundingBox(nodeBb, boxBb)) { - box.push(node); - } - } else { - var edge = ele; - var _p = edge._private; - var rs = _p.rscratch; - - if (rs.startX != null && rs.startY != null && !inBoundingBox(boxBb, rs.startX, rs.startY)) { - continue; - } - - if (rs.endX != null && rs.endY != null && !inBoundingBox(boxBb, rs.endX, rs.endY)) { - continue; - } - - if (rs.edgeType === 'bezier' || rs.edgeType === 'multibezier' || rs.edgeType === 'self' || rs.edgeType === 'compound' || rs.edgeType === 'segments' || rs.edgeType === 'haystack') { - var pts = _p.rstyle.bezierPts || _p.rstyle.linePts || _p.rstyle.haystackPts; - var allInside = true; - - for (var i = 0; i < pts.length; i++) { - if (!pointInBoundingBox(boxBb, pts[i])) { - allInside = false; - break; - } - } - - if (allInside) { - box.push(edge); - } - } else if (rs.edgeType === 'haystack' || rs.edgeType === 'straight') { - box.push(edge); - } - } - } - - return box; -}; - -var BRp$2 = {}; - -BRp$2.calculateArrowAngles = function (edge) { - var rs = edge._private.rscratch; - var isHaystack = rs.edgeType === 'haystack'; - var isBezier = rs.edgeType === 'bezier'; - var isMultibezier = rs.edgeType === 'multibezier'; - var isSegments = rs.edgeType === 'segments'; - var isCompound = rs.edgeType === 'compound'; - var isSelf = rs.edgeType === 'self'; // Displacement gives direction for arrowhead orientation - - var dispX, dispY; - var startX, startY, endX, endY, midX, midY; - - if (isHaystack) { - startX = rs.haystackPts[0]; - startY = rs.haystackPts[1]; - endX = rs.haystackPts[2]; - endY = rs.haystackPts[3]; - } else { - startX = rs.arrowStartX; - startY = rs.arrowStartY; - endX = rs.arrowEndX; - endY = rs.arrowEndY; - } - - midX = rs.midX; - midY = rs.midY; // source - // - - if (isSegments) { - dispX = startX - rs.segpts[0]; - dispY = startY - rs.segpts[1]; - } else if (isMultibezier || isCompound || isSelf || isBezier) { - var pts = rs.allpts; - var bX = qbezierAt(pts[0], pts[2], pts[4], 0.1); - var bY = qbezierAt(pts[1], pts[3], pts[5], 0.1); - dispX = startX - bX; - dispY = startY - bY; - } else { - dispX = startX - midX; - dispY = startY - midY; - } - - rs.srcArrowAngle = getAngleFromDisp(dispX, dispY); // mid target - // - - var midX = rs.midX; - var midY = rs.midY; - - if (isHaystack) { - midX = (startX + endX) / 2; - midY = (startY + endY) / 2; - } - - dispX = endX - startX; - dispY = endY - startY; - - if (isSegments) { - var pts = rs.allpts; - - if (pts.length / 2 % 2 === 0) { - var i2 = pts.length / 2; - var i1 = i2 - 2; - dispX = pts[i2] - pts[i1]; - dispY = pts[i2 + 1] - pts[i1 + 1]; - } else { - var i2 = pts.length / 2 - 1; - var i1 = i2 - 2; - var i3 = i2 + 2; - dispX = pts[i2] - pts[i1]; - dispY = pts[i2 + 1] - pts[i1 + 1]; - } - } else if (isMultibezier || isCompound || isSelf) { - var pts = rs.allpts; - var cpts = rs.ctrlpts; - var bp0x, bp0y; - var bp1x, bp1y; - - if (cpts.length / 2 % 2 === 0) { - var p0 = pts.length / 2 - 1; // startpt - - var ic = p0 + 2; - var p1 = ic + 2; - bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0); - bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0); - bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.0001); - bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.0001); - } else { - var ic = pts.length / 2 - 1; // ctrpt - - var p0 = ic - 2; // startpt - - var p1 = ic + 2; // endpt - - bp0x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.4999); - bp0y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.4999); - bp1x = qbezierAt(pts[p0], pts[ic], pts[p1], 0.5); - bp1y = qbezierAt(pts[p0 + 1], pts[ic + 1], pts[p1 + 1], 0.5); - } - - dispX = bp1x - bp0x; - dispY = bp1y - bp0y; - } - - rs.midtgtArrowAngle = getAngleFromDisp(dispX, dispY); - rs.midDispX = dispX; - rs.midDispY = dispY; // mid source - // - - dispX *= -1; - dispY *= -1; - - if (isSegments) { - var pts = rs.allpts; - - if (pts.length / 2 % 2 === 0) ; else { - var i2 = pts.length / 2 - 1; - var i3 = i2 + 2; - dispX = -(pts[i3] - pts[i2]); - dispY = -(pts[i3 + 1] - pts[i2 + 1]); - } - } - - rs.midsrcArrowAngle = getAngleFromDisp(dispX, dispY); // target - // - - if (isSegments) { - dispX = endX - rs.segpts[rs.segpts.length - 2]; - dispY = endY - rs.segpts[rs.segpts.length - 1]; - } else if (isMultibezier || isCompound || isSelf || isBezier) { - var pts = rs.allpts; - var l = pts.length; - var bX = qbezierAt(pts[l - 6], pts[l - 4], pts[l - 2], 0.9); - var bY = qbezierAt(pts[l - 5], pts[l - 3], pts[l - 1], 0.9); - dispX = endX - bX; - dispY = endY - bY; - } else { - dispX = endX - midX; - dispY = endY - midY; - } - - rs.tgtArrowAngle = getAngleFromDisp(dispX, dispY); -}; - -BRp$2.getArrowWidth = BRp$2.getArrowHeight = function (edgeWidth, scale) { - var cache = this.arrowWidthCache = this.arrowWidthCache || {}; - var cachedVal = cache[edgeWidth + ', ' + scale]; - - if (cachedVal) { - return cachedVal; - } - - cachedVal = Math.max(Math.pow(edgeWidth * 13.37, 0.9), 29) * scale; - cache[edgeWidth + ', ' + scale] = cachedVal; - return cachedVal; -}; - -var BRp$3 = {}; - -BRp$3.findHaystackPoints = function (edges) { - for (var i = 0; i < edges.length; i++) { - var edge = edges[i]; - var _p = edge._private; - var rs = _p.rscratch; - - if (!rs.haystack) { - var angle = Math.random() * 2 * Math.PI; - rs.source = { - x: Math.cos(angle), - y: Math.sin(angle) - }; - angle = Math.random() * 2 * Math.PI; - rs.target = { - x: Math.cos(angle), - y: Math.sin(angle) - }; - } - - var src = _p.source; - var tgt = _p.target; - var srcPos = src.position(); - var tgtPos = tgt.position(); - var srcW = src.width(); - var tgtW = tgt.width(); - var srcH = src.height(); - var tgtH = tgt.height(); - var radius = edge.pstyle('haystack-radius').value; - var halfRadius = radius / 2; // b/c have to half width/height - - rs.haystackPts = rs.allpts = [rs.source.x * srcW * halfRadius + srcPos.x, rs.source.y * srcH * halfRadius + srcPos.y, rs.target.x * tgtW * halfRadius + tgtPos.x, rs.target.y * tgtH * halfRadius + tgtPos.y]; - rs.midX = (rs.allpts[0] + rs.allpts[2]) / 2; - rs.midY = (rs.allpts[1] + rs.allpts[3]) / 2; // always override as haystack in case set to different type previously - - rs.edgeType = 'haystack'; - rs.haystack = true; - this.storeEdgeProjections(edge); - this.calculateArrowAngles(edge); - this.recalculateEdgeLabelProjections(edge); - this.calculateLabelAngles(edge); - } -}; - -BRp$3.findSegmentsPoints = function (edge, pairInfo) { - // Segments (multiple straight lines) - var rs = edge._private.rscratch; - var posPts = pairInfo.posPts, - intersectionPts = pairInfo.intersectionPts, - vectorNormInverse = pairInfo.vectorNormInverse; - var edgeDistances = edge.pstyle('edge-distances').value; - var segmentWs = edge.pstyle('segment-weights'); - var segmentDs = edge.pstyle('segment-distances'); - var segmentsN = Math.min(segmentWs.pfValue.length, segmentDs.pfValue.length); - rs.edgeType = 'segments'; - rs.segpts = []; - - for (var s = 0; s < segmentsN; s++) { - var w = segmentWs.pfValue[s]; - var d = segmentDs.pfValue[s]; - var w1 = 1 - w; - var w2 = w; - var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; - var adjustedMidpt = { - x: midptPts.x1 * w1 + midptPts.x2 * w2, - y: midptPts.y1 * w1 + midptPts.y2 * w2 - }; - rs.segpts.push(adjustedMidpt.x + vectorNormInverse.x * d, adjustedMidpt.y + vectorNormInverse.y * d); - } -}; - -BRp$3.findLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { - // Self-edge - var rs = edge._private.rscratch; - var dirCounts = pairInfo.dirCounts, - srcPos = pairInfo.srcPos; - var ctrlptDists = edge.pstyle('control-point-distances'); - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; - var loopDir = edge.pstyle('loop-direction').pfValue; - var loopSwp = edge.pstyle('loop-sweep').pfValue; - var stepSize = edge.pstyle('control-point-step-size').pfValue; - rs.edgeType = 'self'; - var j = i; - var loopDist = stepSize; - - if (edgeIsUnbundled) { - j = 0; - loopDist = ctrlptDist; - } - - var loopAngle = loopDir - Math.PI / 2; - var outAngle = loopAngle - loopSwp / 2; - var inAngle = loopAngle + loopSwp / 2; // increase by step size for overlapping loops, keyed on direction and sweep values - - var dc = String(loopDir + '_' + loopSwp); - j = dirCounts[dc] === undefined ? dirCounts[dc] = 0 : ++dirCounts[dc]; - rs.ctrlpts = [srcPos.x + Math.cos(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(outAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.x + Math.cos(inAngle) * 1.4 * loopDist * (j / 3 + 1), srcPos.y + Math.sin(inAngle) * 1.4 * loopDist * (j / 3 + 1)]; -}; - -BRp$3.findCompoundLoopPoints = function (edge, pairInfo, i, edgeIsUnbundled) { - // Compound edge - var rs = edge._private.rscratch; - rs.edgeType = 'compound'; - var srcPos = pairInfo.srcPos, - tgtPos = pairInfo.tgtPos, - srcW = pairInfo.srcW, - srcH = pairInfo.srcH, - tgtW = pairInfo.tgtW, - tgtH = pairInfo.tgtH; - var stepSize = edge.pstyle('control-point-step-size').pfValue; - var ctrlptDists = edge.pstyle('control-point-distances'); - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; - var j = i; - var loopDist = stepSize; - - if (edgeIsUnbundled) { - j = 0; - loopDist = ctrlptDist; - } - - var loopW = 50; - var loopaPos = { - x: srcPos.x - srcW / 2, - y: srcPos.y - srcH / 2 - }; - var loopbPos = { - x: tgtPos.x - tgtW / 2, - y: tgtPos.y - tgtH / 2 - }; - var loopPos = { - x: Math.min(loopaPos.x, loopbPos.x), - y: Math.min(loopaPos.y, loopbPos.y) - }; // avoids cases with impossible beziers - - var minCompoundStretch = 0.5; - var compoundStretchA = Math.max(minCompoundStretch, Math.log(srcW * 0.01)); - var compoundStretchB = Math.max(minCompoundStretch, Math.log(tgtW * 0.01)); - rs.ctrlpts = [loopPos.x, loopPos.y - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchA, loopPos.x - (1 + Math.pow(loopW, 1.12) / 100) * loopDist * (j / 3 + 1) * compoundStretchB, loopPos.y]; -}; - -BRp$3.findStraightEdgePoints = function (edge) { - // Straight edge within bundle - edge._private.rscratch.edgeType = 'straight'; -}; - -BRp$3.findBezierPoints = function (edge, pairInfo, i, edgeIsUnbundled, edgeIsSwapped) { - var rs = edge._private.rscratch; - var vectorNormInverse = pairInfo.vectorNormInverse, - posPts = pairInfo.posPts, - intersectionPts = pairInfo.intersectionPts; - var edgeDistances = edge.pstyle('edge-distances').value; - var stepSize = edge.pstyle('control-point-step-size').pfValue; - var ctrlptDists = edge.pstyle('control-point-distances'); - var ctrlptWs = edge.pstyle('control-point-weights'); - var bezierN = ctrlptDists && ctrlptWs ? Math.min(ctrlptDists.value.length, ctrlptWs.value.length) : 1; - var ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[0] : undefined; - var ctrlptWeight = ctrlptWs.value[0]; // (Multi)bezier - - var multi = edgeIsUnbundled; - rs.edgeType = multi ? 'multibezier' : 'bezier'; - rs.ctrlpts = []; - - for (var b = 0; b < bezierN; b++) { - var normctrlptDist = (0.5 - pairInfo.eles.length / 2 + i) * stepSize * (edgeIsSwapped ? -1 : 1); - var manctrlptDist = void 0; - var sign = signum(normctrlptDist); - - if (multi) { - ctrlptDist = ctrlptDists ? ctrlptDists.pfValue[b] : stepSize; // fall back on step size - - ctrlptWeight = ctrlptWs.value[b]; - } - - if (edgeIsUnbundled) { - // multi or single unbundled - manctrlptDist = ctrlptDist; - } else { - manctrlptDist = ctrlptDist !== undefined ? sign * ctrlptDist : undefined; - } - - var distanceFromMidpoint = manctrlptDist !== undefined ? manctrlptDist : normctrlptDist; - var w1 = 1 - ctrlptWeight; - var w2 = ctrlptWeight; - var midptPts = edgeDistances === 'node-position' ? posPts : intersectionPts; - var adjustedMidpt = { - x: midptPts.x1 * w1 + midptPts.x2 * w2, - y: midptPts.y1 * w1 + midptPts.y2 * w2 - }; - rs.ctrlpts.push(adjustedMidpt.x + vectorNormInverse.x * distanceFromMidpoint, adjustedMidpt.y + vectorNormInverse.y * distanceFromMidpoint); - } -}; - -BRp$3.findTaxiPoints = function (edge, pairInfo) { - // Taxicab geometry with two turns maximum - var rs = edge._private.rscratch; - rs.edgeType = 'segments'; - var VERTICAL = 'vertical'; - var HORIZONTAL = 'horizontal'; - var LEFTWARD = 'leftward'; - var RIGHTWARD = 'rightward'; - var DOWNWARD = 'downward'; - var UPWARD = 'upward'; - var AUTO = 'auto'; - var posPts = pairInfo.posPts, - srcW = pairInfo.srcW, - srcH = pairInfo.srcH, - tgtW = pairInfo.tgtW, - tgtH = pairInfo.tgtH; - var edgeDistances = edge.pstyle('edge-distances').value; - var dIncludesNodeBody = edgeDistances !== 'node-position'; - var taxiDir = edge.pstyle('taxi-direction').value; - var rawTaxiDir = taxiDir; // unprocessed value - - var taxiTurn = edge.pstyle('taxi-turn'); - var turnIsPercent = taxiTurn.units === '%'; - var taxiTurnPfVal = taxiTurn.pfValue; - var turnIsNegative = taxiTurnPfVal < 0; // i.e. from target side - - var minD = edge.pstyle('taxi-turn-min-distance').pfValue; - var dw = dIncludesNodeBody ? (srcW + tgtW) / 2 : 0; - var dh = dIncludesNodeBody ? (srcH + tgtH) / 2 : 0; - var pdx = posPts.x2 - posPts.x1; - var pdy = posPts.y2 - posPts.y1; // take away the effective w/h from the magnitude of the delta value - - var subDWH = function subDWH(dxy, dwh) { - if (dxy > 0) { - return Math.max(dxy - dwh, 0); - } else { - return Math.min(dxy + dwh, 0); - } - }; - - var dx = subDWH(pdx, dw); - var dy = subDWH(pdy, dh); - var isExplicitDir = false; - - if (rawTaxiDir === AUTO) { - taxiDir = Math.abs(dx) > Math.abs(dy) ? HORIZONTAL : VERTICAL; - } else if (rawTaxiDir === UPWARD || rawTaxiDir === DOWNWARD) { - taxiDir = VERTICAL; - isExplicitDir = true; - } else if (rawTaxiDir === LEFTWARD || rawTaxiDir === RIGHTWARD) { - taxiDir = HORIZONTAL; - isExplicitDir = true; - } - - var isVert = taxiDir === VERTICAL; - var l = isVert ? dy : dx; - var pl = isVert ? pdy : pdx; - var sgnL = signum(pl); - var forcedDir = false; - - if (!(isExplicitDir && (turnIsPercent || turnIsNegative)) // forcing in this case would cause weird growing in the opposite direction - && (rawTaxiDir === DOWNWARD && pl < 0 || rawTaxiDir === UPWARD && pl > 0 || rawTaxiDir === LEFTWARD && pl > 0 || rawTaxiDir === RIGHTWARD && pl < 0)) { - sgnL *= -1; - l = sgnL * Math.abs(l); - forcedDir = true; - } - - var d; - - if (turnIsPercent) { - var p = taxiTurnPfVal < 0 ? 1 + taxiTurnPfVal : taxiTurnPfVal; - d = p * l; - } else { - var k = taxiTurnPfVal < 0 ? l : 0; - d = k + taxiTurnPfVal * sgnL; - } - - var getIsTooClose = function getIsTooClose(d) { - return Math.abs(d) < minD || Math.abs(d) >= Math.abs(l); - }; - - var isTooCloseSrc = getIsTooClose(d); - var isTooCloseTgt = getIsTooClose(Math.abs(l) - Math.abs(d)); - var isTooClose = isTooCloseSrc || isTooCloseTgt; - - if (isTooClose && !forcedDir) { - // non-ideal routing - if (isVert) { - // vertical fallbacks - var lShapeInsideSrc = Math.abs(pl) <= srcH / 2; - var lShapeInsideTgt = Math.abs(pdx) <= tgtW / 2; - - if (lShapeInsideSrc) { - // horizontal Z-shape (direction not respected) - var x = (posPts.x1 + posPts.x2) / 2; - var y1 = posPts.y1, - y2 = posPts.y2; - rs.segpts = [x, y1, x, y2]; - } else if (lShapeInsideTgt) { - // vertical Z-shape (distance not respected) - var y = (posPts.y1 + posPts.y2) / 2; - var x1 = posPts.x1, - x2 = posPts.x2; - rs.segpts = [x1, y, x2, y]; - } else { - // L-shape fallback (turn distance not respected, but works well with tree siblings) - rs.segpts = [posPts.x1, posPts.y2]; - } - } else { - // horizontal fallbacks - var _lShapeInsideSrc = Math.abs(pl) <= srcW / 2; - - var _lShapeInsideTgt = Math.abs(pdy) <= tgtH / 2; - - if (_lShapeInsideSrc) { - // vertical Z-shape (direction not respected) - var _y = (posPts.y1 + posPts.y2) / 2; - - var _x = posPts.x1, - _x2 = posPts.x2; - rs.segpts = [_x, _y, _x2, _y]; - } else if (_lShapeInsideTgt) { - // horizontal Z-shape (turn distance not respected) - var _x3 = (posPts.x1 + posPts.x2) / 2; - - var _y2 = posPts.y1, - _y3 = posPts.y2; - rs.segpts = [_x3, _y2, _x3, _y3]; - } else { - // L-shape (turn distance not respected, but works well for tree siblings) - rs.segpts = [posPts.x2, posPts.y1]; - } - } - } else { - // ideal routing - if (isVert) { - var _y4 = posPts.y1 + d + (dIncludesNodeBody ? srcH / 2 * sgnL : 0); - - var _x4 = posPts.x1, - _x5 = posPts.x2; - rs.segpts = [_x4, _y4, _x5, _y4]; - } else { - // horizontal - var _x6 = posPts.x1 + d + (dIncludesNodeBody ? srcW / 2 * sgnL : 0); - - var _y5 = posPts.y1, - _y6 = posPts.y2; - rs.segpts = [_x6, _y5, _x6, _y6]; - } - } -}; - -BRp$3.tryToCorrectInvalidPoints = function (edge, pairInfo) { - var rs = edge._private.rscratch; // can only correct beziers for now... - - if (rs.edgeType === 'bezier') { - var srcPos = pairInfo.srcPos, - tgtPos = pairInfo.tgtPos, - srcW = pairInfo.srcW, - srcH = pairInfo.srcH, - tgtW = pairInfo.tgtW, - tgtH = pairInfo.tgtH, - srcShape = pairInfo.srcShape, - tgtShape = pairInfo.tgtShape; - var badStart = !number(rs.startX) || !number(rs.startY); - var badAStart = !number(rs.arrowStartX) || !number(rs.arrowStartY); - var badEnd = !number(rs.endX) || !number(rs.endY); - var badAEnd = !number(rs.arrowEndX) || !number(rs.arrowEndY); - var minCpADistFactor = 3; - var arrowW = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; - var minCpADist = minCpADistFactor * arrowW; - var startACpDist = dist({ - x: rs.ctrlpts[0], - y: rs.ctrlpts[1] - }, { - x: rs.startX, - y: rs.startY - }); - var closeStartACp = startACpDist < minCpADist; - var endACpDist = dist({ - x: rs.ctrlpts[0], - y: rs.ctrlpts[1] - }, { - x: rs.endX, - y: rs.endY - }); - var closeEndACp = endACpDist < minCpADist; - var overlapping = false; - - if (badStart || badAStart || closeStartACp) { - overlapping = true; // project control point along line from src centre to outside the src shape - // (otherwise intersection will yield nothing) - - var cpD = { - // delta - x: rs.ctrlpts[0] - srcPos.x, - y: rs.ctrlpts[1] - srcPos.y - }; - var cpL = Math.sqrt(cpD.x * cpD.x + cpD.y * cpD.y); // length of line - - var cpM = { - // normalised delta - x: cpD.x / cpL, - y: cpD.y / cpL - }; - var radius = Math.max(srcW, srcH); - var cpProj = { - // *2 radius guarantees outside shape - x: rs.ctrlpts[0] + cpM.x * 2 * radius, - y: rs.ctrlpts[1] + cpM.y * 2 * radius - }; - var srcCtrlPtIntn = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, cpProj.x, cpProj.y, 0); - - if (closeStartACp) { - rs.ctrlpts[0] = rs.ctrlpts[0] + cpM.x * (minCpADist - startACpDist); - rs.ctrlpts[1] = rs.ctrlpts[1] + cpM.y * (minCpADist - startACpDist); - } else { - rs.ctrlpts[0] = srcCtrlPtIntn[0] + cpM.x * minCpADist; - rs.ctrlpts[1] = srcCtrlPtIntn[1] + cpM.y * minCpADist; - } - } - - if (badEnd || badAEnd || closeEndACp) { - overlapping = true; // project control point along line from tgt centre to outside the tgt shape - // (otherwise intersection will yield nothing) - - var _cpD = { - // delta - x: rs.ctrlpts[0] - tgtPos.x, - y: rs.ctrlpts[1] - tgtPos.y - }; - - var _cpL = Math.sqrt(_cpD.x * _cpD.x + _cpD.y * _cpD.y); // length of line - - - var _cpM = { - // normalised delta - x: _cpD.x / _cpL, - y: _cpD.y / _cpL - }; - - var _radius = Math.max(srcW, srcH); - - var _cpProj = { - // *2 radius guarantees outside shape - x: rs.ctrlpts[0] + _cpM.x * 2 * _radius, - y: rs.ctrlpts[1] + _cpM.y * 2 * _radius - }; - var tgtCtrlPtIntn = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, _cpProj.x, _cpProj.y, 0); - - if (closeEndACp) { - rs.ctrlpts[0] = rs.ctrlpts[0] + _cpM.x * (minCpADist - endACpDist); - rs.ctrlpts[1] = rs.ctrlpts[1] + _cpM.y * (minCpADist - endACpDist); - } else { - rs.ctrlpts[0] = tgtCtrlPtIntn[0] + _cpM.x * minCpADist; - rs.ctrlpts[1] = tgtCtrlPtIntn[1] + _cpM.y * minCpADist; - } - } - - if (overlapping) { - // recalc endpts - this.findEndpoints(edge); - } - } -}; - -BRp$3.storeAllpts = function (edge) { - var rs = edge._private.rscratch; - - if (rs.edgeType === 'multibezier' || rs.edgeType === 'bezier' || rs.edgeType === 'self' || rs.edgeType === 'compound') { - rs.allpts = []; - rs.allpts.push(rs.startX, rs.startY); - - for (var b = 0; b + 1 < rs.ctrlpts.length; b += 2) { - // ctrl pt itself - rs.allpts.push(rs.ctrlpts[b], rs.ctrlpts[b + 1]); // the midpt between ctrlpts as intermediate destination pts - - if (b + 3 < rs.ctrlpts.length) { - rs.allpts.push((rs.ctrlpts[b] + rs.ctrlpts[b + 2]) / 2, (rs.ctrlpts[b + 1] + rs.ctrlpts[b + 3]) / 2); - } - } - - rs.allpts.push(rs.endX, rs.endY); - var m, mt; - - if (rs.ctrlpts.length / 2 % 2 === 0) { - m = rs.allpts.length / 2 - 1; - rs.midX = rs.allpts[m]; - rs.midY = rs.allpts[m + 1]; - } else { - m = rs.allpts.length / 2 - 3; - mt = 0.5; - rs.midX = qbezierAt(rs.allpts[m], rs.allpts[m + 2], rs.allpts[m + 4], mt); - rs.midY = qbezierAt(rs.allpts[m + 1], rs.allpts[m + 3], rs.allpts[m + 5], mt); - } - } else if (rs.edgeType === 'straight') { - // need to calc these after endpts - rs.allpts = [rs.startX, rs.startY, rs.endX, rs.endY]; // default midpt for labels etc - - rs.midX = (rs.startX + rs.endX + rs.arrowStartX + rs.arrowEndX) / 4; - rs.midY = (rs.startY + rs.endY + rs.arrowStartY + rs.arrowEndY) / 4; - } else if (rs.edgeType === 'segments') { - rs.allpts = []; - rs.allpts.push(rs.startX, rs.startY); - rs.allpts.push.apply(rs.allpts, rs.segpts); - rs.allpts.push(rs.endX, rs.endY); - - if (rs.segpts.length % 4 === 0) { - var i2 = rs.segpts.length / 2; - var i1 = i2 - 2; - rs.midX = (rs.segpts[i1] + rs.segpts[i2]) / 2; - rs.midY = (rs.segpts[i1 + 1] + rs.segpts[i2 + 1]) / 2; - } else { - var _i = rs.segpts.length / 2 - 1; - - rs.midX = rs.segpts[_i]; - rs.midY = rs.segpts[_i + 1]; - } - } -}; - -BRp$3.checkForInvalidEdgeWarning = function (edge) { - var rs = edge[0]._private.rscratch; - - if (rs.nodesOverlap || number(rs.startX) && number(rs.startY) && number(rs.endX) && number(rs.endY)) { - rs.loggedErr = false; - } else { - if (!rs.loggedErr) { - rs.loggedErr = true; - warn('Edge `' + edge.id() + '` has invalid endpoints and so it is impossible to draw. Adjust your edge style (e.g. control points) accordingly or use an alternative edge type. This is expected behaviour when the source node and the target node overlap.'); - } - } -}; - -BRp$3.findEdgeControlPoints = function (edges) { - var _this = this; - - if (!edges || edges.length === 0) { - return; - } - - var r = this; - var cy = r.cy; - var hasCompounds = cy.hasCompoundNodes(); - var hashTable = { - map: new Map$1(), - get: function get(pairId) { - var map2 = this.map.get(pairId[0]); - - if (map2 != null) { - return map2.get(pairId[1]); - } else { - return null; - } - }, - set: function set(pairId, val) { - var map2 = this.map.get(pairId[0]); - - if (map2 == null) { - map2 = new Map$1(); - this.map.set(pairId[0], map2); - } - - map2.set(pairId[1], val); - } - }; - var pairIds = []; - var haystackEdges = []; // create a table of edge (src, tgt) => list of edges between them - - for (var i = 0; i < edges.length; i++) { - var edge = edges[i]; - var _p = edge._private; - var curveStyle = edge.pstyle('curve-style').value; // ignore edges who are not to be displayed - // they shouldn't take up space - - if (edge.removed() || !edge.takesUpSpace()) { - continue; - } - - if (curveStyle === 'haystack') { - haystackEdges.push(edge); - continue; - } - - var edgeIsUnbundled = curveStyle === 'unbundled-bezier' || curveStyle === 'segments' || curveStyle === 'straight' || curveStyle === 'taxi'; - var edgeIsBezier = curveStyle === 'unbundled-bezier' || curveStyle === 'bezier'; - var src = _p.source; - var tgt = _p.target; - var srcIndex = src.poolIndex(); - var tgtIndex = tgt.poolIndex(); - var pairId = [srcIndex, tgtIndex].sort(); - var tableEntry = hashTable.get(pairId); - - if (tableEntry == null) { - tableEntry = { - eles: [] - }; - hashTable.set(pairId, tableEntry); - pairIds.push(pairId); - } - - tableEntry.eles.push(edge); - - if (edgeIsUnbundled) { - tableEntry.hasUnbundled = true; - } - - if (edgeIsBezier) { - tableEntry.hasBezier = true; - } - } // for each pair (src, tgt), create the ctrl pts - // Nested for loop is OK; total number of iterations for both loops = edgeCount - - - var _loop = function _loop(p) { - var pairId = pairIds[p]; - var pairInfo = hashTable.get(pairId); - var swappedpairInfo = void 0; - - if (!pairInfo.hasUnbundled) { - var pllEdges = pairInfo.eles[0].parallelEdges().filter(function (e) { - return e.isBundledBezier(); - }); - clearArray(pairInfo.eles); - pllEdges.forEach(function (edge) { - return pairInfo.eles.push(edge); - }); // for each pair id, the edges should be sorted by index - - pairInfo.eles.sort(function (edge1, edge2) { - return edge1.poolIndex() - edge2.poolIndex(); - }); - } - - var firstEdge = pairInfo.eles[0]; - var src = firstEdge.source(); - var tgt = firstEdge.target(); // make sure src/tgt distinction is consistent w.r.t. pairId - - if (src.poolIndex() > tgt.poolIndex()) { - var temp = src; - src = tgt; - tgt = temp; - } - - var srcPos = pairInfo.srcPos = src.position(); - var tgtPos = pairInfo.tgtPos = tgt.position(); - var srcW = pairInfo.srcW = src.outerWidth(); - var srcH = pairInfo.srcH = src.outerHeight(); - var tgtW = pairInfo.tgtW = tgt.outerWidth(); - var tgtH = pairInfo.tgtH = tgt.outerHeight(); - - var srcShape = pairInfo.srcShape = r.nodeShapes[_this.getNodeShape(src)]; - - var tgtShape = pairInfo.tgtShape = r.nodeShapes[_this.getNodeShape(tgt)]; - - pairInfo.dirCounts = { - 'north': 0, - 'west': 0, - 'south': 0, - 'east': 0, - 'northwest': 0, - 'southwest': 0, - 'northeast': 0, - 'southeast': 0 - }; - - for (var _i2 = 0; _i2 < pairInfo.eles.length; _i2++) { - var _edge = pairInfo.eles[_i2]; - var rs = _edge[0]._private.rscratch; - - var _curveStyle = _edge.pstyle('curve-style').value; - - var _edgeIsUnbundled = _curveStyle === 'unbundled-bezier' || _curveStyle === 'segments' || _curveStyle === 'taxi'; // whether the normalised pair order is the reverse of the edge's src-tgt order - - - var edgeIsSwapped = !src.same(_edge.source()); - - if (!pairInfo.calculatedIntersection && src !== tgt && (pairInfo.hasBezier || pairInfo.hasUnbundled)) { - pairInfo.calculatedIntersection = true; // pt outside src shape to calc distance/displacement from src to tgt - - var srcOutside = srcShape.intersectLine(srcPos.x, srcPos.y, srcW, srcH, tgtPos.x, tgtPos.y, 0); - var srcIntn = pairInfo.srcIntn = srcOutside; // pt outside tgt shape to calc distance/displacement from src to tgt - - var tgtOutside = tgtShape.intersectLine(tgtPos.x, tgtPos.y, tgtW, tgtH, srcPos.x, srcPos.y, 0); - var tgtIntn = pairInfo.tgtIntn = tgtOutside; - var intersectionPts = pairInfo.intersectionPts = { - x1: srcOutside[0], - x2: tgtOutside[0], - y1: srcOutside[1], - y2: tgtOutside[1] - }; - var posPts = pairInfo.posPts = { - x1: srcPos.x, - x2: tgtPos.x, - y1: srcPos.y, - y2: tgtPos.y - }; - var dy = tgtOutside[1] - srcOutside[1]; - var dx = tgtOutside[0] - srcOutside[0]; - var l = Math.sqrt(dx * dx + dy * dy); - var vector = pairInfo.vector = { - x: dx, - y: dy - }; - var vectorNorm = pairInfo.vectorNorm = { - x: vector.x / l, - y: vector.y / l - }; - var vectorNormInverse = { - x: -vectorNorm.y, - y: vectorNorm.x - }; // if node shapes overlap, then no ctrl pts to draw - - pairInfo.nodesOverlap = !number(l) || tgtShape.checkPoint(srcOutside[0], srcOutside[1], 0, tgtW, tgtH, tgtPos.x, tgtPos.y) || srcShape.checkPoint(tgtOutside[0], tgtOutside[1], 0, srcW, srcH, srcPos.x, srcPos.y); - pairInfo.vectorNormInverse = vectorNormInverse; - swappedpairInfo = { - nodesOverlap: pairInfo.nodesOverlap, - dirCounts: pairInfo.dirCounts, - calculatedIntersection: true, - hasBezier: pairInfo.hasBezier, - hasUnbundled: pairInfo.hasUnbundled, - eles: pairInfo.eles, - srcPos: tgtPos, - tgtPos: srcPos, - srcW: tgtW, - srcH: tgtH, - tgtW: srcW, - tgtH: srcH, - srcIntn: tgtIntn, - tgtIntn: srcIntn, - srcShape: tgtShape, - tgtShape: srcShape, - posPts: { - x1: posPts.x2, - y1: posPts.y2, - x2: posPts.x1, - y2: posPts.y1 - }, - intersectionPts: { - x1: intersectionPts.x2, - y1: intersectionPts.y2, - x2: intersectionPts.x1, - y2: intersectionPts.y1 - }, - vector: { - x: -vector.x, - y: -vector.y - }, - vectorNorm: { - x: -vectorNorm.x, - y: -vectorNorm.y - }, - vectorNormInverse: { - x: -vectorNormInverse.x, - y: -vectorNormInverse.y - } - }; - } - - var passedPairInfo = edgeIsSwapped ? swappedpairInfo : pairInfo; - rs.nodesOverlap = passedPairInfo.nodesOverlap; - rs.srcIntn = passedPairInfo.srcIntn; - rs.tgtIntn = passedPairInfo.tgtIntn; - - if (hasCompounds && (src.isParent() || src.isChild() || tgt.isParent() || tgt.isChild()) && (src.parents().anySame(tgt) || tgt.parents().anySame(src) || src.same(tgt) && src.isParent())) { - _this.findCompoundLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); - } else if (src === tgt) { - _this.findLoopPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled); - } else if (_curveStyle === 'segments') { - _this.findSegmentsPoints(_edge, passedPairInfo); - } else if (_curveStyle === 'taxi') { - _this.findTaxiPoints(_edge, passedPairInfo); - } else if (_curveStyle === 'straight' || !_edgeIsUnbundled && pairInfo.eles.length % 2 === 1 && _i2 === Math.floor(pairInfo.eles.length / 2)) { - _this.findStraightEdgePoints(_edge); - } else { - _this.findBezierPoints(_edge, passedPairInfo, _i2, _edgeIsUnbundled, edgeIsSwapped); - } - - _this.findEndpoints(_edge); - - _this.tryToCorrectInvalidPoints(_edge, passedPairInfo); - - _this.checkForInvalidEdgeWarning(_edge); - - _this.storeAllpts(_edge); - - _this.storeEdgeProjections(_edge); - - _this.calculateArrowAngles(_edge); - - _this.recalculateEdgeLabelProjections(_edge); - - _this.calculateLabelAngles(_edge); - } // for pair edges - - }; - - for (var p = 0; p < pairIds.length; p++) { - _loop(p); - } // for pair ids - // haystacks avoid the expense of pairInfo stuff (intersections etc.) - - - this.findHaystackPoints(haystackEdges); -}; - -function getPts(pts) { - var retPts = []; - - if (pts == null) { - return; - } - - for (var i = 0; i < pts.length; i += 2) { - var x = pts[i]; - var y = pts[i + 1]; - retPts.push({ - x: x, - y: y - }); - } - - return retPts; -} - -BRp$3.getSegmentPoints = function (edge) { - var rs = edge[0]._private.rscratch; - var type = rs.edgeType; - - if (type === 'segments') { - this.recalculateRenderedStyle(edge); - return getPts(rs.segpts); - } -}; - -BRp$3.getControlPoints = function (edge) { - var rs = edge[0]._private.rscratch; - var type = rs.edgeType; - - if (type === 'bezier' || type === 'multibezier' || type === 'self' || type === 'compound') { - this.recalculateRenderedStyle(edge); - return getPts(rs.ctrlpts); - } -}; - -BRp$3.getEdgeMidpoint = function (edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - return { - x: rs.midX, - y: rs.midY - }; -}; - -var BRp$4 = {}; - -BRp$4.manualEndptToPx = function (node, prop) { - var r = this; - var npos = node.position(); - var w = node.outerWidth(); - var h = node.outerHeight(); - - if (prop.value.length === 2) { - var p = [prop.pfValue[0], prop.pfValue[1]]; - - if (prop.units[0] === '%') { - p[0] = p[0] * w; - } - - if (prop.units[1] === '%') { - p[1] = p[1] * h; - } - - p[0] += npos.x; - p[1] += npos.y; - return p; - } else { - var angle = prop.pfValue[0]; - angle = -Math.PI / 2 + angle; // start at 12 o'clock - - var l = 2 * Math.max(w, h); - var _p = [npos.x + Math.cos(angle) * l, npos.y + Math.sin(angle) * l]; - return r.nodeShapes[this.getNodeShape(node)].intersectLine(npos.x, npos.y, w, h, _p[0], _p[1], 0); - } -}; - -BRp$4.findEndpoints = function (edge) { - var r = this; - var intersect; - var source = edge.source()[0]; - var target = edge.target()[0]; - var srcPos = source.position(); - var tgtPos = target.position(); - var tgtArShape = edge.pstyle('target-arrow-shape').value; - var srcArShape = edge.pstyle('source-arrow-shape').value; - var tgtDist = edge.pstyle('target-distance-from-node').pfValue; - var srcDist = edge.pstyle('source-distance-from-node').pfValue; - var curveStyle = edge.pstyle('curve-style').value; - var rs = edge._private.rscratch; - var et = rs.edgeType; - var taxi = curveStyle === 'taxi'; - var self = et === 'self' || et === 'compound'; - var bezier = et === 'bezier' || et === 'multibezier' || self; - var multi = et !== 'bezier'; - var lines = et === 'straight' || et === 'segments'; - var segments = et === 'segments'; - var hasEndpts = bezier || multi || lines; - var overrideEndpts = self || taxi; - var srcManEndpt = edge.pstyle('source-endpoint'); - var srcManEndptVal = overrideEndpts ? 'outside-to-node' : srcManEndpt.value; - var tgtManEndpt = edge.pstyle('target-endpoint'); - var tgtManEndptVal = overrideEndpts ? 'outside-to-node' : tgtManEndpt.value; - rs.srcManEndpt = srcManEndpt; - rs.tgtManEndpt = tgtManEndpt; - var p1; // last known point of edge on target side - - var p2; // last known point of edge on source side - - var p1_i; // point to intersect with target shape - - var p2_i; // point to intersect with source shape - - if (bezier) { - var cpStart = [rs.ctrlpts[0], rs.ctrlpts[1]]; - var cpEnd = multi ? [rs.ctrlpts[rs.ctrlpts.length - 2], rs.ctrlpts[rs.ctrlpts.length - 1]] : cpStart; - p1 = cpEnd; - p2 = cpStart; - } else if (lines) { - var srcArrowFromPt = !segments ? [tgtPos.x, tgtPos.y] : rs.segpts.slice(0, 2); - var tgtArrowFromPt = !segments ? [srcPos.x, srcPos.y] : rs.segpts.slice(rs.segpts.length - 2); - p1 = tgtArrowFromPt; - p2 = srcArrowFromPt; - } - - if (tgtManEndptVal === 'inside-to-node') { - intersect = [tgtPos.x, tgtPos.y]; - } else if (tgtManEndpt.units) { - intersect = this.manualEndptToPx(target, tgtManEndpt); - } else if (tgtManEndptVal === 'outside-to-line') { - intersect = rs.tgtIntn; // use cached value from ctrlpt calc - } else { - if (tgtManEndptVal === 'outside-to-node' || tgtManEndptVal === 'outside-to-node-or-label') { - p1_i = p1; - } else if (tgtManEndptVal === 'outside-to-line' || tgtManEndptVal === 'outside-to-line-or-label') { - p1_i = [srcPos.x, srcPos.y]; - } - - intersect = r.nodeShapes[this.getNodeShape(target)].intersectLine(tgtPos.x, tgtPos.y, target.outerWidth(), target.outerHeight(), p1_i[0], p1_i[1], 0); - - if (tgtManEndptVal === 'outside-to-node-or-label' || tgtManEndptVal === 'outside-to-line-or-label') { - var trs = target._private.rscratch; - var lw = trs.labelWidth; - var lh = trs.labelHeight; - var lx = trs.labelX; - var ly = trs.labelY; - var lw2 = lw / 2; - var lh2 = lh / 2; - var va = target.pstyle('text-valign').value; - - if (va === 'top') { - ly -= lh2; - } else if (va === 'bottom') { - ly += lh2; - } - - var ha = target.pstyle('text-halign').value; - - if (ha === 'left') { - lx -= lw2; - } else if (ha === 'right') { - lx += lw2; - } - - var labelIntersect = polygonIntersectLine(p1_i[0], p1_i[1], [lx - lw2, ly - lh2, lx + lw2, ly - lh2, lx + lw2, ly + lh2, lx - lw2, ly + lh2], tgtPos.x, tgtPos.y); - - if (labelIntersect.length > 0) { - var refPt = srcPos; - var intSqdist = sqdist(refPt, array2point(intersect)); - var labIntSqdist = sqdist(refPt, array2point(labelIntersect)); - var minSqDist = intSqdist; - - if (labIntSqdist < intSqdist) { - intersect = labelIntersect; - minSqDist = labIntSqdist; - } - - if (labelIntersect.length > 2) { - var labInt2SqDist = sqdist(refPt, { - x: labelIntersect[2], - y: labelIntersect[3] - }); - - if (labInt2SqDist < minSqDist) { - intersect = [labelIntersect[2], labelIntersect[3]]; - } - } - } - } - } - - var arrowEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].spacing(edge) + tgtDist); - var edgeEnd = shortenIntersection(intersect, p1, r.arrowShapes[tgtArShape].gap(edge) + tgtDist); - rs.endX = edgeEnd[0]; - rs.endY = edgeEnd[1]; - rs.arrowEndX = arrowEnd[0]; - rs.arrowEndY = arrowEnd[1]; - - if (srcManEndptVal === 'inside-to-node') { - intersect = [srcPos.x, srcPos.y]; - } else if (srcManEndpt.units) { - intersect = this.manualEndptToPx(source, srcManEndpt); - } else if (srcManEndptVal === 'outside-to-line') { - intersect = rs.srcIntn; // use cached value from ctrlpt calc - } else { - if (srcManEndptVal === 'outside-to-node' || srcManEndptVal === 'outside-to-node-or-label') { - p2_i = p2; - } else if (srcManEndptVal === 'outside-to-line' || srcManEndptVal === 'outside-to-line-or-label') { - p2_i = [tgtPos.x, tgtPos.y]; - } - - intersect = r.nodeShapes[this.getNodeShape(source)].intersectLine(srcPos.x, srcPos.y, source.outerWidth(), source.outerHeight(), p2_i[0], p2_i[1], 0); - - if (srcManEndptVal === 'outside-to-node-or-label' || srcManEndptVal === 'outside-to-line-or-label') { - var srs = source._private.rscratch; - var _lw = srs.labelWidth; - var _lh = srs.labelHeight; - var _lx = srs.labelX; - var _ly = srs.labelY; - - var _lw2 = _lw / 2; - - var _lh2 = _lh / 2; - - var _va = source.pstyle('text-valign').value; - - if (_va === 'top') { - _ly -= _lh2; - } else if (_va === 'bottom') { - _ly += _lh2; - } - - var _ha = source.pstyle('text-halign').value; - - if (_ha === 'left') { - _lx -= _lw2; - } else if (_ha === 'right') { - _lx += _lw2; - } - - var _labelIntersect = polygonIntersectLine(p2_i[0], p2_i[1], [_lx - _lw2, _ly - _lh2, _lx + _lw2, _ly - _lh2, _lx + _lw2, _ly + _lh2, _lx - _lw2, _ly + _lh2], srcPos.x, srcPos.y); - - if (_labelIntersect.length > 0) { - var _refPt = tgtPos; - - var _intSqdist = sqdist(_refPt, array2point(intersect)); - - var _labIntSqdist = sqdist(_refPt, array2point(_labelIntersect)); - - var _minSqDist = _intSqdist; - - if (_labIntSqdist < _intSqdist) { - intersect = [_labelIntersect[0], _labelIntersect[1]]; - _minSqDist = _labIntSqdist; - } - - if (_labelIntersect.length > 2) { - var _labInt2SqDist = sqdist(_refPt, { - x: _labelIntersect[2], - y: _labelIntersect[3] - }); - - if (_labInt2SqDist < _minSqDist) { - intersect = [_labelIntersect[2], _labelIntersect[3]]; - } - } - } - } - } - - var arrowStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].spacing(edge) + srcDist); - var edgeStart = shortenIntersection(intersect, p2, r.arrowShapes[srcArShape].gap(edge) + srcDist); - rs.startX = edgeStart[0]; - rs.startY = edgeStart[1]; - rs.arrowStartX = arrowStart[0]; - rs.arrowStartY = arrowStart[1]; - - if (hasEndpts) { - if (!number(rs.startX) || !number(rs.startY) || !number(rs.endX) || !number(rs.endY)) { - rs.badLine = true; - } else { - rs.badLine = false; - } - } -}; - -BRp$4.getSourceEndpoint = function (edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - - switch (rs.edgeType) { - case 'haystack': - return { - x: rs.haystackPts[0], - y: rs.haystackPts[1] - }; - - default: - return { - x: rs.arrowStartX, - y: rs.arrowStartY - }; - } -}; - -BRp$4.getTargetEndpoint = function (edge) { - var rs = edge[0]._private.rscratch; - this.recalculateRenderedStyle(edge); - - switch (rs.edgeType) { - case 'haystack': - return { - x: rs.haystackPts[2], - y: rs.haystackPts[3] - }; - - default: - return { - x: rs.arrowEndX, - y: rs.arrowEndY - }; - } -}; - -var BRp$5 = {}; - -function pushBezierPts(r, edge, pts) { - var qbezierAt$1 = function qbezierAt$1(p1, p2, p3, t) { - return qbezierAt(p1, p2, p3, t); - }; - - var _p = edge._private; - var bpts = _p.rstyle.bezierPts; - - for (var i = 0; i < r.bezierProjPcts.length; i++) { - var p = r.bezierProjPcts[i]; - bpts.push({ - x: qbezierAt$1(pts[0], pts[2], pts[4], p), - y: qbezierAt$1(pts[1], pts[3], pts[5], p) - }); - } -} - -BRp$5.storeEdgeProjections = function (edge) { - var _p = edge._private; - var rs = _p.rscratch; - var et = rs.edgeType; // clear the cached points state - - _p.rstyle.bezierPts = null; - _p.rstyle.linePts = null; - _p.rstyle.haystackPts = null; - - if (et === 'multibezier' || et === 'bezier' || et === 'self' || et === 'compound') { - _p.rstyle.bezierPts = []; - - for (var i = 0; i + 5 < rs.allpts.length; i += 4) { - pushBezierPts(this, edge, rs.allpts.slice(i, i + 6)); - } - } else if (et === 'segments') { - var lpts = _p.rstyle.linePts = []; - - for (var i = 0; i + 1 < rs.allpts.length; i += 2) { - lpts.push({ - x: rs.allpts[i], - y: rs.allpts[i + 1] - }); - } - } else if (et === 'haystack') { - var hpts = rs.haystackPts; - _p.rstyle.haystackPts = [{ - x: hpts[0], - y: hpts[1] - }, { - x: hpts[2], - y: hpts[3] - }]; - } - - _p.rstyle.arrowWidth = this.getArrowWidth(edge.pstyle('width').pfValue, edge.pstyle('arrow-scale').value) * this.arrowShapeWidth; -}; - -BRp$5.recalculateEdgeProjections = function (edges) { - this.findEdgeControlPoints(edges); -}; - -/* global document */ - -var BRp$6 = {}; - -BRp$6.recalculateNodeLabelProjection = function (node) { - var content = node.pstyle('label').strValue; - - if (emptyString(content)) { - return; - } - - var textX, textY; - var _p = node._private; - var nodeWidth = node.width(); - var nodeHeight = node.height(); - var padding = node.padding(); - var nodePos = node.position(); - var textHalign = node.pstyle('text-halign').strValue; - var textValign = node.pstyle('text-valign').strValue; - var rs = _p.rscratch; - var rstyle = _p.rstyle; - - switch (textHalign) { - case 'left': - textX = nodePos.x - nodeWidth / 2 - padding; - break; - - case 'right': - textX = nodePos.x + nodeWidth / 2 + padding; - break; - - default: - // e.g. center - textX = nodePos.x; - } - - switch (textValign) { - case 'top': - textY = nodePos.y - nodeHeight / 2 - padding; - break; - - case 'bottom': - textY = nodePos.y + nodeHeight / 2 + padding; - break; - - default: - // e.g. middle - textY = nodePos.y; - } - - rs.labelX = textX; - rs.labelY = textY; - rstyle.labelX = textX; - rstyle.labelY = textY; - this.applyLabelDimensions(node); -}; - -var lineAngleFromDelta = function lineAngleFromDelta(dx, dy) { - var angle = Math.atan(dy / dx); - - if (dx === 0 && angle < 0) { - angle = angle * -1; - } - - return angle; -}; - -var lineAngle = function lineAngle(p0, p1) { - var dx = p1.x - p0.x; - var dy = p1.y - p0.y; - return lineAngleFromDelta(dx, dy); -}; - -var bezierAngle = function bezierAngle(p0, p1, p2, t) { - var t0 = bound(0, t - 0.001, 1); - var t1 = bound(0, t + 0.001, 1); - var lp0 = qbezierPtAt(p0, p1, p2, t0); - var lp1 = qbezierPtAt(p0, p1, p2, t1); - return lineAngle(lp0, lp1); -}; - -BRp$6.recalculateEdgeLabelProjections = function (edge) { - var p; - var _p = edge._private; - var rs = _p.rscratch; - var r = this; - var content = { - mid: edge.pstyle('label').strValue, - source: edge.pstyle('source-label').strValue, - target: edge.pstyle('target-label').strValue - }; - - if (content.mid || content.source || content.target) ; else { - return; // no labels => no calcs - } // add center point to style so bounding box calculations can use it - // - - - p = { - x: rs.midX, - y: rs.midY - }; - - var setRs = function setRs(propName, prefix, value) { - setPrefixedProperty(_p.rscratch, propName, prefix, value); - setPrefixedProperty(_p.rstyle, propName, prefix, value); - }; - - setRs('labelX', null, p.x); - setRs('labelY', null, p.y); - var midAngle = lineAngleFromDelta(rs.midDispX, rs.midDispY); - setRs('labelAutoAngle', null, midAngle); - - var createControlPointInfo = function createControlPointInfo() { - if (createControlPointInfo.cache) { - return createControlPointInfo.cache; - } // use cache so only 1x per edge - - - var ctrlpts = []; // store each ctrlpt info init - - for (var i = 0; i + 5 < rs.allpts.length; i += 4) { - var p0 = { - x: rs.allpts[i], - y: rs.allpts[i + 1] - }; - var p1 = { - x: rs.allpts[i + 2], - y: rs.allpts[i + 3] - }; // ctrlpt - - var p2 = { - x: rs.allpts[i + 4], - y: rs.allpts[i + 5] - }; - ctrlpts.push({ - p0: p0, - p1: p1, - p2: p2, - startDist: 0, - length: 0, - segments: [] - }); - } - - var bpts = _p.rstyle.bezierPts; - var nProjs = r.bezierProjPcts.length; - - function addSegment(cp, p0, p1, t0, t1) { - var length = dist(p0, p1); - var prevSegment = cp.segments[cp.segments.length - 1]; - var segment = { - p0: p0, - p1: p1, - t0: t0, - t1: t1, - startDist: prevSegment ? prevSegment.startDist + prevSegment.length : 0, - length: length - }; - cp.segments.push(segment); - cp.length += length; - } // update each ctrlpt with segment info - - - for (var _i = 0; _i < ctrlpts.length; _i++) { - var cp = ctrlpts[_i]; - var prevCp = ctrlpts[_i - 1]; - - if (prevCp) { - cp.startDist = prevCp.startDist + prevCp.length; - } - - addSegment(cp, cp.p0, bpts[_i * nProjs], 0, r.bezierProjPcts[0]); // first - - for (var j = 0; j < nProjs - 1; j++) { - addSegment(cp, bpts[_i * nProjs + j], bpts[_i * nProjs + j + 1], r.bezierProjPcts[j], r.bezierProjPcts[j + 1]); - } - - addSegment(cp, bpts[_i * nProjs + nProjs - 1], cp.p2, r.bezierProjPcts[nProjs - 1], 1); // last - } - - return createControlPointInfo.cache = ctrlpts; - }; - - var calculateEndProjection = function calculateEndProjection(prefix) { - var angle; - var isSrc = prefix === 'source'; - - if (!content[prefix]) { - return; - } - - var offset = edge.pstyle(prefix + '-text-offset').pfValue; - - switch (rs.edgeType) { - case 'self': - case 'compound': - case 'bezier': - case 'multibezier': - { - var cps = createControlPointInfo(); - var selected; - var startDist = 0; - var totalDist = 0; // find the segment we're on - - for (var i = 0; i < cps.length; i++) { - var _cp = cps[isSrc ? i : cps.length - 1 - i]; - - for (var j = 0; j < _cp.segments.length; j++) { - var _seg = _cp.segments[isSrc ? j : _cp.segments.length - 1 - j]; - var lastSeg = i === cps.length - 1 && j === _cp.segments.length - 1; - startDist = totalDist; - totalDist += _seg.length; - - if (totalDist >= offset || lastSeg) { - selected = { - cp: _cp, - segment: _seg - }; - break; - } - } - - if (selected) { - break; - } - } - - var cp = selected.cp; - var seg = selected.segment; - var tSegment = (offset - startDist) / seg.length; - var segDt = seg.t1 - seg.t0; - var t = isSrc ? seg.t0 + segDt * tSegment : seg.t1 - segDt * tSegment; - t = bound(0, t, 1); - p = qbezierPtAt(cp.p0, cp.p1, cp.p2, t); - angle = bezierAngle(cp.p0, cp.p1, cp.p2, t); - break; - } - - case 'straight': - case 'segments': - case 'haystack': - { - var d = 0, - di, - d0; - var p0, p1; - var l = rs.allpts.length; - - for (var _i2 = 0; _i2 + 3 < l; _i2 += 2) { - if (isSrc) { - p0 = { - x: rs.allpts[_i2], - y: rs.allpts[_i2 + 1] - }; - p1 = { - x: rs.allpts[_i2 + 2], - y: rs.allpts[_i2 + 3] - }; - } else { - p0 = { - x: rs.allpts[l - 2 - _i2], - y: rs.allpts[l - 1 - _i2] - }; - p1 = { - x: rs.allpts[l - 4 - _i2], - y: rs.allpts[l - 3 - _i2] - }; - } - - di = dist(p0, p1); - d0 = d; - d += di; - - if (d >= offset) { - break; - } - } - - var pD = offset - d0; - - var _t = pD / di; - - _t = bound(0, _t, 1); - p = lineAt(p0, p1, _t); - angle = lineAngle(p0, p1); - break; - } - } - - setRs('labelX', prefix, p.x); - setRs('labelY', prefix, p.y); - setRs('labelAutoAngle', prefix, angle); - }; - - calculateEndProjection('source'); - calculateEndProjection('target'); - this.applyLabelDimensions(edge); -}; - -BRp$6.applyLabelDimensions = function (ele) { - this.applyPrefixedLabelDimensions(ele); - - if (ele.isEdge()) { - this.applyPrefixedLabelDimensions(ele, 'source'); - this.applyPrefixedLabelDimensions(ele, 'target'); - } -}; - -BRp$6.applyPrefixedLabelDimensions = function (ele, prefix) { - var _p = ele._private; - var text = this.getLabelText(ele, prefix); - var labelDims = this.calculateLabelDimensions(ele, text); - var lineHeight = ele.pstyle('line-height').pfValue; - var textWrap = ele.pstyle('text-wrap').strValue; - var lines = getPrefixedProperty(_p.rscratch, 'labelWrapCachedLines', prefix) || []; - var numLines = textWrap !== 'wrap' ? 1 : Math.max(lines.length, 1); - var normPerLineHeight = labelDims.height / numLines; - var labelLineHeight = normPerLineHeight * lineHeight; - var width = labelDims.width; - var height = labelDims.height + (numLines - 1) * (lineHeight - 1) * normPerLineHeight; - setPrefixedProperty(_p.rstyle, 'labelWidth', prefix, width); - setPrefixedProperty(_p.rscratch, 'labelWidth', prefix, width); - setPrefixedProperty(_p.rstyle, 'labelHeight', prefix, height); - setPrefixedProperty(_p.rscratch, 'labelHeight', prefix, height); - setPrefixedProperty(_p.rscratch, 'labelLineHeight', prefix, labelLineHeight); -}; - -BRp$6.getLabelText = function (ele, prefix) { - var _p = ele._private; - var pfd = prefix ? prefix + '-' : ''; - var text = ele.pstyle(pfd + 'label').strValue; - var textTransform = ele.pstyle('text-transform').value; - - var rscratch = function rscratch(propName, value) { - if (value) { - setPrefixedProperty(_p.rscratch, propName, prefix, value); - return value; - } else { - return getPrefixedProperty(_p.rscratch, propName, prefix); - } - }; // for empty text, skip all processing - - - if (!text) { - return ''; - } - - if (textTransform == 'none') ; else if (textTransform == 'uppercase') { - text = text.toUpperCase(); - } else if (textTransform == 'lowercase') { - text = text.toLowerCase(); - } - - var wrapStyle = ele.pstyle('text-wrap').value; - - if (wrapStyle === 'wrap') { - var labelKey = rscratch('labelKey'); // save recalc if the label is the same as before - - if (labelKey != null && rscratch('labelWrapKey') === labelKey) { - return rscratch('labelWrapCachedText'); - } - - var zwsp = "\u200B"; - var lines = text.split('\n'); - var maxW = ele.pstyle('text-max-width').pfValue; - var overflow = ele.pstyle('text-overflow-wrap').value; - var overflowAny = overflow === 'anywhere'; - var wrappedLines = []; - var wordsRegex = /[\s\u200b]+/; - var wordSeparator = overflowAny ? '' : ' '; - - for (var l = 0; l < lines.length; l++) { - var line = lines[l]; - var lineDims = this.calculateLabelDimensions(ele, line); - var lineW = lineDims.width; - - if (overflowAny) { - var processedLine = line.split('').join(zwsp); - line = processedLine; - } - - if (lineW > maxW) { - // line is too long - var words = line.split(wordsRegex); - var subline = ''; - - for (var w = 0; w < words.length; w++) { - var word = words[w]; - var testLine = subline.length === 0 ? word : subline + wordSeparator + word; - var testDims = this.calculateLabelDimensions(ele, testLine); - var testW = testDims.width; - - if (testW <= maxW) { - // word fits on current line - subline += word + wordSeparator; - } else { - // word starts new line - if (subline) { - wrappedLines.push(subline); - } - - subline = word + wordSeparator; - } - } // if there's remaining text, put it in a wrapped line - - - if (!subline.match(/^[\s\u200b]+$/)) { - wrappedLines.push(subline); - } - } else { - // line is already short enough - wrappedLines.push(line); - } - } // for - - - rscratch('labelWrapCachedLines', wrappedLines); - text = rscratch('labelWrapCachedText', wrappedLines.join('\n')); - rscratch('labelWrapKey', labelKey); - } else if (wrapStyle === 'ellipsis') { - var _maxW = ele.pstyle('text-max-width').pfValue; - var ellipsized = ''; - var ellipsis = "\u2026"; - var incLastCh = false; - - for (var i = 0; i < text.length; i++) { - var widthWithNextCh = this.calculateLabelDimensions(ele, ellipsized + text[i] + ellipsis).width; - - if (widthWithNextCh > _maxW) { - break; - } - - ellipsized += text[i]; - - if (i === text.length - 1) { - incLastCh = true; - } - } - - if (!incLastCh) { - ellipsized += ellipsis; - } - - return ellipsized; - } // if ellipsize - - - return text; -}; - -BRp$6.getLabelJustification = function (ele) { - var justification = ele.pstyle('text-justification').strValue; - var textHalign = ele.pstyle('text-halign').strValue; - - if (justification === 'auto') { - if (ele.isNode()) { - switch (textHalign) { - case 'left': - return 'right'; - - case 'right': - return 'left'; - - default: - return 'center'; - } - } else { - return 'center'; - } - } else { - return justification; - } -}; - -BRp$6.calculateLabelDimensions = function (ele, text) { - var r = this; - var cacheKey = hashString(text, ele._private.labelDimsKey); - var cache = r.labelDimCache || (r.labelDimCache = []); - var existingVal = cache[cacheKey]; - - if (existingVal != null) { - return existingVal; - } - - var padding = 6; // add padding around text dims, as the measurement isn't that accurate - - var fStyle = ele.pstyle('font-style').strValue; - var size = ele.pstyle('font-size').pfValue; - var family = ele.pstyle('font-family').strValue; - var weight = ele.pstyle('font-weight').strValue; - var canvas = this.labelCalcCanvas; - var c2d = this.labelCalcCanvasContext; - - if (!canvas) { - canvas = this.labelCalcCanvas = document.createElement('canvas'); - c2d = this.labelCalcCanvasContext = canvas.getContext('2d'); - var ds = canvas.style; - ds.position = 'absolute'; - ds.left = '-9999px'; - ds.top = '-9999px'; - ds.zIndex = '-1'; - ds.visibility = 'hidden'; - ds.pointerEvents = 'none'; - } - - c2d.font = "".concat(fStyle, " ").concat(weight, " ").concat(size, "px ").concat(family); - var width = 0; - var height = 0; - var lines = text.split('\n'); - - for (var i = 0; i < lines.length; i++) { - var line = lines[i]; - var metrics = c2d.measureText(line); - var w = Math.ceil(metrics.width); - var h = size; - width = Math.max(w, width); - height += h; - } - - width += padding; - height += padding; - return cache[cacheKey] = { - width: width, - height: height - }; -}; - -BRp$6.calculateLabelAngle = function (ele, prefix) { - var _p = ele._private; - var rs = _p.rscratch; - var isEdge = ele.isEdge(); - var prefixDash = prefix ? prefix + '-' : ''; - var rot = ele.pstyle(prefixDash + 'text-rotation'); - var rotStr = rot.strValue; - - if (rotStr === 'none') { - return 0; - } else if (isEdge && rotStr === 'autorotate') { - return rs.labelAutoAngle; - } else if (rotStr === 'autorotate') { - return 0; - } else { - return rot.pfValue; - } -}; - -BRp$6.calculateLabelAngles = function (ele) { - var r = this; - var isEdge = ele.isEdge(); - var _p = ele._private; - var rs = _p.rscratch; - rs.labelAngle = r.calculateLabelAngle(ele); - - if (isEdge) { - rs.sourceLabelAngle = r.calculateLabelAngle(ele, 'source'); - rs.targetLabelAngle = r.calculateLabelAngle(ele, 'target'); - } -}; - -var BRp$7 = {}; -var TOO_SMALL_CUT_RECT = 28; -var warnedCutRect = false; - -BRp$7.getNodeShape = function (node) { - var r = this; - var shape = node.pstyle('shape').value; - - if (shape === 'cutrectangle' && (node.width() < TOO_SMALL_CUT_RECT || node.height() < TOO_SMALL_CUT_RECT)) { - if (!warnedCutRect) { - warn('The `cutrectangle` node shape can not be used at small sizes so `rectangle` is used instead'); - warnedCutRect = true; - } - - return 'rectangle'; - } - - if (node.isParent()) { - if (shape === 'rectangle' || shape === 'roundrectangle' || shape === 'round-rectangle' || shape === 'cutrectangle' || shape === 'cut-rectangle' || shape === 'barrel') { - return shape; - } else { - return 'rectangle'; - } - } - - if (shape === 'polygon') { - var points = node.pstyle('shape-polygon-points').value; - return r.nodeShapes.makePolygon(points).name; - } - - return shape; -}; - -var BRp$8 = {}; - -BRp$8.registerCalculationListeners = function () { - var cy = this.cy; - var elesToUpdate = cy.collection(); - var r = this; - - var enqueue = function enqueue(eles) { - var dirtyStyleCaches = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; - elesToUpdate.merge(eles); - - if (dirtyStyleCaches) { - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _p = ele._private; - var rstyle = _p.rstyle; - rstyle.clean = false; - rstyle.cleanConnected = false; - } - } - }; - - r.binder(cy).on('bounds.* dirty.*', function onDirtyBounds(e) { - var ele = e.target; - enqueue(ele); - }).on('style.* background.*', function onDirtyStyle(e) { - var ele = e.target; - enqueue(ele, false); - }); - - var updateEleCalcs = function updateEleCalcs(willDraw) { - if (willDraw) { - var fns = r.onUpdateEleCalcsFns; - - for (var i = 0; i < elesToUpdate.length; i++) { - var ele = elesToUpdate[i]; - var rstyle = ele._private.rstyle; - - if (ele.isNode() && !rstyle.cleanConnected) { - enqueue(ele.connectedEdges()); - rstyle.cleanConnected = true; - } - } - - if (fns) { - for (var _i = 0; _i < fns.length; _i++) { - var fn = fns[_i]; - fn(willDraw, elesToUpdate); - } - } - - r.recalculateRenderedStyle(elesToUpdate); - elesToUpdate = cy.collection(); - } - }; - - r.flushRenderedStyleQueue = function () { - updateEleCalcs(true); - }; - - r.beforeRender(updateEleCalcs, r.beforeRenderPriorities.eleCalcs); -}; - -BRp$8.onUpdateEleCalcs = function (fn) { - var fns = this.onUpdateEleCalcsFns = this.onUpdateEleCalcsFns || []; - fns.push(fn); -}; - -BRp$8.recalculateRenderedStyle = function (eles, useCache) { - var isCleanConnected = function isCleanConnected(ele) { - return ele._private.rstyle.cleanConnected; - }; - - var edges = []; - var nodes = []; // the renderer can't be used for calcs when destroyed, e.g. ele.boundingBox() - - if (this.destroyed) { - return; - } // use cache by default for perf - - - if (useCache === undefined) { - useCache = true; - } - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var _p = ele._private; - var rstyle = _p.rstyle; // an edge may be implicitly dirty b/c of one of its connected nodes - // (and a request for recalc may come in between frames) - - if (ele.isEdge() && (!isCleanConnected(ele.source()) || !isCleanConnected(ele.target()))) { - rstyle.clean = false; - } // only update if dirty and in graph - - - if (useCache && rstyle.clean || ele.removed()) { - continue; - } // only update if not display: none - - - if (ele.pstyle('display').value === 'none') { - continue; - } - - if (_p.group === 'nodes') { - nodes.push(ele); - } else { - // edges - edges.push(ele); - } - - rstyle.clean = true; - } // update node data from projections - - - for (var _i2 = 0; _i2 < nodes.length; _i2++) { - var _ele = nodes[_i2]; - var _p2 = _ele._private; - var _rstyle = _p2.rstyle; - - var pos = _ele.position(); - - this.recalculateNodeLabelProjection(_ele); - _rstyle.nodeX = pos.x; - _rstyle.nodeY = pos.y; - _rstyle.nodeW = _ele.pstyle('width').pfValue; - _rstyle.nodeH = _ele.pstyle('height').pfValue; - } - - this.recalculateEdgeProjections(edges); // update edge data from projections - - for (var _i3 = 0; _i3 < edges.length; _i3++) { - var _ele2 = edges[_i3]; - var _p3 = _ele2._private; - var _rstyle2 = _p3.rstyle; - var rs = _p3.rscratch; // update rstyle positions - - _rstyle2.srcX = rs.arrowStartX; - _rstyle2.srcY = rs.arrowStartY; - _rstyle2.tgtX = rs.arrowEndX; - _rstyle2.tgtY = rs.arrowEndY; - _rstyle2.midX = rs.midX; - _rstyle2.midY = rs.midY; - _rstyle2.labelAngle = rs.labelAngle; - _rstyle2.sourceLabelAngle = rs.sourceLabelAngle; - _rstyle2.targetLabelAngle = rs.targetLabelAngle; - } -}; - -var BRp$9 = {}; - -BRp$9.updateCachedGrabbedEles = function () { - var eles = this.cachedZSortedEles; - - if (!eles) { - // just let this be recalculated on the next z sort tick - return; - } - - eles.drag = []; - eles.nondrag = []; - var grabTargets = []; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var rs = ele._private.rscratch; - - if (ele.grabbed() && !ele.isParent()) { - grabTargets.push(ele); - } else if (rs.inDragLayer) { - eles.drag.push(ele); - } else { - eles.nondrag.push(ele); - } - } // put the grab target nodes last so it's on top of its neighbourhood - - - for (var i = 0; i < grabTargets.length; i++) { - var ele = grabTargets[i]; - eles.drag.push(ele); - } -}; - -BRp$9.invalidateCachedZSortedEles = function () { - this.cachedZSortedEles = null; -}; - -BRp$9.getCachedZSortedEles = function (forceRecalc) { - if (forceRecalc || !this.cachedZSortedEles) { - var eles = this.cy.mutableElements().toArray(); - eles.sort(zIndexSort); - eles.interactive = eles.filter(function (ele) { - return ele.interactive(); - }); - this.cachedZSortedEles = eles; - this.updateCachedGrabbedEles(); - } else { - eles = this.cachedZSortedEles; - } - - return eles; -}; - -var BRp$a = {}; -[BRp$1, BRp$2, BRp$3, BRp$4, BRp$5, BRp$6, BRp$7, BRp$8, BRp$9].forEach(function (props) { - extend(BRp$a, props); -}); - -var BRp$b = {}; - -BRp$b.getCachedImage = function (url, crossOrigin, onLoad) { - var r = this; - var imageCache = r.imageCache = r.imageCache || {}; - var cache = imageCache[url]; - - if (cache) { - if (!cache.image.complete) { - cache.image.addEventListener('load', onLoad); - } - - return cache.image; - } else { - cache = imageCache[url] = imageCache[url] || {}; - var image = cache.image = new Image(); // eslint-disable-line no-undef - - image.addEventListener('load', onLoad); - image.addEventListener('error', function () { - image.error = true; - }); // #1582 safari doesn't load data uris with crossOrigin properly - // https://bugs.webkit.org/show_bug.cgi?id=123978 - - var dataUriPrefix = 'data:'; - var isDataUri = url.substring(0, dataUriPrefix.length).toLowerCase() === dataUriPrefix; - - if (!isDataUri) { - image.crossOrigin = crossOrigin; // prevent tainted canvas - } - - image.src = url; - return image; - } -}; - -var BRp$c = {}; -/* global document, window, ResizeObserver, MutationObserver */ - -BRp$c.registerBinding = function (target, event, handler, useCapture) { - // eslint-disable-line no-unused-vars - var args = Array.prototype.slice.apply(arguments, [1]); // copy - - var b = this.binder(target); - return b.on.apply(b, args); -}; - -BRp$c.binder = function (tgt) { - var r = this; - var tgtIsDom = tgt === window || tgt === document || tgt === document.body || domElement(tgt); - - if (r.supportsPassiveEvents == null) { - // from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection - var supportsPassive = false; - - try { - var opts = Object.defineProperty({}, 'passive', { - get: function get() { - supportsPassive = true; - return true; - } - }); - window.addEventListener('test', null, opts); - } catch (err) {// not supported - } - - r.supportsPassiveEvents = supportsPassive; - } - - var on = function on(event, handler, useCapture) { - var args = Array.prototype.slice.call(arguments); - - if (tgtIsDom && r.supportsPassiveEvents) { - // replace useCapture w/ opts obj - args[2] = { - capture: useCapture != null ? useCapture : false, - passive: false, - once: false - }; - } - - r.bindings.push({ - target: tgt, - args: args - }); - (tgt.addEventListener || tgt.on).apply(tgt, args); - return this; - }; - - return { - on: on, - addEventListener: on, - addListener: on, - bind: on - }; -}; - -BRp$c.nodeIsDraggable = function (node) { - return node && node.isNode() && !node.locked() && node.grabbable(); -}; - -BRp$c.nodeIsGrabbable = function (node) { - return this.nodeIsDraggable(node) && node.interactive(); -}; - -BRp$c.load = function () { - var r = this; - - var isSelected = function isSelected(ele) { - return ele.selected(); - }; - - var triggerEvents = function triggerEvents(target, names, e, position) { - if (target == null) { - target = r.cy; - } - - for (var i = 0; i < names.length; i++) { - var name = names[i]; - target.emit({ - originalEvent: e, - type: name, - position: position - }); - } - }; - - var isMultSelKeyDown = function isMultSelKeyDown(e) { - return e.shiftKey || e.metaKey || e.ctrlKey; // maybe e.altKey - }; - - var allowPanningPassthrough = function allowPanningPassthrough(down, downs) { - var allowPassthrough = true; - - if (r.cy.hasCompoundNodes() && down && down.pannable()) { - // a grabbable compound node below the ele => no passthrough panning - for (var i = 0; downs && i < downs.length; i++) { - var down = downs[i]; - - if (down.isNode() && down.isParent()) { - allowPassthrough = false; - break; - } - } - } else { - allowPassthrough = true; - } - - return allowPassthrough; - }; - - var setGrabbed = function setGrabbed(ele) { - ele[0]._private.grabbed = true; - }; - - var setFreed = function setFreed(ele) { - ele[0]._private.grabbed = false; - }; - - var setInDragLayer = function setInDragLayer(ele) { - ele[0]._private.rscratch.inDragLayer = true; - }; - - var setOutDragLayer = function setOutDragLayer(ele) { - ele[0]._private.rscratch.inDragLayer = false; - }; - - var setGrabTarget = function setGrabTarget(ele) { - ele[0]._private.rscratch.isGrabTarget = true; - }; - - var removeGrabTarget = function removeGrabTarget(ele) { - ele[0]._private.rscratch.isGrabTarget = false; - }; - - var addToDragList = function addToDragList(ele, opts) { - var list = opts.addToList; - var listHasEle = list.has(ele); - - if (!listHasEle) { - list.merge(ele); - setGrabbed(ele); - } - }; // helper function to determine which child nodes and inner edges - // of a compound node to be dragged as well as the grabbed and selected nodes - - - var addDescendantsToDrag = function addDescendantsToDrag(node, opts) { - if (!node.cy().hasCompoundNodes()) { - return; - } - - if (opts.inDragLayer == null && opts.addToList == null) { - return; - } // nothing to do - - - var innerNodes = node.descendants(); - - if (opts.inDragLayer) { - innerNodes.forEach(setInDragLayer); - innerNodes.connectedEdges().forEach(setInDragLayer); - } - - if (opts.addToList) { - opts.addToList.unmerge(innerNodes); - } - }; // adds the given nodes and its neighbourhood to the drag layer - - - var addNodesToDrag = function addNodesToDrag(nodes, opts) { - opts = opts || {}; - var hasCompoundNodes = nodes.cy().hasCompoundNodes(); - - if (opts.inDragLayer) { - nodes.forEach(setInDragLayer); - nodes.neighborhood().stdFilter(function (ele) { - return !hasCompoundNodes || ele.isEdge(); - }).forEach(setInDragLayer); - } - - if (opts.addToList) { - nodes.forEach(function (ele) { - addToDragList(ele, opts); - }); - } - - addDescendantsToDrag(nodes, opts); // always add to drag - // also add nodes and edges related to the topmost ancestor - - updateAncestorsInDragLayer(nodes, { - inDragLayer: opts.inDragLayer - }); - r.updateCachedGrabbedEles(); - }; - - var addNodeToDrag = addNodesToDrag; - - var freeDraggedElements = function freeDraggedElements(grabbedEles) { - if (!grabbedEles) { - return; - } // just go over all elements rather than doing a bunch of (possibly expensive) traversals - - - r.getCachedZSortedEles().forEach(function (ele) { - setFreed(ele); - setOutDragLayer(ele); - removeGrabTarget(ele); - }); - r.updateCachedGrabbedEles(); - }; // helper function to determine which ancestor nodes and edges should go - // to the drag layer (or should be removed from drag layer). - - - var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) { - if (opts.inDragLayer == null && opts.addToList == null) { - return; - } // nothing to do - - - if (!node.cy().hasCompoundNodes()) { - return; - } // find top-level parent - - - var parent = node.ancestors().orphans(); // no parent node: no nodes to add to the drag layer - - if (parent.same(node)) { - return; - } - - var nodes = parent.descendants().spawnSelf().merge(parent).unmerge(node).unmerge(node.descendants()); - var edges = nodes.connectedEdges(); - - if (opts.inDragLayer) { - edges.forEach(setInDragLayer); - nodes.forEach(setInDragLayer); - } - - if (opts.addToList) { - nodes.forEach(function (ele) { - addToDragList(ele, opts); - }); - } - }; - - var blurActiveDomElement = function blurActiveDomElement() { - if (document.activeElement != null && document.activeElement.blur != null) { - document.activeElement.blur(); - } - }; - - var haveMutationsApi = typeof MutationObserver !== 'undefined'; - var haveResizeObserverApi = typeof ResizeObserver !== 'undefined'; // watch for when the cy container is removed from the dom - - if (haveMutationsApi) { - r.removeObserver = new MutationObserver(function (mutns) { - // eslint-disable-line no-undef - for (var i = 0; i < mutns.length; i++) { - var mutn = mutns[i]; - var rNodes = mutn.removedNodes; - - if (rNodes) { - for (var j = 0; j < rNodes.length; j++) { - var rNode = rNodes[j]; - - if (rNode === r.container) { - r.destroy(); - break; - } - } - } - } - }); - - if (r.container.parentNode) { - r.removeObserver.observe(r.container.parentNode, { - childList: true - }); - } - } else { - r.registerBinding(r.container, 'DOMNodeRemoved', function (e) { - // eslint-disable-line no-unused-vars - r.destroy(); - }); - } - - var onResize = util(function () { - r.cy.resize(); - }, 100); - - if (haveMutationsApi) { - r.styleObserver = new MutationObserver(onResize); // eslint-disable-line no-undef - - r.styleObserver.observe(r.container, { - attributes: true - }); - } // auto resize - - - r.registerBinding(window, 'resize', onResize); // eslint-disable-line no-undef - - if (haveResizeObserverApi) { - r.resizeObserver = new ResizeObserver(onResize); // eslint-disable-line no-undef - - r.resizeObserver.observe(r.container); - } - - var forEachUp = function forEachUp(domEle, fn) { - while (domEle != null) { - fn(domEle); - domEle = domEle.parentNode; - } - }; - - var invalidateCoords = function invalidateCoords() { - r.invalidateContainerClientCoordsCache(); - }; - - forEachUp(r.container, function (domEle) { - r.registerBinding(domEle, 'transitionend', invalidateCoords); - r.registerBinding(domEle, 'animationend', invalidateCoords); - r.registerBinding(domEle, 'scroll', invalidateCoords); - }); // stop right click menu from appearing on cy - - r.registerBinding(r.container, 'contextmenu', function (e) { - e.preventDefault(); - }); - - var inBoxSelection = function inBoxSelection() { - return r.selection[4] !== 0; - }; - - var eventInContainer = function eventInContainer(e) { - // save cycles if mouse events aren't to be captured - var containerPageCoords = r.findContainerClientCoords(); - var x = containerPageCoords[0]; - var y = containerPageCoords[1]; - var width = containerPageCoords[2]; - var height = containerPageCoords[3]; - var positions = e.touches ? e.touches : [e]; - var atLeastOnePosInside = false; - - for (var i = 0; i < positions.length; i++) { - var p = positions[i]; - - if (x <= p.clientX && p.clientX <= x + width && y <= p.clientY && p.clientY <= y + height) { - atLeastOnePosInside = true; - break; - } - } - - if (!atLeastOnePosInside) { - return false; - } - - var container = r.container; - var target = e.target; - var tParent = target.parentNode; - var containerIsTarget = false; - - while (tParent) { - if (tParent === container) { - containerIsTarget = true; - break; - } - - tParent = tParent.parentNode; - } - - if (!containerIsTarget) { - return false; - } // if target is outisde cy container, then this event is not for us - - - return true; - }; // Primary key - - - r.registerBinding(r.container, 'mousedown', function mousedownHandler(e) { - if (!eventInContainer(e)) { - return; - } - - e.preventDefault(); - blurActiveDomElement(); - r.hoverData.capture = true; - r.hoverData.which = e.which; - var cy = r.cy; - var gpos = [e.clientX, e.clientY]; - var pos = r.projectIntoViewport(gpos[0], gpos[1]); - var select = r.selection; - var nears = r.findNearestElements(pos[0], pos[1], true, false); - var near = nears[0]; - var draggedElements = r.dragData.possibleDragElements; - r.hoverData.mdownPos = pos; - r.hoverData.mdownGPos = gpos; - - var checkForTaphold = function checkForTaphold() { - r.hoverData.tapholdCancelled = false; - clearTimeout(r.hoverData.tapholdTimeout); - r.hoverData.tapholdTimeout = setTimeout(function () { - if (r.hoverData.tapholdCancelled) { - return; - } else { - var ele = r.hoverData.down; - - if (ele) { - ele.emit({ - originalEvent: e, - type: 'taphold', - position: { - x: pos[0], - y: pos[1] - } - }); - } else { - cy.emit({ - originalEvent: e, - type: 'taphold', - position: { - x: pos[0], - y: pos[1] - } - }); - } - } - }, r.tapholdDuration); - }; // Right click button - - - if (e.which == 3) { - r.hoverData.cxtStarted = true; - var cxtEvt = { - originalEvent: e, - type: 'cxttapstart', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (near) { - near.activate(); - near.emit(cxtEvt); - r.hoverData.down = near; - } else { - cy.emit(cxtEvt); - } - - r.hoverData.downTime = new Date().getTime(); - r.hoverData.cxtDragged = false; // Primary button - } else if (e.which == 1) { - if (near) { - near.activate(); - } // Element dragging - - - { - // If something is under the cursor and it is draggable, prepare to grab it - if (near != null) { - if (r.nodeIsGrabbable(near)) { - var makeEvent = function makeEvent(type) { - return { - originalEvent: e, - type: type, - position: { - x: pos[0], - y: pos[1] - } - }; - }; - - var triggerGrab = function triggerGrab(ele) { - ele.emit(makeEvent('grab')); - }; - - setGrabTarget(near); - - if (!near.selected()) { - draggedElements = r.dragData.possibleDragElements = cy.collection(); - addNodeToDrag(near, { - addToList: draggedElements - }); - near.emit(makeEvent('grabon')).emit(makeEvent('grab')); - } else { - draggedElements = r.dragData.possibleDragElements = cy.collection(); - var selectedNodes = cy.$(function (ele) { - return ele.isNode() && ele.selected() && r.nodeIsGrabbable(ele); - }); - addNodesToDrag(selectedNodes, { - addToList: draggedElements - }); - near.emit(makeEvent('grabon')); - selectedNodes.forEach(triggerGrab); - } - - r.redrawHint('eles', true); - r.redrawHint('drag', true); - } - } - - r.hoverData.down = near; - r.hoverData.downs = nears; - r.hoverData.downTime = new Date().getTime(); - } - triggerEvents(near, ['mousedown', 'tapstart', 'vmousedown'], e, { - x: pos[0], - y: pos[1] - }); - - if (near == null) { - select[4] = 1; - r.data.bgActivePosistion = { - x: pos[0], - y: pos[1] - }; - r.redrawHint('select', true); - r.redraw(); - } else if (near.pannable()) { - select[4] = 1; // for future pan - } - - checkForTaphold(); - } // Initialize selection box coordinates - - - select[0] = select[2] = pos[0]; - select[1] = select[3] = pos[1]; - }, false); - r.registerBinding(window, 'mousemove', function mousemoveHandler(e) { - // eslint-disable-line no-undef - var capture = r.hoverData.capture; - - if (!capture && !eventInContainer(e)) { - return; - } - - var preventDefault = false; - var cy = r.cy; - var zoom = cy.zoom(); - var gpos = [e.clientX, e.clientY]; - var pos = r.projectIntoViewport(gpos[0], gpos[1]); - var mdownPos = r.hoverData.mdownPos; - var mdownGPos = r.hoverData.mdownGPos; - var select = r.selection; - var near = null; - - if (!r.hoverData.draggingEles && !r.hoverData.dragging && !r.hoverData.selecting) { - near = r.findNearestElement(pos[0], pos[1], true, false); - } - - var last = r.hoverData.last; - var down = r.hoverData.down; - var disp = [pos[0] - select[2], pos[1] - select[3]]; - var draggedElements = r.dragData.possibleDragElements; - var isOverThresholdDrag; - - if (mdownGPos) { - var dx = gpos[0] - mdownGPos[0]; - var dx2 = dx * dx; - var dy = gpos[1] - mdownGPos[1]; - var dy2 = dy * dy; - var dist2 = dx2 + dy2; - r.hoverData.isOverThresholdDrag = isOverThresholdDrag = dist2 >= r.desktopTapThreshold2; - } - - var multSelKeyDown = isMultSelKeyDown(e); - - if (isOverThresholdDrag) { - r.hoverData.tapholdCancelled = true; - } - - var updateDragDelta = function updateDragDelta() { - var dragDelta = r.hoverData.dragDelta = r.hoverData.dragDelta || []; - - if (dragDelta.length === 0) { - dragDelta.push(disp[0]); - dragDelta.push(disp[1]); - } else { - dragDelta[0] += disp[0]; - dragDelta[1] += disp[1]; - } - }; - - preventDefault = true; - triggerEvents(near, ['mousemove', 'vmousemove', 'tapdrag'], e, { - x: pos[0], - y: pos[1] - }); - - var goIntoBoxMode = function goIntoBoxMode() { - r.data.bgActivePosistion = undefined; - - if (!r.hoverData.selecting) { - cy.emit({ - originalEvent: e, - type: 'boxstart', - position: { - x: pos[0], - y: pos[1] - } - }); - } - - select[4] = 1; - r.hoverData.selecting = true; - r.redrawHint('select', true); - r.redraw(); - }; // trigger context drag if rmouse down - - - if (r.hoverData.which === 3) { - // but only if over threshold - if (isOverThresholdDrag) { - var cxtEvt = { - originalEvent: e, - type: 'cxtdrag', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (down) { - down.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - - r.hoverData.cxtDragged = true; - - if (!r.hoverData.cxtOver || near !== r.hoverData.cxtOver) { - if (r.hoverData.cxtOver) { - r.hoverData.cxtOver.emit({ - originalEvent: e, - type: 'cxtdragout', - position: { - x: pos[0], - y: pos[1] - } - }); - } - - r.hoverData.cxtOver = near; - - if (near) { - near.emit({ - originalEvent: e, - type: 'cxtdragover', - position: { - x: pos[0], - y: pos[1] - } - }); - } - } - } // Check if we are drag panning the entire graph - - } else if (r.hoverData.dragging) { - preventDefault = true; - - if (cy.panningEnabled() && cy.userPanningEnabled()) { - var deltaP; - - if (r.hoverData.justStartedPan) { - var mdPos = r.hoverData.mdownPos; - deltaP = { - x: (pos[0] - mdPos[0]) * zoom, - y: (pos[1] - mdPos[1]) * zoom - }; - r.hoverData.justStartedPan = false; - } else { - deltaP = { - x: disp[0] * zoom, - y: disp[1] * zoom - }; - } - - cy.panBy(deltaP); - r.hoverData.dragged = true; - } // Needs reproject due to pan changing viewport - - - pos = r.projectIntoViewport(e.clientX, e.clientY); // Checks primary button down & out of time & mouse not moved much - } else if (select[4] == 1 && (down == null || down.pannable())) { - if (isOverThresholdDrag) { - if (!r.hoverData.dragging && cy.boxSelectionEnabled() && (multSelKeyDown || !cy.panningEnabled() || !cy.userPanningEnabled())) { - goIntoBoxMode(); - } else if (!r.hoverData.selecting && cy.panningEnabled() && cy.userPanningEnabled()) { - var allowPassthrough = allowPanningPassthrough(down, r.hoverData.downs); - - if (allowPassthrough) { - r.hoverData.dragging = true; - r.hoverData.justStartedPan = true; - select[4] = 0; - r.data.bgActivePosistion = array2point(mdownPos); - r.redrawHint('select', true); - r.redraw(); - } - } - - if (down && down.pannable() && down.active()) { - down.unactivate(); - } - } - } else { - if (down && down.pannable() && down.active()) { - down.unactivate(); - } - - if ((!down || !down.grabbed()) && near != last) { - if (last) { - triggerEvents(last, ['mouseout', 'tapdragout'], e, { - x: pos[0], - y: pos[1] - }); - } - - if (near) { - triggerEvents(near, ['mouseover', 'tapdragover'], e, { - x: pos[0], - y: pos[1] - }); - } - - r.hoverData.last = near; - } - - if (down) { - if (isOverThresholdDrag) { - // then we can take action - if (cy.boxSelectionEnabled() && multSelKeyDown) { - // then selection overrides - if (down && down.grabbed()) { - freeDraggedElements(draggedElements); - down.emit('freeon'); - draggedElements.emit('free'); - - if (r.dragData.didDrag) { - down.emit('dragfreeon'); - draggedElements.emit('dragfree'); - } - } - - goIntoBoxMode(); - } else if (down && down.grabbed() && r.nodeIsDraggable(down)) { - // drag node - var justStartedDrag = !r.dragData.didDrag; - - if (justStartedDrag) { - r.redrawHint('eles', true); - } - - r.dragData.didDrag = true; // indicate that we actually did drag the node - - var toTrigger = cy.collection(); // now, add the elements to the drag layer if not done already - - if (!r.hoverData.draggingEles) { - addNodesToDrag(draggedElements, { - inDragLayer: true - }); - } - - var totalShift = { - x: 0, - y: 0 - }; - - if (number(disp[0]) && number(disp[1])) { - totalShift.x += disp[0]; - totalShift.y += disp[1]; - - if (justStartedDrag) { - var dragDelta = r.hoverData.dragDelta; - - if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { - totalShift.x += dragDelta[0]; - totalShift.y += dragDelta[1]; - } - } - } - - for (var i = 0; i < draggedElements.length; i++) { - var dEle = draggedElements[i]; - - if (r.nodeIsDraggable(dEle) && dEle.grabbed()) { - toTrigger.push(dEle); - } - } - - r.hoverData.draggingEles = true; - toTrigger.silentShift(totalShift).emit('position drag'); - r.redrawHint('drag', true); - r.redraw(); - } - } else { - // otherwise save drag delta for when we actually start dragging so the relative grab pos is constant - updateDragDelta(); - } - } // prevent the dragging from triggering text selection on the page - - - preventDefault = true; - } - - select[2] = pos[0]; - select[3] = pos[1]; - - if (preventDefault) { - if (e.stopPropagation) e.stopPropagation(); - if (e.preventDefault) e.preventDefault(); - return false; - } - }, false); - r.registerBinding(window, 'mouseup', function mouseupHandler(e) { - // eslint-disable-line no-undef - var capture = r.hoverData.capture; - - if (!capture) { - return; - } - - r.hoverData.capture = false; - var cy = r.cy; - var pos = r.projectIntoViewport(e.clientX, e.clientY); - var select = r.selection; - var near = r.findNearestElement(pos[0], pos[1], true, false); - var draggedElements = r.dragData.possibleDragElements; - var down = r.hoverData.down; - var multSelKeyDown = isMultSelKeyDown(e); - - if (r.data.bgActivePosistion) { - r.redrawHint('select', true); - r.redraw(); - } - - r.hoverData.tapholdCancelled = true; - r.data.bgActivePosistion = undefined; // not active bg now - - if (down) { - down.unactivate(); - } - - if (r.hoverData.which === 3) { - var cxtEvt = { - originalEvent: e, - type: 'cxttapend', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (down) { - down.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - - if (!r.hoverData.cxtDragged) { - var cxtTap = { - originalEvent: e, - type: 'cxttap', - position: { - x: pos[0], - y: pos[1] - } - }; - - if (down) { - down.emit(cxtTap); - } else { - cy.emit(cxtTap); - } - } - - r.hoverData.cxtDragged = false; - r.hoverData.which = null; - } else if (r.hoverData.which === 1) { - triggerEvents(near, ['mouseup', 'tapend', 'vmouseup'], e, { - x: pos[0], - y: pos[1] - }); - - if (!r.dragData.didDrag // didn't move a node around - && !r.hoverData.dragged // didn't pan - && !r.hoverData.selecting // not box selection - && !r.hoverData.isOverThresholdDrag // didn't move too much - ) { - triggerEvents(down, ['click', 'tap', 'vclick'], e, { - x: pos[0], - y: pos[1] - }); - } // Deselect all elements if nothing is currently under the mouse cursor and we aren't dragging something - - - if (down == null && // not mousedown on node - !r.dragData.didDrag // didn't move the node around - && !r.hoverData.selecting // not box selection - && !r.hoverData.dragged // didn't pan - && !isMultSelKeyDown(e)) { - cy.$(isSelected).unselect(['tapunselect']); - - if (draggedElements.length > 0) { - r.redrawHint('eles', true); - } - - r.dragData.possibleDragElements = draggedElements = cy.collection(); - } // Single selection - - - if (near == down && !r.dragData.didDrag && !r.hoverData.selecting) { - if (near != null && near._private.selectable) { - if (r.hoverData.dragging) ; else if (cy.selectionType() === 'additive' || multSelKeyDown) { - if (near.selected()) { - near.unselect(['tapunselect']); - } else { - near.select(['tapselect']); - } - } else { - if (!multSelKeyDown) { - cy.$(isSelected).unmerge(near).unselect(['tapunselect']); - near.select(['tapselect']); - } - } - - r.redrawHint('eles', true); - } - } - - if (r.hoverData.selecting) { - var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); - r.redrawHint('select', true); - - if (box.length > 0) { - r.redrawHint('eles', true); - } - - cy.emit({ - type: 'boxend', - originalEvent: e, - position: { - x: pos[0], - y: pos[1] - } - }); - - var eleWouldBeSelected = function eleWouldBeSelected(ele) { - return ele.selectable() && !ele.selected(); - }; - - if (cy.selectionType() === 'additive') { - box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); - } else { - if (!multSelKeyDown) { - cy.$(isSelected).unmerge(box).unselect(); - } - - box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); - } // always need redraw in case eles unselectable - - - r.redraw(); - } // Cancel drag pan - - - if (r.hoverData.dragging) { - r.hoverData.dragging = false; - r.redrawHint('select', true); - r.redrawHint('eles', true); - r.redraw(); - } - - if (!select[4]) { - r.redrawHint('drag', true); - r.redrawHint('eles', true); - var downWasGrabbed = down && down.grabbed(); - freeDraggedElements(draggedElements); - - if (downWasGrabbed) { - down.emit('freeon'); - draggedElements.emit('free'); - - if (r.dragData.didDrag) { - down.emit('dragfreeon'); - draggedElements.emit('dragfree'); - } - } - } - } // else not right mouse - - - select[4] = 0; - r.hoverData.down = null; - r.hoverData.cxtStarted = false; - r.hoverData.draggingEles = false; - r.hoverData.selecting = false; - r.hoverData.isOverThresholdDrag = false; - r.dragData.didDrag = false; - r.hoverData.dragged = false; - r.hoverData.dragDelta = []; - r.hoverData.mdownPos = null; - r.hoverData.mdownGPos = null; - }, false); - - var wheelHandler = function wheelHandler(e) { - if (r.scrollingPage) { - return; - } // while scrolling, ignore wheel-to-zoom - - - var cy = r.cy; - var zoom = cy.zoom(); - var pan = cy.pan(); - var pos = r.projectIntoViewport(e.clientX, e.clientY); - var rpos = [pos[0] * zoom + pan.x, pos[1] * zoom + pan.y]; - - if (r.hoverData.draggingEles || r.hoverData.dragging || r.hoverData.cxtStarted || inBoxSelection()) { - // if pan dragging or cxt dragging, wheel movements make no zoom - e.preventDefault(); - return; - } - - if (cy.panningEnabled() && cy.userPanningEnabled() && cy.zoomingEnabled() && cy.userZoomingEnabled()) { - e.preventDefault(); - r.data.wheelZooming = true; - clearTimeout(r.data.wheelTimeout); - r.data.wheelTimeout = setTimeout(function () { - r.data.wheelZooming = false; - r.redrawHint('eles', true); - r.redraw(); - }, 150); - var diff; - - if (e.deltaY != null) { - diff = e.deltaY / -250; - } else if (e.wheelDeltaY != null) { - diff = e.wheelDeltaY / 1000; - } else { - diff = e.wheelDelta / 1000; - } - - diff = diff * r.wheelSensitivity; - var needsWheelFix = e.deltaMode === 1; - - if (needsWheelFix) { - // fixes slow wheel events on ff/linux and ff/windows - diff *= 33; - } - - var newZoom = cy.zoom() * Math.pow(10, diff); - - if (e.type === 'gesturechange') { - newZoom = r.gestureStartZoom * e.scale; - } - - cy.zoom({ - level: newZoom, - renderedPosition: { - x: rpos[0], - y: rpos[1] - } - }); - } - }; // Functions to help with whether mouse wheel should trigger zooming - // -- - - - r.registerBinding(r.container, 'wheel', wheelHandler, true); // disable nonstandard wheel events - // r.registerBinding(r.container, 'mousewheel', wheelHandler, true); - // r.registerBinding(r.container, 'DOMMouseScroll', wheelHandler, true); - // r.registerBinding(r.container, 'MozMousePixelScroll', wheelHandler, true); // older firefox - - r.registerBinding(window, 'scroll', function scrollHandler(e) { - // eslint-disable-line no-unused-vars - r.scrollingPage = true; - clearTimeout(r.scrollingPageTimeout); - r.scrollingPageTimeout = setTimeout(function () { - r.scrollingPage = false; - }, 250); - }, true); // desktop safari pinch to zoom start - - r.registerBinding(r.container, 'gesturestart', function gestureStartHandler(e) { - r.gestureStartZoom = r.cy.zoom(); - - if (!r.hasTouchStarted) { - // don't affect touch devices like iphone - e.preventDefault(); - } - }, true); - r.registerBinding(r.container, 'gesturechange', function (e) { - if (!r.hasTouchStarted) { - // don't affect touch devices like iphone - wheelHandler(e); - } - }, true); // Functions to help with handling mouseout/mouseover on the Cytoscape container - // Handle mouseout on Cytoscape container - - r.registerBinding(r.container, 'mouseout', function mouseOutHandler(e) { - var pos = r.projectIntoViewport(e.clientX, e.clientY); - r.cy.emit({ - originalEvent: e, - type: 'mouseout', - position: { - x: pos[0], - y: pos[1] - } - }); - }, false); - r.registerBinding(r.container, 'mouseover', function mouseOverHandler(e) { - var pos = r.projectIntoViewport(e.clientX, e.clientY); - r.cy.emit({ - originalEvent: e, - type: 'mouseover', - position: { - x: pos[0], - y: pos[1] - } - }); - }, false); - var f1x1, f1y1, f2x1, f2y1; // starting points for pinch-to-zoom - - var distance1, distance1Sq; // initial distance between finger 1 and finger 2 for pinch-to-zoom - - var center1, modelCenter1; // center point on start pinch to zoom - - var offsetLeft, offsetTop; - var containerWidth, containerHeight; - var twoFingersStartInside; - - var distance = function distance(x1, y1, x2, y2) { - return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1)); - }; - - var distanceSq = function distanceSq(x1, y1, x2, y2) { - return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); - }; - - var touchstartHandler; - r.registerBinding(r.container, 'touchstart', touchstartHandler = function touchstartHandler(e) { - r.hasTouchStarted = true; - - if (!eventInContainer(e)) { - return; - } - - blurActiveDomElement(); - r.touchData.capture = true; - r.data.bgActivePosistion = undefined; - var cy = r.cy; - var now = r.touchData.now; - var earlier = r.touchData.earlier; - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } // record starting points for pinch-to-zoom - - - if (e.touches[1]) { - r.touchData.singleTouchMoved = true; - freeDraggedElements(r.dragData.touchDragEles); - var offsets = r.findContainerClientCoords(); - offsetLeft = offsets[0]; - offsetTop = offsets[1]; - containerWidth = offsets[2]; - containerHeight = offsets[3]; - f1x1 = e.touches[0].clientX - offsetLeft; - f1y1 = e.touches[0].clientY - offsetTop; - f2x1 = e.touches[1].clientX - offsetLeft; - f2y1 = e.touches[1].clientY - offsetTop; - twoFingersStartInside = 0 <= f1x1 && f1x1 <= containerWidth && 0 <= f2x1 && f2x1 <= containerWidth && 0 <= f1y1 && f1y1 <= containerHeight && 0 <= f2y1 && f2y1 <= containerHeight; - var pan = cy.pan(); - var zoom = cy.zoom(); - distance1 = distance(f1x1, f1y1, f2x1, f2y1); - distance1Sq = distanceSq(f1x1, f1y1, f2x1, f2y1); - center1 = [(f1x1 + f2x1) / 2, (f1y1 + f2y1) / 2]; - modelCenter1 = [(center1[0] - pan.x) / zoom, (center1[1] - pan.y) / zoom]; // consider context tap - - var cxtDistThreshold = 200; - var cxtDistThresholdSq = cxtDistThreshold * cxtDistThreshold; - - if (distance1Sq < cxtDistThresholdSq && !e.touches[2]) { - var near1 = r.findNearestElement(now[0], now[1], true, true); - var near2 = r.findNearestElement(now[2], now[3], true, true); - - if (near1 && near1.isNode()) { - near1.activate().emit({ - originalEvent: e, - type: 'cxttapstart', - position: { - x: now[0], - y: now[1] - } - }); - r.touchData.start = near1; - } else if (near2 && near2.isNode()) { - near2.activate().emit({ - originalEvent: e, - type: 'cxttapstart', - position: { - x: now[0], - y: now[1] - } - }); - r.touchData.start = near2; - } else { - cy.emit({ - originalEvent: e, - type: 'cxttapstart', - position: { - x: now[0], - y: now[1] - } - }); - } - - if (r.touchData.start) { - r.touchData.start._private.grabbed = false; - } - - r.touchData.cxt = true; - r.touchData.cxtDragged = false; - r.data.bgActivePosistion = undefined; - r.redraw(); - return; - } - } - - if (e.touches[2]) { - // ignore - // safari on ios pans the page otherwise (normally you should be able to preventdefault on touchmove...) - if (cy.boxSelectionEnabled()) { - e.preventDefault(); - } - } else if (e.touches[1]) ; else if (e.touches[0]) { - var nears = r.findNearestElements(now[0], now[1], true, true); - var near = nears[0]; - - if (near != null) { - near.activate(); - r.touchData.start = near; - r.touchData.starts = nears; - - if (r.nodeIsGrabbable(near)) { - var draggedEles = r.dragData.touchDragEles = cy.collection(); - var selectedNodes = null; - r.redrawHint('eles', true); - r.redrawHint('drag', true); - - if (near.selected()) { - // reset drag elements, since near will be added again - selectedNodes = cy.$(function (ele) { - return ele.selected() && r.nodeIsGrabbable(ele); - }); - addNodesToDrag(selectedNodes, { - addToList: draggedEles - }); - } else { - addNodeToDrag(near, { - addToList: draggedEles - }); - } - - setGrabTarget(near); - - var makeEvent = function makeEvent(type) { - return { - originalEvent: e, - type: type, - position: { - x: now[0], - y: now[1] - } - }; - }; - - near.emit(makeEvent('grabon')); - - if (selectedNodes) { - selectedNodes.forEach(function (n) { - n.emit(makeEvent('grab')); - }); - } else { - near.emit(makeEvent('grab')); - } - } - } - - triggerEvents(near, ['touchstart', 'tapstart', 'vmousedown'], e, { - x: now[0], - y: now[1] - }); - - if (near == null) { - r.data.bgActivePosistion = { - x: pos[0], - y: pos[1] - }; - r.redrawHint('select', true); - r.redraw(); - } // Tap, taphold - // ----- - - - r.touchData.singleTouchMoved = false; - r.touchData.singleTouchStartTime = +new Date(); - clearTimeout(r.touchData.tapholdTimeout); - r.touchData.tapholdTimeout = setTimeout(function () { - if (r.touchData.singleTouchMoved === false && !r.pinching // if pinching, then taphold unselect shouldn't take effect - && !r.touchData.selecting // box selection shouldn't allow taphold through - ) { - triggerEvents(r.touchData.start, ['taphold'], e, { - x: now[0], - y: now[1] - }); - } - }, r.tapholdDuration); - } - - if (e.touches.length >= 1) { - var sPos = r.touchData.startPosition = []; - - for (var i = 0; i < now.length; i++) { - sPos[i] = earlier[i] = now[i]; - } - - var touch0 = e.touches[0]; - r.touchData.startGPosition = [touch0.clientX, touch0.clientY]; - } - }, false); - var touchmoveHandler; - r.registerBinding(window, 'touchmove', touchmoveHandler = function touchmoveHandler(e) { - // eslint-disable-line no-undef - var capture = r.touchData.capture; - - if (!capture && !eventInContainer(e)) { - return; - } - - var select = r.selection; - var cy = r.cy; - var now = r.touchData.now; - var earlier = r.touchData.earlier; - var zoom = cy.zoom(); - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } - - var startGPos = r.touchData.startGPosition; - var isOverThresholdDrag; - - if (capture && e.touches[0] && startGPos) { - var disp = []; - - for (var j = 0; j < now.length; j++) { - disp[j] = now[j] - earlier[j]; - } - - var dx = e.touches[0].clientX - startGPos[0]; - var dx2 = dx * dx; - var dy = e.touches[0].clientY - startGPos[1]; - var dy2 = dy * dy; - var dist2 = dx2 + dy2; - isOverThresholdDrag = dist2 >= r.touchTapThreshold2; - } // context swipe cancelling - - - if (capture && r.touchData.cxt) { - e.preventDefault(); - var f1x2 = e.touches[0].clientX - offsetLeft, - f1y2 = e.touches[0].clientY - offsetTop; - var f2x2 = e.touches[1].clientX - offsetLeft, - f2y2 = e.touches[1].clientY - offsetTop; // var distance2 = distance( f1x2, f1y2, f2x2, f2y2 ); - - var distance2Sq = distanceSq(f1x2, f1y2, f2x2, f2y2); - var factorSq = distance2Sq / distance1Sq; - var distThreshold = 150; - var distThresholdSq = distThreshold * distThreshold; - var factorThreshold = 1.5; - var factorThresholdSq = factorThreshold * factorThreshold; // cancel ctx gestures if the distance b/t the fingers increases - - if (factorSq >= factorThresholdSq || distance2Sq >= distThresholdSq) { - r.touchData.cxt = false; - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - var cxtEvt = { - originalEvent: e, - type: 'cxttapend', - position: { - x: now[0], - y: now[1] - } - }; - - if (r.touchData.start) { - r.touchData.start.unactivate().emit(cxtEvt); - r.touchData.start = null; - } else { - cy.emit(cxtEvt); - } - } - } // context swipe - - - if (capture && r.touchData.cxt) { - var cxtEvt = { - originalEvent: e, - type: 'cxtdrag', - position: { - x: now[0], - y: now[1] - } - }; - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - - if (r.touchData.start) { - r.touchData.start.emit(cxtEvt); - } else { - cy.emit(cxtEvt); - } - - if (r.touchData.start) { - r.touchData.start._private.grabbed = false; - } - - r.touchData.cxtDragged = true; - var near = r.findNearestElement(now[0], now[1], true, true); - - if (!r.touchData.cxtOver || near !== r.touchData.cxtOver) { - if (r.touchData.cxtOver) { - r.touchData.cxtOver.emit({ - originalEvent: e, - type: 'cxtdragout', - position: { - x: now[0], - y: now[1] - } - }); - } - - r.touchData.cxtOver = near; - - if (near) { - near.emit({ - originalEvent: e, - type: 'cxtdragover', - position: { - x: now[0], - y: now[1] - } - }); - } - } // box selection - - } else if (capture && e.touches[2] && cy.boxSelectionEnabled()) { - e.preventDefault(); - r.data.bgActivePosistion = undefined; - this.lastThreeTouch = +new Date(); - - if (!r.touchData.selecting) { - cy.emit({ - originalEvent: e, - type: 'boxstart', - position: { - x: now[0], - y: now[1] - } - }); - } - - r.touchData.selecting = true; - r.touchData.didSelect = true; - select[4] = 1; - - if (!select || select.length === 0 || select[0] === undefined) { - select[0] = (now[0] + now[2] + now[4]) / 3; - select[1] = (now[1] + now[3] + now[5]) / 3; - select[2] = (now[0] + now[2] + now[4]) / 3 + 1; - select[3] = (now[1] + now[3] + now[5]) / 3 + 1; - } else { - select[2] = (now[0] + now[2] + now[4]) / 3; - select[3] = (now[1] + now[3] + now[5]) / 3; - } - - r.redrawHint('select', true); - r.redraw(); // pinch to zoom - } else if (capture && e.touches[1] && !r.touchData.didSelect // don't allow box selection to degrade to pinch-to-zoom - && cy.zoomingEnabled() && cy.panningEnabled() && cy.userZoomingEnabled() && cy.userPanningEnabled()) { - // two fingers => pinch to zoom - e.preventDefault(); - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - var draggedEles = r.dragData.touchDragEles; - - if (draggedEles) { - r.redrawHint('drag', true); - - for (var i = 0; i < draggedEles.length; i++) { - var de_p = draggedEles[i]._private; - de_p.grabbed = false; - de_p.rscratch.inDragLayer = false; - } - } - - var _start = r.touchData.start; // (x2, y2) for fingers 1 and 2 - - var f1x2 = e.touches[0].clientX - offsetLeft, - f1y2 = e.touches[0].clientY - offsetTop; - var f2x2 = e.touches[1].clientX - offsetLeft, - f2y2 = e.touches[1].clientY - offsetTop; - var distance2 = distance(f1x2, f1y2, f2x2, f2y2); // var distance2Sq = distanceSq( f1x2, f1y2, f2x2, f2y2 ); - // var factor = Math.sqrt( distance2Sq ) / Math.sqrt( distance1Sq ); - - var factor = distance2 / distance1; - - if (twoFingersStartInside) { - // delta finger1 - var df1x = f1x2 - f1x1; - var df1y = f1y2 - f1y1; // delta finger 2 - - var df2x = f2x2 - f2x1; - var df2y = f2y2 - f2y1; // translation is the normalised vector of the two fingers movement - // i.e. so pinching cancels out and moving together pans - - var tx = (df1x + df2x) / 2; - var ty = (df1y + df2y) / 2; // now calculate the zoom - - var zoom1 = cy.zoom(); - var zoom2 = zoom1 * factor; - var pan1 = cy.pan(); // the model center point converted to the current rendered pos - - var ctrx = modelCenter1[0] * zoom1 + pan1.x; - var ctry = modelCenter1[1] * zoom1 + pan1.y; - var pan2 = { - x: -zoom2 / zoom1 * (ctrx - pan1.x - tx) + ctrx, - y: -zoom2 / zoom1 * (ctry - pan1.y - ty) + ctry - }; // remove dragged eles - - if (_start && _start.active()) { - var draggedEles = r.dragData.touchDragEles; - freeDraggedElements(draggedEles); - r.redrawHint('drag', true); - r.redrawHint('eles', true); - - _start.unactivate().emit('freeon'); - - draggedEles.emit('free'); - - if (r.dragData.didDrag) { - _start.emit('dragfreeon'); - - draggedEles.emit('dragfree'); - } - } - - cy.viewport({ - zoom: zoom2, - pan: pan2, - cancelOnFailedZoom: true - }); - distance1 = distance2; - f1x1 = f1x2; - f1y1 = f1y2; - f2x1 = f2x2; - f2y1 = f2y2; - r.pinching = true; - } // Re-project - - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } - } else if (e.touches[0] && !r.touchData.didSelect // don't allow box selection to degrade to single finger events like panning - ) { - var start = r.touchData.start; - var last = r.touchData.last; - var near; - - if (!r.hoverData.draggingEles && !r.swipePanning) { - near = r.findNearestElement(now[0], now[1], true, true); - } - - if (capture && start != null) { - e.preventDefault(); - } // dragging nodes - - - if (capture && start != null && r.nodeIsDraggable(start)) { - if (isOverThresholdDrag) { - // then dragging can happen - var draggedEles = r.dragData.touchDragEles; - var justStartedDrag = !r.dragData.didDrag; - - if (justStartedDrag) { - addNodesToDrag(draggedEles, { - inDragLayer: true - }); - } - - r.dragData.didDrag = true; - var totalShift = { - x: 0, - y: 0 - }; - - if (number(disp[0]) && number(disp[1])) { - totalShift.x += disp[0]; - totalShift.y += disp[1]; - - if (justStartedDrag) { - r.redrawHint('eles', true); - var dragDelta = r.touchData.dragDelta; - - if (dragDelta && number(dragDelta[0]) && number(dragDelta[1])) { - totalShift.x += dragDelta[0]; - totalShift.y += dragDelta[1]; - } - } - } - - r.hoverData.draggingEles = true; - draggedEles.silentShift(totalShift).emit('position drag'); - r.redrawHint('drag', true); - - if (r.touchData.startPosition[0] == earlier[0] && r.touchData.startPosition[1] == earlier[1]) { - r.redrawHint('eles', true); - } - - r.redraw(); - } else { - // otherise keep track of drag delta for later - var dragDelta = r.touchData.dragDelta = r.touchData.dragDelta || []; - - if (dragDelta.length === 0) { - dragDelta.push(disp[0]); - dragDelta.push(disp[1]); - } else { - dragDelta[0] += disp[0]; - dragDelta[1] += disp[1]; - } - } - } // touchmove - - - { - triggerEvents(start || near, ['touchmove', 'tapdrag', 'vmousemove'], e, { - x: now[0], - y: now[1] - }); - - if ((!start || !start.grabbed()) && near != last) { - if (last) { - last.emit({ - originalEvent: e, - type: 'tapdragout', - position: { - x: now[0], - y: now[1] - } - }); - } - - if (near) { - near.emit({ - originalEvent: e, - type: 'tapdragover', - position: { - x: now[0], - y: now[1] - } - }); - } - } - - r.touchData.last = near; - } // check to cancel taphold - - if (capture) { - for (var i = 0; i < now.length; i++) { - if (now[i] && r.touchData.startPosition[i] && isOverThresholdDrag) { - r.touchData.singleTouchMoved = true; - } - } - } // panning - - - if (capture && (start == null || start.pannable()) && cy.panningEnabled() && cy.userPanningEnabled()) { - var allowPassthrough = allowPanningPassthrough(start, r.touchData.starts); - - if (allowPassthrough) { - e.preventDefault(); - - if (!r.data.bgActivePosistion) { - r.data.bgActivePosistion = array2point(r.touchData.startPosition); - } - - if (r.swipePanning) { - cy.panBy({ - x: disp[0] * zoom, - y: disp[1] * zoom - }); - } else if (isOverThresholdDrag) { - r.swipePanning = true; - cy.panBy({ - x: dx * zoom, - y: dy * zoom - }); - - if (start) { - start.unactivate(); - r.redrawHint('select', true); - r.touchData.start = null; - } - } - } // Re-project - - - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - } - - for (var j = 0; j < now.length; j++) { - earlier[j] = now[j]; - } // the active bg indicator should be removed when making a swipe that is neither for dragging nodes or panning - - - if (capture && e.touches.length > 0 && !r.hoverData.draggingEles && !r.swipePanning && r.data.bgActivePosistion != null) { - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - r.redraw(); - } - }, false); - var touchcancelHandler; - r.registerBinding(window, 'touchcancel', touchcancelHandler = function touchcancelHandler(e) { - // eslint-disable-line no-unused-vars - var start = r.touchData.start; - r.touchData.capture = false; - - if (start) { - start.unactivate(); - } - }); - var touchendHandler; - r.registerBinding(window, 'touchend', touchendHandler = function touchendHandler(e) { - // eslint-disable-line no-unused-vars - var start = r.touchData.start; - var capture = r.touchData.capture; - - if (capture) { - if (e.touches.length === 0) { - r.touchData.capture = false; - } - - e.preventDefault(); - } else { - return; - } - - var select = r.selection; - r.swipePanning = false; - r.hoverData.draggingEles = false; - var cy = r.cy; - var zoom = cy.zoom(); - var now = r.touchData.now; - var earlier = r.touchData.earlier; - - if (e.touches[0]) { - var pos = r.projectIntoViewport(e.touches[0].clientX, e.touches[0].clientY); - now[0] = pos[0]; - now[1] = pos[1]; - } - - if (e.touches[1]) { - var pos = r.projectIntoViewport(e.touches[1].clientX, e.touches[1].clientY); - now[2] = pos[0]; - now[3] = pos[1]; - } - - if (e.touches[2]) { - var pos = r.projectIntoViewport(e.touches[2].clientX, e.touches[2].clientY); - now[4] = pos[0]; - now[5] = pos[1]; - } - - if (start) { - start.unactivate(); - } - - var ctxTapend; - - if (r.touchData.cxt) { - ctxTapend = { - originalEvent: e, - type: 'cxttapend', - position: { - x: now[0], - y: now[1] - } - }; - - if (start) { - start.emit(ctxTapend); - } else { - cy.emit(ctxTapend); - } - - if (!r.touchData.cxtDragged) { - var ctxTap = { - originalEvent: e, - type: 'cxttap', - position: { - x: now[0], - y: now[1] - } - }; - - if (start) { - start.emit(ctxTap); - } else { - cy.emit(ctxTap); - } - } - - if (r.touchData.start) { - r.touchData.start._private.grabbed = false; - } - - r.touchData.cxt = false; - r.touchData.start = null; - r.redraw(); - return; - } // no more box selection if we don't have three fingers - - - if (!e.touches[2] && cy.boxSelectionEnabled() && r.touchData.selecting) { - r.touchData.selecting = false; - var box = cy.collection(r.getAllInBox(select[0], select[1], select[2], select[3])); - select[0] = undefined; - select[1] = undefined; - select[2] = undefined; - select[3] = undefined; - select[4] = 0; - r.redrawHint('select', true); - cy.emit({ - type: 'boxend', - originalEvent: e, - position: { - x: now[0], - y: now[1] - } - }); - - var eleWouldBeSelected = function eleWouldBeSelected(ele) { - return ele.selectable() && !ele.selected(); - }; - - box.emit('box').stdFilter(eleWouldBeSelected).select().emit('boxselect'); - - if (box.nonempty()) { - r.redrawHint('eles', true); - } - - r.redraw(); - } - - if (start != null) { - start.unactivate(); - } - - if (e.touches[2]) { - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - } else if (e.touches[1]) ; else if (e.touches[0]) ; else if (!e.touches[0]) { - r.data.bgActivePosistion = undefined; - r.redrawHint('select', true); - var draggedEles = r.dragData.touchDragEles; - - if (start != null) { - var startWasGrabbed = start._private.grabbed; - freeDraggedElements(draggedEles); - r.redrawHint('drag', true); - r.redrawHint('eles', true); - - if (startWasGrabbed) { - start.emit('freeon'); - draggedEles.emit('free'); - - if (r.dragData.didDrag) { - start.emit('dragfreeon'); - draggedEles.emit('dragfree'); - } - } - - triggerEvents(start, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { - x: now[0], - y: now[1] - }); - start.unactivate(); - r.touchData.start = null; - } else { - var near = r.findNearestElement(now[0], now[1], true, true); - triggerEvents(near, ['touchend', 'tapend', 'vmouseup', 'tapdragout'], e, { - x: now[0], - y: now[1] - }); - } - - var dx = r.touchData.startPosition[0] - now[0]; - var dx2 = dx * dx; - var dy = r.touchData.startPosition[1] - now[1]; - var dy2 = dy * dy; - var dist2 = dx2 + dy2; - var rdist2 = dist2 * zoom * zoom; // Tap event, roughly same as mouse click event for touch - - if (!r.touchData.singleTouchMoved) { - if (!start) { - cy.$(':selected').unselect(['tapunselect']); - } - - triggerEvents(start, ['tap', 'vclick'], e, { - x: now[0], - y: now[1] - }); - } // Prepare to select the currently touched node, only if it hasn't been dragged past a certain distance - - - if (start != null && !r.dragData.didDrag // didn't drag nodes around - && start._private.selectable && rdist2 < r.touchTapThreshold2 && !r.pinching // pinch to zoom should not affect selection - ) { - if (cy.selectionType() === 'single') { - cy.$(isSelected).unmerge(start).unselect(['tapunselect']); - start.select(['tapselect']); - } else { - if (start.selected()) { - start.unselect(['tapunselect']); - } else { - start.select(['tapselect']); - } - } - - r.redrawHint('eles', true); - } - - r.touchData.singleTouchMoved = true; - } - - for (var j = 0; j < now.length; j++) { - earlier[j] = now[j]; - } - - r.dragData.didDrag = false; // reset for next touchstart - - if (e.touches.length === 0) { - r.touchData.dragDelta = []; - r.touchData.startPosition = null; - r.touchData.startGPosition = null; - r.touchData.didSelect = false; - } - - if (e.touches.length < 2) { - if (e.touches.length === 1) { - // the old start global pos'n may not be the same finger that remains - r.touchData.startGPosition = [e.touches[0].clientX, e.touches[0].clientY]; - } - - r.pinching = false; - r.redrawHint('eles', true); - r.redraw(); - } //r.redraw(); - - }, false); // fallback compatibility layer for ms pointer events - - if (typeof TouchEvent === 'undefined') { - var pointers = []; - - var makeTouch = function makeTouch(e) { - return { - clientX: e.clientX, - clientY: e.clientY, - force: 1, - identifier: e.pointerId, - pageX: e.pageX, - pageY: e.pageY, - radiusX: e.width / 2, - radiusY: e.height / 2, - screenX: e.screenX, - screenY: e.screenY, - target: e.target - }; - }; - - var makePointer = function makePointer(e) { - return { - event: e, - touch: makeTouch(e) - }; - }; - - var addPointer = function addPointer(e) { - pointers.push(makePointer(e)); - }; - - var removePointer = function removePointer(e) { - for (var i = 0; i < pointers.length; i++) { - var p = pointers[i]; - - if (p.event.pointerId === e.pointerId) { - pointers.splice(i, 1); - return; - } - } - }; - - var updatePointer = function updatePointer(e) { - var p = pointers.filter(function (p) { - return p.event.pointerId === e.pointerId; - })[0]; - p.event = e; - p.touch = makeTouch(e); - }; - - var addTouchesToEvent = function addTouchesToEvent(e) { - e.touches = pointers.map(function (p) { - return p.touch; - }); - }; - - var pointerIsMouse = function pointerIsMouse(e) { - return e.pointerType === 'mouse' || e.pointerType === 4; - }; - - r.registerBinding(r.container, 'pointerdown', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - e.preventDefault(); - addPointer(e); - addTouchesToEvent(e); - touchstartHandler(e); - }); - r.registerBinding(r.container, 'pointerup', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - removePointer(e); - addTouchesToEvent(e); - touchendHandler(e); - }); - r.registerBinding(r.container, 'pointercancel', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - removePointer(e); - addTouchesToEvent(e); - touchcancelHandler(e); - }); - r.registerBinding(r.container, 'pointermove', function (e) { - if (pointerIsMouse(e)) { - return; - } // mouse already handled - - - e.preventDefault(); - updatePointer(e); - addTouchesToEvent(e); - touchmoveHandler(e); - }); - } -}; - -var BRp$d = {}; - -BRp$d.generatePolygon = function (name, points) { - return this.nodeShapes[name] = { - renderer: this, - name: name, - points: points, - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl('polygon', context, centerX, centerY, width, height, this.points); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return polygonIntersectLine(x, y, this.points, nodeX, nodeY, width / 2, height / 2, padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - return pointInsidePolygon(x, y, this.points, centerX, centerY, width, height, [0, -1], padding); - } - }; -}; - -BRp$d.generateEllipse = function () { - return this.nodeShapes['ellipse'] = { - renderer: this, - name: 'ellipse', - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return intersectLineEllipse(x, y, nodeX, nodeY, width / 2 + padding, height / 2 + padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - return checkInEllipse(x, y, width, height, centerX, centerY, padding); - } - }; -}; - -BRp$d.generateRoundPolygon = function (name, points) { - // Pre-compute control points - // Since these points depend on the radius length (which in turns depend on the width/height of the node) we will only pre-compute - // the unit vectors. - // For simplicity the layout will be: - // [ p0, UnitVectorP0P1, p1, UniVectorP1P2, ..., pn, UnitVectorPnP0 ] - var allPoints = new Array(points.length * 2); - - for (var i = 0; i < points.length / 2; i++) { - var sourceIndex = i * 2; - var destIndex = void 0; - - if (i < points.length / 2 - 1) { - destIndex = (i + 1) * 2; - } else { - destIndex = 0; - } - - allPoints[i * 4] = points[sourceIndex]; - allPoints[i * 4 + 1] = points[sourceIndex + 1]; - var xDest = points[destIndex] - points[sourceIndex]; - var yDest = points[destIndex + 1] - points[sourceIndex + 1]; - var norm = Math.sqrt(xDest * xDest + yDest * yDest); - allPoints[i * 4 + 2] = xDest / norm; - allPoints[i * 4 + 3] = yDest / norm; - } - - return this.nodeShapes[name] = { - renderer: this, - name: name, - points: allPoints, - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl('round-polygon', context, centerX, centerY, width, height, this.points); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return roundPolygonIntersectLine(x, y, this.points, nodeX, nodeY, width, height); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - return pointInsideRoundPolygon(x, y, this.points, centerX, centerY, width, height); - } - }; -}; - -BRp$d.generateRoundRectangle = function () { - return this.nodeShapes['round-rectangle'] = this.nodeShapes['roundrectangle'] = { - renderer: this, - name: 'round-rectangle', - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - var cornerRadius = getRoundRectangleRadius(width, height); - var diam = cornerRadius * 2; // Check hBox - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { - return true; - } // Check top left quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY - height / 2 + cornerRadius, padding)) { - return true; - } // Check top right quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY - height / 2 + cornerRadius, padding)) { - return true; - } // Check bottom right quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } // Check bottom left quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } - - return false; - } - }; -}; - -BRp$d.generateCutRectangle = function () { - return this.nodeShapes['cut-rectangle'] = this.nodeShapes['cutrectangle'] = { - renderer: this, - name: 'cut-rectangle', - cornerLength: getCutRectangleCornerLength(), - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - generateCutTrianglePts: function generateCutTrianglePts(width, height, centerX, centerY) { - var cl = this.cornerLength; - var hh = height / 2; - var hw = width / 2; - var xBegin = centerX - hw; - var xEnd = centerX + hw; - var yBegin = centerY - hh; - var yEnd = centerY + hh; // points are in clockwise order, inner (imaginary) triangle pt on [4, 5] - - return { - topLeft: [xBegin, yBegin + cl, xBegin + cl, yBegin, xBegin + cl, yBegin + cl], - topRight: [xEnd - cl, yBegin, xEnd, yBegin + cl, xEnd - cl, yBegin + cl], - bottomRight: [xEnd, yEnd - cl, xEnd - cl, yEnd, xEnd - cl, yEnd - cl], - bottomLeft: [xBegin + cl, yEnd, xBegin, yEnd - cl, xBegin + cl, yEnd - cl] - }; - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - var cPts = this.generateCutTrianglePts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); - var pts = [].concat.apply([], [cPts.topLeft.splice(0, 4), cPts.topRight.splice(0, 4), cPts.bottomRight.splice(0, 4), cPts.bottomLeft.splice(0, 4)]); - return polygonIntersectLine(x, y, pts, nodeX, nodeY); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - // Check hBox - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * this.cornerLength, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * this.cornerLength, height, [0, -1], padding)) { - return true; - } - - var cutTrianglePts = this.generateCutTrianglePts(width, height, centerX, centerY); - return pointInsidePolygonPoints(x, y, cutTrianglePts.topLeft) || pointInsidePolygonPoints(x, y, cutTrianglePts.topRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomRight) || pointInsidePolygonPoints(x, y, cutTrianglePts.bottomLeft); - } - }; -}; - -BRp$d.generateBarrel = function () { - return this.nodeShapes['barrel'] = { - renderer: this, - name: 'barrel', - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - // use two fixed t values for the bezier curve approximation - var t0 = 0.15; - var t1 = 0.5; - var t2 = 0.85; - var bPts = this.generateBarrelBezierPts(width + 2 * padding, height + 2 * padding, nodeX, nodeY); - - var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) { - // approximate curve pts based on the two t values - var m0 = qbezierPtAt({ - x: pts[0], - y: pts[1] - }, { - x: pts[2], - y: pts[3] - }, { - x: pts[4], - y: pts[5] - }, t0); - var m1 = qbezierPtAt({ - x: pts[0], - y: pts[1] - }, { - x: pts[2], - y: pts[3] - }, { - x: pts[4], - y: pts[5] - }, t1); - var m2 = qbezierPtAt({ - x: pts[0], - y: pts[1] - }, { - x: pts[2], - y: pts[3] - }, { - x: pts[4], - y: pts[5] - }, t2); - return [pts[0], pts[1], m0.x, m0.y, m1.x, m1.y, m2.x, m2.y, pts[4], pts[5]]; - }; - - var pts = [].concat(approximateBarrelCurvePts(bPts.topLeft), approximateBarrelCurvePts(bPts.topRight), approximateBarrelCurvePts(bPts.bottomRight), approximateBarrelCurvePts(bPts.bottomLeft)); - return polygonIntersectLine(x, y, pts, nodeX, nodeY); - }, - generateBarrelBezierPts: function generateBarrelBezierPts(width, height, centerX, centerY) { - var hh = height / 2; - var hw = width / 2; - var xBegin = centerX - hw; - var xEnd = centerX + hw; - var yBegin = centerY - hh; - var yEnd = centerY + hh; - var curveConstants = getBarrelCurveConstants(width, height); - var hOffset = curveConstants.heightOffset; - var wOffset = curveConstants.widthOffset; - var ctrlPtXOffset = curveConstants.ctrlPtOffsetPct * width; // points are in clockwise order, inner (imaginary) control pt on [4, 5] - - var pts = { - topLeft: [xBegin, yBegin + hOffset, xBegin + ctrlPtXOffset, yBegin, xBegin + wOffset, yBegin], - topRight: [xEnd - wOffset, yBegin, xEnd - ctrlPtXOffset, yBegin, xEnd, yBegin + hOffset], - bottomRight: [xEnd, yEnd - hOffset, xEnd - ctrlPtXOffset, yEnd, xEnd - wOffset, yEnd], - bottomLeft: [xBegin + wOffset, yEnd, xBegin + ctrlPtXOffset, yEnd, xBegin, yEnd - hOffset] - }; - pts.topLeft.isTop = true; - pts.topRight.isTop = true; - pts.bottomLeft.isBottom = true; - pts.bottomRight.isBottom = true; - return pts; - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - var curveConstants = getBarrelCurveConstants(width, height); - var hOffset = curveConstants.heightOffset; - var wOffset = curveConstants.widthOffset; // Check hBox - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - 2 * hOffset, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - 2 * wOffset, height, [0, -1], padding)) { - return true; - } - - var barrelCurvePts = this.generateBarrelBezierPts(width, height, centerX, centerY); - - var getCurveT = function getCurveT(x, y, curvePts) { - var x0 = curvePts[4]; - var x1 = curvePts[2]; - var x2 = curvePts[0]; - var y0 = curvePts[5]; // var y1 = curvePts[ 3 ]; - - var y2 = curvePts[1]; - var xMin = Math.min(x0, x2); - var xMax = Math.max(x0, x2); - var yMin = Math.min(y0, y2); - var yMax = Math.max(y0, y2); - - if (xMin <= x && x <= xMax && yMin <= y && y <= yMax) { - var coeff = bezierPtsToQuadCoeff(x0, x1, x2); - var roots = solveQuadratic(coeff[0], coeff[1], coeff[2], x); - var validRoots = roots.filter(function (r) { - return 0 <= r && r <= 1; - }); - - if (validRoots.length > 0) { - return validRoots[0]; - } - } - - return null; - }; - - var curveRegions = Object.keys(barrelCurvePts); - - for (var i = 0; i < curveRegions.length; i++) { - var corner = curveRegions[i]; - var cornerPts = barrelCurvePts[corner]; - var t = getCurveT(x, y, cornerPts); - - if (t == null) { - continue; - } - - var y0 = cornerPts[5]; - var y1 = cornerPts[3]; - var y2 = cornerPts[1]; - var bezY = qbezierAt(y0, y1, y2, t); - - if (cornerPts.isTop && bezY <= y) { - return true; - } - - if (cornerPts.isBottom && y <= bezY) { - return true; - } - } - - return false; - } - }; -}; - -BRp$d.generateBottomRoundrectangle = function () { - return this.nodeShapes['bottom-round-rectangle'] = this.nodeShapes['bottomroundrectangle'] = { - renderer: this, - name: 'bottom-round-rectangle', - points: generateUnitNgonPointsFitToSquare(4, 0), - draw: function draw(context, centerX, centerY, width, height) { - this.renderer.nodeShapeImpl(this.name, context, centerX, centerY, width, height); - }, - intersectLine: function intersectLine(nodeX, nodeY, width, height, x, y, padding) { - var topStartX = nodeX - (width / 2 + padding); - var topStartY = nodeY - (height / 2 + padding); - var topEndY = topStartY; - var topEndX = nodeX + (width / 2 + padding); - var topIntersections = finiteLinesIntersect(x, y, nodeX, nodeY, topStartX, topStartY, topEndX, topEndY, false); - - if (topIntersections.length > 0) { - return topIntersections; - } - - return roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding); - }, - checkPoint: function checkPoint(x, y, padding, width, height, centerX, centerY) { - var cornerRadius = getRoundRectangleRadius(width, height); - var diam = 2 * cornerRadius; // Check hBox - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width, height - diam, [0, -1], padding)) { - return true; - } // Check vBox - - - if (pointInsidePolygon(x, y, this.points, centerX, centerY, width - diam, height, [0, -1], padding)) { - return true; - } // check non-rounded top side - - - var outerWidth = width / 2 + 2 * padding; - var outerHeight = height / 2 + 2 * padding; - var points = [centerX - outerWidth, centerY - outerHeight, centerX - outerWidth, centerY, centerX + outerWidth, centerY, centerX + outerWidth, centerY - outerHeight]; - - if (pointInsidePolygonPoints(x, y, points)) { - return true; - } // Check bottom right quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX + width / 2 - cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } // Check bottom left quarter circle - - - if (checkInEllipse(x, y, diam, diam, centerX - width / 2 + cornerRadius, centerY + height / 2 - cornerRadius, padding)) { - return true; - } - - return false; - } - }; -}; - -BRp$d.registerNodeShapes = function () { - var nodeShapes = this.nodeShapes = {}; - var renderer = this; - this.generateEllipse(); - this.generatePolygon('triangle', generateUnitNgonPointsFitToSquare(3, 0)); - this.generateRoundPolygon('round-triangle', generateUnitNgonPointsFitToSquare(3, 0)); - this.generatePolygon('rectangle', generateUnitNgonPointsFitToSquare(4, 0)); - nodeShapes['square'] = nodeShapes['rectangle']; - this.generateRoundRectangle(); - this.generateCutRectangle(); - this.generateBarrel(); - this.generateBottomRoundrectangle(); - { - var diamondPoints = [0, 1, 1, 0, 0, -1, -1, 0]; - this.generatePolygon('diamond', diamondPoints); - this.generateRoundPolygon('round-diamond', diamondPoints); - } - this.generatePolygon('pentagon', generateUnitNgonPointsFitToSquare(5, 0)); - this.generateRoundPolygon('round-pentagon', generateUnitNgonPointsFitToSquare(5, 0)); - this.generatePolygon('hexagon', generateUnitNgonPointsFitToSquare(6, 0)); - this.generateRoundPolygon('round-hexagon', generateUnitNgonPointsFitToSquare(6, 0)); - this.generatePolygon('heptagon', generateUnitNgonPointsFitToSquare(7, 0)); - this.generateRoundPolygon('round-heptagon', generateUnitNgonPointsFitToSquare(7, 0)); - this.generatePolygon('octagon', generateUnitNgonPointsFitToSquare(8, 0)); - this.generateRoundPolygon('round-octagon', generateUnitNgonPointsFitToSquare(8, 0)); - var star5Points = new Array(20); - { - var outerPoints = generateUnitNgonPoints(5, 0); - var innerPoints = generateUnitNgonPoints(5, Math.PI / 5); // Outer radius is 1; inner radius of star is smaller - - var innerRadius = 0.5 * (3 - Math.sqrt(5)); - innerRadius *= 1.57; - - for (var i = 0; i < innerPoints.length / 2; i++) { - innerPoints[i * 2] *= innerRadius; - innerPoints[i * 2 + 1] *= innerRadius; - } - - for (var i = 0; i < 20 / 4; i++) { - star5Points[i * 4] = outerPoints[i * 2]; - star5Points[i * 4 + 1] = outerPoints[i * 2 + 1]; - star5Points[i * 4 + 2] = innerPoints[i * 2]; - star5Points[i * 4 + 3] = innerPoints[i * 2 + 1]; - } - } - star5Points = fitPolygonToSquare(star5Points); - this.generatePolygon('star', star5Points); - this.generatePolygon('vee', [-1, -1, 0, -0.333, 1, -1, 0, 1]); - this.generatePolygon('rhomboid', [-1, -1, 0.333, -1, 1, 1, -0.333, 1]); - this.nodeShapes['concavehexagon'] = this.generatePolygon('concave-hexagon', [-1, -0.95, -0.75, 0, -1, 0.95, 1, 0.95, 0.75, 0, 1, -0.95]); - { - var tagPoints = [-1, -1, 0.25, -1, 1, 0, 0.25, 1, -1, 1]; - this.generatePolygon('tag', tagPoints); - this.generateRoundPolygon('round-tag', tagPoints); - } - - nodeShapes.makePolygon = function (points) { - // use caching on user-specified polygons so they are as fast as native shapes - var key = points.join('$'); - var name = 'polygon-' + key; - var shape; - - if (shape = this[name]) { - // got cached shape - return shape; - } // create and cache new shape - - - return renderer.generatePolygon(name, points); - }; -}; - -var BRp$e = {}; - -BRp$e.timeToRender = function () { - return this.redrawTotalTime / this.redrawCount; -}; - -BRp$e.redraw = function (options) { - options = options || staticEmptyObject(); - var r = this; - - if (r.averageRedrawTime === undefined) { - r.averageRedrawTime = 0; - } - - if (r.lastRedrawTime === undefined) { - r.lastRedrawTime = 0; - } - - if (r.lastDrawTime === undefined) { - r.lastDrawTime = 0; - } - - r.requestedFrame = true; - r.renderOptions = options; -}; - -BRp$e.beforeRender = function (fn, priority) { - // the renderer can't add tick callbacks when destroyed - if (this.destroyed) { - return; - } - - if (priority == null) { - error('Priority is not optional for beforeRender'); - } - - var cbs = this.beforeRenderCallbacks; - cbs.push({ - fn: fn, - priority: priority - }); // higher priority callbacks executed first - - cbs.sort(function (a, b) { - return b.priority - a.priority; - }); -}; - -var beforeRenderCallbacks = function beforeRenderCallbacks(r, willDraw, startTime) { - var cbs = r.beforeRenderCallbacks; - - for (var i = 0; i < cbs.length; i++) { - cbs[i].fn(willDraw, startTime); - } -}; - -BRp$e.startRenderLoop = function () { - var r = this; - var cy = r.cy; - - if (r.renderLoopStarted) { - return; - } else { - r.renderLoopStarted = true; - } - - var renderFn = function renderFn(requestTime) { - if (r.destroyed) { - return; - } - - if (cy.batching()) ; else if (r.requestedFrame && !r.skipFrame) { - beforeRenderCallbacks(r, true, requestTime); - var startTime = performanceNow(); - r.render(r.renderOptions); - var endTime = r.lastDrawTime = performanceNow(); - - if (r.averageRedrawTime === undefined) { - r.averageRedrawTime = endTime - startTime; - } - - if (r.redrawCount === undefined) { - r.redrawCount = 0; - } - - r.redrawCount++; - - if (r.redrawTotalTime === undefined) { - r.redrawTotalTime = 0; - } - - var duration = endTime - startTime; - r.redrawTotalTime += duration; - r.lastRedrawTime = duration; // use a weighted average with a bias from the previous average so we don't spike so easily - - r.averageRedrawTime = r.averageRedrawTime / 2 + duration / 2; - r.requestedFrame = false; - } else { - beforeRenderCallbacks(r, false, requestTime); - } - - r.skipFrame = false; - requestAnimationFrame(renderFn); - }; - - requestAnimationFrame(renderFn); -}; - -var BaseRenderer = function BaseRenderer(options) { - this.init(options); -}; - -var BR = BaseRenderer; -var BRp$f = BR.prototype; -BRp$f.clientFunctions = ['redrawHint', 'render', 'renderTo', 'matchCanvasSize', 'nodeShapeImpl', 'arrowShapeImpl']; - -BRp$f.init = function (options) { - var r = this; - r.options = options; - r.cy = options.cy; - var ctr = r.container = options.cy.container(); // prepend a stylesheet in the head such that - - if (window$1) { - var document = window$1.document; - var head = document.head; - var stylesheetId = '__________cytoscape_stylesheet'; - var className = '__________cytoscape_container'; - var stylesheetAlreadyExists = document.getElementById(stylesheetId) != null; - - if (ctr.className.indexOf(className) < 0) { - ctr.className = (ctr.className || '') + ' ' + className; - } - - if (!stylesheetAlreadyExists) { - var stylesheet = document.createElement('style'); - stylesheet.id = stylesheetId; - stylesheet.innerHTML = '.' + className + ' { position: relative; }'; - head.insertBefore(stylesheet, head.children[0]); // first so lowest priority - } - - var computedStyle = window$1.getComputedStyle(ctr); - var position = computedStyle.getPropertyValue('position'); - - if (position === 'static') { - warn('A Cytoscape container has style position:static and so can not use UI extensions properly'); - } - } - - r.selection = [undefined, undefined, undefined, undefined, 0]; // Coordinates for selection box, plus enabled flag - - r.bezierProjPcts = [0.05, 0.225, 0.4, 0.5, 0.6, 0.775, 0.95]; //--Pointer-related data - - r.hoverData = { - down: null, - last: null, - downTime: null, - triggerMode: null, - dragging: false, - initialPan: [null, null], - capture: false - }; - r.dragData = { - possibleDragElements: [] - }; - r.touchData = { - start: null, - capture: false, - // These 3 fields related to tap, taphold events - startPosition: [null, null, null, null, null, null], - singleTouchStartTime: null, - singleTouchMoved: true, - now: [null, null, null, null, null, null], - earlier: [null, null, null, null, null, null] - }; - r.redraws = 0; - r.showFps = options.showFps; - r.debug = options.debug; - r.hideEdgesOnViewport = options.hideEdgesOnViewport; - r.textureOnViewport = options.textureOnViewport; - r.wheelSensitivity = options.wheelSensitivity; - r.motionBlurEnabled = options.motionBlur; // on by default - - r.forcedPixelRatio = number(options.pixelRatio) ? options.pixelRatio : null; - r.motionBlur = options.motionBlur; // for initial kick off - - r.motionBlurOpacity = options.motionBlurOpacity; - r.motionBlurTransparency = 1 - r.motionBlurOpacity; - r.motionBlurPxRatio = 1; - r.mbPxRBlurry = 1; //0.8; - - r.minMbLowQualFrames = 4; - r.fullQualityMb = false; - r.clearedForMotionBlur = []; - r.desktopTapThreshold = options.desktopTapThreshold; - r.desktopTapThreshold2 = options.desktopTapThreshold * options.desktopTapThreshold; - r.touchTapThreshold = options.touchTapThreshold; - r.touchTapThreshold2 = options.touchTapThreshold * options.touchTapThreshold; - r.tapholdDuration = 500; - r.bindings = []; - r.beforeRenderCallbacks = []; - r.beforeRenderPriorities = { - // higher priority execs before lower one - animations: 400, - eleCalcs: 300, - eleTxrDeq: 200, - lyrTxrDeq: 150, - lyrTxrSkip: 100 - }; - r.registerNodeShapes(); - r.registerArrowShapes(); - r.registerCalculationListeners(); -}; - -BRp$f.notify = function (eventName, eles) { - var r = this; - var cy = r.cy; // the renderer can't be notified after it's destroyed - - if (this.destroyed) { - return; - } - - if (eventName === 'init') { - r.load(); - return; - } - - if (eventName === 'destroy') { - r.destroy(); - return; - } - - if (eventName === 'add' || eventName === 'remove' || eventName === 'move' && cy.hasCompoundNodes() || eventName === 'load' || eventName === 'zorder' || eventName === 'mount') { - r.invalidateCachedZSortedEles(); - } - - if (eventName === 'viewport') { - r.redrawHint('select', true); - } - - if (eventName === 'load' || eventName === 'resize' || eventName === 'mount') { - r.invalidateContainerClientCoordsCache(); - r.matchCanvasSize(r.container); - } - - r.redrawHint('eles', true); - r.redrawHint('drag', true); - this.startRenderLoop(); - this.redraw(); -}; - -BRp$f.destroy = function () { - var r = this; - r.destroyed = true; - r.cy.stopAnimationLoop(); - - for (var i = 0; i < r.bindings.length; i++) { - var binding = r.bindings[i]; - var b = binding; - var tgt = b.target; - (tgt.off || tgt.removeEventListener).apply(tgt, b.args); - } - - r.bindings = []; - r.beforeRenderCallbacks = []; - r.onUpdateEleCalcsFns = []; - - if (r.removeObserver) { - r.removeObserver.disconnect(); - } - - if (r.styleObserver) { - r.styleObserver.disconnect(); - } - - if (r.resizeObserver) { - r.resizeObserver.disconnect(); - } - - if (r.labelCalcDiv) { - try { - document.body.removeChild(r.labelCalcDiv); // eslint-disable-line no-undef - } catch (e) {// ie10 issue #1014 - } - } -}; - -BRp$f.isHeadless = function () { - return false; -}; - -[BRp, BRp$a, BRp$b, BRp$c, BRp$d, BRp$e].forEach(function (props) { - extend(BRp$f, props); -}); - -var fullFpsTime = 1000 / 60; // assume 60 frames per second - -var defs = { - setupDequeueing: function setupDequeueing(opts) { - return function setupDequeueingImpl() { - var self = this; - var r = this.renderer; - - if (self.dequeueingSetup) { - return; - } else { - self.dequeueingSetup = true; - } - - var queueRedraw = util(function () { - r.redrawHint('eles', true); - r.redrawHint('drag', true); - r.redraw(); - }, opts.deqRedrawThreshold); - - var dequeue = function dequeue(willDraw, frameStartTime) { - var startTime = performanceNow(); - var avgRenderTime = r.averageRedrawTime; - var renderTime = r.lastRedrawTime; - var deqd = []; - var extent = r.cy.extent(); - var pixelRatio = r.getPixelRatio(); // if we aren't in a tick that causes a draw, then the rendered style - // queue won't automatically be flushed before dequeueing starts - - if (!willDraw) { - r.flushRenderedStyleQueue(); - } - - while (true) { - // eslint-disable-line no-constant-condition - var now = performanceNow(); - var duration = now - startTime; - var frameDuration = now - frameStartTime; - - if (renderTime < fullFpsTime) { - // if we're rendering faster than the ideal fps, then do dequeueing - // during all of the remaining frame time - var timeAvailable = fullFpsTime - (willDraw ? avgRenderTime : 0); - - if (frameDuration >= opts.deqFastCost * timeAvailable) { - break; - } - } else { - if (willDraw) { - if (duration >= opts.deqCost * renderTime || duration >= opts.deqAvgCost * avgRenderTime) { - break; - } - } else if (frameDuration >= opts.deqNoDrawCost * fullFpsTime) { - break; - } - } - - var thisDeqd = opts.deq(self, pixelRatio, extent); - - if (thisDeqd.length > 0) { - for (var i = 0; i < thisDeqd.length; i++) { - deqd.push(thisDeqd[i]); - } - } else { - break; - } - } // callbacks on dequeue - - - if (deqd.length > 0) { - opts.onDeqd(self, deqd); - - if (!willDraw && opts.shouldRedraw(self, deqd, pixelRatio, extent)) { - queueRedraw(); - } - } - }; - - var priority = opts.priority || noop; - r.beforeRender(dequeue, priority(self)); - }; - } -}; - -// Uses keys so elements may share the same cache. - -var ElementTextureCacheLookup = -/*#__PURE__*/ -function () { - function ElementTextureCacheLookup(getKey) { - var doesEleInvalidateKey = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : falsify; - - _classCallCheck(this, ElementTextureCacheLookup); - - this.idsByKey = new Map$1(); - this.keyForId = new Map$1(); - this.cachesByLvl = new Map$1(); - this.lvls = []; - this.getKey = getKey; - this.doesEleInvalidateKey = doesEleInvalidateKey; - } - - _createClass(ElementTextureCacheLookup, [{ - key: "getIdsFor", - value: function getIdsFor(key) { - if (key == null) { - error("Can not get id list for null key"); - } - - var idsByKey = this.idsByKey; - var ids = this.idsByKey.get(key); - - if (!ids) { - ids = new Set$1(); - idsByKey.set(key, ids); - } - - return ids; - } - }, { - key: "addIdForKey", - value: function addIdForKey(key, id) { - if (key != null) { - this.getIdsFor(key).add(id); - } - } - }, { - key: "deleteIdForKey", - value: function deleteIdForKey(key, id) { - if (key != null) { - this.getIdsFor(key)["delete"](id); - } - } - }, { - key: "getNumberOfIdsForKey", - value: function getNumberOfIdsForKey(key) { - if (key == null) { - return 0; - } else { - return this.getIdsFor(key).size; - } - } - }, { - key: "updateKeyMappingFor", - value: function updateKeyMappingFor(ele) { - var id = ele.id(); - var prevKey = this.keyForId.get(id); - var currKey = this.getKey(ele); - this.deleteIdForKey(prevKey, id); - this.addIdForKey(currKey, id); - this.keyForId.set(id, currKey); - } - }, { - key: "deleteKeyMappingFor", - value: function deleteKeyMappingFor(ele) { - var id = ele.id(); - var prevKey = this.keyForId.get(id); - this.deleteIdForKey(prevKey, id); - this.keyForId["delete"](id); - } - }, { - key: "keyHasChangedFor", - value: function keyHasChangedFor(ele) { - var id = ele.id(); - var prevKey = this.keyForId.get(id); - var newKey = this.getKey(ele); - return prevKey !== newKey; - } - }, { - key: "isInvalid", - value: function isInvalid(ele) { - return this.keyHasChangedFor(ele) || this.doesEleInvalidateKey(ele); - } - }, { - key: "getCachesAt", - value: function getCachesAt(lvl) { - var cachesByLvl = this.cachesByLvl, - lvls = this.lvls; - var caches = cachesByLvl.get(lvl); - - if (!caches) { - caches = new Map$1(); - cachesByLvl.set(lvl, caches); - lvls.push(lvl); - } - - return caches; - } - }, { - key: "getCache", - value: function getCache(key, lvl) { - return this.getCachesAt(lvl).get(key); - } - }, { - key: "get", - value: function get(ele, lvl) { - var key = this.getKey(ele); - var cache = this.getCache(key, lvl); // getting for an element may need to add to the id list b/c eles can share keys - - if (cache != null) { - this.updateKeyMappingFor(ele); - } - - return cache; - } - }, { - key: "getForCachedKey", - value: function getForCachedKey(ele, lvl) { - var key = this.keyForId.get(ele.id()); // n.b. use cached key, not newly computed key - - var cache = this.getCache(key, lvl); - return cache; - } - }, { - key: "hasCache", - value: function hasCache(key, lvl) { - return this.getCachesAt(lvl).has(key); - } - }, { - key: "has", - value: function has(ele, lvl) { - var key = this.getKey(ele); - return this.hasCache(key, lvl); - } - }, { - key: "setCache", - value: function setCache(key, lvl, cache) { - cache.key = key; - this.getCachesAt(lvl).set(key, cache); - } - }, { - key: "set", - value: function set(ele, lvl, cache) { - var key = this.getKey(ele); - this.setCache(key, lvl, cache); - this.updateKeyMappingFor(ele); - } - }, { - key: "deleteCache", - value: function deleteCache(key, lvl) { - this.getCachesAt(lvl)["delete"](key); - } - }, { - key: "delete", - value: function _delete(ele, lvl) { - var key = this.getKey(ele); - this.deleteCache(key, lvl); - } - }, { - key: "invalidateKey", - value: function invalidateKey(key) { - var _this = this; - - this.lvls.forEach(function (lvl) { - return _this.deleteCache(key, lvl); - }); - } // returns true if no other eles reference the invalidated cache (n.b. other eles may need the cache with the same key) - - }, { - key: "invalidate", - value: function invalidate(ele) { - var id = ele.id(); - var key = this.keyForId.get(id); // n.b. use stored key rather than current (potential key) - - this.deleteKeyMappingFor(ele); - var entireKeyInvalidated = this.doesEleInvalidateKey(ele); - - if (entireKeyInvalidated) { - // clear mapping for current key - this.invalidateKey(key); - } - - return entireKeyInvalidated || this.getNumberOfIdsForKey(key) === 0; - } - }]); - - return ElementTextureCacheLookup; -}(); - -var minTxrH = 25; // the size of the texture cache for small height eles (special case) - -var txrStepH = 50; // the min size of the regular cache, and the size it increases with each step up - -var minLvl = -4; // when scaling smaller than that we don't need to re-render - -var maxLvl = 3; // when larger than this scale just render directly (caching is not helpful) - -var maxZoom = 7.99; // beyond this zoom level, layered textures are not used - -var eleTxrSpacing = 8; // spacing between elements on textures to avoid blitting overlaps - -var defTxrWidth = 1024; // default/minimum texture width - -var maxTxrW = 1024; // the maximum width of a texture - -var maxTxrH = 1024; // the maximum height of a texture - -var minUtility = 0.2; // if usage of texture is less than this, it is retired - -var maxFullness = 0.8; // fullness of texture after which queue removal is checked - -var maxFullnessChecks = 10; // dequeued after this many checks - -var deqCost = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame - -var deqAvgCost = 0.1; // % of add'l rendering cost compared to average overall redraw time - -var deqNoDrawCost = 0.9; // % of avg frame time that can be used for dequeueing when not drawing - -var deqFastCost = 0.9; // % of frame time to be used when >60fps - -var deqRedrawThreshold = 100; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile - -var maxDeqSize = 1; // number of eles to dequeue and render at higher texture in each batch - -var getTxrReasons = { - dequeue: 'dequeue', - downscale: 'downscale', - highQuality: 'highQuality' -}; -var initDefaults = defaults({ - getKey: null, - doesEleInvalidateKey: falsify, - drawElement: null, - getBoundingBox: null, - getRotationPoint: null, - getRotationOffset: null, - isVisible: trueify, - allowEdgeTxrCaching: true, - allowParentTxrCaching: true -}); - -var ElementTextureCache = function ElementTextureCache(renderer, initOptions) { - var self = this; - self.renderer = renderer; - self.onDequeues = []; - var opts = initDefaults(initOptions); - extend(self, opts); - self.lookup = new ElementTextureCacheLookup(opts.getKey, opts.doesEleInvalidateKey); - self.setupDequeueing(); -}; - -var ETCp = ElementTextureCache.prototype; -ETCp.reasons = getTxrReasons; // the list of textures in which new subtextures for elements can be placed - -ETCp.getTextureQueue = function (txrH) { - var self = this; - self.eleImgCaches = self.eleImgCaches || {}; - return self.eleImgCaches[txrH] = self.eleImgCaches[txrH] || []; -}; // the list of usused textures which can be recycled (in use in texture queue) - - -ETCp.getRetiredTextureQueue = function (txrH) { - var self = this; - var rtxtrQs = self.eleImgCaches.retired = self.eleImgCaches.retired || {}; - var rtxtrQ = rtxtrQs[txrH] = rtxtrQs[txrH] || []; - return rtxtrQ; -}; // queue of element draw requests at different scale levels - - -ETCp.getElementQueue = function () { - var self = this; - var q = self.eleCacheQueue = self.eleCacheQueue || new Heap(function (a, b) { - return b.reqs - a.reqs; - }); - return q; -}; // queue of element draw requests at different scale levels (element id lookup) - - -ETCp.getElementKeyToQueue = function () { - var self = this; - var k2q = self.eleKeyToCacheQueue = self.eleKeyToCacheQueue || {}; - return k2q; -}; - -ETCp.getElement = function (ele, bb, pxRatio, lvl, reason) { - var self = this; - var r = this.renderer; - var zoom = r.cy.zoom(); - var lookup = this.lookup; - - if (bb.w === 0 || bb.h === 0 || isNaN(bb.w) || isNaN(bb.h) || !ele.visible()) { - return null; - } - - if (!self.allowEdgeTxrCaching && ele.isEdge() || !self.allowParentTxrCaching && ele.isParent()) { - return null; - } - - if (lvl == null) { - lvl = Math.ceil(log2(zoom * pxRatio)); - } - - if (lvl < minLvl) { - lvl = minLvl; - } else if (zoom >= maxZoom || lvl > maxLvl) { - return null; - } - - var scale = Math.pow(2, lvl); - var eleScaledH = bb.h * scale; - var eleScaledW = bb.w * scale; - var scaledLabelShown = r.eleTextBiggerThanMin(ele, scale); - - if (!this.isVisible(ele, scaledLabelShown)) { - return null; - } - - var eleCache = lookup.get(ele, lvl); // if this get was on an unused/invalidated cache, then restore the texture usage metric - - if (eleCache && eleCache.invalidated) { - eleCache.invalidated = false; - eleCache.texture.invalidatedWidth -= eleCache.width; - } - - if (eleCache) { - return eleCache; - } - - var txrH; // which texture height this ele belongs to - - if (eleScaledH <= minTxrH) { - txrH = minTxrH; - } else if (eleScaledH <= txrStepH) { - txrH = txrStepH; - } else { - txrH = Math.ceil(eleScaledH / txrStepH) * txrStepH; - } - - if (eleScaledH > maxTxrH || eleScaledW > maxTxrW) { - return null; // caching large elements is not efficient - } - - var txrQ = self.getTextureQueue(txrH); // first try the second last one in case it has space at the end - - var txr = txrQ[txrQ.length - 2]; - - var addNewTxr = function addNewTxr() { - return self.recycleTexture(txrH, eleScaledW) || self.addTexture(txrH, eleScaledW); - }; // try the last one if there is no second last one - - - if (!txr) { - txr = txrQ[txrQ.length - 1]; - } // if the last one doesn't exist, we need a first one - - - if (!txr) { - txr = addNewTxr(); - } // if there's no room in the current texture, we need a new one - - - if (txr.width - txr.usedWidth < eleScaledW) { - txr = addNewTxr(); - } - - var scalableFrom = function scalableFrom(otherCache) { - return otherCache && otherCache.scaledLabelShown === scaledLabelShown; - }; - - var deqing = reason && reason === getTxrReasons.dequeue; - var highQualityReq = reason && reason === getTxrReasons.highQuality; - var downscaleReq = reason && reason === getTxrReasons.downscale; - var higherCache; // the nearest cache with a higher level - - for (var l = lvl + 1; l <= maxLvl; l++) { - var c = lookup.get(ele, l); - - if (c) { - higherCache = c; - break; - } - } - - var oneUpCache = higherCache && higherCache.level === lvl + 1 ? higherCache : null; - - var downscale = function downscale() { - txr.context.drawImage(oneUpCache.texture.canvas, oneUpCache.x, 0, oneUpCache.width, oneUpCache.height, txr.usedWidth, 0, eleScaledW, eleScaledH); - }; // reset ele area in texture - - - txr.context.setTransform(1, 0, 0, 1, 0, 0); - txr.context.clearRect(txr.usedWidth, 0, eleScaledW, txrH); - - if (scalableFrom(oneUpCache)) { - // then we can relatively cheaply rescale the existing image w/o rerendering - downscale(); - } else if (scalableFrom(higherCache)) { - // then use the higher cache for now and queue the next level down - // to cheaply scale towards the smaller level - if (highQualityReq) { - for (var _l = higherCache.level; _l > lvl; _l--) { - oneUpCache = self.getElement(ele, bb, pxRatio, _l, getTxrReasons.downscale); - } - - downscale(); - } else { - self.queueElement(ele, higherCache.level - 1); - return higherCache; - } - } else { - var lowerCache; // the nearest cache with a lower level - - if (!deqing && !highQualityReq && !downscaleReq) { - for (var _l2 = lvl - 1; _l2 >= minLvl; _l2--) { - var _c = lookup.get(ele, _l2); - - if (_c) { - lowerCache = _c; - break; - } - } - } - - if (scalableFrom(lowerCache)) { - // then use the lower quality cache for now and queue the better one for later - self.queueElement(ele, lvl); - return lowerCache; - } - - txr.context.translate(txr.usedWidth, 0); - txr.context.scale(scale, scale); - this.drawElement(txr.context, ele, bb, scaledLabelShown, false); - txr.context.scale(1 / scale, 1 / scale); - txr.context.translate(-txr.usedWidth, 0); - } - - eleCache = { - x: txr.usedWidth, - texture: txr, - level: lvl, - scale: scale, - width: eleScaledW, - height: eleScaledH, - scaledLabelShown: scaledLabelShown - }; - txr.usedWidth += Math.ceil(eleScaledW + eleTxrSpacing); - txr.eleCaches.push(eleCache); - lookup.set(ele, lvl, eleCache); - self.checkTextureFullness(txr); - return eleCache; -}; - -ETCp.invalidateElements = function (eles) { - for (var i = 0; i < eles.length; i++) { - this.invalidateElement(eles[i]); - } -}; - -ETCp.invalidateElement = function (ele) { - var self = this; - var lookup = self.lookup; - var caches = []; - var invalid = lookup.isInvalid(ele); - - if (!invalid) { - return; // override the invalidation request if the element key has not changed - } - - for (var lvl = minLvl; lvl <= maxLvl; lvl++) { - var cache = lookup.getForCachedKey(ele, lvl); - - if (cache) { - caches.push(cache); - } - } - - var noOtherElesUseCache = lookup.invalidate(ele); - - if (noOtherElesUseCache) { - for (var i = 0; i < caches.length; i++) { - var _cache = caches[i]; - var txr = _cache.texture; // remove space from the texture it belongs to - - txr.invalidatedWidth += _cache.width; // mark the cache as invalidated - - _cache.invalidated = true; // retire the texture if its utility is low - - self.checkTextureUtility(txr); - } - } // remove from queue since the old req was for the old state - - - self.removeFromQueue(ele); -}; - -ETCp.checkTextureUtility = function (txr) { - // invalidate all entries in the cache if the cache size is small - if (txr.invalidatedWidth >= minUtility * txr.width) { - this.retireTexture(txr); - } -}; - -ETCp.checkTextureFullness = function (txr) { - // if texture has been mostly filled and passed over several times, remove - // it from the queue so we don't need to waste time looking at it to put new things - var self = this; - var txrQ = self.getTextureQueue(txr.height); - - if (txr.usedWidth / txr.width > maxFullness && txr.fullnessChecks >= maxFullnessChecks) { - removeFromArray(txrQ, txr); - } else { - txr.fullnessChecks++; - } -}; - -ETCp.retireTexture = function (txr) { - var self = this; - var txrH = txr.height; - var txrQ = self.getTextureQueue(txrH); - var lookup = this.lookup; // retire the texture from the active / searchable queue: - - removeFromArray(txrQ, txr); - txr.retired = true; // remove the refs from the eles to the caches: - - var eleCaches = txr.eleCaches; - - for (var i = 0; i < eleCaches.length; i++) { - var eleCache = eleCaches[i]; - lookup.deleteCache(eleCache.key, eleCache.level); - } - - clearArray(eleCaches); // add the texture to a retired queue so it can be recycled in future: - - var rtxtrQ = self.getRetiredTextureQueue(txrH); - rtxtrQ.push(txr); -}; - -ETCp.addTexture = function (txrH, minW) { - var self = this; - var txrQ = self.getTextureQueue(txrH); - var txr = {}; - txrQ.push(txr); - txr.eleCaches = []; - txr.height = txrH; - txr.width = Math.max(defTxrWidth, minW); - txr.usedWidth = 0; - txr.invalidatedWidth = 0; - txr.fullnessChecks = 0; - txr.canvas = self.renderer.makeOffscreenCanvas(txr.width, txr.height); - txr.context = txr.canvas.getContext('2d'); - return txr; -}; - -ETCp.recycleTexture = function (txrH, minW) { - var self = this; - var txrQ = self.getTextureQueue(txrH); - var rtxtrQ = self.getRetiredTextureQueue(txrH); - - for (var i = 0; i < rtxtrQ.length; i++) { - var txr = rtxtrQ[i]; - - if (txr.width >= minW) { - txr.retired = false; - txr.usedWidth = 0; - txr.invalidatedWidth = 0; - txr.fullnessChecks = 0; - clearArray(txr.eleCaches); - txr.context.setTransform(1, 0, 0, 1, 0, 0); - txr.context.clearRect(0, 0, txr.width, txr.height); - removeFromArray(rtxtrQ, txr); - txrQ.push(txr); - return txr; - } - } -}; - -ETCp.queueElement = function (ele, lvl) { - var self = this; - var q = self.getElementQueue(); - var k2q = self.getElementKeyToQueue(); - var key = this.getKey(ele); - var existingReq = k2q[key]; - - if (existingReq) { - // use the max lvl b/c in between lvls are cheap to make - existingReq.level = Math.max(existingReq.level, lvl); - existingReq.eles.merge(ele); - existingReq.reqs++; - q.updateItem(existingReq); - } else { - var req = { - eles: ele.spawn().merge(ele), - level: lvl, - reqs: 1, - key: key - }; - q.push(req); - k2q[key] = req; - } -}; - -ETCp.dequeue = function (pxRatio -/*, extent*/ -) { - var self = this; - var q = self.getElementQueue(); - var k2q = self.getElementKeyToQueue(); - var dequeued = []; - var lookup = self.lookup; - - for (var i = 0; i < maxDeqSize; i++) { - if (q.size() > 0) { - var req = q.pop(); - var key = req.key; - var ele = req.eles[0]; // all eles have the same key - - var cacheExists = lookup.hasCache(ele, req.level); // clear out the key to req lookup - - k2q[key] = null; // dequeueing isn't necessary with an existing cache - - if (cacheExists) { - continue; - } - - dequeued.push(req); - var bb = self.getBoundingBox(ele); - self.getElement(ele, bb, pxRatio, req.level, getTxrReasons.dequeue); - } else { - break; - } - } - - return dequeued; -}; - -ETCp.removeFromQueue = function (ele) { - var self = this; - var q = self.getElementQueue(); - var k2q = self.getElementKeyToQueue(); - var key = this.getKey(ele); - var req = k2q[key]; - - if (req != null) { - if (req.eles.length === 1) { - // remove if last ele in the req - // bring to front of queue - req.reqs = MAX_INT; - q.updateItem(req); - q.pop(); // remove from queue - - k2q[key] = null; // remove from lookup map - } else { - // otherwise just remove ele from req - req.eles.unmerge(ele); - } - } -}; - -ETCp.onDequeue = function (fn) { - this.onDequeues.push(fn); -}; - -ETCp.offDequeue = function (fn) { - removeFromArray(this.onDequeues, fn); -}; - -ETCp.setupDequeueing = defs.setupDequeueing({ - deqRedrawThreshold: deqRedrawThreshold, - deqCost: deqCost, - deqAvgCost: deqAvgCost, - deqNoDrawCost: deqNoDrawCost, - deqFastCost: deqFastCost, - deq: function deq(self, pxRatio, extent) { - return self.dequeue(pxRatio, extent); - }, - onDeqd: function onDeqd(self, deqd) { - for (var i = 0; i < self.onDequeues.length; i++) { - var fn = self.onDequeues[i]; - fn(deqd); - } - }, - shouldRedraw: function shouldRedraw(self, deqd, pxRatio, extent) { - for (var i = 0; i < deqd.length; i++) { - var eles = deqd[i].eles; - - for (var j = 0; j < eles.length; j++) { - var bb = eles[j].boundingBox(); - - if (boundingBoxesIntersect(bb, extent)) { - return true; - } - } - } - - return false; - }, - priority: function priority(self) { - return self.renderer.beforeRenderPriorities.eleTxrDeq; - } -}); - -var defNumLayers = 1; // default number of layers to use - -var minLvl$1 = -4; // when scaling smaller than that we don't need to re-render - -var maxLvl$1 = 2; // when larger than this scale just render directly (caching is not helpful) - -var maxZoom$1 = 3.99; // beyond this zoom level, layered textures are not used - -var deqRedrawThreshold$1 = 50; // time to batch redraws together from dequeueing to allow more dequeueing calcs to happen in the meanwhile - -var refineEleDebounceTime = 50; // time to debounce sharper ele texture updates - -var deqCost$1 = 0.15; // % of add'l rendering cost allowed for dequeuing ele caches each frame - -var deqAvgCost$1 = 0.1; // % of add'l rendering cost compared to average overall redraw time - -var deqNoDrawCost$1 = 0.9; // % of avg frame time that can be used for dequeueing when not drawing - -var deqFastCost$1 = 0.9; // % of frame time to be used when >60fps - -var maxDeqSize$1 = 1; // number of eles to dequeue and render at higher texture in each batch - -var invalidThreshold = 250; // time threshold for disabling b/c of invalidations - -var maxLayerArea = 4000 * 4000; // layers can't be bigger than this - -var useHighQualityEleTxrReqs = true; // whether to use high quality ele txr requests (generally faster and cheaper in the longterm) -// var log = function(){ console.log.apply( console, arguments ); }; - -var LayeredTextureCache = function LayeredTextureCache(renderer) { - var self = this; - var r = self.renderer = renderer; - var cy = r.cy; - self.layersByLevel = {}; // e.g. 2 => [ layer1, layer2, ..., layerN ] - - self.firstGet = true; - self.lastInvalidationTime = performanceNow() - 2 * invalidThreshold; - self.skipping = false; - self.eleTxrDeqs = cy.collection(); - self.scheduleElementRefinement = util(function () { - self.refineElementTextures(self.eleTxrDeqs); - self.eleTxrDeqs.unmerge(self.eleTxrDeqs); - }, refineEleDebounceTime); - r.beforeRender(function (willDraw, now) { - if (now - self.lastInvalidationTime <= invalidThreshold) { - self.skipping = true; - } else { - self.skipping = false; - } - }, r.beforeRenderPriorities.lyrTxrSkip); - - var qSort = function qSort(a, b) { - return b.reqs - a.reqs; - }; - - self.layersQueue = new Heap(qSort); - self.setupDequeueing(); -}; - -var LTCp = LayeredTextureCache.prototype; -var layerIdPool = 0; -var MAX_INT$1 = Math.pow(2, 53) - 1; - -LTCp.makeLayer = function (bb, lvl) { - var scale = Math.pow(2, lvl); - var w = Math.ceil(bb.w * scale); - var h = Math.ceil(bb.h * scale); - var canvas = this.renderer.makeOffscreenCanvas(w, h); - var layer = { - id: layerIdPool = ++layerIdPool % MAX_INT$1, - bb: bb, - level: lvl, - width: w, - height: h, - canvas: canvas, - context: canvas.getContext('2d'), - eles: [], - elesQueue: [], - reqs: 0 - }; // log('make layer %s with w %s and h %s and lvl %s', layer.id, layer.width, layer.height, layer.level); - - var cxt = layer.context; - var dx = -layer.bb.x1; - var dy = -layer.bb.y1; // do the transform on creation to save cycles (it's the same for all eles) - - cxt.scale(scale, scale); - cxt.translate(dx, dy); - return layer; -}; - -LTCp.getLayers = function (eles, pxRatio, lvl) { - var self = this; - var r = self.renderer; - var cy = r.cy; - var zoom = cy.zoom(); - var firstGet = self.firstGet; - self.firstGet = false; // log('--\nget layers with %s eles', eles.length); - //log eles.map(function(ele){ return ele.id() }) ); - - if (lvl == null) { - lvl = Math.ceil(log2(zoom * pxRatio)); - - if (lvl < minLvl$1) { - lvl = minLvl$1; - } else if (zoom >= maxZoom$1 || lvl > maxLvl$1) { - return null; - } - } - - self.validateLayersElesOrdering(lvl, eles); - var layersByLvl = self.layersByLevel; - var scale = Math.pow(2, lvl); - var layers = layersByLvl[lvl] = layersByLvl[lvl] || []; - var bb; - var lvlComplete = self.levelIsComplete(lvl, eles); - var tmpLayers; - - var checkTempLevels = function checkTempLevels() { - var canUseAsTmpLvl = function canUseAsTmpLvl(l) { - self.validateLayersElesOrdering(l, eles); - - if (self.levelIsComplete(l, eles)) { - tmpLayers = layersByLvl[l]; - return true; - } - }; - - var checkLvls = function checkLvls(dir) { - if (tmpLayers) { - return; - } - - for (var l = lvl + dir; minLvl$1 <= l && l <= maxLvl$1; l += dir) { - if (canUseAsTmpLvl(l)) { - break; - } - } - }; - - checkLvls(+1); - checkLvls(-1); // remove the invalid layers; they will be replaced as needed later in this function - - for (var i = layers.length - 1; i >= 0; i--) { - var layer = layers[i]; - - if (layer.invalid) { - removeFromArray(layers, layer); - } - } - }; - - if (!lvlComplete) { - // if the current level is incomplete, then use the closest, best quality layerset temporarily - // and later queue the current layerset so we can get the proper quality level soon - checkTempLevels(); - } else { - // log('level complete, using existing layers\n--'); - return layers; - } - - var getBb = function getBb() { - if (!bb) { - bb = makeBoundingBox(); - - for (var i = 0; i < eles.length; i++) { - updateBoundingBox(bb, eles[i].boundingBox()); - } - } - - return bb; - }; - - var makeLayer = function makeLayer(opts) { - opts = opts || {}; - var after = opts.after; - getBb(); - var area = bb.w * scale * (bb.h * scale); - - if (area > maxLayerArea) { - return null; - } - - var layer = self.makeLayer(bb, lvl); - - if (after != null) { - var index = layers.indexOf(after) + 1; - layers.splice(index, 0, layer); - } else if (opts.insert === undefined || opts.insert) { - // no after specified => first layer made so put at start - layers.unshift(layer); - } // if( tmpLayers ){ - //self.queueLayer( layer ); - // } - - - return layer; - }; - - if (self.skipping && !firstGet) { - // log('skip layers'); - return null; - } // log('do layers'); - - - var layer = null; - var maxElesPerLayer = eles.length / defNumLayers; - var allowLazyQueueing = !firstGet; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - var rs = ele._private.rscratch; - var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; // log('look at ele', ele.id()); - - var existingLayer = caches[lvl]; - - if (existingLayer) { - // reuse layer for later eles - // log('reuse layer for', ele.id()); - layer = existingLayer; - continue; - } - - if (!layer || layer.eles.length >= maxElesPerLayer || !boundingBoxInBoundingBox(layer.bb, ele.boundingBox())) { - // log('make new layer for ele %s', ele.id()); - layer = makeLayer({ - insert: true, - after: layer - }); // if now layer can be built then we can't use layers at this level - - if (!layer) { - return null; - } // log('new layer with id %s', layer.id); - - } - - if (tmpLayers || allowLazyQueueing) { - // log('queue ele %s in layer %s', ele.id(), layer.id); - self.queueLayer(layer, ele); - } else { - // log('draw ele %s in layer %s', ele.id(), layer.id); - self.drawEleInLayer(layer, ele, lvl, pxRatio); - } - - layer.eles.push(ele); - caches[lvl] = layer; - } // log('--'); - - - if (tmpLayers) { - // then we only queued the current layerset and can't draw it yet - return tmpLayers; - } - - if (allowLazyQueueing) { - // log('lazy queue level', lvl); - return null; - } - - return layers; -}; // a layer may want to use an ele cache of a higher level to avoid blurriness -// so the layer level might not equal the ele level - - -LTCp.getEleLevelForLayerLevel = function (lvl, pxRatio) { - return lvl; -}; - -LTCp.drawEleInLayer = function (layer, ele, lvl, pxRatio) { - var self = this; - var r = this.renderer; - var context = layer.context; - var bb = ele.boundingBox(); - - if (bb.w === 0 || bb.h === 0 || !ele.visible()) { - return; - } - - lvl = self.getEleLevelForLayerLevel(lvl, pxRatio); - - { - r.setImgSmoothing(context, false); - } - - { - r.drawCachedElement(context, ele, null, null, lvl, useHighQualityEleTxrReqs); - } - - { - r.setImgSmoothing(context, true); - } -}; - -LTCp.levelIsComplete = function (lvl, eles) { - var self = this; - var layers = self.layersByLevel[lvl]; - - if (!layers || layers.length === 0) { - return false; - } - - var numElesInLayers = 0; - - for (var i = 0; i < layers.length; i++) { - var layer = layers[i]; // if there are any eles needed to be drawn yet, the level is not complete - - if (layer.reqs > 0) { - return false; - } // if the layer is invalid, the level is not complete - - - if (layer.invalid) { - return false; - } - - numElesInLayers += layer.eles.length; - } // we should have exactly the number of eles passed in to be complete - - - if (numElesInLayers !== eles.length) { - return false; - } - - return true; -}; - -LTCp.validateLayersElesOrdering = function (lvl, eles) { - var layers = this.layersByLevel[lvl]; - - if (!layers) { - return; - } // if in a layer the eles are not in the same order, then the layer is invalid - // (i.e. there is an ele in between the eles in the layer) - - - for (var i = 0; i < layers.length; i++) { - var layer = layers[i]; - var offset = -1; // find the offset - - for (var j = 0; j < eles.length; j++) { - if (layer.eles[0] === eles[j]) { - offset = j; - break; - } - } - - if (offset < 0) { - // then the layer has nonexistant elements and is invalid - this.invalidateLayer(layer); - continue; - } // the eles in the layer must be in the same continuous order, else the layer is invalid - - - var o = offset; - - for (var j = 0; j < layer.eles.length; j++) { - if (layer.eles[j] !== eles[o + j]) { - // log('invalidate based on ordering', layer.id); - this.invalidateLayer(layer); - break; - } - } - } -}; - -LTCp.updateElementsInLayers = function (eles, update) { - var self = this; - var isEles = element(eles[0]); // collect udpated elements (cascaded from the layers) and update each - // layer itself along the way - - for (var i = 0; i < eles.length; i++) { - var req = isEles ? null : eles[i]; - var ele = isEles ? eles[i] : eles[i].ele; - var rs = ele._private.rscratch; - var caches = rs.imgLayerCaches = rs.imgLayerCaches || {}; - - for (var l = minLvl$1; l <= maxLvl$1; l++) { - var layer = caches[l]; - - if (!layer) { - continue; - } // if update is a request from the ele cache, then it affects only - // the matching level - - - if (req && self.getEleLevelForLayerLevel(layer.level) !== req.level) { - continue; - } - - update(layer, ele, req); - } - } -}; - -LTCp.haveLayers = function () { - var self = this; - var haveLayers = false; - - for (var l = minLvl$1; l <= maxLvl$1; l++) { - var layers = self.layersByLevel[l]; - - if (layers && layers.length > 0) { - haveLayers = true; - break; - } - } - - return haveLayers; -}; - -LTCp.invalidateElements = function (eles) { - var self = this; - - if (eles.length === 0) { - return; - } - - self.lastInvalidationTime = performanceNow(); // log('update invalidate layer time from eles'); - - if (eles.length === 0 || !self.haveLayers()) { - return; - } - - self.updateElementsInLayers(eles, function invalAssocLayers(layer, ele, req) { - self.invalidateLayer(layer); - }); -}; - -LTCp.invalidateLayer = function (layer) { - // log('update invalidate layer time'); - this.lastInvalidationTime = performanceNow(); - - if (layer.invalid) { - return; - } // save cycles - - - var lvl = layer.level; - var eles = layer.eles; - var layers = this.layersByLevel[lvl]; // log('invalidate layer', layer.id ); - - removeFromArray(layers, layer); // layer.eles = []; - - layer.elesQueue = []; - layer.invalid = true; - - if (layer.replacement) { - layer.replacement.invalid = true; - } - - for (var i = 0; i < eles.length; i++) { - var caches = eles[i]._private.rscratch.imgLayerCaches; - - if (caches) { - caches[lvl] = null; - } - } -}; - -LTCp.refineElementTextures = function (eles) { - var self = this; // log('refine', eles.length); - - self.updateElementsInLayers(eles, function refineEachEle(layer, ele, req) { - var rLyr = layer.replacement; - - if (!rLyr) { - rLyr = layer.replacement = self.makeLayer(layer.bb, layer.level); - rLyr.replaces = layer; - rLyr.eles = layer.eles; // log('make replacement layer %s for %s with level %s', rLyr.id, layer.id, rLyr.level); - } - - if (!rLyr.reqs) { - for (var i = 0; i < rLyr.eles.length; i++) { - self.queueLayer(rLyr, rLyr.eles[i]); - } // log('queue replacement layer refinement', rLyr.id); - - } - }); -}; - -LTCp.enqueueElementRefinement = function (ele) { - - this.eleTxrDeqs.merge(ele); - this.scheduleElementRefinement(); -}; - -LTCp.queueLayer = function (layer, ele) { - var self = this; - var q = self.layersQueue; - var elesQ = layer.elesQueue; - var hasId = elesQ.hasId = elesQ.hasId || {}; // if a layer is going to be replaced, queuing is a waste of time - - if (layer.replacement) { - return; - } - - if (ele) { - if (hasId[ele.id()]) { - return; - } - - elesQ.push(ele); - hasId[ele.id()] = true; - } - - if (layer.reqs) { - layer.reqs++; - q.updateItem(layer); - } else { - layer.reqs = 1; - q.push(layer); - } -}; - -LTCp.dequeue = function (pxRatio) { - var self = this; - var q = self.layersQueue; - var deqd = []; - var eleDeqs = 0; - - while (eleDeqs < maxDeqSize$1) { - if (q.size() === 0) { - break; - } - - var layer = q.peek(); // if a layer has been or will be replaced, then don't waste time with it - - if (layer.replacement) { - // log('layer %s in queue skipped b/c it already has a replacement', layer.id); - q.pop(); - continue; - } // if this is a replacement layer that has been superceded, then forget it - - - if (layer.replaces && layer !== layer.replaces.replacement) { - // log('layer is no longer the most uptodate replacement; dequeued', layer.id) - q.pop(); - continue; - } - - if (layer.invalid) { - // log('replacement layer %s is invalid; dequeued', layer.id); - q.pop(); - continue; - } - - var ele = layer.elesQueue.shift(); - - if (ele) { - // log('dequeue layer %s', layer.id); - self.drawEleInLayer(layer, ele, layer.level, pxRatio); - eleDeqs++; - } - - if (deqd.length === 0) { - // we need only one entry in deqd to queue redrawing etc - deqd.push(true); - } // if the layer has all its eles done, then remove from the queue - - - if (layer.elesQueue.length === 0) { - q.pop(); - layer.reqs = 0; // log('dequeue of layer %s complete', layer.id); - // when a replacement layer is dequeued, it replaces the old layer in the level - - if (layer.replaces) { - self.applyLayerReplacement(layer); - } - - self.requestRedraw(); - } - } - - return deqd; -}; - -LTCp.applyLayerReplacement = function (layer) { - var self = this; - var layersInLevel = self.layersByLevel[layer.level]; - var replaced = layer.replaces; - var index = layersInLevel.indexOf(replaced); // if the replaced layer is not in the active list for the level, then replacing - // refs would be a mistake (i.e. overwriting the true active layer) - - if (index < 0 || replaced.invalid) { - // log('replacement layer would have no effect', layer.id); - return; - } - - layersInLevel[index] = layer; // replace level ref - // replace refs in eles - - for (var i = 0; i < layer.eles.length; i++) { - var _p = layer.eles[i]._private; - var cache = _p.imgLayerCaches = _p.imgLayerCaches || {}; - - if (cache) { - cache[layer.level] = layer; - } - } // log('apply replacement layer %s over %s', layer.id, replaced.id); - - - self.requestRedraw(); -}; - -LTCp.requestRedraw = util(function () { - var r = this.renderer; - r.redrawHint('eles', true); - r.redrawHint('drag', true); - r.redraw(); -}, 100); -LTCp.setupDequeueing = defs.setupDequeueing({ - deqRedrawThreshold: deqRedrawThreshold$1, - deqCost: deqCost$1, - deqAvgCost: deqAvgCost$1, - deqNoDrawCost: deqNoDrawCost$1, - deqFastCost: deqFastCost$1, - deq: function deq(self, pxRatio) { - return self.dequeue(pxRatio); - }, - onDeqd: noop, - shouldRedraw: trueify, - priority: function priority(self) { - return self.renderer.beforeRenderPriorities.lyrTxrDeq; - } -}); - -var CRp = {}; -var impl; - -function polygon(context, points) { - for (var i = 0; i < points.length; i++) { - var pt = points[i]; - context.lineTo(pt.x, pt.y); - } -} - -function triangleBackcurve(context, points, controlPoint) { - var firstPt; - - for (var i = 0; i < points.length; i++) { - var pt = points[i]; - - if (i === 0) { - firstPt = pt; - } - - context.lineTo(pt.x, pt.y); - } - - context.quadraticCurveTo(controlPoint.x, controlPoint.y, firstPt.x, firstPt.y); -} - -function triangleTee(context, trianglePoints, teePoints) { - if (context.beginPath) { - context.beginPath(); - } - - var triPts = trianglePoints; - - for (var i = 0; i < triPts.length; i++) { - var pt = triPts[i]; - context.lineTo(pt.x, pt.y); - } - - var teePts = teePoints; - var firstTeePt = teePoints[0]; - context.moveTo(firstTeePt.x, firstTeePt.y); - - for (var i = 1; i < teePts.length; i++) { - var pt = teePts[i]; - context.lineTo(pt.x, pt.y); - } - - if (context.closePath) { - context.closePath(); - } -} - -function circleTriangle(context, trianglePoints, rx, ry, r) { - if (context.beginPath) { - context.beginPath(); - } - - context.arc(rx, ry, r, 0, Math.PI * 2, false); - var triPts = trianglePoints; - var firstTrPt = triPts[0]; - context.moveTo(firstTrPt.x, firstTrPt.y); - - for (var i = 0; i < triPts.length; i++) { - var pt = triPts[i]; - context.lineTo(pt.x, pt.y); - } - - if (context.closePath) { - context.closePath(); - } -} - -function circle(context, rx, ry, r) { - context.arc(rx, ry, r, 0, Math.PI * 2, false); -} - -CRp.arrowShapeImpl = function (name) { - return (impl || (impl = { - 'polygon': polygon, - 'triangle-backcurve': triangleBackcurve, - 'triangle-tee': triangleTee, - 'circle-triangle': circleTriangle, - 'triangle-cross': triangleTee, - 'circle': circle - }))[name]; -}; - -var CRp$1 = {}; - -CRp$1.drawElement = function (context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity) { - var r = this; - - if (ele.isNode()) { - r.drawNode(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); - } else { - r.drawEdge(context, ele, shiftToOriginWithBb, showLabel, showOverlay, showOpacity); - } -}; - -CRp$1.drawElementOverlay = function (context, ele) { - var r = this; - - if (ele.isNode()) { - r.drawNodeOverlay(context, ele); - } else { - r.drawEdgeOverlay(context, ele); - } -}; - -CRp$1.drawCachedElementPortion = function (context, ele, eleTxrCache, pxRatio, lvl, reason, getRotation, getOpacity) { - var r = this; - var bb = eleTxrCache.getBoundingBox(ele); - - if (bb.w === 0 || bb.h === 0) { - return; - } // ignore zero size case - - - var eleCache = eleTxrCache.getElement(ele, bb, pxRatio, lvl, reason); - - if (eleCache != null) { - var opacity = getOpacity(r, ele); - - if (opacity === 0) { - return; - } - - var theta = getRotation(r, ele); - var x1 = bb.x1, - y1 = bb.y1, - w = bb.w, - h = bb.h; - var x, y, sx, sy, smooth; - - if (theta !== 0) { - var rotPt = eleTxrCache.getRotationPoint(ele); - sx = rotPt.x; - sy = rotPt.y; - context.translate(sx, sy); - context.rotate(theta); - smooth = r.getImgSmoothing(context); - - if (!smooth) { - r.setImgSmoothing(context, true); - } - - var off = eleTxrCache.getRotationOffset(ele); - x = off.x; - y = off.y; - } else { - x = x1; - y = y1; - } - - var oldGlobalAlpha; - - if (opacity !== 1) { - oldGlobalAlpha = context.globalAlpha; - context.globalAlpha = oldGlobalAlpha * opacity; - } - - context.drawImage(eleCache.texture.canvas, eleCache.x, 0, eleCache.width, eleCache.height, x, y, w, h); - - if (opacity !== 1) { - context.globalAlpha = oldGlobalAlpha; - } - - if (theta !== 0) { - context.rotate(-theta); - context.translate(-sx, -sy); - - if (!smooth) { - r.setImgSmoothing(context, false); - } - } - } else { - eleTxrCache.drawElement(context, ele); // direct draw fallback - } -}; - -var getZeroRotation = function getZeroRotation() { - return 0; -}; - -var getLabelRotation = function getLabelRotation(r, ele) { - return r.getTextAngle(ele, null); -}; - -var getSourceLabelRotation = function getSourceLabelRotation(r, ele) { - return r.getTextAngle(ele, 'source'); -}; - -var getTargetLabelRotation = function getTargetLabelRotation(r, ele) { - return r.getTextAngle(ele, 'target'); -}; - -var getOpacity = function getOpacity(r, ele) { - return ele.effectiveOpacity(); -}; - -var getTextOpacity = function getTextOpacity(e, ele) { - return ele.pstyle('text-opacity').pfValue * ele.effectiveOpacity(); -}; - -CRp$1.drawCachedElement = function (context, ele, pxRatio, extent, lvl, requestHighQuality) { - var r = this; - var _r$data = r.data, - eleTxrCache = _r$data.eleTxrCache, - lblTxrCache = _r$data.lblTxrCache, - slbTxrCache = _r$data.slbTxrCache, - tlbTxrCache = _r$data.tlbTxrCache; - var bb = ele.boundingBox(); - var reason = requestHighQuality === true ? eleTxrCache.reasons.highQuality : null; - - if (bb.w === 0 || bb.h === 0 || !ele.visible()) { - return; - } - - if (!extent || boundingBoxesIntersect(bb, extent)) { - var isEdge = ele.isEdge(); - - var badLine = ele.element()._private.rscratch.badLine; - - r.drawCachedElementPortion(context, ele, eleTxrCache, pxRatio, lvl, reason, getZeroRotation, getOpacity); - - if (!isEdge || !badLine) { - r.drawCachedElementPortion(context, ele, lblTxrCache, pxRatio, lvl, reason, getLabelRotation, getTextOpacity); - } - - if (isEdge && !badLine) { - r.drawCachedElementPortion(context, ele, slbTxrCache, pxRatio, lvl, reason, getSourceLabelRotation, getTextOpacity); - r.drawCachedElementPortion(context, ele, tlbTxrCache, pxRatio, lvl, reason, getTargetLabelRotation, getTextOpacity); - } - - r.drawElementOverlay(context, ele); - } -}; - -CRp$1.drawElements = function (context, eles) { - var r = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - r.drawElement(context, ele); - } -}; - -CRp$1.drawCachedElements = function (context, eles, pxRatio, extent) { - var r = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - r.drawCachedElement(context, ele, pxRatio, extent); - } -}; - -CRp$1.drawCachedNodes = function (context, eles, pxRatio, extent) { - var r = this; - - for (var i = 0; i < eles.length; i++) { - var ele = eles[i]; - - if (!ele.isNode()) { - continue; - } - - r.drawCachedElement(context, ele, pxRatio, extent); - } -}; - -CRp$1.drawLayeredElements = function (context, eles, pxRatio, extent) { - var r = this; - var layers = r.data.lyrTxrCache.getLayers(eles, pxRatio); - - if (layers) { - for (var i = 0; i < layers.length; i++) { - var layer = layers[i]; - var bb = layer.bb; - - if (bb.w === 0 || bb.h === 0) { - continue; - } - - context.drawImage(layer.canvas, bb.x1, bb.y1, bb.w, bb.h); - } - } else { - // fall back on plain caching if no layers - r.drawCachedElements(context, eles, pxRatio, extent); - } -}; - -/* global Path2D */ -var CRp$2 = {}; - -CRp$2.drawEdge = function (context, edge, shiftToOriginWithBb) { - var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - var r = this; - var rs = edge._private.rscratch; - - if (shouldDrawOpacity && !edge.visible()) { - return; - } // if bezier ctrl pts can not be calculated, then die - - - if (rs.badLine || rs.allpts == null || isNaN(rs.allpts[0])) { - // isNaN in case edge is impossible and browser bugs (e.g. safari) - return; - } - - var bb; - - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } - - var opacity = shouldDrawOpacity ? edge.pstyle('opacity').value : 1; - var lineStyle = edge.pstyle('line-style').value; - var edgeWidth = edge.pstyle('width').pfValue; - var lineCap = edge.pstyle('line-cap').value; - - var drawLine = function drawLine() { - var strokeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : opacity; - context.lineWidth = edgeWidth; - context.lineCap = lineCap; - r.eleStrokeStyle(context, edge, strokeOpacity); - r.drawEdgePath(edge, context, rs.allpts, lineStyle); - context.lineCap = 'butt'; // reset for other drawing functions - }; - - var drawOverlay = function drawOverlay() { - if (!shouldDrawOverlay) { - return; - } - - r.drawEdgeOverlay(context, edge); - }; - - var drawArrows = function drawArrows() { - var arrowOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : opacity; - r.drawArrowheads(context, edge, arrowOpacity); - }; - - var drawText = function drawText() { - r.drawElementText(context, edge, null, drawLabel); - }; - - context.lineJoin = 'round'; - var ghost = edge.pstyle('ghost').value === 'yes'; - - if (ghost) { - var gx = edge.pstyle('ghost-offset-x').pfValue; - var gy = edge.pstyle('ghost-offset-y').pfValue; - var ghostOpacity = edge.pstyle('ghost-opacity').value; - var effectiveGhostOpacity = opacity * ghostOpacity; - context.translate(gx, gy); - drawLine(effectiveGhostOpacity); - drawArrows(effectiveGhostOpacity); - context.translate(-gx, -gy); - } - - drawLine(); - drawArrows(); - drawOverlay(); - drawText(); - - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } -}; - -CRp$2.drawEdgeOverlay = function (context, edge) { - if (!edge.visible()) { - return; - } - - var overlayOpacity = edge.pstyle('overlay-opacity').value; - - if (overlayOpacity === 0) { - return; - } - - var r = this; - var usePaths = r.usePaths(); - var rs = edge._private.rscratch; - var overlayPadding = edge.pstyle('overlay-padding').pfValue; - var overlayWidth = 2 * overlayPadding; - var overlayColor = edge.pstyle('overlay-color').value; - context.lineWidth = overlayWidth; - - if (rs.edgeType === 'self' && !usePaths) { - context.lineCap = 'butt'; - } else { - context.lineCap = 'round'; - } - - r.colorStrokeStyle(context, overlayColor[0], overlayColor[1], overlayColor[2], overlayOpacity); - r.drawEdgePath(edge, context, rs.allpts, 'solid'); -}; - -CRp$2.drawEdgePath = function (edge, context, pts, type) { - var rs = edge._private.rscratch; - var canvasCxt = context; - var path; - var pathCacheHit = false; - var usePaths = this.usePaths(); - var lineDashPattern = edge.pstyle('line-dash-pattern').pfValue; - var lineDashOffset = edge.pstyle('line-dash-offset').pfValue; - - if (usePaths) { - var pathCacheKey = pts.join('$'); - var keyMatches = rs.pathCacheKey && rs.pathCacheKey === pathCacheKey; - - if (keyMatches) { - path = context = rs.pathCache; - pathCacheHit = true; - } else { - path = context = new Path2D(); - rs.pathCacheKey = pathCacheKey; - rs.pathCache = path; - } - } - - if (canvasCxt.setLineDash) { - // for very outofdate browsers - switch (type) { - case 'dotted': - canvasCxt.setLineDash([1, 1]); - break; - - case 'dashed': - canvasCxt.setLineDash(lineDashPattern); - canvasCxt.lineDashOffset = lineDashOffset; - break; - - case 'solid': - canvasCxt.setLineDash([]); - break; - } - } - - if (!pathCacheHit && !rs.badLine) { - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(pts[0], pts[1]); - - switch (rs.edgeType) { - case 'bezier': - case 'self': - case 'compound': - case 'multibezier': - for (var i = 2; i + 3 < pts.length; i += 4) { - context.quadraticCurveTo(pts[i], pts[i + 1], pts[i + 2], pts[i + 3]); - } - - break; - - case 'straight': - case 'segments': - case 'haystack': - for (var _i = 2; _i + 1 < pts.length; _i += 2) { - context.lineTo(pts[_i], pts[_i + 1]); - } - - break; - } - } - - context = canvasCxt; - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } // reset any line dashes - - - if (context.setLineDash) { - // for very outofdate browsers - context.setLineDash([]); - } -}; - -CRp$2.drawArrowheads = function (context, edge, opacity) { - var rs = edge._private.rscratch; - var isHaystack = rs.edgeType === 'haystack'; - - if (!isHaystack) { - this.drawArrowhead(context, edge, 'source', rs.arrowStartX, rs.arrowStartY, rs.srcArrowAngle, opacity); - } - - this.drawArrowhead(context, edge, 'mid-target', rs.midX, rs.midY, rs.midtgtArrowAngle, opacity); - this.drawArrowhead(context, edge, 'mid-source', rs.midX, rs.midY, rs.midsrcArrowAngle, opacity); - - if (!isHaystack) { - this.drawArrowhead(context, edge, 'target', rs.arrowEndX, rs.arrowEndY, rs.tgtArrowAngle, opacity); - } -}; - -CRp$2.drawArrowhead = function (context, edge, prefix, x, y, angle, opacity) { - if (isNaN(x) || x == null || isNaN(y) || y == null || isNaN(angle) || angle == null) { - return; - } - - var self = this; - var arrowShape = edge.pstyle(prefix + '-arrow-shape').value; - - if (arrowShape === 'none') { - return; - } - - var arrowClearFill = edge.pstyle(prefix + '-arrow-fill').value === 'hollow' ? 'both' : 'filled'; - var arrowFill = edge.pstyle(prefix + '-arrow-fill').value; - var edgeWidth = edge.pstyle('width').pfValue; - var edgeOpacity = edge.pstyle('opacity').value; - - if (opacity === undefined) { - opacity = edgeOpacity; - } - - var gco = context.globalCompositeOperation; - - if (opacity !== 1 || arrowFill === 'hollow') { - // then extra clear is needed - context.globalCompositeOperation = 'destination-out'; - self.colorFillStyle(context, 255, 255, 255, 1); - self.colorStrokeStyle(context, 255, 255, 255, 1); - self.drawArrowShape(edge, context, arrowClearFill, edgeWidth, arrowShape, x, y, angle); - context.globalCompositeOperation = gco; - } // otherwise, the opaque arrow clears it for free :) - - - var color = edge.pstyle(prefix + '-arrow-color').value; - self.colorFillStyle(context, color[0], color[1], color[2], opacity); - self.colorStrokeStyle(context, color[0], color[1], color[2], opacity); - self.drawArrowShape(edge, context, arrowFill, edgeWidth, arrowShape, x, y, angle); -}; - -CRp$2.drawArrowShape = function (edge, context, fill, edgeWidth, shape, x, y, angle) { - var r = this; - var usePaths = this.usePaths() && shape !== 'triangle-cross'; - var pathCacheHit = false; - var path; - var canvasContext = context; - var translation = { - x: x, - y: y - }; - var scale = edge.pstyle('arrow-scale').value; - var size = this.getArrowWidth(edgeWidth, scale); - var shapeImpl = r.arrowShapes[shape]; - - if (usePaths) { - var cache = r.arrowPathCache = r.arrowPathCache || []; - var key = hashString(shape); - var cachedPath = cache[key]; - - if (cachedPath != null) { - path = context = cachedPath; - pathCacheHit = true; - } else { - path = context = new Path2D(); - cache[key] = path; - } - } - - if (!pathCacheHit) { - if (context.beginPath) { - context.beginPath(); - } - - if (usePaths) { - // store in the path cache with values easily manipulated later - shapeImpl.draw(context, 1, 0, { - x: 0, - y: 0 - }, 1); - } else { - shapeImpl.draw(context, size, angle, translation, edgeWidth); - } - - if (context.closePath) { - context.closePath(); - } - } - - context = canvasContext; - - if (usePaths) { - // set transform to arrow position/orientation - context.translate(x, y); - context.rotate(angle); - context.scale(size, size); - } - - if (fill === 'filled' || fill === 'both') { - if (usePaths) { - context.fill(path); - } else { - context.fill(); - } - } - - if (fill === 'hollow' || fill === 'both') { - context.lineWidth = (shapeImpl.matchEdgeWidth ? edgeWidth : 1) / (usePaths ? size : 1); - context.lineJoin = 'miter'; - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } - } - - if (usePaths) { - // reset transform by applying inverse - context.scale(1 / size, 1 / size); - context.rotate(-angle); - context.translate(-x, -y); - } -}; - -var CRp$3 = {}; - -CRp$3.safeDrawImage = function (context, img, ix, iy, iw, ih, x, y, w, h) { - // detect problematic cases for old browsers with bad images (cheaper than try-catch) - if (iw <= 0 || ih <= 0 || w <= 0 || h <= 0) { - return; - } - - context.drawImage(img, ix, iy, iw, ih, x, y, w, h); -}; - -CRp$3.drawInscribedImage = function (context, img, node, index, nodeOpacity) { - var r = this; - var pos = node.position(); - var nodeX = pos.x; - var nodeY = pos.y; - var styleObj = node.cy().style(); - var getIndexedStyle = styleObj.getIndexedStyle.bind(styleObj); - var fit = getIndexedStyle(node, 'background-fit', 'value', index); - var repeat = getIndexedStyle(node, 'background-repeat', 'value', index); - var nodeW = node.width(); - var nodeH = node.height(); - var paddingX2 = node.padding() * 2; - var nodeTW = nodeW + (getIndexedStyle(node, 'background-width-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); - var nodeTH = nodeH + (getIndexedStyle(node, 'background-height-relative-to', 'value', index) === 'inner' ? 0 : paddingX2); - var rs = node._private.rscratch; - var clip = getIndexedStyle(node, 'background-clip', 'value', index); - var shouldClip = clip === 'node'; - var imgOpacity = getIndexedStyle(node, 'background-image-opacity', 'value', index) * nodeOpacity; - var imgW = img.width || img.cachedW; - var imgH = img.height || img.cachedH; // workaround for broken browsers like ie - - if (null == imgW || null == imgH) { - document.body.appendChild(img); // eslint-disable-line no-undef - - imgW = img.cachedW = img.width || img.offsetWidth; - imgH = img.cachedH = img.height || img.offsetHeight; - document.body.removeChild(img); // eslint-disable-line no-undef - } - - var w = imgW; - var h = imgH; - - if (getIndexedStyle(node, 'background-width', 'value', index) !== 'auto') { - if (getIndexedStyle(node, 'background-width', 'units', index) === '%') { - w = getIndexedStyle(node, 'background-width', 'pfValue', index) * nodeTW; - } else { - w = getIndexedStyle(node, 'background-width', 'pfValue', index); - } - } - - if (getIndexedStyle(node, 'background-height', 'value', index) !== 'auto') { - if (getIndexedStyle(node, 'background-height', 'units', index) === '%') { - h = getIndexedStyle(node, 'background-height', 'pfValue', index) * nodeTH; - } else { - h = getIndexedStyle(node, 'background-height', 'pfValue', index); - } - } - - if (w === 0 || h === 0) { - return; // no point in drawing empty image (and chrome is broken in this case) - } - - if (fit === 'contain') { - var scale = Math.min(nodeTW / w, nodeTH / h); - w *= scale; - h *= scale; - } else if (fit === 'cover') { - var scale = Math.max(nodeTW / w, nodeTH / h); - w *= scale; - h *= scale; - } - - var x = nodeX - nodeTW / 2; // left - - var posXUnits = getIndexedStyle(node, 'background-position-x', 'units', index); - var posXPfVal = getIndexedStyle(node, 'background-position-x', 'pfValue', index); - - if (posXUnits === '%') { - x += (nodeTW - w) * posXPfVal; - } else { - x += posXPfVal; - } - - var offXUnits = getIndexedStyle(node, 'background-offset-x', 'units', index); - var offXPfVal = getIndexedStyle(node, 'background-offset-x', 'pfValue', index); - - if (offXUnits === '%') { - x += (nodeTW - w) * offXPfVal; - } else { - x += offXPfVal; - } - - var y = nodeY - nodeTH / 2; // top - - var posYUnits = getIndexedStyle(node, 'background-position-y', 'units', index); - var posYPfVal = getIndexedStyle(node, 'background-position-y', 'pfValue', index); - - if (posYUnits === '%') { - y += (nodeTH - h) * posYPfVal; - } else { - y += posYPfVal; - } - - var offYUnits = getIndexedStyle(node, 'background-offset-y', 'units', index); - var offYPfVal = getIndexedStyle(node, 'background-offset-y', 'pfValue', index); - - if (offYUnits === '%') { - y += (nodeTH - h) * offYPfVal; - } else { - y += offYPfVal; - } - - if (rs.pathCache) { - x -= nodeX; - y -= nodeY; - nodeX = 0; - nodeY = 0; - } - - var gAlpha = context.globalAlpha; - context.globalAlpha = imgOpacity; - - if (repeat === 'no-repeat') { - if (shouldClip) { - context.save(); - - if (rs.pathCache) { - context.clip(rs.pathCache); - } else { - r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); - context.clip(); - } - } - - r.safeDrawImage(context, img, 0, 0, imgW, imgH, x, y, w, h); - - if (shouldClip) { - context.restore(); - } - } else { - var pattern = context.createPattern(img, repeat); - context.fillStyle = pattern; - r.nodeShapes[r.getNodeShape(node)].draw(context, nodeX, nodeY, nodeTW, nodeTH); - context.translate(x, y); - context.fill(); - context.translate(-x, -y); - } - - context.globalAlpha = gAlpha; -}; - -var CRp$4 = {}; - -CRp$4.eleTextBiggerThanMin = function (ele, scale) { - if (!scale) { - var zoom = ele.cy().zoom(); - var pxRatio = this.getPixelRatio(); - var lvl = Math.ceil(log2(zoom * pxRatio)); // the effective texture level - - scale = Math.pow(2, lvl); - } - - var computedSize = ele.pstyle('font-size').pfValue * scale; - var minSize = ele.pstyle('min-zoomed-font-size').pfValue; - - if (computedSize < minSize) { - return false; - } - - return true; -}; - -CRp$4.drawElementText = function (context, ele, shiftToOriginWithBb, force, prefix) { - var useEleOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - var r = this; - - if (force == null) { - if (useEleOpacity && !r.eleTextBiggerThanMin(ele)) { - return; - } - } else if (force === false) { - return; - } - - if (ele.isNode()) { - var label = ele.pstyle('label'); - - if (!label || !label.value) { - return; - } - - var justification = r.getLabelJustification(ele); - context.textAlign = justification; - context.textBaseline = 'bottom'; - } else { - var badLine = ele.element()._private.rscratch.badLine; - - var _label = ele.pstyle('label'); - - var srcLabel = ele.pstyle('source-label'); - var tgtLabel = ele.pstyle('target-label'); - - if (badLine || (!_label || !_label.value) && (!srcLabel || !srcLabel.value) && (!tgtLabel || !tgtLabel.value)) { - return; - } - - context.textAlign = 'center'; - context.textBaseline = 'bottom'; - } - - var applyRotation = !shiftToOriginWithBb; - var bb; - - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } - - if (prefix == null) { - r.drawText(context, ele, null, applyRotation, useEleOpacity); - - if (ele.isEdge()) { - r.drawText(context, ele, 'source', applyRotation, useEleOpacity); - r.drawText(context, ele, 'target', applyRotation, useEleOpacity); - } - } else { - r.drawText(context, ele, prefix, applyRotation, useEleOpacity); - } - - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } -}; - -CRp$4.getFontCache = function (context) { - var cache; - this.fontCaches = this.fontCaches || []; - - for (var i = 0; i < this.fontCaches.length; i++) { - cache = this.fontCaches[i]; - - if (cache.context === context) { - return cache; - } - } - - cache = { - context: context - }; - this.fontCaches.push(cache); - return cache; -}; // set up canvas context with font -// returns transformed text string - - -CRp$4.setupTextStyle = function (context, ele) { - var useEleOpacity = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; - // Font style - var labelStyle = ele.pstyle('font-style').strValue; - var labelSize = ele.pstyle('font-size').pfValue + 'px'; - var labelFamily = ele.pstyle('font-family').strValue; - var labelWeight = ele.pstyle('font-weight').strValue; - var opacity = useEleOpacity ? ele.effectiveOpacity() * ele.pstyle('text-opacity').value : 1; - var outlineOpacity = ele.pstyle('text-outline-opacity').value * opacity; - var color = ele.pstyle('color').value; - var outlineColor = ele.pstyle('text-outline-color').value; - context.font = labelStyle + ' ' + labelWeight + ' ' + labelSize + ' ' + labelFamily; - context.lineJoin = 'round'; // so text outlines aren't jagged - - this.colorFillStyle(context, color[0], color[1], color[2], opacity); - this.colorStrokeStyle(context, outlineColor[0], outlineColor[1], outlineColor[2], outlineOpacity); -}; // TODO ensure re-used - - -function roundRect(ctx, x, y, width, height) { - var radius = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 5; - ctx.beginPath(); - ctx.moveTo(x + radius, y); - ctx.lineTo(x + width - radius, y); - ctx.quadraticCurveTo(x + width, y, x + width, y + radius); - ctx.lineTo(x + width, y + height - radius); - ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height); - ctx.lineTo(x + radius, y + height); - ctx.quadraticCurveTo(x, y + height, x, y + height - radius); - ctx.lineTo(x, y + radius); - ctx.quadraticCurveTo(x, y, x + radius, y); - ctx.closePath(); - ctx.fill(); -} - -CRp$4.getTextAngle = function (ele, prefix) { - var theta; - var _p = ele._private; - var rscratch = _p.rscratch; - var pdash = prefix ? prefix + '-' : ''; - var rotation = ele.pstyle(pdash + 'text-rotation'); - var textAngle = getPrefixedProperty(rscratch, 'labelAngle', prefix); - - if (rotation.strValue === 'autorotate') { - theta = ele.isEdge() ? textAngle : 0; - } else if (rotation.strValue === 'none') { - theta = 0; - } else { - theta = rotation.pfValue; - } - - return theta; -}; - -CRp$4.drawText = function (context, ele, prefix) { - var applyRotation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var useEleOpacity = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var _p = ele._private; - var rscratch = _p.rscratch; - var parentOpacity = useEleOpacity ? ele.effectiveOpacity() : 1; - - if (useEleOpacity && (parentOpacity === 0 || ele.pstyle('text-opacity').value === 0)) { - return; - } // use 'main' as an alias for the main label (i.e. null prefix) - - - if (prefix === 'main') { - prefix = null; - } - - var textX = getPrefixedProperty(rscratch, 'labelX', prefix); - var textY = getPrefixedProperty(rscratch, 'labelY', prefix); - var orgTextX, orgTextY; // used for rotation - - var text = this.getLabelText(ele, prefix); - - if (text != null && text !== '' && !isNaN(textX) && !isNaN(textY)) { - this.setupTextStyle(context, ele, useEleOpacity); - var pdash = prefix ? prefix + '-' : ''; - var textW = getPrefixedProperty(rscratch, 'labelWidth', prefix); - var textH = getPrefixedProperty(rscratch, 'labelHeight', prefix); - var marginX = ele.pstyle(pdash + 'text-margin-x').pfValue; - var marginY = ele.pstyle(pdash + 'text-margin-y').pfValue; - var isEdge = ele.isEdge(); - var halign = ele.pstyle('text-halign').value; - var valign = ele.pstyle('text-valign').value; - - if (isEdge) { - halign = 'center'; - valign = 'center'; - } - - textX += marginX; - textY += marginY; - var theta; - - if (!applyRotation) { - theta = 0; - } else { - theta = this.getTextAngle(ele, prefix); - } - - if (theta !== 0) { - orgTextX = textX; - orgTextY = textY; - context.translate(orgTextX, orgTextY); - context.rotate(theta); - textX = 0; - textY = 0; - } - - switch (valign) { - case 'top': - break; - - case 'center': - textY += textH / 2; - break; - - case 'bottom': - textY += textH; - break; - } - - var backgroundOpacity = ele.pstyle('text-background-opacity').value; - var borderOpacity = ele.pstyle('text-border-opacity').value; - var textBorderWidth = ele.pstyle('text-border-width').pfValue; - var backgroundPadding = ele.pstyle('text-background-padding').pfValue; - - if (backgroundOpacity > 0 || textBorderWidth > 0 && borderOpacity > 0) { - var bgX = textX - backgroundPadding; - - switch (halign) { - case 'left': - bgX -= textW; - break; - - case 'center': - bgX -= textW / 2; - break; - } - - var bgY = textY - textH - backgroundPadding; - var bgW = textW + 2 * backgroundPadding; - var bgH = textH + 2 * backgroundPadding; - - if (backgroundOpacity > 0) { - var textFill = context.fillStyle; - var textBackgroundColor = ele.pstyle('text-background-color').value; - context.fillStyle = 'rgba(' + textBackgroundColor[0] + ',' + textBackgroundColor[1] + ',' + textBackgroundColor[2] + ',' + backgroundOpacity * parentOpacity + ')'; - var styleShape = ele.pstyle('text-background-shape').strValue; - - if (styleShape.indexOf('round') === 0) { - roundRect(context, bgX, bgY, bgW, bgH, 2); - } else { - context.fillRect(bgX, bgY, bgW, bgH); - } - - context.fillStyle = textFill; - } - - if (textBorderWidth > 0 && borderOpacity > 0) { - var textStroke = context.strokeStyle; - var textLineWidth = context.lineWidth; - var textBorderColor = ele.pstyle('text-border-color').value; - var textBorderStyle = ele.pstyle('text-border-style').value; - context.strokeStyle = 'rgba(' + textBorderColor[0] + ',' + textBorderColor[1] + ',' + textBorderColor[2] + ',' + borderOpacity * parentOpacity + ')'; - context.lineWidth = textBorderWidth; - - if (context.setLineDash) { - // for very outofdate browsers - switch (textBorderStyle) { - case 'dotted': - context.setLineDash([1, 1]); - break; - - case 'dashed': - context.setLineDash([4, 2]); - break; - - case 'double': - context.lineWidth = textBorderWidth / 4; // 50% reserved for white between the two borders - - context.setLineDash([]); - break; - - case 'solid': - context.setLineDash([]); - break; - } - } - - context.strokeRect(bgX, bgY, bgW, bgH); - - if (textBorderStyle === 'double') { - var whiteWidth = textBorderWidth / 2; - context.strokeRect(bgX + whiteWidth, bgY + whiteWidth, bgW - whiteWidth * 2, bgH - whiteWidth * 2); - } - - if (context.setLineDash) { - // for very outofdate browsers - context.setLineDash([]); - } - - context.lineWidth = textLineWidth; - context.strokeStyle = textStroke; - } - } - - var lineWidth = 2 * ele.pstyle('text-outline-width').pfValue; // *2 b/c the stroke is drawn centred on the middle - - if (lineWidth > 0) { - context.lineWidth = lineWidth; - } - - if (ele.pstyle('text-wrap').value === 'wrap') { - var lines = getPrefixedProperty(rscratch, 'labelWrapCachedLines', prefix); - var lineHeight = getPrefixedProperty(rscratch, 'labelLineHeight', prefix); - var halfTextW = textW / 2; - var justification = this.getLabelJustification(ele); - - if (justification === 'auto') ; else if (halign === 'left') { - // auto justification : right - if (justification === 'left') { - textX += -textW; - } else if (justification === 'center') { - textX += -halfTextW; - } // else same as auto - - } else if (halign === 'center') { - // auto justfication : center - if (justification === 'left') { - textX += -halfTextW; - } else if (justification === 'right') { - textX += halfTextW; - } // else same as auto - - } else if (halign === 'right') { - // auto justification : left - if (justification === 'center') { - textX += halfTextW; - } else if (justification === 'right') { - textX += textW; - } // else same as auto - - } - - switch (valign) { - case 'top': - textY -= (lines.length - 1) * lineHeight; - break; - - case 'center': - case 'bottom': - textY -= (lines.length - 1) * lineHeight; - break; - } - - for (var l = 0; l < lines.length; l++) { - if (lineWidth > 0) { - context.strokeText(lines[l], textX, textY); - } - - context.fillText(lines[l], textX, textY); - textY += lineHeight; - } - } else { - if (lineWidth > 0) { - context.strokeText(text, textX, textY); - } - - context.fillText(text, textX, textY); - } - - if (theta !== 0) { - context.rotate(-theta); - context.translate(-orgTextX, -orgTextY); - } - } -}; - -/* global Path2D */ -var CRp$5 = {}; - -CRp$5.drawNode = function (context, node, shiftToOriginWithBb) { - var drawLabel = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true; - var shouldDrawOverlay = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true; - var shouldDrawOpacity = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : true; - var r = this; - var nodeWidth, nodeHeight; - var _p = node._private; - var rs = _p.rscratch; - var pos = node.position(); - - if (!number(pos.x) || !number(pos.y)) { - return; // can't draw node with undefined position - } - - if (shouldDrawOpacity && !node.visible()) { - return; - } - - var eleOpacity = shouldDrawOpacity ? node.effectiveOpacity() : 1; - var usePaths = r.usePaths(); - var path; - var pathCacheHit = false; - var padding = node.padding(); - nodeWidth = node.width() + 2 * padding; - nodeHeight = node.height() + 2 * padding; // - // setup shift - - var bb; - - if (shiftToOriginWithBb) { - bb = shiftToOriginWithBb; - context.translate(-bb.x1, -bb.y1); - } // - // load bg image - - - var bgImgProp = node.pstyle('background-image'); - var urls = bgImgProp.value; - var urlDefined = new Array(urls.length); - var image = new Array(urls.length); - var numImages = 0; - - for (var i = 0; i < urls.length; i++) { - var url = urls[i]; - var defd = urlDefined[i] = url != null && url !== 'none'; - - if (defd) { - var bgImgCrossOrigin = node.cy().style().getIndexedStyle(node, 'background-image-crossorigin', 'value', i); - numImages++; // get image, and if not loaded then ask to redraw when later loaded - - image[i] = r.getCachedImage(url, bgImgCrossOrigin, function () { - _p.backgroundTimestamp = Date.now(); - node.emitAndNotify('background'); - }); - } - } // - // setup styles - - - var darkness = node.pstyle('background-blacken').value; - var borderWidth = node.pstyle('border-width').pfValue; - var bgOpacity = node.pstyle('background-opacity').value * eleOpacity; - var borderColor = node.pstyle('border-color').value; - var borderStyle = node.pstyle('border-style').value; - var borderOpacity = node.pstyle('border-opacity').value * eleOpacity; - context.lineJoin = 'miter'; // so borders are square with the node shape - - var setupShapeColor = function setupShapeColor() { - var bgOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bgOpacity; - r.eleFillStyle(context, node, bgOpy); - }; - - var setupBorderColor = function setupBorderColor() { - var bdrOpy = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : borderOpacity; - r.colorStrokeStyle(context, borderColor[0], borderColor[1], borderColor[2], bdrOpy); - }; // - // setup shape - - - var styleShape = node.pstyle('shape').strValue; - var shapePts = node.pstyle('shape-polygon-points').pfValue; - - if (usePaths) { - context.translate(pos.x, pos.y); - var pathCache = r.nodePathCache = r.nodePathCache || []; - var key = hashStrings(styleShape === 'polygon' ? styleShape + ',' + shapePts.join(',') : styleShape, '' + nodeHeight, '' + nodeWidth); - var cachedPath = pathCache[key]; - - if (cachedPath != null) { - path = cachedPath; - pathCacheHit = true; - rs.pathCache = path; - } else { - path = new Path2D(); - pathCache[key] = rs.pathCache = path; - } - } - - var drawShape = function drawShape() { - if (!pathCacheHit) { - var npos = pos; - - if (usePaths) { - npos = { - x: 0, - y: 0 - }; - } - - r.nodeShapes[r.getNodeShape(node)].draw(path || context, npos.x, npos.y, nodeWidth, nodeHeight); - } - - if (usePaths) { - context.fill(path); - } else { - context.fill(); - } - }; - - var drawImages = function drawImages() { - var nodeOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; - var prevBging = _p.backgrounding; - var totalCompleted = 0; - - for (var _i = 0; _i < image.length; _i++) { - if (urlDefined[_i] && image[_i].complete && !image[_i].error) { - totalCompleted++; - r.drawInscribedImage(context, image[_i], node, _i, nodeOpacity); - } - } - - _p.backgrounding = !(totalCompleted === numImages); - - if (prevBging !== _p.backgrounding) { - // update style b/c :backgrounding state changed - node.updateStyle(false); - } - }; - - var drawPie = function drawPie() { - var redrawShape = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var pieOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : eleOpacity; - - if (r.hasPie(node)) { - r.drawPie(context, node, pieOpacity); // redraw/restore path if steps after pie need it - - if (redrawShape) { - if (!usePaths) { - r.nodeShapes[r.getNodeShape(node)].draw(context, pos.x, pos.y, nodeWidth, nodeHeight); - } - } - } - }; - - var darken = function darken() { - var darkenOpacity = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : eleOpacity; - var opacity = (darkness > 0 ? darkness : -darkness) * darkenOpacity; - var c = darkness > 0 ? 0 : 255; - - if (darkness !== 0) { - r.colorFillStyle(context, c, c, c, opacity); - - if (usePaths) { - context.fill(path); - } else { - context.fill(); - } - } - }; - - var drawBorder = function drawBorder() { - if (borderWidth > 0) { - context.lineWidth = borderWidth; - context.lineCap = 'butt'; - - if (context.setLineDash) { - // for very outofdate browsers - switch (borderStyle) { - case 'dotted': - context.setLineDash([1, 1]); - break; - - case 'dashed': - context.setLineDash([4, 2]); - break; - - case 'solid': - case 'double': - context.setLineDash([]); - break; - } - } - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } - - if (borderStyle === 'double') { - context.lineWidth = borderWidth / 3; - var gco = context.globalCompositeOperation; - context.globalCompositeOperation = 'destination-out'; - - if (usePaths) { - context.stroke(path); - } else { - context.stroke(); - } - - context.globalCompositeOperation = gco; - } // reset in case we changed the border style - - - if (context.setLineDash) { - // for very outofdate browsers - context.setLineDash([]); - } - } - }; - - var drawOverlay = function drawOverlay() { - if (shouldDrawOverlay) { - r.drawNodeOverlay(context, node, pos, nodeWidth, nodeHeight); - } - }; - - var drawText = function drawText() { - r.drawElementText(context, node, null, drawLabel); - }; - - var ghost = node.pstyle('ghost').value === 'yes'; - - if (ghost) { - var gx = node.pstyle('ghost-offset-x').pfValue; - var gy = node.pstyle('ghost-offset-y').pfValue; - var ghostOpacity = node.pstyle('ghost-opacity').value; - var effGhostOpacity = ghostOpacity * eleOpacity; - context.translate(gx, gy); - setupShapeColor(ghostOpacity * bgOpacity); - drawShape(); - drawImages(effGhostOpacity); - drawPie(darkness !== 0 || borderWidth !== 0); - darken(effGhostOpacity); - setupBorderColor(ghostOpacity * borderOpacity); - drawBorder(); - context.translate(-gx, -gy); - } - - setupShapeColor(); - drawShape(); - drawImages(); - drawPie(darkness !== 0 || borderWidth !== 0); - darken(); - setupBorderColor(); - drawBorder(); - - if (usePaths) { - context.translate(-pos.x, -pos.y); - } - - drawText(); - drawOverlay(); // - // clean up shift - - if (shiftToOriginWithBb) { - context.translate(bb.x1, bb.y1); - } -}; - -CRp$5.drawNodeOverlay = function (context, node, pos, nodeWidth, nodeHeight) { - var r = this; - - if (!node.visible()) { - return; - } - - var overlayPadding = node.pstyle('overlay-padding').pfValue; - var overlayOpacity = node.pstyle('overlay-opacity').value; - var overlayColor = node.pstyle('overlay-color').value; - - if (overlayOpacity > 0) { - pos = pos || node.position(); - - if (nodeWidth == null || nodeHeight == null) { - var padding = node.padding(); - nodeWidth = node.width() + 2 * padding; - nodeHeight = node.height() + 2 * padding; - } - - r.colorFillStyle(context, overlayColor[0], overlayColor[1], overlayColor[2], overlayOpacity); - r.nodeShapes['roundrectangle'].draw(context, pos.x, pos.y, nodeWidth + overlayPadding * 2, nodeHeight + overlayPadding * 2); - context.fill(); - } -}; // does the node have at least one pie piece? - - -CRp$5.hasPie = function (node) { - node = node[0]; // ensure ele ref - - return node._private.hasPie; -}; - -CRp$5.drawPie = function (context, node, nodeOpacity, pos) { - node = node[0]; // ensure ele ref - - pos = pos || node.position(); - var cyStyle = node.cy().style(); - var pieSize = node.pstyle('pie-size'); - var x = pos.x; - var y = pos.y; - var nodeW = node.width(); - var nodeH = node.height(); - var radius = Math.min(nodeW, nodeH) / 2; // must fit in node - - var lastPercent = 0; // what % to continue drawing pie slices from on [0, 1] - - var usePaths = this.usePaths(); - - if (usePaths) { - x = 0; - y = 0; - } - - if (pieSize.units === '%') { - radius = radius * pieSize.pfValue; - } else if (pieSize.pfValue !== undefined) { - radius = pieSize.pfValue / 2; - } - - for (var i = 1; i <= cyStyle.pieBackgroundN; i++) { - // 1..N - var size = node.pstyle('pie-' + i + '-background-size').value; - var color = node.pstyle('pie-' + i + '-background-color').value; - var opacity = node.pstyle('pie-' + i + '-background-opacity').value * nodeOpacity; - var percent = size / 100; // map integer range [0, 100] to [0, 1] - // percent can't push beyond 1 - - if (percent + lastPercent > 1) { - percent = 1 - lastPercent; - } - - var angleStart = 1.5 * Math.PI + 2 * Math.PI * lastPercent; // start at 12 o'clock and go clockwise - - var angleDelta = 2 * Math.PI * percent; - var angleEnd = angleStart + angleDelta; // ignore if - // - zero size - // - we're already beyond the full circle - // - adding the current slice would go beyond the full circle - - if (size === 0 || lastPercent >= 1 || lastPercent + percent > 1) { - continue; - } - - context.beginPath(); - context.moveTo(x, y); - context.arc(x, y, radius, angleStart, angleEnd); - context.closePath(); - this.colorFillStyle(context, color[0], color[1], color[2], opacity); - context.fill(); - lastPercent += percent; - } -}; - -var CRp$6 = {}; -var motionBlurDelay = 100; // var isFirefox = typeof InstallTrigger !== 'undefined'; - -CRp$6.getPixelRatio = function () { - var context = this.data.contexts[0]; - - if (this.forcedPixelRatio != null) { - return this.forcedPixelRatio; - } - - var backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1; - return (window.devicePixelRatio || 1) / backingStore; // eslint-disable-line no-undef -}; - -CRp$6.paintCache = function (context) { - var caches = this.paintCaches = this.paintCaches || []; - var needToCreateCache = true; - var cache; - - for (var i = 0; i < caches.length; i++) { - cache = caches[i]; - - if (cache.context === context) { - needToCreateCache = false; - break; - } - } - - if (needToCreateCache) { - cache = { - context: context - }; - caches.push(cache); - } - - return cache; -}; - -CRp$6.createGradientStyleFor = function (context, shapeStyleName, ele, fill, opacity) { - var gradientStyle; - var usePaths = this.usePaths(); - var colors = ele.pstyle(shapeStyleName + '-gradient-stop-colors').value, - positions = ele.pstyle(shapeStyleName + '-gradient-stop-positions').pfValue; - - if (fill === 'radial-gradient') { - if (ele.isEdge()) { - var start = ele.sourceEndpoint(), - end = ele.targetEndpoint(), - mid = ele.midpoint(); - var d1 = dist(start, mid); - var d2 = dist(end, mid); - gradientStyle = context.createRadialGradient(mid.x, mid.y, 0, mid.x, mid.y, Math.max(d1, d2)); - } else { - var pos = usePaths ? { - x: 0, - y: 0 - } : ele.position(), - width = ele.paddedWidth(), - height = ele.paddedHeight(); - gradientStyle = context.createRadialGradient(pos.x, pos.y, 0, pos.x, pos.y, Math.max(width, height)); - } - } else { - if (ele.isEdge()) { - var _start = ele.sourceEndpoint(), - _end = ele.targetEndpoint(); - - gradientStyle = context.createLinearGradient(_start.x, _start.y, _end.x, _end.y); - } else { - var _pos = usePaths ? { - x: 0, - y: 0 - } : ele.position(), - _width = ele.paddedWidth(), - _height = ele.paddedHeight(), - halfWidth = _width / 2, - halfHeight = _height / 2; - - var direction = ele.pstyle('background-gradient-direction').value; - - switch (direction) { - case 'to-bottom': - gradientStyle = context.createLinearGradient(_pos.x, _pos.y - halfHeight, _pos.x, _pos.y + halfHeight); - break; - - case 'to-top': - gradientStyle = context.createLinearGradient(_pos.x, _pos.y + halfHeight, _pos.x, _pos.y - halfHeight); - break; - - case 'to-left': - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y, _pos.x - halfWidth, _pos.y); - break; - - case 'to-right': - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y, _pos.x + halfWidth, _pos.y); - break; - - case 'to-bottom-right': - case 'to-right-bottom': - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y - halfHeight, _pos.x + halfWidth, _pos.y + halfHeight); - break; - - case 'to-top-right': - case 'to-right-top': - gradientStyle = context.createLinearGradient(_pos.x - halfWidth, _pos.y + halfHeight, _pos.x + halfWidth, _pos.y - halfHeight); - break; - - case 'to-bottom-left': - case 'to-left-bottom': - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y - halfHeight, _pos.x - halfWidth, _pos.y + halfHeight); - break; - - case 'to-top-left': - case 'to-left-top': - gradientStyle = context.createLinearGradient(_pos.x + halfWidth, _pos.y + halfHeight, _pos.x - halfWidth, _pos.y - halfHeight); - break; - } - } - } - - if (!gradientStyle) return null; // invalid gradient style - - var hasPositions = positions.length === colors.length; - var length = colors.length; - - for (var i = 0; i < length; i++) { - gradientStyle.addColorStop(hasPositions ? positions[i] : i / (length - 1), 'rgba(' + colors[i][0] + ',' + colors[i][1] + ',' + colors[i][2] + ',' + opacity + ')'); - } - - return gradientStyle; -}; - -CRp$6.gradientFillStyle = function (context, ele, fill, opacity) { - var gradientStyle = this.createGradientStyleFor(context, 'background', ele, fill, opacity); - if (!gradientStyle) return null; // error - - context.fillStyle = gradientStyle; -}; - -CRp$6.colorFillStyle = function (context, r, g, b, a) { - context.fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching - // var cache = this.paintCache(context); - // var fillStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; - // if( cache.fillStyle !== fillStyle ){ - // context.fillStyle = cache.fillStyle = fillStyle; - // } -}; - -CRp$6.eleFillStyle = function (context, ele, opacity) { - var backgroundFill = ele.pstyle('background-fill').value; - - if (backgroundFill === 'linear-gradient' || backgroundFill === 'radial-gradient') { - this.gradientFillStyle(context, ele, backgroundFill, opacity); - } else { - var backgroundColor = ele.pstyle('background-color').value; - this.colorFillStyle(context, backgroundColor[0], backgroundColor[1], backgroundColor[2], opacity); - } -}; - -CRp$6.gradientStrokeStyle = function (context, ele, fill, opacity) { - var gradientStyle = this.createGradientStyleFor(context, 'line', ele, fill, opacity); - if (!gradientStyle) return null; // error - - context.strokeStyle = gradientStyle; -}; - -CRp$6.colorStrokeStyle = function (context, r, g, b, a) { - context.strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; // turn off for now, seems context does its own caching - // var cache = this.paintCache(context); - // var strokeStyle = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')'; - // if( cache.strokeStyle !== strokeStyle ){ - // context.strokeStyle = cache.strokeStyle = strokeStyle; - // } -}; - -CRp$6.eleStrokeStyle = function (context, ele, opacity) { - var lineFill = ele.pstyle('line-fill').value; - - if (lineFill === 'linear-gradient' || lineFill === 'radial-gradient') { - this.gradientStrokeStyle(context, ele, lineFill, opacity); - } else { - var lineColor = ele.pstyle('line-color').value; - this.colorStrokeStyle(context, lineColor[0], lineColor[1], lineColor[2], opacity); - } -}; // Resize canvas - - -CRp$6.matchCanvasSize = function (container) { - var r = this; - var data = r.data; - var bb = r.findContainerClientCoords(); - var width = bb[2]; - var height = bb[3]; - var pixelRatio = r.getPixelRatio(); - var mbPxRatio = r.motionBlurPxRatio; - - if (container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE] || container === r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]) { - pixelRatio = mbPxRatio; - } - - var canvasWidth = width * pixelRatio; - var canvasHeight = height * pixelRatio; - var canvas; - - if (canvasWidth === r.canvasWidth && canvasHeight === r.canvasHeight) { - return; // save cycles if same - } - - r.fontCaches = null; // resizing resets the style - - var canvasContainer = data.canvasContainer; - canvasContainer.style.width = width + 'px'; - canvasContainer.style.height = height + 'px'; - - for (var i = 0; i < r.CANVAS_LAYERS; i++) { - canvas = data.canvases[i]; - canvas.width = canvasWidth; - canvas.height = canvasHeight; - canvas.style.width = width + 'px'; - canvas.style.height = height + 'px'; - } - - for (var i = 0; i < r.BUFFER_COUNT; i++) { - canvas = data.bufferCanvases[i]; - canvas.width = canvasWidth; - canvas.height = canvasHeight; - canvas.style.width = width + 'px'; - canvas.style.height = height + 'px'; - } - - r.textureMult = 1; - - if (pixelRatio <= 1) { - canvas = data.bufferCanvases[r.TEXTURE_BUFFER]; - r.textureMult = 2; - canvas.width = canvasWidth * r.textureMult; - canvas.height = canvasHeight * r.textureMult; - } - - r.canvasWidth = canvasWidth; - r.canvasHeight = canvasHeight; -}; - -CRp$6.renderTo = function (cxt, zoom, pan, pxRatio) { - this.render({ - forcedContext: cxt, - forcedZoom: zoom, - forcedPan: pan, - drawAllLayers: true, - forcedPxRatio: pxRatio - }); -}; - -CRp$6.render = function (options) { - options = options || staticEmptyObject(); - var forcedContext = options.forcedContext; - var drawAllLayers = options.drawAllLayers; - var drawOnlyNodeLayer = options.drawOnlyNodeLayer; - var forcedZoom = options.forcedZoom; - var forcedPan = options.forcedPan; - var r = this; - var pixelRatio = options.forcedPxRatio === undefined ? this.getPixelRatio() : options.forcedPxRatio; - var cy = r.cy; - var data = r.data; - var needDraw = data.canvasNeedsRedraw; - var textureDraw = r.textureOnViewport && !forcedContext && (r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming); - var motionBlur = options.motionBlur !== undefined ? options.motionBlur : r.motionBlur; - var mbPxRatio = r.motionBlurPxRatio; - var hasCompoundNodes = cy.hasCompoundNodes(); - var inNodeDragGesture = r.hoverData.draggingEles; - var inBoxSelection = r.hoverData.selecting || r.touchData.selecting ? true : false; - motionBlur = motionBlur && !forcedContext && r.motionBlurEnabled && !inBoxSelection; - var motionBlurFadeEffect = motionBlur; - - if (!forcedContext) { - if (r.prevPxRatio !== pixelRatio) { - r.invalidateContainerClientCoordsCache(); - r.matchCanvasSize(r.container); - r.redrawHint('eles', true); - r.redrawHint('drag', true); - } - - r.prevPxRatio = pixelRatio; - } - - if (!forcedContext && r.motionBlurTimeout) { - clearTimeout(r.motionBlurTimeout); - } - - if (motionBlur) { - if (r.mbFrames == null) { - r.mbFrames = 0; - } - - r.mbFrames++; - - if (r.mbFrames < 3) { - // need several frames before even high quality motionblur - motionBlurFadeEffect = false; - } // go to lower quality blurry frames when several m/b frames have been rendered (avoids flashing) - - - if (r.mbFrames > r.minMbLowQualFrames) { - //r.fullQualityMb = false; - r.motionBlurPxRatio = r.mbPxRBlurry; - } - } - - if (r.clearingMotionBlur) { - r.motionBlurPxRatio = 1; - } // b/c drawToContext() may be async w.r.t. redraw(), keep track of last texture frame - // because a rogue async texture frame would clear needDraw - - - if (r.textureDrawLastFrame && !textureDraw) { - needDraw[r.NODE] = true; - needDraw[r.SELECT_BOX] = true; - } - - var style = cy.style(); - var zoom = cy.zoom(); - var effectiveZoom = forcedZoom !== undefined ? forcedZoom : zoom; - var pan = cy.pan(); - var effectivePan = { - x: pan.x, - y: pan.y - }; - var vp = { - zoom: zoom, - pan: { - x: pan.x, - y: pan.y - } - }; - var prevVp = r.prevViewport; - var viewportIsDiff = prevVp === undefined || vp.zoom !== prevVp.zoom || vp.pan.x !== prevVp.pan.x || vp.pan.y !== prevVp.pan.y; // we want the low quality motionblur only when the viewport is being manipulated etc (where it's not noticed) - - if (!viewportIsDiff && !(inNodeDragGesture && !hasCompoundNodes)) { - r.motionBlurPxRatio = 1; - } - - if (forcedPan) { - effectivePan = forcedPan; - } // apply pixel ratio - - - effectiveZoom *= pixelRatio; - effectivePan.x *= pixelRatio; - effectivePan.y *= pixelRatio; - var eles = r.getCachedZSortedEles(); - - function mbclear(context, x, y, w, h) { - var gco = context.globalCompositeOperation; - context.globalCompositeOperation = 'destination-out'; - r.colorFillStyle(context, 255, 255, 255, r.motionBlurTransparency); - context.fillRect(x, y, w, h); - context.globalCompositeOperation = gco; - } - - function setContextTransform(context, clear) { - var ePan, eZoom, w, h; - - if (!r.clearingMotionBlur && (context === data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] || context === data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG])) { - ePan = { - x: pan.x * mbPxRatio, - y: pan.y * mbPxRatio - }; - eZoom = zoom * mbPxRatio; - w = r.canvasWidth * mbPxRatio; - h = r.canvasHeight * mbPxRatio; - } else { - ePan = effectivePan; - eZoom = effectiveZoom; - w = r.canvasWidth; - h = r.canvasHeight; - } - - context.setTransform(1, 0, 0, 1, 0, 0); - - if (clear === 'motionBlur') { - mbclear(context, 0, 0, w, h); - } else if (!forcedContext && (clear === undefined || clear)) { - context.clearRect(0, 0, w, h); - } - - if (!drawAllLayers) { - context.translate(ePan.x, ePan.y); - context.scale(eZoom, eZoom); - } - - if (forcedPan) { - context.translate(forcedPan.x, forcedPan.y); - } - - if (forcedZoom) { - context.scale(forcedZoom, forcedZoom); - } - } - - if (!textureDraw) { - r.textureDrawLastFrame = false; - } - - if (textureDraw) { - r.textureDrawLastFrame = true; - - if (!r.textureCache) { - r.textureCache = {}; - r.textureCache.bb = cy.mutableElements().boundingBox(); - r.textureCache.texture = r.data.bufferCanvases[r.TEXTURE_BUFFER]; - var cxt = r.data.bufferContexts[r.TEXTURE_BUFFER]; - cxt.setTransform(1, 0, 0, 1, 0, 0); - cxt.clearRect(0, 0, r.canvasWidth * r.textureMult, r.canvasHeight * r.textureMult); - r.render({ - forcedContext: cxt, - drawOnlyNodeLayer: true, - forcedPxRatio: pixelRatio * r.textureMult - }); - var vp = r.textureCache.viewport = { - zoom: cy.zoom(), - pan: cy.pan(), - width: r.canvasWidth, - height: r.canvasHeight - }; - vp.mpan = { - x: (0 - vp.pan.x) / vp.zoom, - y: (0 - vp.pan.y) / vp.zoom - }; - } - - needDraw[r.DRAG] = false; - needDraw[r.NODE] = false; - var context = data.contexts[r.NODE]; - var texture = r.textureCache.texture; - var vp = r.textureCache.viewport; - context.setTransform(1, 0, 0, 1, 0, 0); - - if (motionBlur) { - mbclear(context, 0, 0, vp.width, vp.height); - } else { - context.clearRect(0, 0, vp.width, vp.height); - } - - var outsideBgColor = style.core('outside-texture-bg-color').value; - var outsideBgOpacity = style.core('outside-texture-bg-opacity').value; - r.colorFillStyle(context, outsideBgColor[0], outsideBgColor[1], outsideBgColor[2], outsideBgOpacity); - context.fillRect(0, 0, vp.width, vp.height); - var zoom = cy.zoom(); - setContextTransform(context, false); - context.clearRect(vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); - context.drawImage(texture, vp.mpan.x, vp.mpan.y, vp.width / vp.zoom / pixelRatio, vp.height / vp.zoom / pixelRatio); - } else if (r.textureOnViewport && !forcedContext) { - // clear the cache since we don't need it - r.textureCache = null; - } - - var extent = cy.extent(); - var vpManip = r.pinching || r.hoverData.dragging || r.swipePanning || r.data.wheelZooming || r.hoverData.draggingEles || r.cy.animated(); - var hideEdges = r.hideEdgesOnViewport && vpManip; - var needMbClear = []; - needMbClear[r.NODE] = !needDraw[r.NODE] && motionBlur && !r.clearedForMotionBlur[r.NODE] || r.clearingMotionBlur; - - if (needMbClear[r.NODE]) { - r.clearedForMotionBlur[r.NODE] = true; - } - - needMbClear[r.DRAG] = !needDraw[r.DRAG] && motionBlur && !r.clearedForMotionBlur[r.DRAG] || r.clearingMotionBlur; - - if (needMbClear[r.DRAG]) { - r.clearedForMotionBlur[r.DRAG] = true; - } - - if (needDraw[r.NODE] || drawAllLayers || drawOnlyNodeLayer || needMbClear[r.NODE]) { - var useBuffer = motionBlur && !needMbClear[r.NODE] && mbPxRatio !== 1; - var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_NODE] : data.contexts[r.NODE]); - var clear = motionBlur && !useBuffer ? 'motionBlur' : undefined; - setContextTransform(context, clear); - - if (hideEdges) { - r.drawCachedNodes(context, eles.nondrag, pixelRatio, extent); - } else { - r.drawLayeredElements(context, eles.nondrag, pixelRatio, extent); - } - - if (r.debug) { - r.drawDebugPoints(context, eles.nondrag); - } - - if (!drawAllLayers && !motionBlur) { - needDraw[r.NODE] = false; - } - } - - if (!drawOnlyNodeLayer && (needDraw[r.DRAG] || drawAllLayers || needMbClear[r.DRAG])) { - var useBuffer = motionBlur && !needMbClear[r.DRAG] && mbPxRatio !== 1; - var context = forcedContext || (useBuffer ? r.data.bufferContexts[r.MOTIONBLUR_BUFFER_DRAG] : data.contexts[r.DRAG]); - setContextTransform(context, motionBlur && !useBuffer ? 'motionBlur' : undefined); - - if (hideEdges) { - r.drawCachedNodes(context, eles.drag, pixelRatio, extent); - } else { - r.drawCachedElements(context, eles.drag, pixelRatio, extent); - } - - if (r.debug) { - r.drawDebugPoints(context, eles.drag); - } - - if (!drawAllLayers && !motionBlur) { - needDraw[r.DRAG] = false; - } - } - - if (r.showFps || !drawOnlyNodeLayer && needDraw[r.SELECT_BOX] && !drawAllLayers) { - var context = forcedContext || data.contexts[r.SELECT_BOX]; - setContextTransform(context); - - if (r.selection[4] == 1 && (r.hoverData.selecting || r.touchData.selecting)) { - var zoom = r.cy.zoom(); - var borderWidth = style.core('selection-box-border-width').value / zoom; - context.lineWidth = borderWidth; - context.fillStyle = 'rgba(' + style.core('selection-box-color').value[0] + ',' + style.core('selection-box-color').value[1] + ',' + style.core('selection-box-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; - context.fillRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); - - if (borderWidth > 0) { - context.strokeStyle = 'rgba(' + style.core('selection-box-border-color').value[0] + ',' + style.core('selection-box-border-color').value[1] + ',' + style.core('selection-box-border-color').value[2] + ',' + style.core('selection-box-opacity').value + ')'; - context.strokeRect(r.selection[0], r.selection[1], r.selection[2] - r.selection[0], r.selection[3] - r.selection[1]); - } - } - - if (data.bgActivePosistion && !r.hoverData.selecting) { - var zoom = r.cy.zoom(); - var pos = data.bgActivePosistion; - context.fillStyle = 'rgba(' + style.core('active-bg-color').value[0] + ',' + style.core('active-bg-color').value[1] + ',' + style.core('active-bg-color').value[2] + ',' + style.core('active-bg-opacity').value + ')'; - context.beginPath(); - context.arc(pos.x, pos.y, style.core('active-bg-size').pfValue / zoom, 0, 2 * Math.PI); - context.fill(); - } - - var timeToRender = r.lastRedrawTime; - - if (r.showFps && timeToRender) { - timeToRender = Math.round(timeToRender); - var fps = Math.round(1000 / timeToRender); - context.setTransform(1, 0, 0, 1, 0, 0); - context.fillStyle = 'rgba(255, 0, 0, 0.75)'; - context.strokeStyle = 'rgba(255, 0, 0, 0.75)'; - context.lineWidth = 1; - context.fillText('1 frame = ' + timeToRender + ' ms = ' + fps + ' fps', 0, 20); - var maxFps = 60; - context.strokeRect(0, 30, 250, 20); - context.fillRect(0, 30, 250 * Math.min(fps / maxFps, 1), 20); - } - - if (!drawAllLayers) { - needDraw[r.SELECT_BOX] = false; - } - } // motionblur: blit rendered blurry frames - - - if (motionBlur && mbPxRatio !== 1) { - var cxtNode = data.contexts[r.NODE]; - var txtNode = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_NODE]; - var cxtDrag = data.contexts[r.DRAG]; - var txtDrag = r.data.bufferCanvases[r.MOTIONBLUR_BUFFER_DRAG]; - - var drawMotionBlur = function drawMotionBlur(cxt, txt, needClear) { - cxt.setTransform(1, 0, 0, 1, 0, 0); - - if (needClear || !motionBlurFadeEffect) { - cxt.clearRect(0, 0, r.canvasWidth, r.canvasHeight); - } else { - mbclear(cxt, 0, 0, r.canvasWidth, r.canvasHeight); - } - - var pxr = mbPxRatio; - cxt.drawImage(txt, // img - 0, 0, // sx, sy - r.canvasWidth * pxr, r.canvasHeight * pxr, // sw, sh - 0, 0, // x, y - r.canvasWidth, r.canvasHeight // w, h - ); - }; - - if (needDraw[r.NODE] || needMbClear[r.NODE]) { - drawMotionBlur(cxtNode, txtNode, needMbClear[r.NODE]); - needDraw[r.NODE] = false; - } - - if (needDraw[r.DRAG] || needMbClear[r.DRAG]) { - drawMotionBlur(cxtDrag, txtDrag, needMbClear[r.DRAG]); - needDraw[r.DRAG] = false; - } - } - - r.prevViewport = vp; - - if (r.clearingMotionBlur) { - r.clearingMotionBlur = false; - r.motionBlurCleared = true; - r.motionBlur = true; - } - - if (motionBlur) { - r.motionBlurTimeout = setTimeout(function () { - r.motionBlurTimeout = null; - r.clearedForMotionBlur[r.NODE] = false; - r.clearedForMotionBlur[r.DRAG] = false; - r.motionBlur = false; - r.clearingMotionBlur = !textureDraw; - r.mbFrames = 0; - needDraw[r.NODE] = true; - needDraw[r.DRAG] = true; - r.redraw(); - }, motionBlurDelay); - } - - if (!forcedContext) { - cy.emit('render'); - } -}; - -var CRp$7 = {}; // @O Polygon drawing - -CRp$7.drawPolygonPath = function (context, x, y, width, height, points) { - var halfW = width / 2; - var halfH = height / 2; - - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(x + halfW * points[0], y + halfH * points[1]); - - for (var i = 1; i < points.length / 2; i++) { - context.lineTo(x + halfW * points[i * 2], y + halfH * points[i * 2 + 1]); - } - - context.closePath(); -}; - -CRp$7.drawRoundPolygonPath = function (context, x, y, width, height, points) { - var halfW = width / 2; - var halfH = height / 2; - var cornerRadius = getRoundPolygonRadius(width, height); - - if (context.beginPath) { - context.beginPath(); - } - - for (var _i = 0; _i < points.length / 4; _i++) { - var sourceUv = void 0, - destUv = void 0; - - if (_i === 0) { - sourceUv = points.length - 2; - } else { - sourceUv = _i * 4 - 2; - } - - destUv = _i * 4 + 2; - var px = x + halfW * points[_i * 4]; - var py = y + halfH * points[_i * 4 + 1]; - var cosTheta = -points[sourceUv] * points[destUv] - points[sourceUv + 1] * points[destUv + 1]; - var offset = cornerRadius / Math.tan(Math.acos(cosTheta) / 2); - var cp0x = px - offset * points[sourceUv]; - var cp0y = py - offset * points[sourceUv + 1]; - var cp1x = px + offset * points[destUv]; - var cp1y = py + offset * points[destUv + 1]; - - if (_i === 0) { - context.moveTo(cp0x, cp0y); - } else { - context.lineTo(cp0x, cp0y); - } - - context.arcTo(px, py, cp1x, cp1y, cornerRadius); - } - - context.closePath(); -}; // Round rectangle drawing - - -CRp$7.drawRoundRectanglePath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var cornerRadius = getRoundRectangleRadius(width, height); - - if (context.beginPath) { - context.beginPath(); - } // Start at top middle - - - context.moveTo(x, y - halfHeight); // Arc from middle top to right side - - context.arcTo(x + halfWidth, y - halfHeight, x + halfWidth, y, cornerRadius); // Arc from right side to bottom - - context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); // Arc from bottom to left side - - context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); // Arc from left side to topBorder - - context.arcTo(x - halfWidth, y - halfHeight, x, y - halfHeight, cornerRadius); // Join line - - context.lineTo(x, y - halfHeight); - context.closePath(); -}; - -CRp$7.drawBottomRoundRectanglePath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var cornerRadius = getRoundRectangleRadius(width, height); - - if (context.beginPath) { - context.beginPath(); - } // Start at top middle - - - context.moveTo(x, y - halfHeight); - context.lineTo(x + halfWidth, y - halfHeight); - context.lineTo(x + halfWidth, y); - context.arcTo(x + halfWidth, y + halfHeight, x, y + halfHeight, cornerRadius); - context.arcTo(x - halfWidth, y + halfHeight, x - halfWidth, y, cornerRadius); - context.lineTo(x - halfWidth, y - halfHeight); - context.lineTo(x, y - halfHeight); - context.closePath(); -}; - -CRp$7.drawCutRectanglePath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var cornerLength = getCutRectangleCornerLength(); - - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(x - halfWidth + cornerLength, y - halfHeight); - context.lineTo(x + halfWidth - cornerLength, y - halfHeight); - context.lineTo(x + halfWidth, y - halfHeight + cornerLength); - context.lineTo(x + halfWidth, y + halfHeight - cornerLength); - context.lineTo(x + halfWidth - cornerLength, y + halfHeight); - context.lineTo(x - halfWidth + cornerLength, y + halfHeight); - context.lineTo(x - halfWidth, y + halfHeight - cornerLength); - context.lineTo(x - halfWidth, y - halfHeight + cornerLength); - context.closePath(); -}; - -CRp$7.drawBarrelPath = function (context, x, y, width, height) { - var halfWidth = width / 2; - var halfHeight = height / 2; - var xBegin = x - halfWidth; - var xEnd = x + halfWidth; - var yBegin = y - halfHeight; - var yEnd = y + halfHeight; - var barrelCurveConstants = getBarrelCurveConstants(width, height); - var wOffset = barrelCurveConstants.widthOffset; - var hOffset = barrelCurveConstants.heightOffset; - var ctrlPtXOffset = barrelCurveConstants.ctrlPtOffsetPct * wOffset; - - if (context.beginPath) { - context.beginPath(); - } - - context.moveTo(xBegin, yBegin + hOffset); - context.lineTo(xBegin, yEnd - hOffset); - context.quadraticCurveTo(xBegin + ctrlPtXOffset, yEnd, xBegin + wOffset, yEnd); - context.lineTo(xEnd - wOffset, yEnd); - context.quadraticCurveTo(xEnd - ctrlPtXOffset, yEnd, xEnd, yEnd - hOffset); - context.lineTo(xEnd, yBegin + hOffset); - context.quadraticCurveTo(xEnd - ctrlPtXOffset, yBegin, xEnd - wOffset, yBegin); - context.lineTo(xBegin + wOffset, yBegin); - context.quadraticCurveTo(xBegin + ctrlPtXOffset, yBegin, xBegin, yBegin + hOffset); - context.closePath(); -}; - -var sin0 = Math.sin(0); -var cos0 = Math.cos(0); -var sin = {}; -var cos = {}; -var ellipseStepSize = Math.PI / 40; - -for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { - sin[i] = Math.sin(i); - cos[i] = Math.cos(i); -} - -CRp$7.drawEllipsePath = function (context, centerX, centerY, width, height) { - if (context.beginPath) { - context.beginPath(); - } - - if (context.ellipse) { - context.ellipse(centerX, centerY, width / 2, height / 2, 0, 0, 2 * Math.PI); - } else { - var xPos, yPos; - var rw = width / 2; - var rh = height / 2; - - for (var i = 0 * Math.PI; i < 2 * Math.PI; i += ellipseStepSize) { - xPos = centerX - rw * sin[i] * sin0 + rw * cos[i] * cos0; - yPos = centerY + rh * cos[i] * sin0 + rh * sin[i] * cos0; - - if (i === 0) { - context.moveTo(xPos, yPos); - } else { - context.lineTo(xPos, yPos); - } - } - } - - context.closePath(); -}; - -/* global atob, ArrayBuffer, Uint8Array, Blob */ -var CRp$8 = {}; - -CRp$8.createBuffer = function (w, h) { - var buffer = document.createElement('canvas'); // eslint-disable-line no-undef - - buffer.width = w; - buffer.height = h; - return [buffer, buffer.getContext('2d')]; -}; - -CRp$8.bufferCanvasImage = function (options) { - var cy = this.cy; - var eles = cy.mutableElements(); - var bb = eles.boundingBox(); - var ctrRect = this.findContainerClientCoords(); - var width = options.full ? Math.ceil(bb.w) : ctrRect[2]; - var height = options.full ? Math.ceil(bb.h) : ctrRect[3]; - var specdMaxDims = number(options.maxWidth) || number(options.maxHeight); - var pxRatio = this.getPixelRatio(); - var scale = 1; - - if (options.scale !== undefined) { - width *= options.scale; - height *= options.scale; - scale = options.scale; - } else if (specdMaxDims) { - var maxScaleW = Infinity; - var maxScaleH = Infinity; - - if (number(options.maxWidth)) { - maxScaleW = scale * options.maxWidth / width; - } - - if (number(options.maxHeight)) { - maxScaleH = scale * options.maxHeight / height; - } - - scale = Math.min(maxScaleW, maxScaleH); - width *= scale; - height *= scale; - } - - if (!specdMaxDims) { - width *= pxRatio; - height *= pxRatio; - scale *= pxRatio; - } - - var buffCanvas = document.createElement('canvas'); // eslint-disable-line no-undef - - buffCanvas.width = width; - buffCanvas.height = height; - buffCanvas.style.width = width + 'px'; - buffCanvas.style.height = height + 'px'; - var buffCxt = buffCanvas.getContext('2d'); // Rasterize the layers, but only if container has nonzero size - - if (width > 0 && height > 0) { - buffCxt.clearRect(0, 0, width, height); - buffCxt.globalCompositeOperation = 'source-over'; - var zsortedEles = this.getCachedZSortedEles(); - - if (options.full) { - // draw the full bounds of the graph - buffCxt.translate(-bb.x1 * scale, -bb.y1 * scale); - buffCxt.scale(scale, scale); - this.drawElements(buffCxt, zsortedEles); - buffCxt.scale(1 / scale, 1 / scale); - buffCxt.translate(bb.x1 * scale, bb.y1 * scale); - } else { - // draw the current view - var pan = cy.pan(); - var translation = { - x: pan.x * scale, - y: pan.y * scale - }; - scale *= cy.zoom(); - buffCxt.translate(translation.x, translation.y); - buffCxt.scale(scale, scale); - this.drawElements(buffCxt, zsortedEles); - buffCxt.scale(1 / scale, 1 / scale); - buffCxt.translate(-translation.x, -translation.y); - } // need to fill bg at end like this in order to fill cleared transparent pixels in jpgs - - - if (options.bg) { - buffCxt.globalCompositeOperation = 'destination-over'; - buffCxt.fillStyle = options.bg; - buffCxt.rect(0, 0, width, height); - buffCxt.fill(); - } - } - - return buffCanvas; -}; - -function b64ToBlob(b64, mimeType) { - var bytes = atob(b64); - var buff = new ArrayBuffer(bytes.length); - var buffUint8 = new Uint8Array(buff); - - for (var i = 0; i < bytes.length; i++) { - buffUint8[i] = bytes.charCodeAt(i); - } - - return new Blob([buff], { - type: mimeType - }); -} - -function b64UriToB64(b64uri) { - var i = b64uri.indexOf(','); - return b64uri.substr(i + 1); -} - -function output(options, canvas, mimeType) { - var getB64Uri = function getB64Uri() { - return canvas.toDataURL(mimeType, options.quality); - }; - - switch (options.output) { - case 'blob-promise': - return new Promise$1(function (resolve, reject) { - try { - canvas.toBlob(function (blob) { - if (blob != null) { - resolve(blob); - } else { - reject(new Error('`canvas.toBlob()` sent a null value in its callback')); - } - }, mimeType, options.quality); - } catch (err) { - reject(err); - } - }); - - case 'blob': - return b64ToBlob(b64UriToB64(getB64Uri()), mimeType); - - case 'base64': - return b64UriToB64(getB64Uri()); - - case 'base64uri': - default: - return getB64Uri(); - } -} - -CRp$8.png = function (options) { - return output(options, this.bufferCanvasImage(options), 'image/png'); -}; - -CRp$8.jpg = function (options) { - return output(options, this.bufferCanvasImage(options), 'image/jpeg'); -}; - -var CRp$9 = {}; - -CRp$9.nodeShapeImpl = function (name, context, centerX, centerY, width, height, points) { - switch (name) { - case 'ellipse': - return this.drawEllipsePath(context, centerX, centerY, width, height); - - case 'polygon': - return this.drawPolygonPath(context, centerX, centerY, width, height, points); - - case 'round-polygon': - return this.drawRoundPolygonPath(context, centerX, centerY, width, height, points); - - case 'roundrectangle': - case 'round-rectangle': - return this.drawRoundRectanglePath(context, centerX, centerY, width, height); - - case 'cutrectangle': - case 'cut-rectangle': - return this.drawCutRectanglePath(context, centerX, centerY, width, height); - - case 'bottomroundrectangle': - case 'bottom-round-rectangle': - return this.drawBottomRoundRectanglePath(context, centerX, centerY, width, height); - - case 'barrel': - return this.drawBarrelPath(context, centerX, centerY, width, height); - } -}; - -var CR = CanvasRenderer; -var CRp$a = CanvasRenderer.prototype; -CRp$a.CANVAS_LAYERS = 3; // - -CRp$a.SELECT_BOX = 0; -CRp$a.DRAG = 1; -CRp$a.NODE = 2; -CRp$a.BUFFER_COUNT = 3; // - -CRp$a.TEXTURE_BUFFER = 0; -CRp$a.MOTIONBLUR_BUFFER_NODE = 1; -CRp$a.MOTIONBLUR_BUFFER_DRAG = 2; - -function CanvasRenderer(options) { - var r = this; - r.data = { - canvases: new Array(CRp$a.CANVAS_LAYERS), - contexts: new Array(CRp$a.CANVAS_LAYERS), - canvasNeedsRedraw: new Array(CRp$a.CANVAS_LAYERS), - bufferCanvases: new Array(CRp$a.BUFFER_COUNT), - bufferContexts: new Array(CRp$a.CANVAS_LAYERS) - }; - var tapHlOffAttr = '-webkit-tap-highlight-color'; - var tapHlOffStyle = 'rgba(0,0,0,0)'; - r.data.canvasContainer = document.createElement('div'); // eslint-disable-line no-undef - - var containerStyle = r.data.canvasContainer.style; - r.data.canvasContainer.style[tapHlOffAttr] = tapHlOffStyle; - containerStyle.position = 'relative'; - containerStyle.zIndex = '0'; - containerStyle.overflow = 'hidden'; - var container = options.cy.container(); - container.appendChild(r.data.canvasContainer); - container.style[tapHlOffAttr] = tapHlOffStyle; - var styleMap = { - '-webkit-user-select': 'none', - '-moz-user-select': '-moz-none', - 'user-select': 'none', - '-webkit-tap-highlight-color': 'rgba(0,0,0,0)', - 'outline-style': 'none' - }; - - if (ms()) { - styleMap['-ms-touch-action'] = 'none'; - styleMap['touch-action'] = 'none'; - } - - for (var i = 0; i < CRp$a.CANVAS_LAYERS; i++) { - var canvas = r.data.canvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef - - r.data.contexts[i] = canvas.getContext('2d'); - Object.keys(styleMap).forEach(function (k) { - canvas.style[k] = styleMap[k]; - }); - canvas.style.position = 'absolute'; - canvas.setAttribute('data-id', 'layer' + i); - canvas.style.zIndex = String(CRp$a.CANVAS_LAYERS - i); - r.data.canvasContainer.appendChild(canvas); - r.data.canvasNeedsRedraw[i] = false; - } - - r.data.topCanvas = r.data.canvases[0]; - r.data.canvases[CRp$a.NODE].setAttribute('data-id', 'layer' + CRp$a.NODE + '-node'); - r.data.canvases[CRp$a.SELECT_BOX].setAttribute('data-id', 'layer' + CRp$a.SELECT_BOX + '-selectbox'); - r.data.canvases[CRp$a.DRAG].setAttribute('data-id', 'layer' + CRp$a.DRAG + '-drag'); - - for (var i = 0; i < CRp$a.BUFFER_COUNT; i++) { - r.data.bufferCanvases[i] = document.createElement('canvas'); // eslint-disable-line no-undef - - r.data.bufferContexts[i] = r.data.bufferCanvases[i].getContext('2d'); - r.data.bufferCanvases[i].style.position = 'absolute'; - r.data.bufferCanvases[i].setAttribute('data-id', 'buffer' + i); - r.data.bufferCanvases[i].style.zIndex = String(-i - 1); - r.data.bufferCanvases[i].style.visibility = 'hidden'; //r.data.canvasContainer.appendChild(r.data.bufferCanvases[i]); - } - - r.pathsEnabled = true; - var emptyBb = makeBoundingBox(); - - var getBoxCenter = function getBoxCenter(bb) { - return { - x: (bb.x1 + bb.x2) / 2, - y: (bb.y1 + bb.y2) / 2 - }; - }; - - var getCenterOffset = function getCenterOffset(bb) { - return { - x: -bb.w / 2, - y: -bb.h / 2 - }; - }; - - var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) { - var _p = ele[0]._private; - var same = _p.oldBackgroundTimestamp === _p.backgroundTimestamp; - return !same; - }; - - var getStyleKey = function getStyleKey(ele) { - return ele[0]._private.nodeKey; - }; - - var getLabelKey = function getLabelKey(ele) { - return ele[0]._private.labelStyleKey; - }; - - var getSourceLabelKey = function getSourceLabelKey(ele) { - return ele[0]._private.sourceLabelStyleKey; - }; - - var getTargetLabelKey = function getTargetLabelKey(ele) { - return ele[0]._private.targetLabelStyleKey; - }; - - var drawElement = function drawElement(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElement(context, ele, bb, false, false, useEleOpacity); - }; - - var drawLabel = function drawLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElementText(context, ele, bb, scaledLabelShown, 'main', useEleOpacity); - }; - - var drawSourceLabel = function drawSourceLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElementText(context, ele, bb, scaledLabelShown, 'source', useEleOpacity); - }; - - var drawTargetLabel = function drawTargetLabel(context, ele, bb, scaledLabelShown, useEleOpacity) { - return r.drawElementText(context, ele, bb, scaledLabelShown, 'target', useEleOpacity); - }; - - var getElementBox = function getElementBox(ele) { - ele.boundingBox(); - return ele[0]._private.bodyBounds; - }; - - var getLabelBox = function getLabelBox(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.main || emptyBb; - }; - - var getSourceLabelBox = function getSourceLabelBox(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.source || emptyBb; - }; - - var getTargetLabelBox = function getTargetLabelBox(ele) { - ele.boundingBox(); - return ele[0]._private.labelBounds.target || emptyBb; - }; - - var isLabelVisibleAtScale = function isLabelVisibleAtScale(ele, scaledLabelShown) { - return scaledLabelShown; - }; - - var getElementRotationPoint = function getElementRotationPoint(ele) { - return getBoxCenter(getElementBox(ele)); - }; - - var addTextMargin = function addTextMargin(prefix, pt, ele) { - var pre = prefix ? prefix + '-' : ''; - return { - x: pt.x + ele.pstyle(pre + 'text-margin-x').pfValue, - y: pt.y + ele.pstyle(pre + 'text-margin-y').pfValue - }; - }; - - var getRsPt = function getRsPt(ele, x, y) { - var rs = ele[0]._private.rscratch; - return { - x: rs[x], - y: rs[y] - }; - }; - - var getLabelRotationPoint = function getLabelRotationPoint(ele) { - return addTextMargin('', getRsPt(ele, 'labelX', 'labelY'), ele); - }; - - var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) { - return addTextMargin('source', getRsPt(ele, 'sourceLabelX', 'sourceLabelY'), ele); - }; - - var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) { - return addTextMargin('target', getRsPt(ele, 'targetLabelX', 'targetLabelY'), ele); - }; - - var getElementRotationOffset = function getElementRotationOffset(ele) { - return getCenterOffset(getElementBox(ele)); - }; - - var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) { - return getCenterOffset(getSourceLabelBox(ele)); - }; - - var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) { - return getCenterOffset(getTargetLabelBox(ele)); - }; - - var getLabelRotationOffset = function getLabelRotationOffset(ele) { - var bb = getLabelBox(ele); - var p = getCenterOffset(getLabelBox(ele)); - - if (ele.isNode()) { - switch (ele.pstyle('text-halign').value) { - case 'left': - p.x = -bb.w; - break; - - case 'right': - p.x = 0; - break; - } - - switch (ele.pstyle('text-valign').value) { - case 'top': - p.y = -bb.h; - break; - - case 'bottom': - p.y = 0; - break; - } - } - - return p; - }; - - var eleTxrCache = r.data.eleTxrCache = new ElementTextureCache(r, { - getKey: getStyleKey, - doesEleInvalidateKey: backgroundTimestampHasChanged, - drawElement: drawElement, - getBoundingBox: getElementBox, - getRotationPoint: getElementRotationPoint, - getRotationOffset: getElementRotationOffset, - allowEdgeTxrCaching: false, - allowParentTxrCaching: false - }); - var lblTxrCache = r.data.lblTxrCache = new ElementTextureCache(r, { - getKey: getLabelKey, - drawElement: drawLabel, - getBoundingBox: getLabelBox, - getRotationPoint: getLabelRotationPoint, - getRotationOffset: getLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var slbTxrCache = r.data.slbTxrCache = new ElementTextureCache(r, { - getKey: getSourceLabelKey, - drawElement: drawSourceLabel, - getBoundingBox: getSourceLabelBox, - getRotationPoint: getSourceLabelRotationPoint, - getRotationOffset: getSourceLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var tlbTxrCache = r.data.tlbTxrCache = new ElementTextureCache(r, { - getKey: getTargetLabelKey, - drawElement: drawTargetLabel, - getBoundingBox: getTargetLabelBox, - getRotationPoint: getTargetLabelRotationPoint, - getRotationOffset: getTargetLabelRotationOffset, - isVisible: isLabelVisibleAtScale - }); - var lyrTxrCache = r.data.lyrTxrCache = new LayeredTextureCache(r); - r.onUpdateEleCalcs(function invalidateTextureCaches(willDraw, eles) { - // each cache should check for sub-key diff to see that the update affects that cache particularly - eleTxrCache.invalidateElements(eles); - lblTxrCache.invalidateElements(eles); - slbTxrCache.invalidateElements(eles); - tlbTxrCache.invalidateElements(eles); // any change invalidates the layers - - lyrTxrCache.invalidateElements(eles); // update the old bg timestamp so diffs can be done in the ele txr caches - - for (var _i = 0; _i < eles.length; _i++) { - var _p = eles[_i]._private; - _p.oldBackgroundTimestamp = _p.backgroundTimestamp; - } - }); - - var refineInLayers = function refineInLayers(reqs) { - for (var i = 0; i < reqs.length; i++) { - lyrTxrCache.enqueueElementRefinement(reqs[i].ele); - } - }; - - eleTxrCache.onDequeue(refineInLayers); - lblTxrCache.onDequeue(refineInLayers); - slbTxrCache.onDequeue(refineInLayers); - tlbTxrCache.onDequeue(refineInLayers); -} - -CRp$a.redrawHint = function (group, bool) { - var r = this; - - switch (group) { - case 'eles': - r.data.canvasNeedsRedraw[CRp$a.NODE] = bool; - break; - - case 'drag': - r.data.canvasNeedsRedraw[CRp$a.DRAG] = bool; - break; - - case 'select': - r.data.canvasNeedsRedraw[CRp$a.SELECT_BOX] = bool; - break; - } -}; // whether to use Path2D caching for drawing - - -var pathsImpld = typeof Path2D !== 'undefined'; - -CRp$a.path2dEnabled = function (on) { - if (on === undefined) { - return this.pathsEnabled; - } - - this.pathsEnabled = on ? true : false; -}; - -CRp$a.usePaths = function () { - return pathsImpld && this.pathsEnabled; -}; - -CRp$a.setImgSmoothing = function (context, bool) { - if (context.imageSmoothingEnabled != null) { - context.imageSmoothingEnabled = bool; - } else { - context.webkitImageSmoothingEnabled = bool; - context.mozImageSmoothingEnabled = bool; - context.msImageSmoothingEnabled = bool; - } -}; - -CRp$a.getImgSmoothing = function (context) { - if (context.imageSmoothingEnabled != null) { - return context.imageSmoothingEnabled; - } else { - return context.webkitImageSmoothingEnabled || context.mozImageSmoothingEnabled || context.msImageSmoothingEnabled; - } -}; - -CRp$a.makeOffscreenCanvas = function (width, height) { - var canvas; - - if ((typeof OffscreenCanvas === "undefined" ? "undefined" : _typeof(OffscreenCanvas)) !== ( "undefined" )) { - canvas = new OffscreenCanvas(width, height); - } else { - canvas = document.createElement('canvas'); // eslint-disable-line no-undef - - canvas.width = width; - canvas.height = height; - } - - return canvas; -}; - -[CRp, CRp$1, CRp$2, CRp$3, CRp$4, CRp$5, CRp$6, CRp$7, CRp$8, CRp$9].forEach(function (props) { - extend(CRp$a, props); -}); - -var renderer = [{ - name: 'null', - impl: NullRenderer -}, { - name: 'base', - impl: BR -}, { - name: 'canvas', - impl: CR -}]; - -var incExts = [{ - type: 'layout', - extensions: layout -}, { - type: 'renderer', - extensions: renderer -}]; - -var extensions = {}; // registered modules for extensions, indexed by name - -var modules = {}; - -function setExtension(type, name, registrant) { - var ext = registrant; - - var overrideErr = function overrideErr(field) { - error('Can not register `' + name + '` for `' + type + '` since `' + field + '` already exists in the prototype and can not be overridden'); - }; - - if (type === 'core') { - if (Core.prototype[name]) { - return overrideErr(name); - } else { - Core.prototype[name] = registrant; - } - } else if (type === 'collection') { - if (Collection.prototype[name]) { - return overrideErr(name); - } else { - Collection.prototype[name] = registrant; - } - } else if (type === 'layout') { - // fill in missing layout functions in the prototype - var Layout = function Layout(options) { - this.options = options; - registrant.call(this, options); // make sure layout has _private for use w/ std apis like .on() - - if (!plainObject(this._private)) { - this._private = {}; - } - - this._private.cy = options.cy; - this._private.listeners = []; - this.createEmitter(); - }; - - var layoutProto = Layout.prototype = Object.create(registrant.prototype); - var optLayoutFns = []; - - for (var i = 0; i < optLayoutFns.length; i++) { - var fnName = optLayoutFns[i]; - - layoutProto[fnName] = layoutProto[fnName] || function () { - return this; - }; - } // either .start() or .run() is defined, so autogen the other - - - if (layoutProto.start && !layoutProto.run) { - layoutProto.run = function () { - this.start(); - return this; - }; - } else if (!layoutProto.start && layoutProto.run) { - layoutProto.start = function () { - this.run(); - return this; - }; - } - - var regStop = registrant.prototype.stop; - - layoutProto.stop = function () { - var opts = this.options; - - if (opts && opts.animate) { - var anis = this.animations; - - if (anis) { - for (var _i = 0; _i < anis.length; _i++) { - anis[_i].stop(); - } - } - } - - if (regStop) { - regStop.call(this); - } else { - this.emit('layoutstop'); - } - - return this; - }; - - if (!layoutProto.destroy) { - layoutProto.destroy = function () { - return this; - }; - } - - layoutProto.cy = function () { - return this._private.cy; - }; - - var getCy = function getCy(layout) { - return layout._private.cy; - }; - - var emitterOpts = { - addEventFields: function addEventFields(layout, evt) { - evt.layout = layout; - evt.cy = getCy(layout); - evt.target = layout; - }, - bubble: function bubble() { - return true; - }, - parent: function parent(layout) { - return getCy(layout); - } - }; - extend(layoutProto, { - createEmitter: function createEmitter() { - this._private.emitter = new Emitter(emitterOpts, this); - return this; - }, - emitter: function emitter() { - return this._private.emitter; - }, - on: function on(evt, cb) { - this.emitter().on(evt, cb); - return this; - }, - one: function one(evt, cb) { - this.emitter().one(evt, cb); - return this; - }, - once: function once(evt, cb) { - this.emitter().one(evt, cb); - return this; - }, - removeListener: function removeListener(evt, cb) { - this.emitter().removeListener(evt, cb); - return this; - }, - removeAllListeners: function removeAllListeners() { - this.emitter().removeAllListeners(); - return this; - }, - emit: function emit(evt, params) { - this.emitter().emit(evt, params); - return this; - } - }); - define$3.eventAliasesOn(layoutProto); - ext = Layout; // replace with our wrapped layout - } else if (type === 'renderer' && name !== 'null' && name !== 'base') { - // user registered renderers inherit from base - var BaseRenderer = getExtension('renderer', 'base'); - var bProto = BaseRenderer.prototype; - var RegistrantRenderer = registrant; - var rProto = registrant.prototype; - - var Renderer = function Renderer() { - BaseRenderer.apply(this, arguments); - RegistrantRenderer.apply(this, arguments); - }; - - var proto = Renderer.prototype; - - for (var pName in bProto) { - var pVal = bProto[pName]; - var existsInR = rProto[pName] != null; - - if (existsInR) { - return overrideErr(pName); - } - - proto[pName] = pVal; // take impl from base - } - - for (var _pName in rProto) { - proto[_pName] = rProto[_pName]; // take impl from registrant - } - - bProto.clientFunctions.forEach(function (name) { - proto[name] = proto[name] || function () { - error('Renderer does not implement `renderer.' + name + '()` on its prototype'); - }; - }); - ext = Renderer; - } - - return setMap({ - map: extensions, - keys: [type, name], - value: ext - }); -} - -function getExtension(type, name) { - return getMap({ - map: extensions, - keys: [type, name] - }); -} - -function setModule(type, name, moduleType, moduleName, registrant) { - return setMap({ - map: modules, - keys: [type, name, moduleType, moduleName], - value: registrant - }); -} - -function getModule(type, name, moduleType, moduleName) { - return getMap({ - map: modules, - keys: [type, name, moduleType, moduleName] - }); -} - -var extension = function extension() { - // e.g. extension('renderer', 'svg') - if (arguments.length === 2) { - return getExtension.apply(null, arguments); - } // e.g. extension('renderer', 'svg', { ... }) - else if (arguments.length === 3) { - return setExtension.apply(null, arguments); - } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse') - else if (arguments.length === 4) { - return getModule.apply(null, arguments); - } // e.g. extension('renderer', 'svg', 'nodeShape', 'ellipse', { ... }) - else if (arguments.length === 5) { - return setModule.apply(null, arguments); - } else { - error('Invalid extension access syntax'); - } -}; // allows a core instance to access extensions internally - - -Core.prototype.extension = extension; // included extensions - -incExts.forEach(function (group) { - group.extensions.forEach(function (ext) { - setExtension(group.type, ext.name, ext.impl); - }); -}); - -// (useful for init) - -var Stylesheet = function Stylesheet() { - if (!(this instanceof Stylesheet)) { - return new Stylesheet(); - } - - this.length = 0; -}; - -var sheetfn = Stylesheet.prototype; - -sheetfn.instanceString = function () { - return 'stylesheet'; -}; // just store the selector to be parsed later - - -sheetfn.selector = function (selector) { - var i = this.length++; - this[i] = { - selector: selector, - properties: [] - }; - return this; // chaining -}; // just store the property to be parsed later - - -sheetfn.css = function (name, value) { - var i = this.length - 1; - - if (string(name)) { - this[i].properties.push({ - name: name, - value: value - }); - } else if (plainObject(name)) { - var map = name; - var propNames = Object.keys(map); - - for (var j = 0; j < propNames.length; j++) { - var key = propNames[j]; - var mapVal = map[key]; - - if (mapVal == null) { - continue; - } - - var prop = Style.properties[key] || Style.properties[dash2camel(key)]; - - if (prop == null) { - continue; - } - - var _name = prop.name; - var _value = mapVal; - this[i].properties.push({ - name: _name, - value: _value - }); - } - } - - return this; // chaining -}; - -sheetfn.style = sheetfn.css; // generate a real style object from the dummy stylesheet - -sheetfn.generateStyle = function (cy) { - var style = new Style(cy); - return this.appendToStyle(style); -}; // append a dummy stylesheet object on a real style object - - -sheetfn.appendToStyle = function (style) { - for (var i = 0; i < this.length; i++) { - var context = this[i]; - var selector = context.selector; - var props = context.properties; - style.selector(selector); // apply selector - - for (var j = 0; j < props.length; j++) { - var prop = props[j]; - style.css(prop.name, prop.value); // apply property - } - } - - return style; -}; - -var version = "3.16.0"; - -var cytoscape = function cytoscape(options) { - // if no options specified, use default - if (options === undefined) { - options = {}; - } // create instance - - - if (plainObject(options)) { - return new Core(options); - } // allow for registration of extensions - else if (string(options)) { - return extension.apply(extension, arguments); - } -}; // e.g. cytoscape.use( require('cytoscape-foo'), bar ) - - -cytoscape.use = function (ext) { - var args = Array.prototype.slice.call(arguments, 1); // args to pass to ext - - args.unshift(cytoscape); // cytoscape is first arg to ext - - ext.apply(null, args); - return this; -}; - -cytoscape.warnings = function (bool) { - return warnings(bool); -}; // replaced by build system - - -cytoscape.version = version; // expose public apis (mostly for extensions) - -cytoscape.stylesheet = cytoscape.Stylesheet = Stylesheet; - -export default cytoscape; From 1475eff82ba86e3e038fa8f66bfd7871245d6c38 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Wed, 2 Jun 2021 08:20:52 -0400 Subject: [PATCH 72/76] Check Pointing so I don't lose any work --- classes/ETL/Viewer/ActionProcessor.php | 44 +++++++ classes/ETL/Viewer/EndpointProcessor.php | 23 ++++ classes/ETL/Viewer/GraphViewProcessor.php | 7 ++ classes/ETL/Viewer/OOPFinder.php | 113 ++++++++++++++++++ classes/ETL/Viewer/PipelineProcessor.php | 43 +++++++ classes/ETL/Viewer/Processor.php | 19 +++ classes/ETL/Viewer/iProcessor.php | 21 ++++ .../Controllers/ETLControllerProvider.php | 33 ++++- composer.json | 3 +- composer.lock | 59 ++++++++- .../js/etl_viewer/ETLViewerTreeTab.js | 20 ++-- .../js/etl_viewer/GraphPanel.js | 12 +- 12 files changed, 375 insertions(+), 22 deletions(-) create mode 100644 classes/ETL/Viewer/ActionProcessor.php create mode 100644 classes/ETL/Viewer/EndpointProcessor.php create mode 100644 classes/ETL/Viewer/GraphViewProcessor.php create mode 100644 classes/ETL/Viewer/OOPFinder.php create mode 100644 classes/ETL/Viewer/PipelineProcessor.php create mode 100644 classes/ETL/Viewer/Processor.php create mode 100644 classes/ETL/Viewer/iProcessor.php diff --git a/classes/ETL/Viewer/ActionProcessor.php b/classes/ETL/Viewer/ActionProcessor.php new file mode 100644 index 0000000000..6697857c71 --- /dev/null +++ b/classes/ETL/Viewer/ActionProcessor.php @@ -0,0 +1,44 @@ +sources; + } + + /** + * @return array + */ + public function getDestinations() + { + return $this->destinations; + } + +} diff --git a/classes/ETL/Viewer/EndpointProcessor.php b/classes/ETL/Viewer/EndpointProcessor.php new file mode 100644 index 0000000000..45fc83a64d --- /dev/null +++ b/classes/ETL/Viewer/EndpointProcessor.php @@ -0,0 +1,23 @@ +name = $data->name; + $result->type = $data->type; + $result->key = $data->key; + + } +} diff --git a/classes/ETL/Viewer/GraphViewProcessor.php b/classes/ETL/Viewer/GraphViewProcessor.php new file mode 100644 index 0000000000..19138ccbde --- /dev/null +++ b/classes/ETL/Viewer/GraphViewProcessor.php @@ -0,0 +1,7 @@ +getFilename(); + } + + return $results; + } + + public static function findIn($directory, $name) + { + return self::_findIn($directory, $name, T_CLASS | T_INTERFACE | T_TRAIT); + } + + protected static function _findIn($directory, $name, $types) + { + self::initializeStorage($directory, $types); + + // If we've already found this entity than return it. + if (array_key_exists($name, self::$storage[$directory][$types])) { + return self::$storage[$directory][$types][$name]; + } + $type = 'unknown'; + + $allFiles = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($directory)); + $phpFiles = new RegexIterator($allFiles, '/\.php$/'); + foreach ($phpFiles as $phpFile) { + $content = file_get_contents($phpFile->getRealPath()); + $tokens = token_get_all($content); + + $namespace = ''; + for ($index = 0; isset($tokens[$index]); $index++) { + if (!isset($tokens[$index][0])) { + continue; + } + if (T_NAMESPACE === $tokens[$index][0]) { + $index += 2; // Skip namespace keyword and whitespace + while (isset($tokens[$index]) && is_array($tokens[$index])) { + $namespace .= $tokens[$index++][1]; + } + } + + if ($index + 2 < count($tokens) && $types & $tokens[$index][0] && T_WHITESPACE === $tokens[$index + 1][0] && T_STRING === $tokens[$index + 2][0]) { + $index += 2; // Skip class keyword and whitespace + $foundName = $tokens[$index][1]; + + $type = $tokens[$index][0]; + $fqn = $namespace . '\\' . $foundName; + if (strtolower($foundName) === strtolower($name)) { + self::$storage[$directory][$type][$name] = $fqn; + # break if you have one class per file (psr-4 compliant) + # otherwise you'll need to handle class constants (Foo::class) + break; + } + } + } + } + return self::$storage[$directory][$type][$name]; + } + + protected static function initializeStorage($directory, $types) + { + if (!isset(self::$storage)) { + self::$storage = array(); + } + + if (!array_key_exists($directory, self::$storage)) { + self::$storage[$directory] = array(); + } + + foreach(self::$tokens as $token) { + if ($types & $token && !array_key_exists($token, self::$storage)) { + self::$storage[$directory][$token] = array(); + } + } + } +} diff --git a/classes/ETL/Viewer/PipelineProcessor.php b/classes/ETL/Viewer/PipelineProcessor.php new file mode 100644 index 0000000000..813fd081d7 --- /dev/null +++ b/classes/ETL/Viewer/PipelineProcessor.php @@ -0,0 +1,43 @@ +actionProcessor = isset($actionProcessor) ? $actionProcessor : new ActionProcessor(); + } + + + /** + * @param array|object $data + * + * @return mixed|void + */ + public function process($data) + { + /** + * + */ + list($sources, $actions, $destinations) = $this->actionProcessor->process($data); + + } +} diff --git a/classes/ETL/Viewer/Processor.php b/classes/ETL/Viewer/Processor.php new file mode 100644 index 0000000000..9b0760b3a0 --- /dev/null +++ b/classes/ETL/Viewer/Processor.php @@ -0,0 +1,19 @@ +etlConfig = $etlConfig; + } + +} diff --git a/classes/ETL/Viewer/iProcessor.php b/classes/ETL/Viewer/iProcessor.php new file mode 100644 index 0000000000..2ad2a6f828 --- /dev/null +++ b/classes/ETL/Viewer/iProcessor.php @@ -0,0 +1,21 @@ + + */ +interface iProcessor { + + /** + * @param array|object $data + * @return array|object + */ + public function process($data); + +} diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index d45e7e85e8..7310b38a98 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -423,7 +423,7 @@ public function getPipelineActionForGraph(Request $request, Application $app, $p ); } - protected function preparePipelineForGraph($pipeline, $action = null) + public function preparePipelineForGraph($pipeline, $requestedAction = null) { /* Parent Group nodes should be formatted as such: * { group: 'nodes', data: { id: '', name: ''} } @@ -465,15 +465,38 @@ protected function preparePipelineForGraph($pipeline, $action = null) foreach($actions as $key => $actionData) { - $actionName = $actionData['name']; - if (isset($action) && $action !== $actionName) { - break; + $fullActionName = $actionData['name']; + $fullNameParts = explode('.', $fullActionName); + $actionName = array_pop($fullNameParts); + + if (isset($requestedAction) && $requestedAction !== $actionName) { + continue; } +/* + * aws.cloudwatch.0623c9c8-57bc-3776-a210-a6b3dc61ed93 +aws.cloudwatch.12f8a7f6-4fd6-3851-8a36-d106f7753047 +aws.cloudwatch.13d98017-8384-368b-a14e-4a596a7ba3bf +aws.cloudwatch.21378f23-d0a2-393c-ad77-03ec7e9ed570 +aws.cloudwatch.22079260-6475-3e15-a5e6-09dd932c4706 +aws.cloudwatch.27c5ec13-26a2-37f1-a6f1-ee42e647d80b +aws.cloudwatch.37129597-c560-394c-9ae9-16f0ba7ba47c +aws.cloudwatch.532e54c0-a622-34b8-8082-265c99d4b189 +aws.cloudwatch.66d4ef0e-1616-39db-93a7-3349c7f62c02 +aws.cloudwatch.70157f97-5cc0-3a63-97c7-e45de025c6d5 +aws.cloudwatch.70df9667-63e3-3750-b52c-19495e28362a +aws.cloudwatch.81a4710e-54fe-3731-8701-e1e084a99756 +aws.cloudwatch.8df3b226-e4ad-35e4-ae6a-f20ce700143a +aws.cloudwatch.916385f7-2ffa-3b89-a678-9c678a71898a +aws.cloudwatch.af7f65b2-1feb-38d7-9741-87a56fe64e7d +aws.cloudwatch.d17df3fa-3ea8-3a66-ba13-5664f188e23a +aws.cloudwatch.dfd4e5d6-7b42-3908-923c-7a404e6b5d96 +aws.cloudwatch.eaf8299e-6cce-37b2-af5e-bdec36501017 + * */ $action = array( 'group' => 'nodes', 'data' => array( - 'id' => $actionName, + 'id' => $fullActionName, 'name' => $key, 'parent' => $pipeline ) diff --git a/composer.json b/composer.json index 4e37361100..84b29a1eee 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,8 @@ "ua-parser/uap-php": "^3.9", "cytoscape/cytoscape": "^3.16", "cytoscape/cytoscape-dagre": "^2.3", - "plotly/plotly": "^1.57.1" + "plotly/plotly": "^1.57.1", + "gnugat/nomo-spaco": "~0.4" }, "require-dev": { "phpunit/phpunit": "~4.8", diff --git a/composer.lock b/composer.lock index 647831ae3d..3b8772bf5a 100644 --- a/composer.lock +++ b/composer.lock @@ -246,9 +246,7 @@ "version": "3.16.1", "dist": { "type": "file", - "url": "https://github.com/cytoscape/cytoscape.js/blob/v3.16.1/dist/cytoscape.min.js", - "reference": null, - "shasum": null + "url": "https://github.com/cytoscape/cytoscape.js/blob/v3.16.1/dist/cytoscape.min.js" }, "require": { "composer/installers": "~1.0" @@ -564,6 +562,59 @@ ], "time": "2019-11-13T10:30:21+00:00" }, + { + "name": "gnugat/nomo-spaco", + "version": "v0.4.3", + "source": { + "type": "git", + "url": "https://github.com/gnugat/nomo-spaco.git", + "reference": "b4485a25ef76d42d0ac12b1b2f2844eafe92ad48" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/gnugat/nomo-spaco/zipball/b4485a25ef76d42d0ac12b1b2f2844eafe92ad48", + "reference": "b4485a25ef76d42d0ac12b1b2f2844eafe92ad48", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "require-dev": { + "phpspec/phpspec": "~2.0" + }, + "bin": [ + "bin/nomo-spaco" + ], + "type": "project", + "autoload": { + "psr-4": { + "Gnugat\\NomoSpaco\\": "src/Gnugat/NomoSpaco" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Loïc Chardonnet", + "email": "loic.chardonnet@gmail.com", + "homepage": "http://gnugat.github.io", + "role": "Developer" + } + ], + "description": "Displays the declared fully qualified classnames of a project", + "keywords": [ + "available", + "detect", + "fully qualified classname" + ], + "support": { + "issues": "https://github.com/gnugat/nomo-spaco/issues", + "source": "https://github.com/gnugat/nomo-spaco/tree/master" + }, + "time": "2018-07-20T12:50:45+00:00" + }, { "name": "google/recaptcha", "version": "1.1.2", @@ -4157,5 +4208,5 @@ "platform-overrides": { "php": "5.4" }, - "plugin-api-version": "1.1.0" + "plugin-api-version": "2.0.0" } diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index e2f3972731..3b3b587002 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -66,27 +66,25 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { } }, contextmenu: function (node, event) { - let isPipeline = node.parentNode.isRoot; + let isPipeline = node.parentNode && node.parentNode.isRoot; let isAction = node.parentNode && node.parentNode.parentNode && node.parentNode.parentNode.isRoot; if (isPipeline || isAction) { - let title = 'Unknown'; + let menuTitle = 'Unknown'; let config = {}; if (isPipeline) { - title = 'Pipeline'; + menuTitle = 'Pipeline'; config['pipeline'] = node.attributes.name; config['title'] = node.attributes.name; + } else if (isAction) { + menuTitle = 'Action'; + config['pipeline'] = node.parentNode.attributes.name; + config['action'] = node.attributes.name; + config['title'] = `${node.parentNode.attributes.name}.${node.attributes.name}` } - // don't quite have the action specific backend setup yet. - /*else if (isAction) { - title = 'Action'; - let pipeline = node.parentNode.parentNode.attributes.name; - config['action'] = `${pipeline}.${node.attributes.name}`; - }*/ - let items = [ - `${title}
`, + `${menuTitle}
`, '-', { text: 'View in Graph Viewer', diff --git a/html/internal_dashboard/js/etl_viewer/GraphPanel.js b/html/internal_dashboard/js/etl_viewer/GraphPanel.js index af27c5b244..00ad50571e 100644 --- a/html/internal_dashboard/js/etl_viewer/GraphPanel.js +++ b/html/internal_dashboard/js/etl_viewer/GraphPanel.js @@ -16,6 +16,10 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { // *NOTE: supplied by the code instantiating this panel. pipeline: null, + action: null, + + url: XDMoD.REST.url + '/etl/graph/pipelines/', + /** * Initialize this component's contents. */ @@ -25,10 +29,16 @@ XDMoD.Admin.ETL.GraphPanel = Ext.extend(Ext.Panel, { cytoscape.use(cytoscapeDagre); this.containerId = this.id + '_hc'; + if (this.pipeline) { + this.url += self.pipeline; + } + if (this.action) { + this.url += `/actions/${this.action}`; + } this.store = new Ext.data.JsonStore({ - url: XDMoD.REST.url + '/etl/graph/pipelines/' + self.pipeline, + url: this.url, autoDestroy: false, From b787d9fad8dab3f8ef653ffec6f6a1ce4442d410 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Tue, 15 Jun 2021 08:23:14 -0400 Subject: [PATCH 73/76] checkpoint --- classes/ETL/Viewer/GraphView.php | 7 +++ .../ETL/Viewer/Processors/ActionProcessor.php | 42 +++++++++++++ .../Endpoints/EndpointProcessorFactory.php | 24 +++++++ .../Viewer/Processors/PipelineProcessor.php | 43 +++++++++++++ classes/ETL/Viewer/Processors/Processor.php | 19 ++++++ classes/ETL/Viewer/Processors/iProcessor.php | 21 +++++++ .../Controllers/ETLControllerProvider.php | 63 ++++++++++--------- html/internal_dashboard/index.php | 1 + .../js/etl_viewer/ETLViewerTreeTab.js | 40 ++++++------ 9 files changed, 212 insertions(+), 48 deletions(-) create mode 100644 classes/ETL/Viewer/GraphView.php create mode 100644 classes/ETL/Viewer/Processors/ActionProcessor.php create mode 100644 classes/ETL/Viewer/Processors/Endpoints/EndpointProcessorFactory.php create mode 100644 classes/ETL/Viewer/Processors/PipelineProcessor.php create mode 100644 classes/ETL/Viewer/Processors/Processor.php create mode 100644 classes/ETL/Viewer/Processors/iProcessor.php diff --git a/classes/ETL/Viewer/GraphView.php b/classes/ETL/Viewer/GraphView.php new file mode 100644 index 0000000000..6514c8358d --- /dev/null +++ b/classes/ETL/Viewer/GraphView.php @@ -0,0 +1,7 @@ +sources; + } + + /** + * @return array + */ + public function getDestinations() + { + return $this->destinations; + } + +} diff --git a/classes/ETL/Viewer/Processors/Endpoints/EndpointProcessorFactory.php b/classes/ETL/Viewer/Processors/Endpoints/EndpointProcessorFactory.php new file mode 100644 index 0000000000..6288d1d2ce --- /dev/null +++ b/classes/ETL/Viewer/Processors/Endpoints/EndpointProcessorFactory.php @@ -0,0 +1,24 @@ +actionProcessor = isset($actionProcessor) ? $actionProcessor : new ActionProcessor(); + } + + + /** + * @param array|object $data + * + * @return mixed|void + */ + public function process($data) + { + /** + * + */ + list($sources, $actions, $destinations) = $this->actionProcessor->process($data); + + } +} diff --git a/classes/ETL/Viewer/Processors/Processor.php b/classes/ETL/Viewer/Processors/Processor.php new file mode 100644 index 0000000000..cf3d4b5f81 --- /dev/null +++ b/classes/ETL/Viewer/Processors/Processor.php @@ -0,0 +1,19 @@ +etlConfig = $etlConfig; + } + +} diff --git a/classes/ETL/Viewer/Processors/iProcessor.php b/classes/ETL/Viewer/Processors/iProcessor.php new file mode 100644 index 0000000000..6639967880 --- /dev/null +++ b/classes/ETL/Viewer/Processors/iProcessor.php @@ -0,0 +1,21 @@ + + */ +interface iProcessor { + + /** + * @param array|object $data + * @return array|object + */ + public function process($data); + +} diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index 7310b38a98..ddd23697c9 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -472,26 +472,6 @@ public function preparePipelineForGraph($pipeline, $requestedAction = null) if (isset($requestedAction) && $requestedAction !== $actionName) { continue; } -/* - * aws.cloudwatch.0623c9c8-57bc-3776-a210-a6b3dc61ed93 -aws.cloudwatch.12f8a7f6-4fd6-3851-8a36-d106f7753047 -aws.cloudwatch.13d98017-8384-368b-a14e-4a596a7ba3bf -aws.cloudwatch.21378f23-d0a2-393c-ad77-03ec7e9ed570 -aws.cloudwatch.22079260-6475-3e15-a5e6-09dd932c4706 -aws.cloudwatch.27c5ec13-26a2-37f1-a6f1-ee42e647d80b -aws.cloudwatch.37129597-c560-394c-9ae9-16f0ba7ba47c -aws.cloudwatch.532e54c0-a622-34b8-8082-265c99d4b189 -aws.cloudwatch.66d4ef0e-1616-39db-93a7-3349c7f62c02 -aws.cloudwatch.70157f97-5cc0-3a63-97c7-e45de025c6d5 -aws.cloudwatch.70df9667-63e3-3750-b52c-19495e28362a -aws.cloudwatch.81a4710e-54fe-3731-8701-e1e084a99756 -aws.cloudwatch.8df3b226-e4ad-35e4-ae6a-f20ce700143a -aws.cloudwatch.916385f7-2ffa-3b89-a678-9c678a71898a -aws.cloudwatch.af7f65b2-1feb-38d7-9741-87a56fe64e7d -aws.cloudwatch.d17df3fa-3ea8-3a66-ba13-5664f188e23a -aws.cloudwatch.dfd4e5d6-7b42-3908-923c-7a404e6b5d96 -aws.cloudwatch.eaf8299e-6cce-37b2-af5e-bdec36501017 - * */ $action = array( 'group' => 'nodes', @@ -521,6 +501,8 @@ public function preparePipelineForGraph($pipeline, $requestedAction = null) $sourceChildren = $this->getTargetChildren($actionData['source'], $sourceId); $destinationChildren = $this->getTargetChildren($actionData['destination'], $destinationId); + + $results = array_merge($results, $sourceChildren); $results = array_merge($results, $destinationChildren); @@ -564,7 +546,8 @@ private function getTargetData($target, $idPrefix = null) private function getTargetChildren($target, $parentId) { $results = array(); - $properties = array('tables', 'definition_file_list', 'sql_file_list', 'definition_file'); + $properties = array('tables', 'definition_file_list', 'sql_file_list', 'definition_file', 'path'); + $childProperties = array('sql_file'); $key = null; foreach($properties as $property) { if (array_key_exists($property, $target)) { @@ -577,7 +560,28 @@ private function getTargetChildren($target, $parentId) return $results; } - foreach($target[$key] as $child) { + $value = $target[$key]; + if (is_array($value)) { + foreach($target[$key] as $child) { + $childId = $child; + if (!is_string($child)) { + foreach($childProperties as $childProperty) { + if (array_key_exists($childProperty, $child)) { + $childId = $child[$childProperty]; + } + } + } + $results[] = array( + 'group' => 'nodes', + 'data' => array( + 'id' => "$parentId-$childId", + 'name' => $childId, + 'parent' => $parentId + ) + ); + } + } else { + $child = urlencode(basename($value, '.json')); $results[] = array( 'group' => 'nodes', 'data' => array( @@ -608,6 +612,13 @@ function getFirstProperty($source, $properties, $default = null) return $default; } + /** + * This function will return a unique list of target ( sources or destinations ) types for the array of actions + * provided. + * + * @param array $actions + * @return array + */ private function getTargetTypeNodes(array $actions) { $targetDefinitions = array( @@ -685,7 +696,6 @@ private function getPipelineActionsAndEndpoints($pipeline) 'CLOUD_EVENT_LOG_DIRECTORY' => 'cloud_openstack/events', 'community-user' => 'community_user' ); - $etlConfig = EtlConfiguration::factory( CONFIG_DIR . '/etl/etl.json', null, @@ -781,7 +791,7 @@ function ($carry, $item) { $properties = array( 'destination_record_map' => function ($source) { - return array_keys(get_object_vars($source->destination_record_map)); + return array_keys(get_object_vars($source)); }, 'table_definition' => function ($source) { if (is_array($source) && count($source) > 0) { @@ -790,10 +800,6 @@ function ($carry, $item) { } elseif (is_object($source)) { return array($source->name); } - /*if (count($source) > 0) { - - }*/ - #var_dump($source); return array(); } ); @@ -804,6 +810,7 @@ function ($carry, $item) { break; } } + $source['file'] = $sourceEndpoint->path; $destination['tables'] = $tables; break; diff --git a/html/internal_dashboard/index.php b/html/internal_dashboard/index.php index 4eb7382dbc..6dae98eaa1 100644 --- a/html/internal_dashboard/index.php +++ b/html/internal_dashboard/index.php @@ -208,6 +208,7 @@ // ETL Viewer + diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index 3b3b587002..1dd42038c0 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -17,31 +17,21 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { updateHistory: true, autoScroll: true, enableDD: true, + enableKeyEvents: true, autoExpandColumn: 'value', tbar: { items: [ - { - xtype: 'button', - text: 'Expand All', - icon: '', - cls: 'x-btn-text-icon', - handler: function () { - alert("This doesn't function yet, try pressing shift while expanding a node."); - } - }, - { - xtype: 'button', - text: 'Collapse All', - icon: '', - cls: 'x-btn-text-icon', - handler: function () { - alert("This doesn't function yet, try pressing shift while collapsing a node.") - } - }, - '-', { xtype: 'textfield', - emptyText: 'Enter Search Term Here' + emptyText: 'Enter Search Term Here', + enableKeyEvents: true, + listeners: { + keypress: function (field, event) { + if (event.getKey() === event.ENTER) { + self.filter.filter(field.getValue(), ['value', 'name']); + } + } + } } ] }, @@ -190,9 +180,19 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { } } + }, + + filterNodes: function(searchTerm) { + + }, + + filterNode: function(searchTerm) { + } }); + this.filter = new CCR.xdmod.ui.ETLViewerTreeFilter(this.tree, {autoClear: true, clearBlank: true}); + Ext.apply(this, { items: [ this.tree From ffff06423dc62fdfb03a197dd43f57df61102730 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Mon, 21 Jun 2021 10:37:57 -0400 Subject: [PATCH 74/76] Checkpoint on working Tree Search --- .../Controllers/ETLControllerProvider.php | 56 +++++- .../js/etl_viewer/ETLViewerTreeFilter.js | 184 ++++++++++++++++++ .../js/etl_viewer/ETLViewerTreeTab.js | 38 ++-- 3 files changed, 264 insertions(+), 14 deletions(-) create mode 100644 html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js diff --git a/classes/Rest/Controllers/ETLControllerProvider.php b/classes/Rest/Controllers/ETLControllerProvider.php index ddd23697c9..bcf09d6268 100644 --- a/classes/Rest/Controllers/ETLControllerProvider.php +++ b/classes/Rest/Controllers/ETLControllerProvider.php @@ -29,6 +29,8 @@ class ETLControllerProvider extends BaseControllerProvider const SOURCES_ID = 'sources'; const DESTINATIONS_ID = 'destinations'; + private static $searchAttributes = array('name', 'value'); + private static $defaultNodes = array( array( 'group' => 'nodes', @@ -62,6 +64,9 @@ public function setupRoutes(Application $app, ControllerCollection $controller) $controller->get("$root/pipelines/actions", "$class::getActionsForPipelines"); $controller->post("$root/pipelines/actions", "$class::getActionsForPipelines"); + $controller->get("$root/pipelines/actions/search", "$class::searchAllActions"); + $controller->post("$root/pipelines/actions/search", "$class::searchAllActions"); + $controller->get("$root/pipelines/{pipeline}/actions", "$class::getActionsForPipeline"); $controller->get("$root/pipelines/{pipeline}/endpoints", "$class::getEndpointsForPipeline"); @@ -290,6 +295,11 @@ private function retrieveFiles($baseDir, callable $handler) } public function getActionsForPipelines(Request $request, Application $app) + { + return $app->json($this->_getActionsForPipelines()); + } + + private function _getActionsForPipelines() { $configOptions = array('default_module_name' => 'xdmod'); $configOptions['config_variables'] = array( @@ -316,7 +326,7 @@ public function getActionsForPipelines(Request $request, Application $app) } - return $app->json($this->convertForTreeGrid($results)); + return $this->convertForTreeGrid($results); } private function getAllActionsAndEndpoints() @@ -534,6 +544,50 @@ public function preparePipelineForGraph($pipeline, $requestedAction = null) return $results; } + public function searchAllActions(Request $request, Application $app) + { + $term = trim($request->get('term', '')); + + $allActions =$this->_getActionsForPipelines(); + + if ($term === '') { + return $app->json($allActions); + } + + return $app->json($this->searchActions($term, $allActions, self::$searchAttributes)); + } + + private function searchActions($term, $actions, $attributes = array()) + { + $results = array(); + $stack = array(); + + foreach($actions as $action) { + $action['match'] = $this->matchAction($term, $action, $attributes); + if (array_key_exists('children', $action)) { + + } + } + + return $results; + } + + private function processAction($action) + { + + } + + private function matchAction($term, $action, $attributes) + { + foreach($attributes as $attribute) { + if (array_key_exists($attribute, $action) && strpos($action[$attribute], $term) !== false) { + return true; + } + } + return false; + } + + private function getTargetData($target, $idPrefix = null) { return array( diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js new file mode 100644 index 0000000000..2b6b9631c0 --- /dev/null +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js @@ -0,0 +1,184 @@ +Ext.namespace('CCR', 'CCR.xdmod', 'CCR.xdmod.ui'); + +CCR.xdmod.ui.ETLViewerTreeFilter = function (tree, config) { + this.tree = tree; + this.filtered = {}; + this.stack = []; + Ext.apply(this, config); +}; + +CCR.xdmod.ui.ETLViewerTreeFilter.prototype = { + clearBlank: false, + reverse: false, + autoClear: false, + remove: false, + + /** + * Filter the data by a specific attribute. + * @param {String/RegExp} value Either string that the attribute value + * should start with or a RegExp to test against the attribute + * @param {String|String[]} attrs (optional) The attribute passed in your node's attributes collection. Defaults to "text". + * @param {Ext.tree.TreeNode} startNode (optional) The node to start the filter at. + */ + filter: function (value, attrs, startNode) { + attrs = attrs || ["text"]; + + if (typeof attrs === 'string') { + attrs = [attrs] + } + + let matchFunction; + if (typeof value == "string") { + // auto clear empty filter + if (value.length === 0 && this.clearBlank) { + this.clear(); + return; + } + + value = value.toLowerCase(); + matchFunction = function (node) { + let found = false; + for (let i = 0; i < attrs.length; i++) { + let attr = attrs[i]; + + if (node.attributes && attr in node.attributes && node.attributes[attr]) { + found = node.attributes[attr].toLowerCase().includes(value); + } else if (attr in node && node[attr]) { + if (typeof node[attr] === 'string') { + found = node[attr].toLowerCase().includes(value); + } else { + found = String(node[attr]).toLowerCase().includes(value); + } + } + + if (found) { + break; + } + } + return found; + }; + } else if (value.exec) { // regex? + matchFunction = function (node) { + let found = false; + for (let i = 0; i < attrs.length; i++) { + let attr = attrs[i]; + if (attr in node.attributes) { + found = value.test(node.attributes[attrs]); + break; + } + } + return found; + }; + } else { + throw 'Illegal filter type, must be string or regex'; + } + this.filterBy(matchFunction, null, startNode); + }, + + /** + * Filter by a function. The passed function will be called with each + * node in the tree (or from the startNode). If the function returns true, the node is kept + * otherwise it is filtered. If a node is filtered, its children are also filtered. + * @param {Function} matchFunction The match function + * @param {Object} scope (optional) The scope (this reference) in which the function is executed. Defaults to the current Node. + * @param {Ext.tree.TreeNode} startNode (optional) + */ + filterBy: function (matchFunction, scope, startNode) { + /** + * - DFS through nodes & their child nodes + * - current node is marked as matching or not based on the match function. + * - After being marked, the current node is pushed onto a stack. + * - if a node has the `leaf` attribute & it's set to `true` then that's the end of this branch. + * - If the leaf node is not a match then hide it and add it to the filtered. + * - Now, iterate through each node in the stack: + * - Match Truth Table: + * - Leaf Node Match | Stack Node Match | Stack Node Visible | Notes + * - T | F | T | The Stack Node needs to be visible so that the leaf node can ultimately be shown. + * - T | T | T | If they're both a match then it should of course be visible. + * - F | T | T | Even if we're not showing a leaf, if the stack node matches it should be visible. + * - F | F | F | If neither are a match then it should obviously be hidden. + * - Once the stack is empty, than continue processing the rest of the tree. + */ + + this.processNode(matchFunction, startNode); + + let children = []; + if ('children' in startNode && startNode.children) { + children = startNode.children; + } else if ('attributes' in startNode && 'children' in startNode.attributes && startNode.attributes['children']) { + children = startNode.attributes['children'] + } else if (startNode.hasChildNodes && startNode.hasChildNodes() && startNode.childNodes && startNode.childNodes.length > 0) { + children = startNode.childNodes; + } + + for (let i = 0; i < children.length; i++) { + let child = children[i]; + this.filterBy(matchFunction, null, child); + } + }, + + processNode: function (matchFunction, node) { + if (node === this.tree.root) { + return; + } + let stack = this.stack; + let filtered = this.filtered; + + let name = null; + if (node.attributes && 'name' in node.attributes && node.attributes['name']) { + name = node.attributes['name']; + } else if (node.name) { + name = node.name; + } + this.log(name, stack.length); + + let match = matchFunction(node); + node.match = match; + stack.push(node); + + if (('leaf' in node && node.leaf === true) || ('isLeaf' in node && typeof node.isLeaf === 'function' && node.isLeaf() === true)) { + while (stack.length > 0) { + let leafNode = stack.pop(); + let leafNodeMatch = null; + if ('match' in leafNode) { + leafNodeMatch = leafNode.match; + } else if ('attributes' in leafNode && 'match' in leafNode.attributes) { + leafNodeMatch = leafNode.attributes['match']; + } + if (match === false && leafNodeMatch === false) { + if (leafNode.ui && leafNode.ui.hide && typeof leafNode.ui.hide === 'function') { + leafNode.ui.hide(); + } else { + leafNode.visible = false; + } + let id = leafNode.id ? leafNode.id : Ext.id(); + filtered[id] = leafNode; + } + } + } + }, + + log: function (value, indent) { + let prefix = new Array(indent + 1).join(' '); + console.log(`${prefix}${value}`); + }, + + /** + * Clears the current filter. Note: with the "remove" option + * set a filter cannot be cleared. + */ + clear: function () { + let filtered = this.filtered; + for (let id in filtered) { + if (typeof id != "function" && filtered.hasOwnProperty(id)) { + let node = filtered[id]; + if (node && node.ui && typeof node.ui.show === 'function') { + node.ui.show(); + } else if (node && 'visible' in node) { + node.visible = true; + } + } + } + this.filtered = {}; + } +}; diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index 1dd42038c0..eba57f05ad 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -8,9 +8,31 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { etlViewer: null, initComponent: function () { + let self = this; + Ext.QuickTips.init(); + + let search = new Ext.form.TextField({ + emptyText: 'Enter Search Term Here', + enableKeyEvents: true, + listeners: { + keypress: function (field, event) { + if (event.getKey() === event.ENTER) { + self.filter.filter(field.getValue(), ['value', 'name'], self.tree.root); + } + } + } + }); + + let clearButton = new Ext.Button({ + iconCls: 'general_btn_close', + tooltip: 'Clear Search', + handler: function () { + search.setValue(''); + self.filter.clear(); + } + }); - let self = this; this.tree = new Ext.ux.tree.TreeGrid({ region: 'center', closable: false, @@ -21,18 +43,8 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { autoExpandColumn: 'value', tbar: { items: [ - { - xtype: 'textfield', - emptyText: 'Enter Search Term Here', - enableKeyEvents: true, - listeners: { - keypress: function (field, event) { - if (event.getKey() === event.ENTER) { - self.filter.filter(field.getValue(), ['value', 'name']); - } - } - } - } + search, + clearButton ] }, dataUrl: XDMoD.REST.url + '/etl/pipelines/actions', From bdec23e00bb105a0b8131e56002feeb70beae94f Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Tue, 22 Jun 2021 13:28:10 -0400 Subject: [PATCH 75/76] Doing away with the TreeView in place filtering Ultimately I don't think we're going to want to filter the TreeView in place due to the asynchronous nature of the loading. We can hide nodes that haven't been shown yet, but it's proving difficult to show them after they've been hidden. Not only that, but viewing the subsequently filtered data is problematic, again due to the asynchronous nature of the tree. A user can open each pipeline to see which nodes matched underneath, but they'd need to click each one individually. I attempted to add an 'expandAll' after the filter process but even with a number of nodes hidden it takes a loooong time to finish ( upwards of 5 seconds or more ). I think that a more useful display for a search would be a table w/ a minimum of two columns, one that's the path to the node / attribute that matches the search term and the other being the actual value that matched. We could then maybe provide some context actions of navigating directly to the node in the TreeView. This would be relatively easy as the tree already has an `expandPath` function. There could also be a `Open Pipeline | Action` feature that opens the pipeline / action in the Graph View. --- .../js/etl_viewer/ETLViewerTreeFilter.js | 236 ++++++++---------- .../js/etl_viewer/ETLViewerTreeTab.js | 47 ---- 2 files changed, 107 insertions(+), 176 deletions(-) diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js index 2b6b9631c0..eb5abf9bc4 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeFilter.js @@ -1,5 +1,9 @@ -Ext.namespace('CCR', 'CCR.xdmod', 'CCR.xdmod.ui'); - +/** + * @class CCR.xdmod.ui.ETLViewerTreeFilter + * Note this class is experimental and doesn't update the indent (lines) or expand collapse icons of the nodes + * @param {Ext.tree.TreePanel} tree + * @param {Object} config (optional) + */ CCR.xdmod.ui.ETLViewerTreeFilter = function (tree, config) { this.tree = tree; this.filtered = {}; @@ -11,7 +15,6 @@ CCR.xdmod.ui.ETLViewerTreeFilter.prototype = { clearBlank: false, reverse: false, autoClear: false, - remove: false, /** * Filter the data by a specific attribute. @@ -23,144 +26,126 @@ CCR.xdmod.ui.ETLViewerTreeFilter.prototype = { filter: function (value, attrs, startNode) { attrs = attrs || ["text"]; - if (typeof attrs === 'string') { + if (typeof attrs === "string") { attrs = [attrs] } - let matchFunction; - if (typeof value == "string") { - // auto clear empty filter - if (value.length === 0 && this.clearBlank) { - this.clear(); - return; - } + if (typeof value !== 'string') { + throw 'Invalid value type, Expected string.' + } - value = value.toLowerCase(); - matchFunction = function (node) { - let found = false; - for (let i = 0; i < attrs.length; i++) { - let attr = attrs[i]; - - if (node.attributes && attr in node.attributes && node.attributes[attr]) { - found = node.attributes[attr].toLowerCase().includes(value); - } else if (attr in node && node[attr]) { - if (typeof node[attr] === 'string') { - found = node[attr].toLowerCase().includes(value); - } else { - found = String(node[attr]).toLowerCase().includes(value); - } - } - - if (found) { - break; - } - } - return found; - }; - } else if (value.exec) { // regex? - matchFunction = function (node) { - let found = false; - for (let i = 0; i < attrs.length; i++) { - let attr = attrs[i]; - if (attr in node.attributes) { - found = value.test(node.attributes[attrs]); - break; - } - } - return found; - }; - } else { - throw 'Illegal filter type, must be string or regex'; + if (value.length === 0 && this.clearBlank) { + this.clear(); + return; } - this.filterBy(matchFunction, null, startNode); + + this.filterBy(value, attrs, startNode); }, /** * Filter by a function. The passed function will be called with each - * node in the tree (or from the startNode). If the function returns true, the node is kept + * node in the tree (or from the node). If the function returns true, the node is kept * otherwise it is filtered. If a node is filtered, its children are also filtered. - * @param {Function} matchFunction The match function - * @param {Object} scope (optional) The scope (this reference) in which the function is executed. Defaults to the current Node. - * @param {Ext.tree.TreeNode} startNode (optional) + * @param {String} value The filter function + * @param {String[]} attrs (optional) The scope (this reference) in which the function is executed. Defaults to the current Node. + * @param {Ext.tree.TreeNode|Ext.tree.AsyncTreeNode} node */ - filterBy: function (matchFunction, scope, startNode) { - /** - * - DFS through nodes & their child nodes - * - current node is marked as matching or not based on the match function. - * - After being marked, the current node is pushed onto a stack. - * - if a node has the `leaf` attribute & it's set to `true` then that's the end of this branch. - * - If the leaf node is not a match then hide it and add it to the filtered. - * - Now, iterate through each node in the stack: - * - Match Truth Table: - * - Leaf Node Match | Stack Node Match | Stack Node Visible | Notes - * - T | F | T | The Stack Node needs to be visible so that the leaf node can ultimately be shown. - * - T | T | T | If they're both a match then it should of course be visible. - * - F | T | T | Even if we're not showing a leaf, if the stack node matches it should be visible. - * - F | F | F | If neither are a match then it should obviously be hidden. - * - Once the stack is empty, than continue processing the rest of the tree. - */ - - this.processNode(matchFunction, startNode); + filterBy: function (value, attrs, node) { + node = node || this.tree.root; - let children = []; - if ('children' in startNode && startNode.children) { - children = startNode.children; - } else if ('attributes' in startNode && 'children' in startNode.attributes && startNode.attributes['children']) { - children = startNode.attributes['children'] - } else if (startNode.hasChildNodes && startNode.hasChildNodes() && startNode.childNodes && startNode.childNodes.length > 0) { - children = startNode.childNodes; + let stack = this.stack; + let filtered = this.filtered; + + node.match = this.matchString(value, attrs, node); + + // If this is a leaf node, make sure to hide it if needed. + if (this.isLeaf(node)) { + if (node.match) { + for (let i = 0; i < stack.length; i++) { + let ancestor = stack[i]; + this.show(ancestor); + } + this.show(node); + } else { + this.hide(node); + } + } else { + stack.push(node); + if (node.match) { + this.show(node); + } else if (!('text' in node && node.text && node.text === 'Root')) { + this.hide(node); + + let id = node.id ? node.id : Ext.id(); + if (!node.id) { + node.id = id; + } + + filtered[id] = node; + } + + let children = this.getChildren(node); + + for (let i = 0; i < children.length; i++) { + let child = children[i]; + this.filterBy(value, attrs, child); + } + + // After we're done with this node then pop it off the stack. + stack.pop(); } + }, - for (let i = 0; i < children.length; i++) { - let child = children[i]; - this.filterBy(matchFunction, null, child); + matchString: function (value, attrs, node) { + let found = false; + for (let i = 0; i < attrs.length; i++) { + let attr = attrs[i]; + if (node.attributes && attr in node.attributes && node.attributes[attr]) { + found = node.attributes[attr].toLowerCase().includes(value); + } else if (attr in node && node[attr]) { + if (typeof node[attr] === "string") { + found = node[attr].toLowerCase().includes(value); + } else { + found = String(node[attr]).toLowerCase().includes(value); + } + } + if (found) { + break; + } } + return found; }, - processNode: function (matchFunction, node) { - if (node === this.tree.root) { - return; + hide: function (node) { + if (node.ui && node.ui.hide && typeof node.ui.hide === "function") { + node.ui.hide(); + } else { + node.hidden = true; } - let stack = this.stack; - let filtered = this.filtered; + }, - let name = null; - if (node.attributes && 'name' in node.attributes && node.attributes['name']) { - name = node.attributes['name']; - } else if (node.name) { - name = node.name; + show: function (node) { + if (node.ui && node.ui.show && typeof node.ui.show === 'function') { + node.ui.show(); + } else { + node.hidden = false; } - this.log(name, stack.length); - - let match = matchFunction(node); - node.match = match; - stack.push(node); - - if (('leaf' in node && node.leaf === true) || ('isLeaf' in node && typeof node.isLeaf === 'function' && node.isLeaf() === true)) { - while (stack.length > 0) { - let leafNode = stack.pop(); - let leafNodeMatch = null; - if ('match' in leafNode) { - leafNodeMatch = leafNode.match; - } else if ('attributes' in leafNode && 'match' in leafNode.attributes) { - leafNodeMatch = leafNode.attributes['match']; - } - if (match === false && leafNodeMatch === false) { - if (leafNode.ui && leafNode.ui.hide && typeof leafNode.ui.hide === 'function') { - leafNode.ui.hide(); - } else { - leafNode.visible = false; - } - let id = leafNode.id ? leafNode.id : Ext.id(); - filtered[id] = leafNode; - } - } + }, + + getChildren: function (node) { + let children = []; + if ("children" in node && node.children) { + children = node.children; + } else if ("attributes" in node && "children" in node.attributes && node.attributes["children"]) { + children = node.attributes["children"] + } else if (node.hasChildNodes && node.hasChildNodes() && node.childNodes && node.childNodes.length > 0) { + children = node.childNodes; } + return children; }, - log: function (value, indent) { - let prefix = new Array(indent + 1).join(' '); - console.log(`${prefix}${value}`); + isLeaf: function (node) { + return ("leaf" in node && node.leaf === true) || ("isLeaf" in node && typeof node.isLeaf === "function" && node.isLeaf() === true) }, /** @@ -168,17 +153,10 @@ CCR.xdmod.ui.ETLViewerTreeFilter.prototype = { * set a filter cannot be cleared. */ clear: function () { - let filtered = this.filtered; - for (let id in filtered) { - if (typeof id != "function" && filtered.hasOwnProperty(id)) { - let node = filtered[id]; - if (node && node.ui && typeof node.ui.show === 'function') { - node.ui.show(); - } else if (node && 'visible' in node) { - node.visible = true; - } - } - } this.filtered = {}; + this.tree.getRootNode().cascade(function (node) { + node.hidden = false; + node.show(); + }); } }; diff --git a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js index eba57f05ad..168327be49 100644 --- a/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js +++ b/html/internal_dashboard/js/etl_viewer/ETLViewerTreeTab.js @@ -10,29 +10,6 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { initComponent: function () { let self = this; - Ext.QuickTips.init(); - - let search = new Ext.form.TextField({ - emptyText: 'Enter Search Term Here', - enableKeyEvents: true, - listeners: { - keypress: function (field, event) { - if (event.getKey() === event.ENTER) { - self.filter.filter(field.getValue(), ['value', 'name'], self.tree.root); - } - } - } - }); - - let clearButton = new Ext.Button({ - iconCls: 'general_btn_close', - tooltip: 'Clear Search', - handler: function () { - search.setValue(''); - self.filter.clear(); - } - }); - this.tree = new Ext.ux.tree.TreeGrid({ region: 'center', closable: false, @@ -41,21 +18,7 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { enableDD: true, enableKeyEvents: true, autoExpandColumn: 'value', - tbar: { - items: [ - search, - clearButton - ] - }, dataUrl: XDMoD.REST.url + '/etl/pipelines/actions', - keys: [ - { - key: Ext.EventObject.SHIFT, - fn: function() { - self.shiftClicked = !self.shiftClicked; - } - } - ], listeners: { expandnode: function(node) { if (CCR.xdmod.shiftKey === true && node.hasChildNodes()) { @@ -192,19 +155,9 @@ XDMoD.Admin.ETL.ETLViewerTreeTab = Ext.extend(Ext.Panel, { } } - }, - - filterNodes: function(searchTerm) { - - }, - - filterNode: function(searchTerm) { - } }); - this.filter = new CCR.xdmod.ui.ETLViewerTreeFilter(this.tree, {autoClear: true, clearBlank: true}); - Ext.apply(this, { items: [ this.tree From 84552e5fbd1202be0aa7c3925fe332d6dc1ccd05 Mon Sep 17 00:00:00 2001 From: Ryan Rathsam Date: Fri, 2 Jul 2021 14:57:24 -0400 Subject: [PATCH 76/76] Updating docker images used --- .circleci/config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8c08df8d0c..79ff573442 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -7,10 +7,10 @@ version: 2.1 executors: centos7: docker: - - image: tools-ext-01.ccr.xdmod.org/xdmod-9.0.0:centos7.8-0.1 + - image: tools-ext-01.ccr.xdmod.org/xdmod-9.5.0:centos7.9-1.0 centos8: ¢os8-executor docker: - - image: tools-ext-01.ccr.xdmod.org/xdmod-9.5.0:centos7.9-1.0 + - image: tools-ext-01.ccr.xdmod.org/centos8-0.1:base jobs: build: parameters: